0

我正在使用 phonegap,我需要 i18n 支持这个应用程序,所以我最终选择了 i18next。下面是我的示例代码,但是 i18next 失败了,有人可以帮我吗?我得到的输出只是名称为“nav.home”、“nav.page1”、“nav.page2”的链接列表。此外,此 HTML5 示例代码仅适用于 Chrome,不适用于 Mozilla。

//HTML code
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8"> 
  <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
  <script type="text/javascript" src="i18next-1.6.3.js" ></script>
  <script type="text/javascript" src="translation.en.json" ></script>
  <script type="text/javascript" >
    $(document).ready(function(){
      i18n.init(function(t) {
        $(".nav").i18n();
        var appName = t("app.name");
      });
    });
  </script>
</head>

<body>
  <ul class="nav">
    <li><a href="#" data-i18n="nav.home"></a></li>
    <li><a href="#" data-i18n="nav.page1"></a></li>
    <li><a href="#" data-i18n="nav.page2"></a></li>
  </ul>
</body>
</html>

翻译.en.js 文件

{
  "app": {
    "name": "i18next"
  },
  "nav": {
    "home": "Home",
    "page1": "Page One",
    "page2": "Page Two"
  }
}
4

3 回答 3

1

我看到两件事:

  1. 英语语言环境应位于locales/en/translation.json
  2. 您不必附加.json文件<head>部分
于 2013-10-16T17:25:56.083 回答
0

试试这个(没有正确测试,因为我在我的手机上)

//HTML code
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8"> 
  <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
  <script type="text/javascript" src="i18next-1.6.3.js" ></script>
  <script type="text/javascript" >
    $(document).ready(function(){
      i18n.init({ 
        resGetPath: 'translation.__lng__.json' 
      }, 
      function(t) {
        $(".nav").i18n();
        var appName = t("app.name");
      });
    });
  </script>
</head>

<body>
  <ul class="nav">
    <li><a href="#" data-i18n="nav.home"></a></li>
    <li><a href="#" data-i18n="nav.page1"></a></li>
    <li><a href="#" data-i18n="nav.page2"></a></li>
  </ul>
</body>
</html>

但我认为按照亚尔所说的重新排列到文件夹中会更正常。

于 2014-11-02T10:29:32.800 回答
0

尝试这样做:

$(document).ready(function(){
    $.i18n.init({
        lng: 'en'
    }, function(t) {
        $(".nav").i18n();
        var appName = t("app.name");
    });
});

我认为您缺少选项字典。

于 2013-08-13T08:01:14.717 回答