[Python-Dev] The "i" string-prefix: I18n'ed strings

Martin Blais blais at furius.ca
Fri Apr 7 02:14:23 CEST 2006

On 4/6/06, "Martin v. Löwis" <martin at v.loewis.de> wrote:
> Martin Blais wrote:
> >    ...
> >    A(P(_("Click here to forget"), href="...
> >    ...
> I assume that this should be
>   P(A(_("Click here to forget"), href="...
> instead (i.e. href is a parameter to A, not to P)

Yeah, that's right, sorry.  (You know, you get up with an idea, you're
all excited, whip out the laptop, scramble to spit your message...
Thanks for the correction)

> > (In my example, I built a library not unlike stan for creating HTML,
> > which is where classes A and P come from.)  I find the i18n markup a
> > bit annoying, especially when there are many i18n strings close
> > together.  My point is: adding parentheses around almost all strings
> > gets tiresome and "charges" the otherwise divine esthetics of Python
> > source code.
> There is a simple solution to that: write it as
> P(a("Click here to forget", href="...
> and define
> def a(content, **kw):
>     return A(_(content), **kw)

No. That's not going to work: pygettext needs to be able to extract
the string for the catalogs.  No markup, no extraction.  (This is how
you enter strings that are not meant to be translated.)

> You could it also write as
> P(A_("Click here to forget", href="...
> to make it a little more obvious to the reader that there is a
> gettext lookup here.

This is not generic enough, HTML is too flexible to hard-code all
cases.  This only would help slightly.

More information about the Python-Dev mailing list