[Tutor] Simple way for i18n ?
Michael Lange
klappnase at freenet.de
Thu Mar 23 11:39:26 CET 2006
On Wed, 22 Mar 2006 17:41:14 +0100
"francois schnell" <francois.schnell at gmail.com> wrote:
> Hello all,
>
> I wish to translate a Python script from English to French. I've read the
> offical documentation (python.org doc) but I must admit that I'm lost now
> ...
> I've found some simple explanations here but I can't make it work:
> http://karrigell.sourceforge.net/en/internationalization.htm
>
> Here's where I'm stuck:
>
> Let's imagine my app is: myapp.py
> --
> import gettext
> _ = gettext.gettext
>
> print _("hello friends")
> print _("Bye Bye")
> ---
>
> Here are my folders on a windows box:
>
> C:\myappfolder\
> -----------------------\Translations\francais\LC_MESSAGES
>
> My myapp.py is in myappfolder
>
> In this folder I've used pygettext.py to produce a messages.pot file => I
> add the translation in it => I have a messages.po file.
> I then used msgfmt.py to produce messages.mo file.
>
> I then copied messages.po and messages.mo in LC_MESSAGES folder
> C:\myappfolder\
> -----------------------\Translations\francais\LC_MESSAGES
>
> I now come back to myapp.py and add two lines:
>
> ---
> import gettext
> _ = gettext.gettext
>
> t=gettext.translation("messages","c:\myappfolder\Translations","francais")
> t.install()
>
> print _("hello friends")
> print _("Bye Bye")
> ---
>
> When I do that Python anwers:
>
> >>>
> Traceback (most recent call last):
> File "C:\myappfolder\myapp.py", line 4, in ?
> t=gettext.translation
> ("messages","c:\myappfolder\Translations","francais")
> File "C:\Python24\lib\gettext.py", line 456, in translation
> raise IOError(ENOENT, 'No translation file found for domain', domain)
> IOError: [Errno 2] No translation file found for domain: 'messages'
> >>>
>
Hi Francois,
not sure if it is different on windows, on linux I simply do:
import gettext
gettext.install(domain, localedir)
to install _() into my application's global namespace,
where localedir in your case was "c:\myappfolder\Translations".
The path that contains the french translation should be "..\fr\LC_MESSAGES" instead of "..\francais\LC_MESSAGES"
I think (at least that is true on linux).
I hope this helps
Michael
More information about the Tutor
mailing list