Mehrsprachiges Programm

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
Benutzeravatar
SigMA
User
Beiträge: 181
Registriert: Sonntag 4. April 2004, 13:27
Wohnort: Freiburg
Kontaktdaten:

Servus =)
Ich habe eine Frage! :) (Schlau wa) und zwar:

Wie würdet ihr es anstellen um mehrere Sprache in euer Projekt einzubauen! Ich habe schon mal eine Idee gehabt:
Meine Idee hat geschrieben:In dem Ordner /hack/daten/lang/ liegen ganz viele Dateien die jede
die geforderten Sprachfunktionen enthält! (Wie das jetzt genau auf-
gebaut ist kann ich noch nicht sagen (muss mir das noch überlegen
(ja ich kann denken))) Die aktuelle Sprache kann der User in dem
ControllPanel/Setup.py einstellen! Diese Sprachdatei wird dann ge-
nommen und als lang.py in das /hack/ Verzeichniss kopiert. Jede Da-
tei importiert diese lang.py und greift darauf zu! Will man nun die
Sprache wechseln, so muss man nur die lang.py durch eine x-belibige
Sprachdatei ersetzten und schon klappet es prima :D
a) ist das system akzeptabel oder gibt es ein besseres System?
b) was soll am besten in den Sprachdateien stehen? So Funktionsmäßig:

Code: Alles auswählen

def error(nummer):
   if nummer == 42:
       print "Text"
oder soll das irgendwie mit Stringsarbeiten?

Code: Alles auswählen

error42 = """6*9 = 42"""
Was sind eure Ideen, oder wie würdet ihr das bauen?

Ich würde mich über Anregungen freuen! :)

SigMA
Leichtdio.de - Das Kreativ-Blog
http://www.leichtdio.de
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Das hatte ich erst kürzlich hier gefragt :?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Gettext ist so ziemlich der Standard unter Freier Software.

Es ist sogar möglich, je nach Sprache, auf die das Betriebssystem eingestellt hat, die passende Sprache zu laden.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
SigMA
User
Beiträge: 181
Registriert: Sonntag 4. April 2004, 13:27
Wohnort: Freiburg
Kontaktdaten:

jens hat geschrieben:Das hatte ich erst kürzlich hier gefragt :?
oh! :S Habs über die Suche nicht gefunden sorry :S

€dit: Ist gettext ein automatischer Übersetzter?
Leichtdio.de - Das Kreativ-Blog
http://www.leichtdio.de
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

SigMA hat geschrieben:€dit: Ist gettext ein automatischer Übersetzter?
Nein, übersetzen musst du noch selbst :P

gettext sieht in etwa so aus: du Wrappst deine Strings in die Funktion _() und diese ersetzt bei Laufzeit die Strings und gibt die passenden, übersetzen Texte rein.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
SigMA
User
Beiträge: 181
Registriert: Sonntag 4. April 2004, 13:27
Wohnort: Freiburg
Kontaktdaten:

Klingt kompliziert ... gibts da nen deutsches Tut?
Leichtdio.de - Das Kreativ-Blog
http://www.leichtdio.de
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

SigMA hat geschrieben:Klingt kompliziert ... gibts da nen deutsches Tut?
Für Python? Nicht dass ich wüsste, in English gibt es die Dokumentation von gettext.

Es sieht so aus: Du schreibst ein Programm, welches _() Funktionen hat, darüber lässt du pygettext laufen, welches aus den Strings in den PY-Dateien eine POT-Datei erstellt. Diese kannst du beispielsweise mit poEdit editieren und dann als PO abspeichern (du kannst auch mit poEdit fertige PO-Dateien mit POT-Dateien aktualisieren, wenn neue Strings dazugekommen sind, so dass du nicht alles neu übersetzen musst). Dann lässt du msgfmt.py über deine PO-Dateien drüberlaufen, es erstellt daraus die passenden MO-Dateien. Diese musst du noch in den richtigen Ordner packen und deinem Programm sagen, dass es die Übersetungen aus diesem Ordner holen soll.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
SigMA
User
Beiträge: 181
Registriert: Sonntag 4. April 2004, 13:27
Wohnort: Freiburg
Kontaktdaten:

ok ich werde mal es versuchen und von meinen (miss)erfolgen berichten ;D

€dit: oh ich versteh es einfach nicht :/ :(
Leichtdio.de - Das Kreativ-Blog
http://www.leichtdio.de
henning
User
Beiträge: 274
Registriert: Dienstag 26. Juli 2005, 18:37

Es sieht so aus: Du schreibst ein Programm, welches _() Funktionen hat, darüber lässt du pygettext laufen, welches aus den Strings in den PY-Dateien eine POT-Datei erstellt.
Habe mich selbst noch nicht näher mit beschäftigt aber die man-page von pygettext sagt, dass es deprecated ist, und man xgettext nutzen sollte.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Bei mir ist es auch noch nicht ganz aktuell, das Thema... Ich hatte eigentlich auch noch eine Frage gehabt, aber das hat sich nach einem blick auf dir Doku erledigt...

Ich hab hier mal Beispiele aus der Doku:

Code: Alles auswählen

import gettext
gettext.bindtextdomain('myapplication', '/path/to/my/language/directory')
gettext.textdomain('myapplication')
_ = gettext.gettext
print _('This is a translatable string.')

message = _('writing a log message')
fp = file('mylog.txt', 'a')
fp.write(message)
fp.close()

#ungettext(singular, plural, n)
n = len(os.listdir('.'))
cat = GNUTranslations(somefile)
message = cat.ungettext(
    'There is %(num)d file in this directory',
    'There are %(num)d files in this directory',
    n) % {'num': n}
Wie wäre es mit einer neuen Wiki-Seite zum Thema? :lol:

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

jens hat geschrieben:Wie wäre es mit einer neuen Wiki-Seite zum Thema? :lol:
Okay, ich überlege gerade wie man sie nennen sollte? GetText wäre etwas stark gettext-Spezifisch, denn locale sollte auch beschreiben werden. Internationalisierung und Lokalisierung wären etwas lang, l10n würde das ganze Thema auch nicht ganz richtig beschreiben, also am ehesten noch i18n oder in Großbuchstaben I18N.

Wobei.. ich sollte mal endlich wieder an NeuereVersionen weiterschreiben :?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
SigMA
User
Beiträge: 181
Registriert: Sonntag 4. April 2004, 13:27
Wohnort: Freiburg
Kontaktdaten:

Ne WikiPage fänd ich gut :D Dann würde ich es garantiert verstehen :D
Leichtdio.de - Das Kreativ-Blog
http://www.leichtdio.de
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Probiers doch erstmal mit der Doku, und wenn du nicht weiterkommst, poste einfach eine Frage.
Antworten