git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2 01/11] i18n: add--interactive: mark strings for translation

From
Vasco Almeida <vascomalmeida@sapo.pt>
Date
Sep 28, 2016, 12:43 UTC
Message-ID
<1475066620.3257.12.camel@sapo.pt>
In-Reply-To
<xmqqr387y4le.fsf@gitster.mtv.corp.google.com>
A Dom, 25-09-2016 às 15:52 -0700, Junio C Hamano escreveu:
Show 11 quoted lines
> > @@ -252,7 +253,7 @@ sub list_untracked {
> >  }
> >  
> >  my $status_fmt = '%12s %12s %s';
> > -my $status_head = sprintf($status_fmt, 'staged', 'unstaged', 'path');
> > +my $status_head = sprintf($status_fmt, __('staged'), __('unstaged'), __('path'));
> 
> Wouldn't it make sense to allow translators to tweak $status_fmt if
> you are allowing the earlier elements that are formatted with %12s,
> as their translation may not fit within that width, in which case
> they may want to make these columns wider?

As far as I understand, %12s means that the argument printed will have a minimum length of 12 columns. So if the translation of 'stage' is longer than 12 it will be printed fully no matter what. Though in that case, the header will not be align correctly anymore:

my $status_fmt = '%12s %12s %s';
     123456789abcdefghijkl     unstaged caminho
  1:    unchanged        +1/-0 git-add--interactive.perl
  2:    unchanged  +4226/-3152 po/git.pot
  3:    unchanged +11542/-10426 po/pt_PT.po
my $status_fmt = '%12s %8s %s';
     123456789abcdefghijkl unstaged caminho
  1:    unchanged    +2/-1 git-add--interactive.perl
  2:    unchanged +4226/-3152 po/git.pot
  3:    unchanged +11542/-10426 po/pt_PT.po
For reference in C locale (my $status_fmt = '%12s %12s %s';)
           staged     unstaged path
  1:        +4/-4      nothing git-add--interactive.perl
  2:    unchanged  +4232/-3150 po/git.pot
  3:    unchanged +11572/-10448 po/pt_PT.po

I did not contemplate this issue before, but I think allowing a translator to tweak $status_fmt would not be enough to properly align the header if the translation is longer than 12 columns.

Maybe a lazy solution would be to add a TRANSLATOR: comment asking to fit the translation of those words in 12 columns, but that would be unpractical because 'stage' and 'unstage' can occur alone, like they do here, in other place in the future, without having that length restriction.

I think the real fix would be to find the longer column and use that length for the remaining rows. I will try to do that if I can.

I also forgot to mark strings 'unchanged' and 'nothing' that are displayed on that status. I will mark then in the next re-roll.

Show 12 quoted lines
> >                       prompt_yesno(
> > -                             'Your edited hunk does not apply. Edit again '
> > -                             . '(saying "no" discards!) [y/n]? '
> > +                             # TRANSLATORS: do not translate [y/n]
> > +                             # The program will only accept that input
> > +                             # at this point.
> > +                             __('Your edited hunk does not apply. Edit again '
> > +                                . '(saying "no" discards!) [y/n]? ')
> 
> Not just [y/n], but "no" in "saying no discards!" also needs to
> stay, no?  I wonder if it is a good idea to lose the TRANSLATORS
> comment by ejecting "[y/n]" outside the "__()" construct here.

I fear that ejecting "[y/n]" would not be good for right-to-left languages since "[y/n]" would be the first thing a user of those languages would read followed by the actual question. I feel the same for other instances of this in the present patch series.

Previous: Junio C HamanoNext: Duy Nguyen
Message 4 of 45 in “Mark strings in perl script for translation”
  1. 00/11 Mark strings in perl script for translationVasco Almeida, Aug 31, 2016
  2. 01/11 i18n: add--interactive: mark strings for translationVasco Almeida, Aug 31, 2016
  3. Junio C HamanoSep 25, 2016
  4. Vasco AlmeidaSep 28, 2016
  5. Duy NguyenSep 28, 2016
  6. Junio C HamanoSep 28, 2016
  7. Jakub NarębskiSep 29, 2016
  8. 02/11 i18n: add--interactive: mark simple here documents for translationVasco Almeida, Aug 31, 2016
  9. Junio C HamanoSep 25, 2016
  10. Vasco AlmeidaSep 29, 2016
  11. Junio C HamanoSep 29, 2016
  12. Jakub NarębskiSep 29, 2016
  13. Junio C HamanoSep 29, 2016
  14. Vasco AlmeidaOct 3, 2016
  15. Jakub NarębskiSep 30, 2016
  16. Vasco AlmeidaOct 3, 2016
  17. 03/11 i18n: add--interactive: mark strings with interpolation for translationVasco Almeida, Aug 31, 2016
  18. Junio C HamanoSep 25, 2016
  19. Jakub NarębskiSep 30, 2016
  20. Vasco AlmeidaOct 3, 2016
  21. 04/11 i18n: add--interactive: mark plural stringsVasco Almeida, Aug 31, 2016
  22. Vasco AlmeidaSep 26, 2016
  23. Junio C HamanoSep 26, 2016
  24. Jakub NarębskiOct 1, 2016
  25. Vasco AlmeidaOct 3, 2016
  26. 05/11 i18n: add--interactive: mark message for translationVasco Almeida, Aug 31, 2016
  27. Junio C HamanoSep 25, 2016
  28. Jakub NarębskiOct 1, 2016
  29. Vasco AlmeidaOct 3, 2016
  30. 06/11 i18n: add--interactive: i18n of help_patch_cmdVasco Almeida, Aug 31, 2016
  31. Junio C HamanoSep 25, 2016
  32. 07/11 i18n: add--interactive: mark edit_hunk_manually message for translationVasco Almeida, Aug 31, 2016
  33. Jakub NarębskiOct 1, 2016
  34. 08/11 i18n: send-email: mark strings for translationVasco Almeida, Aug 31, 2016
  35. Junio C HamanoSep 25, 2016
  36. Junio C HamanoSep 25, 2016
  37. Jakub NarębskiOct 1, 2016
  38. 11/11 i18n: difftool: mark warnings for translationVasco Almeida, Aug 31, 2016
  39. Junio C HamanoSep 25, 2016
  40. Jakub NarębskiOct 1, 2016
  41. 09/11 i18n: send-email: mark warnings and errors for translationVasco Almeida, Aug 31, 2016
  42. Jakub NarębskiOct 1, 2016
  43. 10/11 i18n: send-email: mark string with interpolation for translationVasco Almeida, Aug 31, 2016
  44. Junio C HamanoAug 31, 2016
  45. Junio C HamanoSep 25, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.