我正在开发一个可以使用多种语言的 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_#"as 标识符,我将其切成字典标记并与以下代码交换:
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-tag的唯一性。由于某些项可能出现多次,而有些项会生成,因此需要计数器。我更愿意省略计数器,但找不到任何其他标识符来整理所有目标术语并更改其内容。
因为我想在未来安全,所以我更喜欢一种可以处理可能的第三种语言的解决方案。使用内部 HTML 需要多次标记相同的术语,每种语言一次。
那么有没有什么方法可以更有效、更轻松地交换所有术语,或者有更好的方法呢?我只能使用客户端解决方案,所以没有 PHP 等等。
提前致谢,希望阅读时间不会太长。