[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