michael trenkler eBuisness Solutions
Humboldtstraße 1
79098 Freiburg
info@mtcd.de | |
Telefon | +49 761 453 89 72 |
Mobil | +49 151 234 34 080 |
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>
<wsl:registerTextJS lib="/de-wGlobal/wGlobal/scripts/taglib/wsl" project="{$wProjectPath}" textfile="" language="de"/>