dani
Goto Top

Multi-Language Support in JavaScript

Guten Abend werte Kolleginnen und Kollegen,
ich habe ein kl. privates Projekt auf Basis von PHP übernommen. Im Rahmen der Modernisierung (Bootstrap, jQuery, etc...) soll ich Muli-Languages Support implementieren.

Unter PHP habe ich dies wie folgt realisiert:
if (isset($_GET["lang"])) {  
	$locale = $_GET["lang"];  
	setlocale(LC_MESSAGES, $locale)
	bindtextdomain("messages", "./locale");  
	textdomain("messages");  
}
Mit Poedit habe ich die entsprechenden Übersetzungen erzeugt und die Dateien anschließend hochgeladen.
Das Ganze funktioniert wie es soll.

Auf der Webseite gibt es verschiedene Buttons vom Typ Submit. Wird einer angeklickt, wird über JavaScript der Text des Buttons geändert. Nun soll der Text natürlich auch aus der messages.po bzw. message.mo je Sprache bezogen werden. Bei meinen Recherchen bin u.a. auf diesen Thread bei Stackoverflow gestoßen. Die erste Kommentar scheint nach meinem Verständis mein Problem zu lösen.

Was ich nicht verstehe, warum wird eine Datei mit der Endung .php abgespeichert und anschließend in der index.php als text/javascript eingebunden?
Warum nicht die entsprechenden Code direkt in der betroffenen Javascript-Datei plazieren?


Gruß,
Dani

Content-Key: 386796

Url: https://administrator.de/contentid/386796

Printed on: April 16, 2024 at 06:04 o'clock

Member: wiesi200
Solution wiesi200 Sep 17, 2018 at 18:59:52 (UTC)
Goto Top
Hallo,
also ich glaube dem geht’s nur darum das er alle Variablen wo er die Texte definiert an einem Platz hat, vielleicht das es übersichtlicher ist.
Nen tieferen Sinn glaub ich nicht das es gibt. Ist aber nur ne Vermutung.
Member: LordGurke
Solution LordGurke Sep 17, 2018 at 21:13:50 (UTC)
Goto Top
Ganz einfach: Wenn die Datei nicht auf .php endet, wird sie auch nicht vom PHP-Parser verarbeitet face-wink
Würdest du sie .js nennen wird der PHP-Code ungeparased an den Browser gegeben und das hilft dir ja wenig weiter.

P.S.: Niemals, ich wiederhole, NIEMALS übernimmt man Nutzereingaben in Systemfunktionen ohne sie zu filtern.
In deinem Fall könnte ich zwar nur eher mäßig Schaden anrichten — aber falls $locale später mal z.B. für was anderes verwendet wird...
Member: Dani
Dani Sep 18, 2018, updated at Dec 16, 2018 at 21:38:57 (UTC)
Goto Top
Guten Abend.
Ganz einfach: Wenn die Datei nicht auf .php endet, wird sie auch nicht vom PHP-Parser verarbeitet
da ist was dran. face-smile Aber es hat mit der zusätzlichen PHP-Datei nicht funktioniert. Ich musste die Übersetzung direkt in der index.php im Head Bereich unterbringen - dann ging es.

P.S.: Niemals, ich wiederhole, NIEMALS übernimmt man Nutzereingaben in Systemfunktionen ohne sie zu filtern.
In deinem Fall könnte ich zwar nur eher mäßig Schaden anrichten — aber falls $locale später mal z.B. für was anderes verwendet wird...
Vielen Dank für den Hinweis. Der obige PHP-Abschnitt ist unvollständig. Es wird natürlich über Regex genau geprüft, welche Zeichen in dem Parameter vorkommen dürfen.


Gruß,
Dani