mi18n Texte in Javascript zugreifen
-
- Beiträge: 93
- Registriert: Mi 12. Aug 2009, 11:01
- Wohnort: Au, Zürich
- Kontaktdaten:
mi18n Texte in Javascript zugreifen
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
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
-
- Beiträge: 4316
- Registriert: Do 30. Jun 2005, 22:56
- Wohnort: Eltmann, Unterfranken, Bayern
- Hat sich bedankt: 6 Mal
- Danksagung erhalten: 4 Mal
- Kontaktdaten:
Re: mi18n Texte in Javascript zugreifen
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
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
ConLite 3.0.0-dev, alternatives und stabiles Update von Contenido 4.8.x unter PHP 8.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
-
- Beiträge: 93
- Registriert: Mi 12. Aug 2009, 11:01
- Wohnort: Au, Zürich
- Kontaktdaten:
Re: mi18n Texte in Javascript zugreifen
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
Gruss aus Zürich, Mike
-
- Beiträge: 4316
- Registriert: Do 30. Jun 2005, 22:56
- Wohnort: Eltmann, Unterfranken, Bayern
- Hat sich bedankt: 6 Mal
- Danksagung erhalten: 4 Mal
- Kontaktdaten:
Re: mi18n Texte in Javascript zugreifen
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.mikesteiner99 hat geschrieben:...da die Übersetzung gerade in 4.9 nochmal stark anwenderfreundlicher geworden ist
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
ConLite 3.0.0-dev, alternatives und stabiles Update von Contenido 4.8.x unter PHP 8.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
-
- Beiträge: 3215
- Registriert: Do 21. Okt 2004, 11:08
- Wohnort: Augsburg
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 17 Mal
- Kontaktdaten:
Re: mi18n Texte in Javascript zugreifen
Hallo mikesteiner99,
du kannst natürlich Übersetzungen in JavaScript verwenden, sofern du Übersetzungen in Modulen ausgeben kannst. Hier ein Beispiel:
Modulausgabe:
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.:
Der Zugriff darauf per JavaScript, z. B. in jQuery, geht folgendermaßen:
Gruß
xmurrix
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:
Code: Alles auswählen
console.log(window.translations.helloworld);
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
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
-
- Beiträge: 93
- Registriert: Mi 12. Aug 2009, 11:01
- Wohnort: Au, Zürich
- Kontaktdaten:
mi18n Texte in Javascript zugreifen
Danke xmurrix, genau was ich gesucht habe!!
TOP !!!
Gesendet von meinem iPhone mit Tapatalk
TOP !!!
Gesendet von meinem iPhone mit Tapatalk
-
- Beiträge: 437
- Registriert: Do 19. Jun 2008, 09:09
Re: mi18n Texte in Javascript zugreifen
Die Modulübersetzungen liegen im Dateisystem vor, sodass diese auch offline bearbeitbar sind.Oldperl hat geschrieben: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.mikesteiner99 hat geschrieben:...da die Übersetzung gerade in 4.9 nochmal stark anwenderfreundlicher geworden ist
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
Viele Grüße
Dominik
Dominik