Seite 1 von 1

Internationalisierung mittels gettext *grübel*

Verfasst: Mittwoch 21. September 2011, 14:40
von Stromb
Hallo zusammen,
ich versuche verzweifelt es einmal hinzubekommen, einige Strings zu
lokalisieren/internationalisieren (was ein Wort).

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

Code: Alles auswählen

import gettext 
import locale 
import random 
current_locale, encoding = locale.getdefaultlocale() 

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 
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:
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
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 ... :x

Beste Grüße

Re: Internationalisierung mittels gettext *grübel*

Verfasst: Mittwoch 21. September 2011, 15:47
von BlackJack
@Stromb: Das sieht so aus als wenn Du die `*.pot`-Datei nicht korrekt angepasst hast. Da stehen am Anfang ein paar Zeichenketten die Platzhalter enthalten, zum Beispiel ``CHARSET`` für den Zeichensatznamen der in dem die `*.pot`-Datei vorliegt.

Re: Internationalisierung mittels gettext *grübel*

Verfasst: Mittwoch 21. September 2011, 16:22
von jgillich
Sollte

Code: Alles auswählen

import gettext 
nicht

Code: Alles auswählen

from gettext import gettext as _
heißen?

Re: Internationalisierung mittels gettext *grübel*

Verfasst: Mittwoch 21. September 2011, 16:32
von BlackJack
@jgillich: Kann man so machen, aber der `install()`-Aufruf stellt ein an die `gettext()`-Funktion gebundenes `_` global zur Verfügung.

Re: Internationalisierung mittels gettext *grübel*

Verfasst: Mittwoch 21. September 2011, 16:41
von Stromb
Aaaaaaah, natürlich. Ein Encoding muss man in jedem Fall setzen. Gerade bei Internationalisierung gibt es da wohl keinen default :)

Manchmal sieht man den Wald vor lauter Bäumen nicht. Danke Euch BlackJack, jgillich

+1, gefällt mir :)

Hier mein angepasstes po-file...
# A basic language file.
# Copyright (C) 2011 kentuckeyschreitjodeldidoe
# Stromb del Stromboli <x@x.com>, 2011
#
msgid ""
msgstr ""
"Project-Id-Version: 1.0\n"
"POT-Creation-Date: 2011-09-21 17:22+Westeuropäische Sommerzeit\n"
"PO-Revision-Date: 2011-09-21 17:22+ZONE\n"
"Last-Translator: Stromb del Stromboli <x@x.com>\n"
"Language-Team: none <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-15\n"
"Content-Transfer-Encoding: iso-8859-15\n"
"Generated-By: pygettext.py 1.5\n"

Re: Internationalisierung mittels gettext *grübel*

Verfasst: Mittwoch 21. September 2011, 16:54
von jgillich
BlackJack hat geschrieben:@jgillich: Kann man so machen, aber der `install()`-Aufruf stellt ein an die `gettext()`-Funktion gebundenes `_` global zur Verfügung.
Achso ok das war mir neu, wieder was gelernt. :)