Seite 1 von 1
mi18n Texte in Javascript zugreifen
Verfasst: Do 22. Mai 2014, 09:52
von mikesteiner99
Hallo Community
Ich weiss nich, ob ich grad auf dem Schlauch stehe oder obs da ne einfache Lösung gibt. Wie bekomme ich die mi18n Texte (Übersetzungen) in das Javascript, Zwecks "jQuery Validation".
Vielen Dank für allfällige Inputs
Gruss, mike
Re: mi18n Texte in Javascript zugreifen
Verfasst: Do 22. Mai 2014, 10:03
von Oldperl
Hallo mike,
mi18n greift leider immer noch nicht in Javascripten, auch nicht bei denen in Modulen. Zur Erkennung werden nur In- und Output des Moduls danach geparst. Nutzt du ein Template so kannst du die Texte im Modul ablegen und dann entweder direkt im Modul ausgeben oder im Template ablegen, z. B. als JS-Array oder -Object zur Verwendung mit jQuery.
Alternativ kannst du aber auch eine Sprachdatei (JS) abhängig von der genutzten Sprache im Modul einbinden. Die momentane Sprache kannst du per cRegistry ermitteln.
An allen Stellen kannst du aber auch mit i18n direkt arbeiten, indem du Dir ein locales-Verzeichnis in dein Modulverzeichnis legst und dieses über die Bord-eigenen Funktionen von Contenido als locale anmeldest, so wie es auch Plugins in Contenido machen sollten.
Gruß aus Franken
Ortwin
Re: mi18n Texte in Javascript zugreifen
Verfasst: Do 22. Mai 2014, 10:09
von mikesteiner99
Ok, verstanden. Eigentlich schade, da die Übersetzung gerade in 4.9 nochmal stark anwenderfreundlicher geworden ist, wäre das DAS "i Tüpfelchen" gewesen. Aber vielen Dank für die schnelle Antwort.
Gruss aus Zürich, Mike
Re: mi18n Texte in Javascript zugreifen
Verfasst: Do 22. Mai 2014, 10:24
von Oldperl
mikesteiner99 hat geschrieben:...da die Übersetzung gerade in 4.9 nochmal stark anwenderfreundlicher geworden ist
Das ist sie in meinen Augen nicht, Sie hat einen zusätzlichen (Gesamt-)Bereich erhalten, der aber, so wie ich das bisher sehe, zwar die Modulübersetzungen zentralisiert aber nicht wirklich anwenderfreundlich gestaltet ist. Auch fehlt mir eine Export-/Importfunktion um diese Übersetzungen zentral zu sichern bzw. auch mal offline oder per Mail auszutauschen.
Und wie deine Anfrage hier zeigt kann man noch viel verbessern, mi18n in Templates und in JS-Dateien ist da nur 1 Punkt.
Gruß aus Franken
Ortwin
Re: mi18n Texte in Javascript zugreifen
Verfasst: Do 22. Mai 2014, 12:32
von xmurrix
Hallo mikesteiner99,
du kannst natürlich Übersetzungen in JavaScript verwenden, sofern du Übersetzungen in Modulen ausgeben kannst. Hier ein Beispiel:
Modulausgabe:
Code: Alles auswählen
<script>
(function(scope) {
scope.translations = scope.translations || {};
scope.translations.helloworld = '<?php echo mi18n("HELLO_WORLD") ?>';
scope.translations.foobar = '<?php echo mi18n("FOOBAR") ?>';
})(window);
</script>
Das ist ein einfaches Beispiel, du kannst auch in PHP einen JSON String ausgeben, welches in JavaScript gleich als (JSON-) Objekt interpretiert wird.
In diesem Beispiel werden die Übersetzungen im globalen Namensraum, also im windows-Objekt gespeichert. Das kann man aber auch anders machen, es kommt darauf an, wie deine JS-Applikation aufgebaut ist.
Dann kannst du in deinem JavaScript auf die Übersetzungen folgendermaßen zugreifen:
Eine andere Variante wäre das Speichern der Übersetzungen in data-* Attributen der Formularfelder, z. B.:
Code: Alles auswählen
<input type="text" name="email" value="" data-errormsg="<?php echo mi18n("INVALID_EMAIL") ?>">
Der Zugriff darauf per JavaScript, z. B. in jQuery, geht folgendermaßen:
Code: Alles auswählen
// elem = Dom node des input Elements
console.log($(elem).data('errormsg'));
Gruß
xmurrix
mi18n Texte in Javascript zugreifen
Verfasst: Fr 23. Mai 2014, 19:09
von mikesteiner99
Danke xmurrix, genau was ich gesucht habe!!
TOP !!!
Gesendet von meinem iPhone mit Tapatalk
Re: mi18n Texte in Javascript zugreifen
Verfasst: Di 27. Mai 2014, 15:18
von dominik.ziegler
Oldperl hat geschrieben:mikesteiner99 hat geschrieben:...da die Übersetzung gerade in 4.9 nochmal stark anwenderfreundlicher geworden ist
Das ist sie in meinen Augen nicht, Sie hat einen zusätzlichen (Gesamt-)Bereich erhalten, der aber, so wie ich das bisher sehe, zwar die Modulübersetzungen zentralisiert aber nicht wirklich anwenderfreundlich gestaltet ist. Auch fehlt mir eine Export-/Importfunktion um diese Übersetzungen zentral zu sichern bzw. auch mal offline oder per Mail auszutauschen.
Und wie deine Anfrage hier zeigt kann man noch viel verbessern, mi18n in Templates und in JS-Dateien ist da nur 1 Punkt.
Gruß aus Franken
Ortwin
Die Modulübersetzungen liegen im Dateisystem vor, sodass diese auch offline bearbeitbar sind.