Proposal: i-String literals in Future Version of Python?

Robin Becker robin at jessikat.demon.co.uk
Mon Jan 17 06:46:52 EST 2000


In article <m12A9j5-000CxTC at artcom0.artcom-gmbh.de>, Peter Funk
<pf at artcom-gmbh.de> writes
>If someone is going to internationalize an application in Python, 
>the source will become slightly less readable.  
>The following example statements
>        print "This is just an annoying message"
>       b = Tkinter.Button(text="Foo Bar", ...)
>will turn into
>        print _("This is just an annoying message")
>        b = Tkinter.Button(text=_("Foo Bar"), ...) 
>or even more ugly:
>        print gettext("This is just an annoying message")
>        b = Tkinter.Button(text=gettext("Foo Bar"), ...)
>or
>        print i18n("This is just an annoying message")
>        b = Tkinter.Button(text=i18n("Foo Bar"), ...)
>
>Here the *gettext* method (function) has to return a string, which
>is possibly translated into a foreign language.  Since Python already
>knows raw string literals, I thought that it would be nice, if a
>similar notation could be used to mark i18n string literals.
>So that some magic in the python interpreter expands
>       print i"This is just a message"
>into a call to a gettext function internally, if such a function is
>available.  May be there could be a sys.i18n function which could be 
>initially defined as a identity function:
>       def i18n(string):
>               return(string)
>This way preparing applications for i18n would become even easier.
>What do you think?
>
>Regards, Peter

simpler the better. There was a discussion last year about prefix usage
in relation to documentation etc. However isn't  the real problem that
of getting all the strings into a convenient form/place so that they can
be nicely translated into other languages/charsets. I guess you could
always automatically extract these and replace with
german/french/spanish etc etc using a preprocessor.
-- 
Robin Becker



More information about the Python-list mailing list