git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: git@vger.kernel.org
Cc: "Junio C Hamano" <gitster@pobox.com>,
	"Brandon Williams" <bmwill@google.com>,
	"Jiang Xin" <worldhello.net@gmail.com>,
	"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
Subject: [PATCH] C style: use standard style for "TRANSLATORS" comments
Date: Thu, 11 May 2017 21:20:12 +0000	[thread overview]
Message-ID: <20170511212012.6782-1-avarab@gmail.com> (raw)
In-Reply-To: <20170511204334.GM83655@google.com>

Change all the "TRANSLATORS: [...]" comments in the C code to use the
regular Git coding style, and amend the style guide so that the
example there uses that style.

This custom style was necessary back in 2010 when the gettext support
was initially added, and was subsequently documented in commit
cbcfd4e3ea ("i18n: mention "TRANSLATORS:" marker in
Documentation/CodingGuidelines", 2014-04-18).

GNU xgettext hasn't had the parsing limitation that necessitated this
exception for almost 3 years. Since its 0.19 release on 2014-06-02
it's been able to recognize TRANSLATOR comments in the standard Git
comment syntax[1].

Usually we'd like to keep compatibility with software that's that
young, but in this case literally the only person who needs to be
using a gettext newer than 3 years old is Jiang Xin (the only person
who runs & commits "make pot" results), so I think in this case we can
make an exception.

This xgettext parsing feature was added after a thread on the Git
mailing list[2] which continued on the bug-gettext[3] list, but we
never subsequently changed our style & styleguide, do so.

There are already longstanding changes in git that use the standard
comment style & have their TRANSLATORS comments extracted properly
without getting the literal "*"'s mixed up in the text, as would
happen before xgettext 0.19.

Commit 7ff2683253 ("builtin-am: implement -i/--interactive",
2015-08-04) added one such comment, which in commit df0617bfa7 ("l10n:
git.pot: v2.6.0 round 1 (123 new, 41 removed)", 2015-09-05) got picked
up in the po/git.pot file with the right format, showing that Jiang
already runs a modern xgettext.

The xgettext parser does not handle the sort of non-standard comment
style that I'm amending here in sequencer.c, but that isn't standard
Git comment syntax anyway. With this change to sequencer.c & "make
pot" the comment in the pot file is now correct:

     #. TRANSLATORS: %s will be "revert", "cherry-pick" or
    -#. * "rebase -i".
    +#. "rebase -i".

1. http://git.savannah.gnu.org/cgit/gettext.git/commit/?id=10af7fe6bd
2. <2ce9ec406501d112e032c8208417f8100bed04c6.1397712142.git.worldhello.net@gmail.com>
   (https://public-inbox.org/git/2ce9ec406501d112e032c8208417f8100bed04c6.1397712142.git.worldhello.net@gmail.com/)
3. https://lists.gnu.org/archive/html/bug-gettext/2014-04/msg00016.html

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---

On Thu, May 11, 2017 at 10:43 PM, Brandon Williams <bmwill@google.com> wrote:
> On 05/11, Ævar Arnfjörð Bjarmason wrote:
>> On Thu, May 11, 2017 at 10:21 PM, Brandon Williams <bmwill@google.com> wrote:
>> > On 05/11, Ævar Arnfjörð Bjarmason wrote:
>> >> [...]
>> >> +#ifdef NO_PTHREADS
>> >> +             else if (num_threads && num_threads != 1) {
>> >> +                     /* TRANSLATORS: %s is the configuration
>> >> +                        variable for tweaking threads, currently
>> >> +                        grep.threads */
>> >
>> > nit: this comment isn't formatted properly:
>> >   /*
>> >    * ... comment ...
>> >    */
>>
>> Comments for translators use a different style, see cbcfd4e3ea ("i18n:
>> mention "TRANSLATORS:" marker in Documentation/CodingGuidelines",
>> 2014-04-18). Otherwise the "*" gets interpolated into the string the
>> translators see in their UI.
>>
>
> Ah got it, I wasn't aware of that.

As it turns out this is just something we've been cargo-culting for
years for no reason. Will fix this comment in my v2, but first let's
do this.

 Documentation/CodingGuidelines | 10 +++++-----
 bisect.c                       |  6 ++++--
 builtin/blame.c                | 15 +++++++++------
 builtin/notes.c                |  6 ++++--
 builtin/remote.c               |  7 +++++--
 notes-utils.c                  |  7 +++++--
 parse-options.c                |  6 ++++--
 ref-filter.c                   | 12 ++++++++----
 sequencer.c                    |  3 ++-
 9 files changed, 46 insertions(+), 26 deletions(-)

diff --git a/Documentation/CodingGuidelines b/Documentation/CodingGuidelines
index a4191aa388..9fd7383819 100644
--- a/Documentation/CodingGuidelines
+++ b/Documentation/CodingGuidelines
@@ -256,12 +256,12 @@ For C programs:
 
    Note however that a comment that explains a translatable string to
    translators uses a convention of starting with a magic token
-   "TRANSLATORS: " immediately after the opening delimiter, even when
-   it spans multiple lines.  We do not add an asterisk at the beginning
-   of each line, either.  E.g.
+   "TRANSLATORS: ", e.g.
 
-	/* TRANSLATORS: here is a comment that explains the string
-	   to be translated, that follows immediately after it */
+	/*
+	 * TRANSLATORS: here is a comment that explains the string to
+	 * be translated, that follows immediately after it.
+	 */
 	_("Here is a translatable string explained by the above.");
 
  - Double negation is often harder to understand than no negation
diff --git a/bisect.c b/bisect.c
index 08c9fb7266..c5d5a2b64b 100644
--- a/bisect.c
+++ b/bisect.c
@@ -995,8 +995,10 @@ int bisect_next_all(const char *prefix, int no_checkout)
 
 	steps_msg = xstrfmt(Q_("(roughly %d step)", "(roughly %d steps)",
 		  steps), steps);
-	/* TRANSLATORS: the last %s will be replaced with
-	   "(roughly %d steps)" translation */
+	/*
+	 * TRANSLATORS: the last %s will be replaced with "(roughly %d
+	 * steps)" translation.
+	 */
 	printf(Q_("Bisecting: %d revision left to test after this %s\n",
 		  "Bisecting: %d revisions left to test after this %s\n",
 		  nr), nr, steps_msg);
diff --git a/builtin/blame.c b/builtin/blame.c
index 07506a3e45..ca9ebe40e7 100644
--- a/builtin/blame.c
+++ b/builtin/blame.c
@@ -2688,12 +2688,15 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
 		blame_date_width = sizeof("2006-10-19");
 		break;
 	case DATE_RELATIVE:
-		/* TRANSLATORS: This string is used to tell us the maximum
-		   display width for a relative timestamp in "git blame"
-		   output.  For C locale, "4 years, 11 months ago", which
-		   takes 22 places, is the longest among various forms of
-		   relative timestamps, but your language may need more or
-		   fewer display columns. */
+		/*
+		 * TRANSLATORS: This string is used to tell us the
+		 * maximum display width for a relative timestamp in
+		 * "git blame" output.  For C locale, "4 years, 11
+		 * months ago", which takes 22 places, is the longest
+		 * among various forms of relative timestamps, but
+		 * your language may need more or fewer display
+		 * columns.
+		 */
 		blame_date_width = utf8_strwidth(_("4 years, 11 months ago")) + 1; /* add the null */
 		break;
 	case DATE_NORMAL:
diff --git a/builtin/notes.c b/builtin/notes.c
index 7b891471c4..fb856e53b6 100644
--- a/builtin/notes.c
+++ b/builtin/notes.c
@@ -340,8 +340,10 @@ static struct notes_tree *init_notes_check(const char *subcommand,
 
 	ref = (flags & NOTES_INIT_WRITABLE) ? t->update_ref : t->ref;
 	if (!starts_with(ref, "refs/notes/"))
-		/* TRANSLATORS: the first %s will be replaced by a
-		   git notes command: 'add', 'merge', 'remove', etc.*/
+		/*
+		 * TRANSLATORS: the first %s will be replaced by a git
+		 * notes command: 'add', 'merge', 'remove', etc.
+		 */
 		die(_("refusing to %s notes in %s (outside of refs/notes/)"),
 		    subcommand, ref);
 	return t;
diff --git a/builtin/remote.c b/builtin/remote.c
index addf97ad29..9054e2858e 100644
--- a/builtin/remote.c
+++ b/builtin/remote.c
@@ -1151,8 +1151,11 @@ static int show(int argc, const char **argv)
 			url_nr = states.remote->url_nr;
 		}
 		for (i = 0; i < url_nr; i++)
-			/* TRANSLATORS: the colon ':' should align with
-			   the one in "  Fetch URL: %s" translation */
+			/*
+			 * TRANSLATORS: the colon ':' should align
+			 * with the one in " Fetch URL: %s"
+			 * translation.
+			 */
 			printf_ln(_("  Push  URL: %s"), url[i]);
 		if (!i)
 			printf_ln(_("  Push  URL: %s"), _("(no URL)"));
diff --git a/notes-utils.c b/notes-utils.c
index 24a33616a4..8f9ad7d1f8 100644
--- a/notes-utils.c
+++ b/notes-utils.c
@@ -132,8 +132,11 @@ struct notes_rewrite_cfg *init_copy_notes_for_rewrite(const char *cmd)
 		c->mode_from_env = 1;
 		c->combine = parse_combine_notes_fn(rewrite_mode_env);
 		if (!c->combine)
-			/* TRANSLATORS: The first %s is the name of the
-			   environment variable, the second %s is its value */
+			/*
+			 * TRANSLATORS: The first %s is the name of
+			 * the environment variable, the second %s is
+			 * its value.
+			 */
 			error(_("Bad %s value: '%s'"), GIT_NOTES_REWRITE_MODE_ENVIRONMENT,
 					rewrite_mode_env);
 	}
diff --git a/parse-options.c b/parse-options.c
index a23a1e67f0..e5ad34a2c3 100644
--- a/parse-options.c
+++ b/parse-options.c
@@ -589,8 +589,10 @@ static int usage_with_options_internal(struct parse_opt_ctx_t *ctx,
 
 	fprintf_ln(outfile, _("usage: %s"), _(*usagestr++));
 	while (*usagestr && **usagestr)
-		/* TRANSLATORS: the colon here should align with the
-		   one in "usage: %s" translation */
+		/*
+		 * TRANSLATORS: the colon here should align with the
+		 * one in "usage: %s" translation.
+		 */
 		fprintf_ln(outfile, _("   or: %s"), _(*usagestr++));
 	while (*usagestr) {
 		if (**usagestr)
diff --git a/ref-filter.c b/ref-filter.c
index 3a640448fd..5632841753 100644
--- a/ref-filter.c
+++ b/ref-filter.c
@@ -1251,13 +1251,17 @@ char *get_head_description(void)
 			    state.branch);
 	else if (state.detached_from) {
 		if (state.detached_at)
-			/* TRANSLATORS: make sure this matches
-			   "HEAD detached at " in wt-status.c */
+			/*
+			 * TRANSLATORS: make sure this matches "HEAD
+			 * detached at " in wt-status.c
+			 */
 			strbuf_addf(&desc, _("(HEAD detached at %s)"),
 				state.detached_from);
 		else
-			/* TRANSLATORS: make sure this matches
-			   "HEAD detached from " in wt-status.c */
+			/*
+			 * TRANSLATORS: make sure this matches "HEAD
+			 * detached from " in wt-status.c
+			 */
 			strbuf_addf(&desc, _("(HEAD detached from %s)"),
 				state.detached_from);
 	}
diff --git a/sequencer.c b/sequencer.c
index 10c3b4ff81..b77f359ca2 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -464,7 +464,8 @@ static int do_recursive_merge(struct commit *base, struct commit *next,
 
 	if (active_cache_changed &&
 	    write_locked_index(&the_index, &index_lock, COMMIT_LOCK))
-		/* TRANSLATORS: %s will be "revert", "cherry-pick" or
+		/*
+		 * TRANSLATORS: %s will be "revert", "cherry-pick" or
 		 * "rebase -i".
 		 */
 		return error(_("%s: Unable to write new index file"),
-- 
2.11.0


  reply	other threads:[~2017-05-11 21:20 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-11  9:18 [PATCH 00/29] Easy to review grep & pre-PCRE changes Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 01/29] Makefile & configure: reword inaccurate comment about PCRE Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 02/29] grep & rev-list doc: stop promising libpcre for --perl-regexp Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 03/29] test-lib: rename the LIBPCRE prerequisite to PCRE Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 04/29] log: add exhaustive tests for pattern style options & config Ævar Arnfjörð Bjarmason
2017-05-12  4:48   ` Junio C Hamano
2017-05-13 18:02     ` Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 05/29] grep: add a test asserting that --perl-regexp dies when !PCRE Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 06/29] grep: add a test for backreferences in PCRE patterns Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 07/29] grep: change non-ASCII -i test to stop using --debug Ævar Arnfjörð Bjarmason
2017-05-11 18:31   ` Brandon Williams
2017-05-11 18:35     ` Ævar Arnfjörð Bjarmason
2017-05-11 20:05       ` Brandon Williams
2017-05-11  9:18 ` [PATCH 08/29] grep: add tests for --threads=N and grep.threads Ævar Arnfjörð Bjarmason
2017-05-11 18:36   ` Brandon Williams
2017-05-11 19:22     ` Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 09/29] grep: amend submodule recursion test for regex engine testing Ævar Arnfjörð Bjarmason
2017-05-12  4:59   ` Junio C Hamano
2017-05-13 17:33     ` Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 10/29] grep: add tests for grep pattern types being passed to submodules Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 11/29] grep: add a test helper function for less verbose -f \0 tests Ævar Arnfjörð Bjarmason
2017-05-12  5:06   ` Junio C Hamano
2017-05-13 11:33     ` Ævar Arnfjörð Bjarmason
2017-05-15  1:29       ` Junio C Hamano
2017-05-11  9:18 ` [PATCH 12/29] grep: prepare for testing binary regexes containing rx metacharacters Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 13/29] grep: add tests to fix blind spots with \0 patterns Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 14/29] perf: add a GIT_PERF_MAKE_COMMAND for when *_MAKE_OPTS won't do Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 15/29] perf: emit progress output when unpacking & building Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 16/29] perf: add a performance comparison test of grep -G, -E and -P Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 17/29] perf: add a performance comparison of fixed-string grep Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 18/29] grep: catch a missing enum in switch statement Ævar Arnfjörð Bjarmason
2017-05-11 20:08   ` Brandon Williams
2017-05-11 20:40     ` Stefan Beller
2017-05-11 20:50       ` Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 19/29] grep: remove redundant regflags assignment under PCRE Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 20/29] grep: remove redundant `regflags &= ~REG_EXTENDED` assignments Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 21/29] grep: factor test for \0 in grep patterns into a function Ævar Arnfjörð Bjarmason
2017-05-11 20:15   ` Brandon Williams
2017-05-11 20:22     ` Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 22/29] grep: change the internal PCRE macro names to be PCRE1 Ævar Arnfjörð Bjarmason
2017-05-11 20:10   ` Brandon Williams
2017-05-11  9:18 ` [PATCH 23/29] grep: change internal *pcre* variable & function names to be *pcre1* Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 24/29] grep: move two functions to avoid forward declaration Ævar Arnfjörð Bjarmason
2017-05-11 20:14   ` Brandon Williams
2017-05-11 20:20     ` Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 25/29] test-lib: add a PTHREADS prerequisite Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 26/29] pack-objects & index-pack: add test for --threads warning Ævar Arnfjörð Bjarmason
2017-05-11 20:17   ` Brandon Williams
2017-05-11 20:34     ` Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 27/29] pack-objects: fix buggy warning about threads Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 28/29] grep: given --threads with NO_PTHREADS=YesPlease, warn Ævar Arnfjörð Bjarmason
2017-05-11 20:21   ` Brandon Williams
2017-05-11 20:33     ` Ævar Arnfjörð Bjarmason
2017-05-11 20:43       ` Brandon Williams
2017-05-11 21:20         ` Ævar Arnfjörð Bjarmason [this message]
2017-05-11 21:41           ` [PATCH] C style: use standard style for "TRANSLATORS" comments Jonathan Nieder
2017-05-11 21:50             ` Brandon Williams
2017-05-12  5:20           ` Johannes Sixt
2017-05-30 16:02           ` Jiang Xin
2017-05-30 23:03             ` Junio C Hamano
2017-05-11  9:18 ` [PATCH 29/29] grep: assert that threading is enabled when calling grep_{lock,unlock} Ævar Arnfjörð Bjarmason

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170511212012.6782-1-avarab@gmail.com \
    --to=avarab@gmail.com \
    --cc=bmwill@google.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=worldhello.net@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).