gettext funktioniert einfach, indem man im PHP-Code erstmal die Sprache definiert, und dann z.B.
echo gettext('Hello World');
schreibt. gettext holt sich dann aus ner speziellen Datei die zur Sprache gehörende Übersetzung und gibt die zurück. Die Dateien mit den jeweiligen Übersetzungen muss man selbst schreiben.
Das das einen wirklichen Vorteil zu nem $lang-Array bringt kann ich mir aber nicht vorstellen.
das mit der "get + session + switch-case" - Methode finde ich schnell und praktikabel.
Das einzige was hier vielleicht nachdenklich macht ist die Verlängerung der Skripte. Deshalb meine Frage/Gedanken:
Eine Möglichkeit wäre hier doch auch mit Datenbanken, dh. die Übersetzungen werden in Tabellen gespeichert und per select ausgelesen. Hat hier jemand schon einmal Erfahrungen gemacht?
also ich mach es auch zum Teil über Datenbank, sofern es nur einzelne Wörter oder kurze Sätze sind.
Vorallem aber wenn ich in nem Formular ein Auswahlfeld aufrufe!
Auf diese Weise kann ich auch Übersetzungen in Auswahlfeldern mit Vorselektion realisieren. Zudem wird das Auswahlfeld über ein simples "include" eingebunden (auf mehreren Seiten) , so dass ich durch erweitern der Tabelle auch sofort die Vorschläge im Auswahlfeld erweitert habe und zwar auf allen entsprechenden Seiten.
Bei längeren Texten, behalte ich mir die Lösung mit dem Switchbefehl vor.
Dadurch kann ich auch noch etwas gestalterisch eingreifen, schliesslich hat jede Sprache ihre Eigenheiten und unterschiedliche Satzlängen.
Ich nutze dazu das GET, weil ich selbst gern durch kurzes Ändern der URL in die Sprache wechsel die mich interessiert.
in der MySQL-Tabelle werden dann nur ein einheitlicher Code (z.B. Länderkürzel "DE" als Kennung gespeichert, je nach Sprache wird z.B. die Funktion oder Land (obiges Formular) ausgegeben. Auf diese Weise möchte ich später ne Länderübergreifende Kommunikation (Systemgenerierte emails etc.) realisieren.
Was mich aber zum Thema auch interessieren würde, was bedeuten diese Lösungen für die Performance der Seite.
Gibt es hier Bedenken oder geniale Verbesserungsvorschläge?
die verwaltung ist super einfach, du übersetzt mit einer c-extension (schneller als über db) und du kannst keine Sachen vergessen weil der editor die skripte durchsucht!
Ich bin mit meiner Lösung sehr zufrieden, ich denk mir halt es gibt vielleicht noch genialere Lösungen die ich noch nicht kenne.
Mit solchen Häppchen fängt man höchstens Ratten, bzw. verärgert das Haustier.
Wie löst Du mit GETTEXT die Angelegenheit mit den Auswahlfedern?
Wie lößt Du mit GETTEXT die Angelegenheit mit sprachspezifischer Formatierung?
Vorschläge?
die Bildchen die Du ansprichst existieren nicht.
Weil mir die Phantasie zum Zeichnen ausgegangen ist, wird diese Seite dieser Tage gänzlich der Bildchen enthoben.
Und dann übrigens auch via Datenbankinhalt generiert! weil ich damit gut klarkomm.
Original geschrieben von PriCo Sorry, was heißt hier:
Siehste, deswegen...
dafür war das smilie dar, genau diese reaktion wollte ich vermeiden
Original geschrieben von PriCo ...Ich bin mit meiner Lösung sehr zufrieden, ich denk mir halt es gibt vielleicht noch genialere Lösungen die ich noch nicht kenne.
Mit solchen Häppchen fängt man höchstens Ratten, bzw. verärgert das Haustier.
Wie löst Du mit GETTEXT die Angelegenheit mit den Auswahlfedern?
Wie lößt Du mit GETTEXT die Angelegenheit mit sprachspezifischer Formatierung?
Vorschläge?
ratten brauche ich nicht!
gettext ist vollkommen unabhängig vom layout:
<b>i18n("my little text")</b>
du kannst aber auch layoutsachen damit umsetzen:
i18n("my <b>little</b> text");
kann man auch wie folgt ins deutsch übersetzen
mein < i>kleiner< /i> text
auswahlfelder:
<option>i18n("Germany")</option>
jagst du den parser dann über die php-files, sucht er alle zu Übersetzenden Texte raus und du kannst dir aussuchen, für welche sprache du übersetzen willst.
der vorteil:
wenn mehrere Entwickler an einen Projekt arbeiten, muss nur darauf geachtet werden, dass texte eben mit i18n("your text") geschrieben werden, als ausgangssprache eignet sich halt englisch, dafür findet man em ehesten übersetzer und eine andere sprache. Sobald ein stable release kommt, wie gesagt, den editor drüberlaufen lassen, und übersetzen!
gruss
P.S.
i18n("*") muss nicht verwendet werden, liegt nur daran, dass ich das so verwende, weil man ja auch leuten eine chance geben möchte, die kein gettext aufm server haben, weil windows
ich denke ich werde mich mal näher mit gettext beschäftigen, scheint ja nicht zu komplex zu sein, man muß das Rad ja nicht immer neu erfinden :-)
für all diejenigen, die das auch tun wollen, habe ich - neben den schon angegeben Quellen - auch noch eine Einführung im Buch 'PHP de Luxe' unter 5.3 gefunden, welche gut verständlich geschrieben ist, ist zudem für die nicht - englischsprachler auf Deutsch.
Kommentar