@@Treziman
zur Zeit beschäftige ich mich mit einem Projekt, das zweisprachig gestaltet werden soll, deutsch und englisch. Ich mache sowas zum ersten Mal. Wie realisiert man das am besten? Meine erste Idee war, zwei Klassen zu erstellen und mittels javascript die jeweilige ein-, bzw. auszublenden.
Clientseitiges JavaScript? Keine so gute Idee. Du müsstest dann ja sämtliche Texte auf deutsch und englisch übertragen, obwohl nur eins davon benötigt wird.
Ist ein User eingeloggt, braucht er nicht mehr über js wählen, da seine Sprachauswahl in der DB gespeichert wird.
Neue Nutzer sollten ihre Sprache auch nicht auswählen müssen, denn das haben sie bereits getan – in den Spracheinstellungen ihrer Browser. Diese im HTTP-Header mitgesendete Angabe Accept-Language
sollte dein Server beachten und die entsprechende Sprachversion ausliefern.
Wenn Nutzer ihren Browser nicht richtig eingestellt haben oder an einem fremden Computer sitzen, liefert language negotiation (Sprachvereinbarung) nicht immer das gewünschte Ergebnis. Deshalb muss auf jeder(!) Seite (nicht nur auf der Homepage) die Möglichkeit zur Sprachumschaltung vorhanden sein – und zwar auffindbar.
Dann wäre da noch die Möglichkeit, alle Skripte zu duplizieren, die Texte darin zu übersetzen und in getrennten, der Sprache zugehörigen Unterordnern abzuspeichern. Scheint mir am besten zu sein.
Oder über Subdomains (de.example, en.example)
Das läuft aufs selbe hinaus. Anstatt die Sprachversionen in verschiedene Ordner/Subdomains aufzuteilen, kannst du auch die Dateien im selben Ordner haben: seite3.de.html und seite3.en.html. Damit kann man im einfachsten Fall MultiViews nutzen, d.h. generische URLs https://example.net/seite3
.
Bei der Registrierung eines Nutzers speicherst du dessen Sprachpräferenz. Wenn sie die Sprache nicht umgeschaltet hat, also das Ergebnis der automatischen language negotiation. Und bei manueller Umschaltung speicherst du den Wert – auch zu einem späteren Zeitpunkt nach der Registrierung. Und sobald du einen Wert in der Datenbank hast, hat dieser Vorrang, d.h. dann wird keine language negotiation mehr gemacht.
Ein bisschen Lesestoff hab ich dir schon gegeben; hier noch ein Überblick. Auf W3C Internationalization findest du noch weitere Artikel. Fun fact: die Artikel sind alle language negotiated, d.h. wenn dein Browser deutsch als Präferenz angibt, bekommst du sie in der deutschen Übersetzung – sofern vorhanden – zu lesen.
Fun fact 2: Ich habe gerade gestern erst wieder einen Vortrag zu mehrsprachigen Websites gehalten.
🖖 Живіть довго і процвітайте
„Im Vergleich mit Elon Musk bei Twitter ist ein Elefant im Porzellanladen eine Ballerina.“
— @Grantscheam auf Twitter