[Python-ideas] Fix the DRY problem (was Re: PEP 501 - i18n with marked strings)

Eric V. Smith eric at trueblade.com
Tue Aug 18 14:37:28 CEST 2015


On 8/18/2015 4:08 AM, Jonathan Slenders wrote:
> But how would you determine the current active language? Is that a
> thread local?
> This would probably not work to make an asyncio or Twisted applications
> translatable.
> 
> For an asyncio web application for instance, the translate function
> needs to know the request object.

I assume it would call gettext.gettext (often aliased as '_'). It would
inherit the gettext behavior. That's the only use case I've heard suggested.

Eric.

> 
> 2015-08-17 23:37 GMT+02:00 Ned Batchelder <ned at nedbatchelder.com
> <mailto:ned at nedbatchelder.com>>:
> 
> 
>     On 8/17/15 11:51 AM, Barry Warsaw wrote:
> 
>         One of the things I've mentioned to Nick about PEP 501 is the
>         difference
>         between i"foo" and iu"foo".  The former gets mapped to
>         __interpolate__() while
>         the latter gets mapped to __interpolateu__().  Nick makes the
>         case for this
>         distinction based on the ability to override __interpolate__()
>         in the local
>         namespace to implement i18n, whereas __interpolateu__() - while
>         technically
>         still able to override - would generally just be left to the
>         "normal" non-i18n
>         interpolation.
> 
>         I countered with a proposal that a context manager could be
>         used, but Nick
>         points out that you can't really *unbind* __interpolate__() when
>         the context
>         manager exits.
> 
>         This still seems weird to me.  There's no distinction in Python
>         3 between
>         "foo" and u"foo" with the latter having been re-added to aid in
>         migrations
>         between Python 2 and 3.  But with PEP 501, this introduces a
>         functional
>         distinction between i"foo" and iu"foo" (and ui"foo"?).  It's
>         handy, but seems
>         to be a fairly significant difference from the current use if
>         u-prefixes.  I'm
>         sympathetic but still skeptical. ;)
> 
> 
>     I agree that this "one weird trick" of distinguishing between i""
>     and iu"" is really unfortunate. As you say, in Python 3, "foo" and
>     u"foo" are the same, so why should i"" and iu"" be different?
> 
>     I understand the appeal of interpolated strings, but can we retain
>     some measure of "explicit is better than implicit"?  If i18n
>     considerations are this important (and I agree that they are), let's
>     take them seriously enough to give them real syntax.
> 
>     --Ned.
> 
>     _______________________________________________
>     Python-ideas mailing list
>     Python-ideas at python.org <mailto:Python-ideas at python.org>
>     https://mail.python.org/mailman/listinfo/python-ideas
>     Code of Conduct: http://python.org/psf/codeofconduct/
> 
> 
> 
> 
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
> 


More information about the Python-ideas mailing list