Multilanguage?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
wdsl
User
Beiträge: 35
Registriert: Donnerstag 22. Februar 2007, 16:26

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
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Srtichwort: gettext

Such mal im Forum danach ;)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
BlackJack

Schau mal in die Doku vom `gettext`-Modul in der Standardbibliothek.

Python handhabt "internationalization" wie die meisten anderen Open-Source-Programme.
wdsl
User
Beiträge: 35
Registriert: Donnerstag 22. Februar 2007, 16:26

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.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hier ein kleines Beispiel von Dookie.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten