[PATCH 1 of 9 STABLE?] gendoc: make commnd __doc__ and extension __doc__ as translatable

Martin Geisler martin at geisler.net
Tue May 14 05:55:14 CDT 2013


Takumi IINO <trot.thunder at gmail.com> writes:

> # HG changeset patch
> # User Takumi IINO <trot.thunder at gmail.com>
> # Date 1368513072 -32400
> #      Tue May 14 15:31:12 2013 +0900
> # Branch stable
> # Node ID 8fcb89ec61775279bcecf73cd839c29991fbab4c
> # Parent  12dbdd348bb0977366200bf96cb6d2afa85faf13
> gendoc: make commnd __doc__ and extension __doc__ as translatable
>
> Before this patch, commnd __doc__ and extension __doc__ are not translatable.
> But other messages, like doc of helptalbe, section headers, are translatable.
>
> This patch makes commnd __doc__ and extension __doc__ translatable.
>
> diff --git a/doc/gendoc.py b/doc/gendoc.py
> --- a/doc/gendoc.py
> +++ b/doc/gendoc.py
> @@ -51,7 +51,7 @@
>  
>      d['cmd'] = cmds[0]
>      d['aliases'] = cmd.split("|")[1:]
> -    d['desc'] = get_desc(attr[0].__doc__)
> +    d['desc'] = get_desc(_(attr[0].__doc__))

You should not use _(...) around anything else than literal strings. So

  translated = _("hello")

is okay, but

  msg = "hello"
  translated = _(msg)

is not okay. The reason is that _(...) is used by xgettext to find and
extract translateable strings and so the argument to _ must be a literal
string.

You should instead use the i18n.gettext function to translate something
that isn't a string at runtime. The thing you translate must then
somehow have been extracted into the message catalogs. For Mercurial,
this is done by the i18n/hggettext script which is what puts command
docstrings into the hg.pot file so that translators can work on them and
so i18n.gettext can find them later.

-- 
Martin Geisler


More information about the Mercurial-devel mailing list