Re: [PATCH/RFC v4 1/7] Add infrastructure for translating Git with gettext
From: Ævar Arnfjörð Bjarmason <hidden>
Date: 2016-06-15 22:48:54
On Wed, Jun 2, 2010 at 09:12, Peter Krefting [off-list ref] wrote:
Ævar Arnfjörð Bjarmason:quoted
+ color_fprintf_ln(s->fp, c, _("# (use \"git rm --cached <file>...\" to unstage)")); + color_fprintf_ln(s->fp, c, _("# (use \"git add/rm <file>...\" as appropriate to mark resolution)")); + color_fprintf_ln(s->fp, c, _("#"));This is a multi-line string, and should be translated as such. The trailing "#" should either be part of the translated multi-line string, or be added explicitely, and untranslated, at the end.quoted
+ color_fprintf_ln(s->fp, c, _("# (use \"git rm --cached <file>...\" to unstage)")); + color_fprintf_ln(s->fp, c, _("#"));Determine how to handle the trailing "#" as above.quoted
+ color_fprintf_ln(s->fp, c, _("# (use \"git add/rm <file>...\" to update what will be committed)")); + color_fprintf_ln(s->fp, c, _("# (use \"git checkout -- <file>...\" to discard changes in working directory)"));Multi-line.quoted
+ color_fprintf_ln(s->fp, c, _("# (commit or discard the untracked or modified content in submodules)")); + color_fprintf_ln(s->fp, c, _("#"));Trailing "#".quoted
+ color_fprintf_ln(s->fp, c, _("# (use \"git %s <file>...\" to include in what will be committed)"), how); + color_fprintf_ln(s->fp, c, _("#"));Ditto.quoted
+ case 1: how = _("both deleted:"); break; + case 2: how = _("added by us:"); break; + case 3: how = _("deleted by them:"); break; + case 4: how = _("added by them:"); break; + case 5: how = _("deleted by us:"); break; + case 6: how = _("both added:"); break; + case 7: how = _("both modified:"); break; } - color_fprintf(s->fp, c, "%-20s%s\n", how, one); + color_fprintf(s->fp, c, _("%-20s%s\n"), how, one);does color_fprintf() gracefully handle cutting text for multi-byte encodings, and text width? Otherwise I can see this bite us for all non-ASCII locales in general (if long translated are needed), and for CJK locales in particular (for variable character widths).quoted
- color_fprintf(s->fp, color(WT_STATUS_HEADER, s), "%s", extra.buf); + color_fprintf(s->fp, color(WT_STATUS_HEADER, s), _("%s"), extra.buf);Should not be in _()quoted
- fprintf(s->fp, "\n"); + fprintf(s->fp, _("\n"));Ditto.quoted
+ color_fprintf_ln(s->fp, color(WT_STATUS_HEADER, s), _("#")); + color_fprintf_ln(s->fp, color(WT_STATUS_HEADER, s), _("# Initial commit")); + color_fprintf_ln(s->fp, color(WT_STATUS_HEADER, s), _("#"));Either a multi-line string, or untranslate the "#"s.
All of the points you raised are correct. This is a bad way to do
things.
It was added in Jeff in his original WIP patch as an example of
translation being possible, but I should just remove it. It's not
ready to go in for the reasons you cited.
I'll just remove the wt-status.c chunk out of the patch completely in
the next submission, and instead translate a few select strings in
some C program well.
Making things like wt-status.c translatable is going to be hard to do
properly. It uses a lot of lego (sticking strings incrementally
together), and due to the coloring of output this'll be particularly
hard to convert.
(Also, for reference, here's a general guide on how to translate C
programs well):
http://gnu.april.org/software/automake/manual/gettext/Preparing-Strings.html