如果语言是德语,我使用以下代码来使用JS Gettext。
if (lang == "de") {
var gt = new Gettext({"domain": "tag_cloud", "locale_data": json_de_data});
function _(ident) {
console.debug('gt.gettext("'+ident+'")');
return gt.gettext(ident);
}
console.debug("Using Gettext.");
}
else {
function _(ident) {
console.debug('return "'+ident+'"');
return ident;
}
console.debug("Using no translation.");
}
在Firefox中,控制台显示:
Using Gettext.
gt.gettext("Ubiqitous, but effective.")
在所有其他浏览器(Chromiun,Opera,IE,rekonq,Safari)中,我得到了这个:
Using Gettext.
return "Ubiqitous, but effective."
我尝试删除else
块,然后在所有浏览器中都有效,而不是英语。
虽然_()
块没有被执行,但后者else
是定义的吗?如何在所有浏览器中使用它?
答案 0 :(得分:3)
function _(ident) {}
函数声明将在运行时之前进行评估,这是在解析时。
您可以更改为var _ = function(ident) {}
,这样_
将在运行时分配。