如何使用i18next翻译Anuglar插件?

时间:2016-01-19 07:24:25

标签: javascript angularjs localization internationalization i18next

我使用i18next和插件https://github.com/i18next/ng-i18next。使用角度指令,它应该显示" test"和"这是一个测试"在页面上。但它显示了" home.title"和" home.content"。检查控制台,正确加载json文件,如果我使用javascript DOM,则可以显示正确的内容。

我的json文件:

{
    "home":{
        "title": "test",
        "content": "this is a test"
    }
}

HTML:

<div ng-app="myApp" ng-controller="myCtrl" class="home">
<h1 ng-i18next="home.title"></h1>
<p ng-i18next="home.content"></p>
</div>

脚本:

angular.module('jm.i18next')
.config(['$i18nextProvider',function($i18nextProvider){
  window.i18next.use(window.i18nextXHRBackend);

  $i18nextProvider.options = {
    debug: true,
    lng: 'en',
    fallbackLng: 'en',
    backend: {
      loadPath: '/locales/{{lng}}/{{ns}}.json'
    }
  };
}]);

angular.module('myApp', ['jm.i18next']).controller('myCtrl',['$scope', '$i18next',function($scope, $i18next){
}])

以下是来自控制台的信息,我不知道最后一个错误是什么:

  • i18next :: backendConnector:语言的加载命名空间转换 en Object {home:Object}
  • i18next.min.js:2 i18next:languageChanged en
  • i18next.min.js:2 i18next:initialized Object {debug:true,ns: Array [1],defaultNS:Array [1],fallbackLng:Array [1],fallbackNS: 假...}
  • ng-i18next.min.js:1未捕获的TypeError:i.lng不是函数

1 个答案:

答案 0 :(得分:3)

只需仔细检查并看起来 vendor> framework> Foundation> Auth> AuthenticatesAndRegistersUsers 模块已升级到较新版本,因此有以下选项:

i18next

应该用{ compatibilityAPI: 'v1', compatibilityJSON: 'v1', // ...old options from v1 } 来设置i18next插件。

PS:作为建议,我建议您使用angular-translate插件而非此插件,但这完全取决于您。