Я работаю над графическим интерфейсом, который может использовать несколько языков. Оригинальные HTML-файлы, с которыми я работал, были полностью статичными. Поэтому, если перевод был необходим, мне пришлось разбирать все файлы, отмечая, где были какие-то слова или термины, собрать все их в отдел перевода и ввести эти переводы в новые языковые файлы.Использование Javascript для изменения языка сайта
Поскольку эти файлы были полностью статичными, это означало необходимость переводить целые секции несколько раз. Не очень эффектно.
Так что теперь я работаю над каким-то словарем в 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;
}
}
Проблема заключается в уникальности идентификатора тега. Поскольку некоторые термины могут возникать более одного раза, а некоторые из них генерируются, счетчик необходим. Я предпочел бы опустить счетчик, но не могу найти какой-либо другой идентификатор, чтобы разобраться во всех целевых терминах и изменить их содержимое.
Поскольку я хочу быть в безопасности в будущем, я бы предпочел решение, позволяющее обрабатывать возможный третий язык. Работа с внутренним HTML должна была бы пометить один и тот же термин несколько раз, один раз для каждого языка.
Итак, есть ли способ нацелить все термины, которые будут обмениваться более эффективно и легко, или лучший способ сделать это? Я могу работать только с клиентскими решениями, поэтому нет PHP и так далее.
Спасибо заранее и, надеюсь, это было не так уж долго, чтобы читать.
Я должен признать, так как я новый к более глубокому HTML и полностью к Javascript. Я этого не знал, потому что W3C Schools начинается с HTML 4.;) Что касается обратной совместимости. Спекуляции говорят, что он должен работать с IE 7 или Firefox 3.5 (и позже, конечно). Я нахожу противоречивую информацию о HTML 5 и старых браузерах. –