From: Jiang Xin <worldhello.net@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: Brian Gesiak <modocache@gmail.com>,
Git List <git@vger.kernel.org>,
bug-gettext@gnu.org
Subject: Re: [PATCH 2/3] i18n: Only extract comments marked by special tag
Date: Fri, 18 Apr 2014 14:03:06 +0800 [thread overview]
Message-ID: <CANYiYbGkjpdrzE25iRS33sm1=AodiREqWmJVkKVEok4mb4G5mQ@mail.gmail.com> (raw)
In-Reply-To: <xmqqk3anesml.fsf@gitster.dls.corp.google.com>
2014-04-18 2:08 GMT+08:00 Junio C Hamano <gitster@pobox.com>:
> Jiang Xin <worldhello.net@gmail.com> writes:
>
>> When extract l10n messages, we use "--add-comments" option to keep
>> comments right above the l10n messages for references. But sometimes
>> irrelevant comments are also extracted. For example in the following
>> code block, the comment in line 2 will be extracted as comment for the
>> l10n message in line 3, but obviously it's wrong.
>>
>> { OPTION_CALLBACK, 0, "ignore-removal", &addremove_explicit,
>> NULL /* takes no arguments */,
>> N_("ignore paths removed in the working tree (same as
>> --no-all)"),
>> PARSE_OPT_NOARG, ignore_removal_cb },
>>
>> Since almost all comments for l10n translators are marked with the same
>> prefix (tag): "TRANSLATORS:", it's safe to only extract comments with
>> this special tag. I.E. it's better to call xgettext as:
>>
>> xgettext --add-comments=TRANSLATORS: ...
>>
>> Also tweaks the multi-line comment in "init-db.c", to make it start with
>> the proper tag, not "* TRANSLATORS:" (which has a star before the tag).
>
> Hmph.
>
> I am not very happy with this change, as it would force us to
> special case "Translators" comment to follow a non-standard
> multi-line comment formatting convention. Is there a way to tell
> xgettext to accept both of these forms?
>
> /* TRANSLATORS: this is a short comment to help you */
> _("foo bar");
>
> /*
> * TRANSLATORS: this comment is to help you, but it is
> * a lot longer to fit on just a single line.
> */
> _("bar baz");
>
We can not provide multiple `--add-comments=TAG` options to xgettext,
because xgettext holds the tag in one string, not in a list:
/* Tag used in comment of prevailing domain. */
static char *comment_tag;
So if we won't change our multi-line comments for translators, must
hack gettext in some ways.
There maybe 3 ways to hack gettext:
1. When matching comments against TAG, using strstr not strncmp.
2360 /* When the comment tag is seen, it drags in not
only the line
2361 which it starts, but all remaining comment lines. */
2362 if (add_all_remaining_comments
2363 || (add_all_remaining_comments =
2364 (comment_tag != NULL
2365 && strncmp (s, comment_tag, strlen
(comment_tag)) == 0)))
2. Add a extension to in-comment xgettext instructions.
There is a undocumented feature in xgettext: User can provide
instructions (prefixed by xgettext:) in comments, such as:
/*
* xgettext: fuzzy possible-c-format no-wrap
* other comments...
*/
But it does not help much, unless we hack xgettext to extend this
hidden feature. I.E. Add an additional flag to support unconditionally
reference to the commit block. Like:
/*
* xgettext: comments
* TRANSLATORS: this comment is to help you, but it is
* a lot longer to fit on just a single line.
*/
_("bar baz");
3. Hack the parser for comments in "gettext-tools/src/x-c.c" (maybe
function phase4_getc()) to support various multi-line comments style,
such as:
/*
* TRANSLATORS: this comment is to help you, but it is
* a lot longer to fit on just a single line.
*/
/*
** TRANSLATORS: this comment is to help you, but it is
** a lot longer to fit on just a single line.
*/
/********************************************************
* TRANSLATORS: this comment is to help you, but it is *
* a lot longer to fit on just a single line. *
********************************************************/
I CC this mail to the gettext mailing list. Full thread see:
* http://thread.gmane.org/gmane.comp.version-control.git/246390/focus=246431
--
Jiang Xin
next prev parent reply other threads:[~2014-04-18 6:03 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-16 22:51 [l10n] date: Note for translators not included in .po files Brian Gesiak
2014-04-17 1:41 ` Jiang Xin
2014-04-17 5:37 ` [PATCH 0/3] extract proper comments for l10n translators Jiang Xin
2014-04-17 5:50 ` Jiang Xin
2014-04-17 18:12 ` Junio C Hamano
2014-04-17 5:37 ` [PATCH 1/3] i18n: Fixes uncatchable comments for translators Jiang Xin
2014-04-17 5:37 ` [PATCH 2/3] i18n: Only extract comments marked by special tag Jiang Xin
2014-04-17 18:08 ` Junio C Hamano
2014-04-18 6:03 ` Jiang Xin [this message]
2014-04-18 16:52 ` Junio C Hamano
2014-04-18 17:48 ` Junio C Hamano
2014-04-17 5:37 ` [PATCH 3/3] i18n: Remove obsolete comments for translators Jiang Xin
2014-04-17 6:27 ` [l10n] date: Note for translators not included in .po files Jiang Xin
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='CANYiYbGkjpdrzE25iRS33sm1=AodiREqWmJVkKVEok4mb4G5mQ@mail.gmail.com' \
--to=worldhello.net@gmail.com \
--cc=bug-gettext@gnu.org \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=modocache@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).