我正在开发一个可以使用多种语言的 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 等等。
提前致谢,希望阅读时间不会太长。