我正在开发一个可以使用多种语言的GUI网站。我得到的原始HTML文件完全是静态的,所以如果需要翻译,我必须遍历所有文件,找出其中的一些单词或术语,收集它们并将其交给翻译部门,并在新的语言文件中输入这些翻译。
由于这些文件完全是静态的,这意味着需要多次翻译整个部分,效率不高。
因此,现在我正在用Javascript开发某种字典,只需在这些网站中交换术语即可。它主要是这样工作的:
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"
}
其中包含所有需要更改的可能内容。HTML代码中每个候选项都以class="dicRef" id="l_dicTag_#"
作为标识符,我将其切割为词典标记并替换为以下代码:
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;
}
}
问题在于id标签的唯一性。因为有些术语可能会出现多次,而有些术语是由计数器生成的,所以需要计数器。我更喜欢省略计数器,但找不到其他标识符来区分所有目标术语并更改其内容。
由于我希望未来能够安全处理可能出现的第三种语言,所以我更喜欢一种解决方案。使用内部HTML将需要为每种语言多次标记相同的术语。
那么有没有更有效、更容易地针对所有术语进行交换的方法,或者更好的方法呢?我只能使用客户端解决方案,所以没有PHP等等。