зеркало из https://github.com/microsoft/git.git
C style: use standard style for "TRANSLATORS" comments
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 commitcbcfd4e3ea
("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. Commit7ff2683253
("builtin-am: implement -i/--interactive", 2015-08-04) added one such comment, which in commitdf0617bfa7
("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> Acked-by: Jiang Xin <worldhello.net@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
b06d364310
Коммит
66f5f6dca9
|
@ -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
|
||||
|
|
6
bisect.c
6
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);
|
||||
|
|
|
@ -2688,12 +2688,15 @@ parse_done:
|
|||
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:
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)"));
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
12
ref-filter.c
12
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);
|
||||
}
|
||||
|
|
|
@ -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"),
|
||||
|
|
Загрузка…
Ссылка в новой задаче