Der Martin: Mehrsprachigkeit

Beitrag lesen

Moin,

Anstelle eines Texts wird eine Variable eingesetzt, und PHP verbindet dann die Variable mit einer Datei und setzt anhand einer Spracheinstellung den richtigen aktuellen Wert (Text in Sprache X). Dem Nutzer wird anschließend ein "sauberes" HTML gezeigt.
Soweit richtig?

ja, "im Prinzip" schon.

Etwas allgemeiner formuliert: Anstatt fester Texte stehen Platzhalter im Quellcode. Eine serverseitige Logik (z.B. PHP, weil's populär und sehr verbreitet ist) ersetzt diese Platzhalter durch den tatsächlichen Text in der gewünschten Sprache, bevor der so aufbereitete HTML-Code an den Client ausgeliefert wird.

Dabei treten allerdings mehrere Teilprobleme nacheinander auf.

  • Ermittlung der Sprache: Welche Sprache der Client haben möchte, ermittle ich dabei aus a) dem Accept-Language-Header im HTTP-Request, b) aus einem Cookie (Client hat einmal explizit eine Sprache gewählt und die wird gespeichert), und c) aus einem URL-Parameter (damit der Client überhaupt aktiv eine Sprache auswählen kann). Dann muss noch geprüft werden, ob man den Sprachwunsch des Clients auch bedienen kann, und falls nicht, müsste man auf eine Ersatzlösung zurückfallen, z.B. Englisch oder Deutsch.

  • Notation der Platzhalter im Code: Man kann sich fragen, ob man eher eine Art Template-Syntax nutzen möchte, z.B. etwas wie [[ÜBERUNS]], das Script nach diesem Muster [[PLATZHALTER]] suchen und ersetzen lässt, oder ob man direkt mit PHP-Code den Text an der gewünschten Stelle ausgeben möchte, also etwa <?=$Text['ÜBERUNS']?>. Die erste Vatiante ist im Template-Quellcode vielleicht etwas besser lesbar und sie ist zunächst mal von der verwendeten Scriptsprache unabhängig; bei der zweiten Methode entfällt das Search & Replace.

  • Speichern der Textfragmente: Elegant ist sicher eine Datenbank-Tabelle mit dem Platzhalter als Key (erste Spalte) und den sprachspezifischen Texten in weiteren Spalten. Dann hätte man bei jedem Seitenaufruf noch den Overhead einer Datenbankabfrage. Wenn ein DB-Zugriff sowieso der Regelfall ist, kommt's darauf nicht an; wenn nur allein wegen der Mehrsprachigkeit eine Datenbank ins Spiel kommt, ist das vielleicht mit Elefanten auf Mücken geschossen. Alternativ könnte man die Texte in einer separaten Datei speichern (z.B im CSV-Format), was aber auch nicht unbedingt effizienter ist. Oder direkt als PHP-Array in den Seitenquellcode. Das ist weniger schön zu pflegen, und man macht sich wieder von der verwendeten Scriptsprache abhängig.

Für mein Projekt ist insbesondere der Punkt "leichte Integration" wichtig, d.h. es soll sich einfach mittels Copy Paste in eine bestehende Website einbauen lassen.

Ich fürchte, da erwartest du zuviel. Sowas in eine bestehende Website nachträglich zu integrieren, ist nicht mal eben zwischen Aufstehen und Frühstück getan.

So wie ich das verstehe kann sich der Nutzer das reine HTML (+JS) in Wunschsprache ausdrucken lassen, damit sollte das möglich sein (theoretisch könnte ich die dann auch lokal ausdrucken und passend hosten). Lasse ich mir aber lieber noch von jemandem bestätigen, der das Wissen sollte. ;)

Da verstehe ich jetzt nicht, was du eigentlich meinst.

Soll / muss für jede Variable eine eigene .htm-Datei erstellt werden?

Du meinst, für jede Sprache? - Nein, siehe oben.

Mittelhöhere Prio hat, dass das Endergebnis als PWA taugt. Das sollte damit ebenfalls noch möglich sein?

Das eine hat mit dem anderen nichts zu tun, denke ich.

Live long and pros healthy,
 Martin

--
Klein φ macht auch Mist.