Kontakt

michael trenkler eBuisness Solutions
Humboldtstraße 1
79098 Freiburg

Email info@mtcd.de
Telefon+49 761 453 89 72  
Mobil+49 151 234 34 080

Texte aus PHP-Funktionen in javascript zur Verfügung stellen

Gerade bei mehrsprachigen Seiten macht es Sinn, die statischen Texte einer Website in separate (XML-) Dateien auszulagern. Um auf diese auch in Javascript-Funktionen zuzugreifen, ist nur ein kleines Script notwendig.

Dieses Script sollte im Head-Bereich der Seite integriert werden.

// Aktuelle Sprache setzen
$currentLanguage 'de';

// Alle verfügbaren Texte in das Array $languageTexts schreiben
$languageTexts getLanguageTexts($currentLanguage);

// Javascriptbereich erzeugen
echo '<script type="text/javascript">';

// Array fuer alle Texte erzeugen
echo 'var languageTexts    = new Array();';

// Assoziatives "Array" (Objekt) erzeugen
echo 'languageTexts[0]     = new Object();';

// Alle Texte in das Objekt-Array languageTexts[0] schreiben
// Format languageTexts[0][key] = value
foreach ($languageTexts as $languageTextId => $languageTextValue){
  echo 
'languageTexts[0]["'.$languageTextId.'"] = \''.$languageTextValue.'\';';
}
echo 
'</script>';
 
 

Die zugehörige Funktion getLanguageTexts

function getLanguageTexts($currentLanguage){

  
$dom = new DomDocument;
  
$languageXMLFile '/text/'.$currentLanguage.'.wTexts.php'

  
$xmlString file_get_contents($_SERVER['DOCUMENT_ROOT'].$languageXMLFile );
  
$dom->loadXML($xmlString);
  
$xpath = new DOMXpath($dom);

  
$nodeList $xpath->evaluate('/allTexts/text');

  
$languageTexts = array();
  foreach (
$nodeList as $node){
    
$languageTexts[$node->getAttribute('key')] = $node->nodeValue;
  }

  return 
$languageTexts;

}
 
 

Die XML-Datei, in der die Texte gespeichert werden (Beispiel)

<allTexts version="1.0">
  <
text key="homepage">Startseite</text>
  <
text key="contact">Kontakt</text>
  <
text key="link_back">Zurück</text>
</
allTexts>
 
 

Fertiges Script für Weblication GRID5 Projekte:

Funktionsaufruf

<wsl:registerTextJS lib="/de-wGlobal/wGlobal/scripts/taglib/wsl" project="{$wProjectPath}textfile="" language="de"/>