Internationalisierung mittels gettext *würg*

21/09/2011 - 13:56 von Felix | Report spam
Hallo zusammen,

ich versuche verzweifelt es einmal hinzubekommen, einige Strings zu
lokalisieren.

Mein Modul gettextExample.py ist daher sehr einfach gehalten und sieht
wie folgt aus:


BEGIN gettextExample.py
import gettext
import locale
import random

current_locale, encoding = locale.getdefaultlocale()
locale_path = './locale/' + current_locale + '/LC_MESSAGES/'
print locale_path

trans = gettext.translation('myapp', 'locale', [current_locale])
trans.install()

values = []
while True:
w = raw_input(_(u"Please enter a value: ")) #wrapper
if not w:
break
values.append(w)
print _(u"The random choice is: %s") % random.choice(values) #wrapper


END gettextExample.py

Dieses kompilierte Sprachfile "myapp.mo" (Yippiyeihooo, ich habs
hinbekommen) liegt auch schon unter:

<pyModulDir>/locale/de_DE/LC_MESSAGES

wenn ich nun obige Datei ausführe, kommt aber immer:


BEGIN output-shell

Traceback (most recent call last):
File "Z:\_PROJECTS\_PYTHON\0007_MathStrDate\gettextExample.py", line
16, in <module>
trans = gettext.translation('myapp', 'locale', [current_locale])
File "C:\Programme\Python\lib\gettext.py", line 478, in translation
t = _translations.setdefault(key, class_(fp))
File "C:\Programme\Python\lib\gettext.py", line 180, in __init__
self._parse(fp)
File "C:\Programme\Python\lib\gettext.py", line 337, in _parse
tmsg = unicode(tmsg, self._charset)
LookupError: unknown encoding: CHARSET


END output-shell

Es liegt also wohl an dieser Zeile:

trans = gettext.translation('myapp', 'locale', [current_locale])

Hat vielleicht einer Ahnung von Internationalisierung und kann mir
helfen? Ich raffs nicht ...

Beste Grüße

Felix
 

Lesen sie die antworten

#1 Dinu Gherman
21/09/2011 - 14:14 | Warnen spam
Felix :

Hallo zusammen,

ich versuche verzweifelt es einmal hinzubekommen, einige Strings zu
lokalisieren.

Mein Modul gettextExample.py ist daher sehr einfach gehalten und sieht
wie folgt aus:


BEGIN gettextExample.py
import gettext
import locale
import random

current_locale, encoding = locale.getdefaultlocale()
locale_path = './locale/' + current_locale + '/LC_MESSAGES/'
print locale_path

trans = gettext.translation('myapp', 'locale', [current_locale])
trans.install()

values = []
while True:
w = raw_input(_(u"Please enter a value: ")) #wrapper
if not w:
break
values.append(w)
print _(u"The random choice is: %s") % random.choice(values) #wrapper


END gettextExample.py

Dieses kompilierte Sprachfile "myapp.mo" (Yippiyeihooo, ich habs
hinbekommen) liegt auch schon unter:

<pyModulDir>/locale/de_DE/LC_MESSAGES

wenn ich nun obige Datei ausführe, kommt aber immer:


BEGIN output-shell

Traceback (most recent call last):
File "Z:\_PROJECTS\_PYTHON\0007_MathStrDate\gettextExample.py", line
16, in <module>
trans = gettext.translation('myapp', 'locale', [current_locale])
File "C:\Programme\Python\lib\gettext.py", line 478, in translation
t = _translations.setdefault(key, class_(fp))
File "C:\Programme\Python\lib\gettext.py", line 180, in __init__
self._parse(fp)
File "C:\Programme\Python\lib\gettext.py", line 337, in _parse
tmsg = unicode(tmsg, self._charset)
LookupError: unknown encoding: CHARSET


END output-shell

Es liegt also wohl an dieser Zeile:

trans = gettext.translation('myapp', 'locale', [current_locale])

Hat vielleicht einer Ahnung von Internationalisierung und kann mir
helfen? Ich raffs nicht ...



Hallo Felix,

ich habe ein einfaches Hellow World-Beispiel, das klappt.
Hier das Script:


#!/usr/bin/env python

import os
import gettext

lang = os.environ.get("LANGUAGE", "de_DE")
trans = gettext.translation("hello", "locales", [lang])
trans.install()
print _("Hello world")


Ich gebe aber als Verzeichnis nur "locales" an, die ganzen
"eigentlichen" Unterverzeichnisse wie de_DE/LC_MESSAGES
werden von allein gefunden. Vielleicht ist es das?

Gruß,

Dinu

Ähnliche fragen