[PATCH i18n stable] i18n: fix untranslated prompts with translated responses (issue3936)

Matt Mackall mpm at selenic.com
Tue May 21 15:17:55 CDT 2013


On Tue, 2013-05-21 at 21:50 +0200, Martin Geisler wrote:
> Matt Mackall <mpm at selenic.com> writes:
> 
> > On Mon, 2013-05-20 at 19:51 -0300, Wagner Bruna wrote:
> >> Em 16-05-2013 15:58, Matt Mackall escreveu:
> >> > On Wed, 2013-05-15 at 21:37 -0500, Kevin Bullock wrote:
> >> >> # HG changeset patch
> >> >> # User Kevin Bullock <kbullock at ringworld.org>
> >> >> # Date 1368671779 18000
> >> >> #      Wed May 15 21:36:19 2013 -0500
> >> >> # Branch stable
> >> >> # Node ID fc1c4221dd82de958b9be5f05c57622679625d21
> >> >> # Parent  278057693a1ddb93f95fa641e30e7a966ac98434
> >> >> i18n: fix untranslated prompts with translated responses (issue3936)
> >> > 
> >> > Queued for stable, thanks.
> >> > 
> >> > I'd like to see a consensus among translators on how to do this.
> >> 
> >> IMHO we should always accept the English keys, even with translated prompts
> >> (to help with muscle memory). And, ideally, detect conflicts at build_mo time.
> >> 
> >> > I also thing we should unify all the string args used by prompt() into a
> >> > single string so that translators have the full context.
> >> 
> >> Seems like a good approach (as long as we ensure there's no paragraph boundary
> >> on that single string, of course).
> >
> > Ok, here's a typical use:
> >
> >             elif repo.ui.promptchoice(
> >                 _("local changed %s which remote deleted\n"
> >                   "use (c)hanged version or (d)elete?") % f,
> >                 (_("&Changed"), _("&Delete")), 0):
> >
> > How shall we format this string to include all the components? Perhaps:
> >
> > _("local changed %s which remote deleted\n"
> >   "use (c)changed version or (d)elete?"
> >   "\f&Changed"
> >   "\f&Delete")
> >   
> > I think something like \f or \b (not \t) will work well as a separator
> > but I have no idea if our l10n tools will agree with me.
> 
> Gettext will warn when it sees an escape sequence other than \n and \t.
> It writes:
> 
>   warning: internationalized messages should not contain the `\f' escape
>   sequence

Bah.

> This was apparently introduced around 2005:
> 
>   http://lists.gnu.org/archive/html/bug-gnu-utils/2005-05/msg00065.html
> 
> I found another mail that explains the rationale a bit more: POT files
> are supposed to contain just \n and xgettext will apparently turn \r\n
> into \n in the POT file:
> 
>   http://lists.gnu.org/archive/html/bug-gnu-utils/2010-08/msg00021.html
> 
> When I quickly tested this, I found that a string with \f wasn't
> translated, despite showing up in the hg.pot file.

Huh.

> Would \t not be an easier choice here or are you afraid that it will be
> difficult for translators to produce a TAB character in the translation?

Mostly, I thought there was a possibility we might actually want to use
\t as a real tab, whereas I'm quite sure we'll never want to use \f.
Frankly, my first thought was \0.

I also don't want to preclude using any of the printing ASCII characters
either.

But now I'm reminded that we have Shift-JIS out there, which means we
can't reliably split translated strings on single ASCII bytes anyway.
Perhaps '$$' as the separator?

-- 
Mathematics is the supreme nostalgia of our time.




More information about the Mercurial-devel mailing list