Moin Moin!
Nö, warum? Ein Javascript für alle. Welches Format Du annimmst, definierst Du über die Sprachauswahl
Ja, aber mir ist gerade nicht klar, wie ich die serverseitig gespeicherte Nutzereinstellung (is ja egal ob es die Sprache ist oder direkt das Datumsformat) in eine JS - Variable kriege. Daher der Gedanke mit den Nutzerabhängigen JS-Dateien. Oder meinst du als Inlinelösung wie
echo "<script type=\"text/javascript\">var user_language = $user_language</script>";?
In den alten Zeiten hab ich das tatsächlich so gebaut.
Heute würde ich wahrscheinlich stumpf <html lang="$userlanguage"> schreiben und mir das http://de.selfhtml.org/html/referenz/attribute.htm#internationalisierung@title=lang-Attribut in Javascript wieder herausfummeln.
Wenn es nur um Client-seitige Übersetzungen geht, wäre ein alternativer Weg, zwei JS-Resourcen zu laden, eine mit dem Code, und eine mit der jeweils passenden Übersetzungsdefinition. Sinngemäß:
<script type="text/javascript" src="/res/scripts.js"></script>
<script type="text/javascript" src="/res/translations-$userlanguage.js"></script>
(Wobei die reine Lehre eigentlich ist, Content-Negotiation zu betreiben und unter einer einheitlichen URL jeweils die Übersetzung auszuliefern, die der User per Browser-Spracheinstellungen ausgewählt hat.)
Wenn Du noch (deutlich) mehr User-Daten Client-seitig brauchst, gäbe es natürlich auch den Weg, diese Daten in einem einzigen JS-Objekt zu speichern. Das könnte so funktionieren, dass PHP entsprechend JS generiert:
<script type="text/javascript" src="/res/scripts.js"></script>
<script type="text/javascript" src="/res/translations.js"></script>
<script type="text/javascript" src="/dyn/user-settings.php/$userid.js"></script>
wobei user-settings.php ungefähr folgendes generiert, am besten anhand der Session, notfalls anhand der User-ID in der URL:
var userData={
"language" : "de",
"gender" : "female",
"help-level" : "beginner",
"answer" : 42,
...
};
Ohne "var userData=" und das abschließende Semikolon kannst Du das auch bei Bedarf als JSON nachladen, wenn Dir das lieber ist.
Schreibst Du das in jede generierte HTML-Seite direkt rein, brauchst Du keinen zusätzlichen Request für die Einstellungen, dafür lädst Du die mutmaßlich selben Daten mit jeder neuen Seite erneut, was die Seite aufbläst. Allerdings erspart Dir das auch Ärger mit dem Caching, wenn sich Einstellungen tatsächlich mal ändern.
Oder Du benutzt wieder die Möglichkeiten von HTML5:
<html lang="de" data-gender="female" data-help-level="beginner" data-answer="42">
...
Da bist Du allerdings erst einmal auf einfache Strings festgelegt, wenn Du mehr Struktur brauchst, schreibst Du besser Javascript.
Alexander
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".