jQuery语言翻译不起作用?

时间:2010-11-18 19:16:23

标签: javascript jquery html dom jquery-plugins

我想将我的html页面从英语翻译成阿拉伯语和阿拉伯语翻译成英语。

我正在使用jquery.translate.js插件。 这个插件将翻译我的语言

使用json文件使用HTML元素的span id指示语言的更改。        的 langfiles-AR-SA.json

  {
  "ProfileSpan" : "Profile",
  "FrinedsSpan" : "Invite",
  "FreepointsSpan" : "Points",
  "PhonenumberSpan" : "Phone",
  }

类似于另一个json文件         的 langfiles-AR-SA.json

  {
  "ProfileSpan" : "المل�",
  "FrinedsSpan" : "دعوة",
  "FreepointsSpan" : "النقاط",
  "PhonenumberSpan" : "بحث متقدÙ",
  }

在html中我添加了三个js文件        js / jquery.js,js / jquery.translate.js,js / translationManagement.js   json文件位于webcontent的文件夹中。    我的javascript是:

    function Intialize(){
 $('#EnglishLanguageLink').click(function() {
  var eng = 'en-US';
  changeLanguage(eng);
  return false;
     });
$('#ArabicLanguageLink').click(function() {
    var ara = 'ar-SA';  
  changeLanguage(ara);
  return false;
     });
    }

    function changelanguage(newLanguage){
     $(this).translate("languages/langfiles.json", newLanguage);
    }

如果我点击英语语言链接和泰米尔语言链接,它会转到页面顶部。但翻译并没有发生。我在做什么错误。请提出解决此问题的方法。有什么建议吗?       在此先感谢。

1 个答案:

答案 0 :(得分:1)

我认为您的问题可能是因为您的changelanguage函数实际上将在window对象的范围内运行。这意味着this中的changelanguage()实际上将引用window对象,而不是其他元素。要解决此问题,请将对象传递给您的函数,如下所示:

function changelanguage(newLanguage, obj){
    $(obj).translate("languages/langfiles.json", newLanguage);
}

然后在您的点击处理程序中,将调用更改为:

changeLanguage(eng, this);

显然,为阿拉伯语链接改变了英语。

我不完全确定是否应该运行变量.translate,但是在window对象上运行它似乎很奇怪。