Re: [Tutor] Simple way for i18n ?

2006-03-25 Thread francois schnell
Hello Micheal,I've changed LANGUAGE in the shell , it worked at the beginning and then it stopped working ...Also os.environ.setdefault method still has no effect. I begin to wonder if it's specific to my distro (Ubuntu Breezy).
Anyway I managed to use translation but if I give None for languages (or nothing) he gives back an IOError.I'm finaly using a mix of install and translation through an exception handling 
and I can also change the language on the fly in the app.It works but it's probably not very academic :)

http://www.flickr.com/photos/frenchy/117229913/Thanks francoisOn 24/03/06, Michael Lange 
[EMAIL PROTECTED] wrote:On Thu, 23 Mar 2006 23:58:58 +0100francois schnell 
[EMAIL PROTECTED] wrote: Now I'd like to be able to change language without loging out, change language, log in. Martelli says in his book that to set the default language for the app I
 just need to do:  os.environ.setdefault('LANG', 'fr_FR') and Python doesn't complain (but doesn't work) but if I then do:  print locale.getdefaultlocale
() Python says : ('en_GB', 'utf-8')# meaning that really couldn't work ? How can I have my app in French even if I'm still in the GB version of Ubuntu (change the language for the app) ?
Hi Francois,I tried to do so with one of my apps (on Mandrake) and found that I have to changethe LANGUAGE environment variable, changing LANG had no effect on this.From the python gettext docs I found:
If languages is not given, then the following environment variables are searched: LANGUAGE, LC_ALL, LC_MESSAGES, and LANG.So it looks like the easiest may be to do$ LANGUAGE=en_GBin the shell before you start your app.
 I've also tried the translation way instead of the install way: if I do: gettext.install(myapp, localedir) #it translates in French when I'm in the
 French Ubuntu but if I do instead: gettext.translation(myapp, localedir, languages=fr_FR) #with the same localedir which worked before = Python complains:
 gettext.translation(myapp, localedir, languages=fr_FR) File /usr/lib/python2.4/gettext.py, line 480, in translation raise IOError(ENOENT, 'No translation file found for domain', domain)
 IOError: [Errno 2] No translation file found for domain: 'myapp'  I find it strange that install finds it but not translation (for the same localedir) ?
I admit I nevered bothered to find out how to use gettext.translation() since gettext.install()works that fine for me. Maybe you should set languages to fr instead of fr_FR (just a guess though)?
I hope this helpsMichael___Tutor maillist-Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Simple way for i18n ?

2006-03-24 Thread Michael Lange
On Thu, 23 Mar 2006 23:58:58 +0100
francois schnell [EMAIL PROTECTED] wrote:

 
 Now I'd like to be able to change language without loging out, change
 language, log in.
 
 Martelli says in his book that to set the default language for the app I
 just need to do:
 
  os.environ.setdefault('LANG', 'fr_FR')
 
 and Python doesn't complain (but doesn't work) but if I then do:
 
  print locale.getdefaultlocale()
 
 Python says : ('en_GB', 'utf-8')  # meaning that really couldn't work ?
 
 How can I have my app in French even if I'm still in the GB version of
 Ubuntu (change the language for the app) ?
 

Hi Francois,

I tried to do so with one of my apps (on Mandrake) and found that I have to 
change
the LANGUAGE environment variable, changing LANG had no effect on this.
From the python gettext docs I found:

If languages is not given, then the following environment variables are 
searched: LANGUAGE, LC_ALL, LC_MESSAGES, and LANG.

So it looks like the easiest may be to do

$ LANGUAGE=en_GB

in the shell before you start your app.

 I've also tried the translation way instead of the install way:
 
 if I do:
 gettext.install(myapp, localedir) #it translates in French when I'm in the
 French Ubuntu
 but if I do instead: gettext.translation(myapp, localedir,
 languages=fr_FR) #with the same localedir which worked before
 =
 Python complains:
 gettext.translation(myapp, localedir, languages=fr_FR)
   File /usr/lib/python2.4/gettext.py, line 480, in translation
 raise IOError(ENOENT, 'No translation file found for domain', domain)
 IOError: [Errno 2] No translation file found for domain: 'myapp' 
 
 I find it strange that install finds it but not translation (for the
 same localedir) ?
 

I admit I nevered bothered to find out how to use gettext.translation() since 
gettext.install()
works that fine for me. Maybe you should set languages to fr instead of 
fr_FR (just a guess though)?

I hope this helps

Michael
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Simple way for i18n ?

2006-03-23 Thread Michael Lange
On Wed, 22 Mar 2006 17:41:14 +0100
francois schnell [EMAIL PROTECTED] 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

___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Simple way for i18n ?

2006-03-23 Thread francois schnell
Thanks both for your help,

I managed to find one book which talk about i18n for Python: Python in a Nutshell (few pages for i18n)

I've used sys.prefix on my ubuntu box to find the default directory and it works fine this way:
http://www.flickr.com/photos/frenchy/116742621/

I've also done like you said:
gettext.install(domain, localedir)
and now it works fine also with a locale directory :)

Then what I've got now is:
- I log on the french version of Ubuntu I've got the french app version
- I log on the UK version of Ubuntu I've got the original app version in English

Now I'd like to be able to change language without loging out, change language, log in.

Martelli says in his book that to set the default language for the app I just need to do:

 os.environ.setdefault('LANG', 'fr_FR')

and Python doesn't complain (but doesn't work) but if I then do:

 print locale.getdefaultlocale()

Python says : ('en_GB', 'utf-8') # meaning that really couldn't work ?

How can I have my app in French even if I'm still in the GB version of Ubuntu (change the language for the app) ?

I've also tried the translation way instead of the install way:

if I do:
gettext.install(myapp, localedir) #it translates in French when I'm in the French Ubuntu
but if I do instead: gettext.translation(myapp, localedir, languages=fr_FR) #with the same localedir which worked before
=
Python complains:
 gettext.translation(myapp, localedir, languages=fr_FR)
 File /usr/lib/python2.4/gettext.py, line 480, in translation
 raise IOError(ENOENT, 'No translation file found for domain', domain)
IOError: [Errno 2] No translation file found for domain: 'myapp' 

I find it strange that install finds it but not translation (for the same localedir) ?

Thanks in advance If you can help.

francois








On 23/03/06, Michael Lange [EMAIL PROTECTED] wrote:
On Wed, 22 Mar 2006 17:41:14 +0100francois schnell [EMAIL PROTECTED] 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 gettextgettext.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 helpsMichael___Tutor maillist-Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Simple way for i18n ?

2006-03-22 Thread Andre Roberge
On 3/22/06, francois schnell [EMAIL PROTECTED] 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'
 

 I'm stuck here.
 I understand it doesn't find the translation file but I can't figure out
 why.


I've always seen standard directory structures (e.g. \locales\fr,
etc.) rather than custom ones as above, so I can't comment for sure
... but: try to either write
rc:\myappfolder\Translations
or
c:\\myappfolder\\Translations
to avoid possible backslash problems...

Bonne chance!
André



 Can you tell me what I'm doing wrong or direct me to an URL (or a Python
 book) where simple internationalisation for Python is gently explained

 Thanks
 francois (...from France)





 ___
 Tutor maillist  -  Tutor@python.org
 http://mail.python.org/mailman/listinfo/tutor



___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor