Thread Multilanguage Anwendung erstellen? (5 answers)
Opened by roooot at 2009-07-19 20:42

sid burn
 2009-09-24 10:43
#126162 #126162
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Unabhängig von den Modulen, hier wurde ja schon etwas genannt, würde ich dir eine empfehlung für die Umsetzung geben.

Wenn du Lokalisierst dann hast du meistens eine funktion die du aufrufst mit Text, und übergibst meist Parameter. Gehen wir einfach mal von den Fall aus das du rein Text hast ohne Parameter und die Funktion heißt "loc()" zum Lokalisieren.

Viele leute schreiben dann z.b. soetwas.
Code: (dl )
print loc("hallo welt!\n")


Daher es wird meist eine Sprache vorgegeben. loc() sucht genau diesen String in seiner Datenbank, und wenn du beispielsweise englisch eingestellt hast, und ein englischer Text vorhanden ist, würde dann dafür der Englische Text erscheinen, wird keine Übersetzung gefunden dann wird der übergebe Text einfach zurück gegeben.

Vor genau solch einer Benutzung möchte ich dir abraten.

Das Problem ist das in deinem Beispiel "hallo welt!\n" nicht nur dein Deutscher Text ist der ausgegeben wird, er fungiert auch automatisch als "key" worauf die übersetzer aufbauen. Daher in einer englischen datenbank steht dann sozusagen die zuordnung "hallo welt!\n" => "hello world!\n".

Sprich du hast ein Stück text das zwei bedeutungen hat, einmal als key und einmal der wirkliche Text der angezeigt wird.

Stell dir nun vor jemand ändert den Text auf "Hallo Welt!\n" da eben die Wörter in Großbuchstaben angezeigt werden sollen. Das Endergebnis ist das du nun einen neuen Key hast, und damit alle Überstzungen zunichte machst, den in den anderen Datenbanken existiert kein eintrag zu "Hallo Welt!\n" sondern nur zu "hallo welt!\n".

Wenn du so vorgehst wie am anfang gezeigt wird es schwer nachträglich Sätze zu ändern oder Rechtschreibung zu korregieren, du musst letztendlich immer gleich alle Datenbanken mit ändern. Von daher nutze einen "abstrakten" key der nur genutzt wird zur auswahl des Textes, nicht aber auch automatisch dein text ist. Für das obere beispiel wäre es z.B. gut wenn du einfach einen key hast z.B. "hello_world". Generell nur kleinbuchstaben zu nehmen, und auf whitespaces zu verzichten ist auch eine gute idee.

Mit diesen Key schreibst du dann zwei Datenbanken für Deutsch und Englisch.

"hello_world" => "Hallo Welt!\n"
"hello_world" => "Hello World!\n"

Den key sollte man natürlich nicht mehr ändern, da er aber nur zur auswahl dient ist es hier nicht schlimm wenn dort mal ein Typo enthalten ist etc.

Dadurch kannst du auch Templates übersichtlicher gestalten. Anstatt z.B. irgendwo einen großen text zu haben, nehmen wir z.B. an du beschreibst ein "Passwort" Feld, dann würdest du als key z.B. nur soetwas nehmen. "describe_password". Und die genaue lange beschreibung kommt dann in deine Sprachdateien.

Und wenn du die beschreibung mal änderst. z.B. ausführlicher, klarer machst, oder Rechtschreibung korregierst brichst du damit nicht die Übersetzung.

Weiterhin durch die einfachen keys (am besten nur [a-z0-9_] kannst du sehr einfach auswählen welcher "Textbaustein" wo angezeigt werden soll. Wenn deine Keys echter Text sind, wird es manchmal schwer soetwas auszuwählen.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread Multilanguage Anwendung erstellen?