kaepten: Homepage Mehrsprachig

Beitrag lesen

Hoi

ist aber ein wenig Speicherverschwendend... Ich bin bisher ganz gut damit gefahren, wenn ich bei jedem Programm eine DB-Connection aufbaue und die Texte dann immer über diese hole...

Wen kümmert heutzutage Memory? ;-) Java wohl kaum, dort wird mit den Ressource-Files genau sowas gemacht.

erste Variante:
Das erste mal kam ich in Zusammenhang mit <www.swiss.tv> mit Langugageindependance in Kontakt. Dort hab ich ein ziemlich simples Interface dafür gebastelt:
Die zu verwendende LanguageID wird in der Session gespeichert, oder wahlweise über die URL mitgeschleppt. Der Text wird mit gettext( <TextID> ) geholt und ausgegeben. Diese Prozedur funktioniert ganz einfach: TextID aus der Session holen und entsprechenden Übersetzungsrecord aus der DB lesen (SELECT Translated FROM LanguageTranslatedItem WHERE TextID=... AND LanguageID=...).

Ja das scheint mir solide und gut zu sein, ist mir jedoch wegen den vielen einzelnen DB zugriffen nicht so geheuer.

zweite Variante:
Nun, dann hab ich für ne andere Site ein zweites Interface basteln müssen:
Ich habe bemerkt, dass die Sprachen etwas komplizierter sind... Z. B. bei zusammengesetzen Sprachkonstrukten (wenn ich z. B. eine nicht zu übersetzende URL in eine Übersetzung einfügen muss); oder wenn die Satzstellung sich bei diesen in verschiedenen Sprachen ändern.
Dafür hab ich dann Platzhalter in die Sprachtexte eingefügt, welche dann wohl in jeder Sprache an einem anderen Ort stehen (z. B. "hallo %1, das ist meine Welt" => "hello %1, this is my world"). Eventuell lässt sich so ein Platzhalter auch noch übersetzen (falls es sich nicht um eine URL o. ä. handelt und auch sprachabhängig ist). Da ich unter ziemlichen Zeitdruck bei diesem Projekt stand und ich nicht jeden Record eingenhändig in die DB eintragen wollte, habe ich die gettext-Prozedur erweitert:
Die gettext-Prozedur erhält _keine_ TextID, sondern den deutschen Text, wie ich ihn im Programm haben will (das hab auch den Vorteil, dass man den Programmquelltext viel besser versteht: gettext(209) oder gettext('Hallo %1, füllen Sie bitte das folgende Formular aus')). Falls der übergebene Text noch nicht in der DB auffindbar ist, wird er automatisch eingefügt und später durch einen Übersetzer (menschlicher Natur) übersetzt. Oh, da kommt mir grad eine Idee. Ich könnte den Bablefish anzapfen und eine Vorabübersetzung implementieren ;)

Tja diese Idee dünkt mich etwas speziell. Da muss du doch aufwendige "WHERE" abfragen über Texte in der DB machen. Vermutlich nicht sehr performant, das würde ich mich nicht getrauen zu machen, obschon der Ansatz, dass die Seite wenigstens wieder etwas lesbarer wird durchaus seinen Reiz hat!

kaepten