- www.ghsvs.de, 2019-08-21
- https://www.ghsvs.de/programmierer-schnipsel/spezielles-ghsvs-internes/96-sprachplatzhalter-und-joomla-jtext-in-javascript
- Sprachplatzhalter und Joomla.JText._ in JavaScript - GHSVS-Dein Web mit Mehr

SpeziellSchnipsel

Ähnlich der PHP-Methode

echo JText::_('TPL_BEEZ3_ALTCLOSE');

kann man In Javascript mit JText und Sprachplatzhaltern arbeiten. Am Beispiel eines alerts:

alert(Joomla.JText._('TPL_BEEZ3_ALTCLOSE'));

Grundbedingung ist das Laden der

/media/system/js/core.js

in Joomla, was man bspw. in der Template-index.php erreicht durch die Zeile

JHtmlBehavior::core();

 DAS LADEN DER core.js ERLEDIGT JOOMLA IN NEUEREN VERSIONEN OHNE ZUTUN, WENN MAN FOLGENDE script()-Methode verwendet. Weiß auch gar nicht, ob obige Zeile noch funktioniert

Nun muss man die Sprachplatzhalter in's JavaScript laden. man verwendet in PHP-Umgebung die Joomla-Methode

 

JText::script('TPL_BEEZ3_ALTOPEN');
JText::script('TPL_BEEZ3_TEXTRIGHTOPEN');

 

Siehe bspw. im Beez3-Template Zeile

require __DIR__ . '/jsstrings.php';

und den Inhalt der Datei,

Im Quelltext der HTML-Seite findet man dadurch automatisch Folgendes, also Sprachplatzhalter versus Übersetzung wie in den INI-Sprachdateien gefunden, die nun via Joomla.JText._('TPL_BEEZ3_ALTCLOSE') in JavaScript verwendet werden können

FOLGENDER AUTOMATISCH GENERIERTER JAVASCRIPT-CODE HAT SICH IN NEUEREN JOOMLA-VERSIONEN GEÄNDERT! TROTZDEM FINDET MAN IM SEITEN-QUELLTEXT DIE SPRACHPLATZHALTER FÜR JAVASCRIPT.

    (function() {
      var strings = {"TPL_BEEZ3_ALTCLOSE":"Mach dies","TPL_BEEZ3_TEXTRIGHTOPEN":"Mach das"};
      if (typeof Joomla == 'undefined') {
        Joomla = {};
        Joomla.JText = strings;
      }
      else {
        Joomla.JText.load(strings);
      }
    })();

xxxxxxxxxxxxx

Für Debugzwecke kann man in PHP-Umgebung das Array aller zuvor geladener, in Javascript verfügbaren Strings so erhalten:

$allAvailable = JText::getScriptStrings();
echo 'DEBUG '.print_r($allAvailable,true);exit;

Folgender früher üblicher Aufruf dafür wird ab Joomla 4 nicht mehr funktionieren

$allAvailable = JText::script();
Joomla 3 JavaScript Sprachplatzhalter