因此,我的页面中有这样的代码:一个非常简单但工作的脚本,可以将它翻译成几种语言。
// preparing language file
var aLangKeys=new Array();
aLangKeys['en']=new Array();
aLangKeys['es']=new Array();
aLangKeys['fr']=new Array();
aLangKeys['cn']=new Array();
aLangKeys['en']['language']='english';
aLangKeys['es']['language']='español';
aLangKeys['fr']['language']='français';
aLangKeys['cn']['language']='中文';
aLangKeys['en']['buy']='buy';
aLangKeys['es']['buy']='comprar';
aLangKeys['fr']['buy']='acheter';
aLangKeys['cn']['buy']='买';
$(document).ready(function() {
// onclick behavior
$('.language').click(function() {
var lang = $(this).attr('id'); // obtain language id
if ($(this).attr('id') == 'es') {
$('.language').attr('id', 'fr');
}
else if ($(this).attr('id') == 'fr') {
$('.language').attr('id', 'cn');
}
else if ($(this).attr('id') == 'cn') {
$('.language').attr('id', 'en');
}
else if ($(this).attr('id') == 'en') {
$('.language').attr('id', 'es');
}
// translate all translatable elements
$('.translate').each(function(i){
$(this).html(aLangKeys[lang][ $(this).attr('key') ]);
});
} );
});
// HERE'S WHERE MY BRAIN STARTS MALFUNCTIONING
if ((window.location.pathname).split('/')[1] == 'es') {
// <-- EXECUTE FUNCTION ABOVE TO TRANSLATE TO SPANISH BASED ON PATHNAME
}
else if ((window.location.pathname).split('/')[1] == 'fr') {
// <-- EXECUTE FUNCTION ABOVE TO TRANSLATE TO FRENCH BASED ON PATHNAME
}
else {
}
因此,在单击按钮时,它基本上可以转换(更改页面上某些元素的值)。每次单击它,都会更改到下一种语言。效果很好。
问题是,如果用户从某个链接访问,我希望它“自动”更改为某种语言:
示例:
我试着用javascript“假装”点击按钮,但没有起作用。也尝试‘命名’的翻译功能和‘调用/运行它。
我知道这更容易做,我把事情弄得很复杂,但我是个菜鸟。
拜托救救我。或者只是个暗示。提前谢谢,为我的英语感到抱歉。
发布于 2018-07-02 02:21:12
基于上面的代码,以下几个想法:
1)让我们将aLangKeys更改为一个对象,每个键都是另一个对象。即
var aLangKeys={};
aLangKeys['en']={}; // Thats a named key/prop so we want an object here
...
aLangKeys['en']['language']='english'; // ditto the above comment2)我们可能希望移动检查就绪函数中的局部性的逻辑。也就是说。
$(document).ready(function() {
// onclick behavior
$('.language').click(function() {
...
});
// we want access to the DOM *and* maybe certain functions that do stuff. So its gotta be in here...
if ((window.location.pathname).split('/')[1] == 'es') {
// <-- EXECUTE FUNCTION ABOVE TO TRANSLATE TO SPANISH BASED ON PATHNAME
}
else if ((window.location.pathname).split('/')[1] == 'fr') {
// <-- EXECUTE FUNCTION ABOVE TO TRANSLATE TO FRENCH BASED ON PATHNAME
}
}); // end of ready function以下几个原因:
( a)我们希望根据路径名称/位置等信息更改页面内容。所以我们想知道页面是先加载的。
( b)也许我们想要建立一个功能,进行语言处理/更改,并从多个地方调用它。我们希望该函数在本地检查逻辑的范围内。如果我们在就绪函数作用域中定义该函数,则需要在同一范围内调用该函数的任何逻辑。
https://stackoverflow.com/questions/51127707
复制相似问题