Ich arbeite an einer GUI-Website, die mehrere Sprachen verwenden kann. Die ursprünglichen HTML-Dateien, mit denen ich arbeiten konnte, waren völlig statisch. Wenn also eine Übersetzung benötigt wurde, musste ich alle Dateien analysieren, notieren, wo einige Wörter oder Begriffe waren, sie sammeln, sie an die Übersetzungsabteilung übergeben und diese Übersetzungen in die neuen Sprachdateien eintragen.Verwendung von Javascript zum Ändern der Website-Sprache
Da diese Dateien völlig statisch waren, mussten ganze Abschnitte mehrmals übersetzt werden. Nicht sehr effizient.
So jetzt arbeite ich an einer Art von Wörterbuch in Javascript, um nur die Begriffe in diesen Websites auszutauschen. Meistens funktioniert es so:
var dicEnglish = {
term 1: "This is the English text"
Ref: "Another English text"
}
var dicFrench = {
term 1: "This is the French text"
Ref: "Another French text"
}
Welche enthält alle möglichen Inhalte, die geändert werden müssen. Jeder Kandidat in dem HTML-Code wird ein class="dicRef" id="l_dicTag_#"
als Kennung, die ich den Wörterbuch-Tag und den Austausch mit dem folgenden Code in Scheiben schneide nach unten:
var imgSrc = "en";
var ActiveDic;
var langSel;
if(window.name){
langSel=window.name;
}
else{langSel="English";
}
function LangChange(){
langClass = document.getElementsByClassName("dicRef");
var i = langClass.length;
var Start, Stop, idSrc, idDic;
var navText;
switch(langSel){
case "French":
langSel="French";
imgSrc = "en";
navText="Anglais";
break;
case "English":
case "Anglais":
default:
langSel="English";
imgSrc = "fr";
navText="French";
break;
}
ActiveDic="dic"+langSel;
window.name=langSel;
while(i--){
idSrc = langClass[i].id;
Start=idSrc.indexOf("_")+1;
Stop=idSrc.lastIndexOf("_");
idDic=idSrc.slice(Start,Stop);
if(window[ActiveDic][idDic]){
document.getElementById(idSrc).innerHTML=window[ActiveDic][idDic];}
else{
document.getElementById(idSrc).innerHTML="N/A";
}
}
if(document.getElementById("imgSel")){
document.getElementById("imgSel").src="../../img/"+imgSrc+".gif";
}
if (document.getElementById("l_SelLang1_1")){
document.getElementById("l_SelLang1_1").innerHTML=navText;
}
}
Das Problem liegt in der Einzigartigkeit der ID-Tags. Da einige Begriffe mehr als einmal vorkommen können und einige generiert werden, wird der Zähler benötigt. Ich würde es vorziehen, den Zähler wegzulassen, kann aber keinen anderen Identifikator finden, um alle Zielterme zu sortieren und ihren Inhalt zu ändern.
Da ich für die Zukunft sicher sein möchte, würde ich eine Lösung bevorzugen, die es möglich macht, mit einer möglichen dritten Sprache umzugehen. Wenn Sie mit dem inneren HTML arbeiten, müssen Sie den gleichen Begriff mehrmals für jede Sprache markieren.
Gibt es eine Möglichkeit, alle Begriffe effizienter und einfacher auszutauschen oder einen besseren Weg zu finden? Ich kann nur mit clientseitigen Lösungen arbeiten, also kein PHP und so weiter.
Vielen Dank im Voraus und hoffentlich war das nicht zu lange zu lesen.
Ich muss zugeben, da ich neu bin Zu tieferem HTML und komplett zu Javascript wusste ich das nicht, weil W3C-Schulen mit HTML 4. anfangen;) Was ist mit Rückwärtskompatibilität. Spezifikationen sagen, dass es mit IE 7 oder Firefox 3.5 (und später natürlich) arbeiten muss. Ich finde widersprüchliche Informationen zu HTML 5 und alten Browsern. –