gettext läuft nicht unter windows

11/12/2010 - 15:29 von Sebastian Humenda | Report spam
Hallo,

für meine ersten Gehversuche mit gettext habe ich mir aus /usr/share/locale
eine .mo-Datei genommen, in ein lokales Verzeichnis gelegt und probeweise
daraus einen String übersetzen lassen. Unter GNU/Linux funktioniert es, unter
Windows nicht.
Folgende Verzeichnisstruktur:
==test/
locale/
de/
LC_MESSAGES/
orca.mo
test.py
==Der Code:
==#!/usr/bin/env python
import gettext

t=gettext.translation('orca','locale')
_=t.gettext

print _("No application has focus.")
==Gettext muss im Hintergrund die Sprache erraten, unter Windows allerdings
scheinbar falsch. Ich bekomme den Fehler
==Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\user\Eigene Dateien\test\works.py", line 5, in <module>
t=gettext.translation('orca', localedir='locale', languages="de:de")
File "C:\Python27\lib\gettext.py", line 469, in translation
raise IOError(ENOENT, 'No translation file found for domain', domain)
IOError: [Errno 2] No translation file found for domain: 'orca'
==
Ich kann mir nicht erklàren, woran es genau liegt. Unter GNU/Linux (Debian
Squeeze) habe ich Python 2.6.6 und unter Windows Python 2.7.1.

Danke für Anregungen
Sebastian
 

Lesen sie die antworten

#1 Dennis Schulmeister
11/12/2010 - 20:36 | Warnen spam
Hallo Sebastian,

Ich hatte das mal so gelöst. Dabei hatte ich das Problem, dass
gettext.install() zwar unter Linux aber nicht unter Windows
funktioniert. Dein Problem scheint aber ein anderes zu sein. Hier der
entsprechende Quellcode:

# Determine available languages on the system
try:
lc, encoding = locale.getdefaultlocale()

if lc:
languages = [lc]
else:
languages = []
except Error:
languages = []

envLanguage = os.environ.get("LANGUAGE", None)

if envLanguage:
languages += envLanguage.split(":")

# Install global _-function
# NOTE: gettext.install(...) would be a nice one-liner if it worked on
# Windows, too. Unfortunately it seems to work on *nix only. When used
# on Windows no string would be translated at all.
translation = gettext.translation(
domainName,
localeDir,
languages = languages,
fallback = True
)

__builtin__.__dict__["_"] = translation.gettext


Mit freundlichen Grüßen,
Dennis Schulmeister

Volle Kontaktdaten auf WikiBerd: (http://ncc-1701a.homelinux.net)
Complete contact data on WikiBerd: (http://ncc-1701a.homelinux.net)

http://www.denchris.de - http://www.motagator.net/bands/65

<GnuPG KeyIDs: B8382C97, 01AD62DE>

Ähnliche fragen