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.
wdsl
User
Beiträge: 35
Registriert: Donnerstag 22. Februar 2007, 16:26

Multilanguage?

Beitragvon wdsl » Mittwoch 21. März 2007, 01:50

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
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Mittwoch 21. März 2007, 08:08

Srtichwort: gettext

Such mal im Forum danach ;)

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
BlackJack

Beitragvon BlackJack » Mittwoch 21. März 2007, 08:09

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

Beitragvon wdsl » Mittwoch 21. März 2007, 16:16

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
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Mittwoch 21. März 2007, 16:26

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?

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Mittwoch 21. März 2007, 17:54

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: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Mittwoch 21. März 2007, 17:59

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.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Mittwoch 21. März 2007, 20:25

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

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder