Seite 1 von 1

Multilanguage?

Verfasst: Mittwoch 21. März 2007, 01:50
von wdsl
Hi,
wie mach ich am leichtesten Mutlilanguage in mein Projekt.

Also in PHP würde ich einfach eine Datei mit Variablen laden das finde ich sehr komfortable und sehr leicht und wenn es auf diese weise in Python gehen würde würde ich mich freuen.

Also nen Ordner in meinem Projektordner namens locale und darin Unterordner mit den Iso Länderabkürzungen und darin eine oder mehrere Dateien mit den Sprachstrings.

vielen Dank für eure Hilfe.

mfg
wdsl

Verfasst: Mittwoch 21. März 2007, 08:08
von jens
Srtichwort: gettext

Such mal im Forum danach ;)

Verfasst: Mittwoch 21. März 2007, 08:09
von BlackJack
Schau mal in die Doku vom `gettext`-Modul in der Standardbibliothek.

Python handhabt "internationalization" wie die meisten anderen Open-Source-Programme.

Verfasst: Mittwoch 21. März 2007, 16:16
von wdsl
hmm ich schnalls nicht!

Code: Alles auswählen

import gettext

gettext.install('test', localedir = '.', unicode = True)
_ = gettext.gettext

print _('Hello World')
Dann habe ich mit
pygettext test.py
mir eine messages.pot erstellen lassen. die schaut so aus:
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR ORGANIZATION
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2007-03-21 15:52+CET\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"


#: test.py:5
msgid "Hello World"
msgstr ""
danach habe ich eine de.po datei erstellt die sieht so aus:
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR ORGANIZATION
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2007-03-21 15:52+CET\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"


#: test.py:5
msgid "Hello World"
msgstr "Hallo blablub"
anschließend habe ich mir aus der de.mo eine de.mo Datei machen lassen :
msgfmt de.po -o de.mo
zu guter letzt habe ich das ganze in einen Ordner kopiert
./de/LC_MESSAGES/
wenn ich es jetzt ausführe bekome ich allerdings nicht Hallo blablub sonder Hello World?

Was mache ich falsch?

vielen Dank
wdsl

P.S. ich kann mir immernoch nicht vorstllen wie kompilierz das ist etwas auf 2,3,4... Sprachen zur Verfügung zu stellen. Man muss doch nur die Strings ersetzen.

Verfasst: Mittwoch 21. März 2007, 16:26
von jens
Offensichtlich weiß gettext nicht, das er die "de" Variante ausliefern soll... Ich hab selber noch nicht viel mit gettext gemacht... Orientiert es sich an den locales Einstellung? Hast du die locales auch auf de? Oder muß man gettext anders sagen, welche Sprache nun dran ist?

Verfasst: Mittwoch 21. März 2007, 17:54
von gerold
Hi wdsl!

Ich weiß jetzt zwar nicht, warum dein Beispiel nicht funktioniert, aber hier findest du ein nützliches Tool zum Übersetzen deiner Anwendung: http://www.poedit.net/

mfg
Gerold
:-)

Verfasst: Mittwoch 21. März 2007, 17:59
von gerold
wdsl hat geschrieben:hmm ich schnalls nicht!

Code: Alles auswählen

_ = gettext.gettext
Hi wdsl!

Nur so eine Vermutung. Kann es sein, dass oben gezeigte Zeile zu viel ist?

http://docs.python.org/lib/node740.html

mfg
Gerold
:-)

Verfasst: Mittwoch 21. März 2007, 20:25
von Leonidas
Hier ein kleines Beispiel von Dookie.