i18next - 语言切换无法正常工作

时间:2014-11-26 15:33:16

标签: javascript internationalization i18next

我使用i18next js-solution创建了一个语言切换器。每次我点击链接更改语言,新语言会显示一秒钟 - 然后网站切换回init函数中设置的语言。

有谁知道我怎么解决它?我认为这与document(ready)函数有关,但当我删除它时 - 没有任何工作:/

谢谢!

的index.html:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script type="text/javascript" src="js/i18next-1.7.4.min.js"></script>
    <script type="text/javascript">
    $(document).ready(function(){
      $.i18n.init(
        {
          lng: 'en-US'
        },
        function(t) {
        // translate nav
        $(".nav").i18n();
      });

      $('.changeLng').click(function() {
        $.i18n.setLng("de-DE", function(t) {
          $(".nav").i18n();
        });
      });
    });
    </script>
  </head>
  <body>
    <a href="index.html?setLng=de-DE" class="changeLng">change to de</a>
    <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>

1 个答案:

答案 0 :(得分:1)

试试这段代码:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script type="text/javascript" src="js/i18next-1.7.4.min.js"></script>
    <script type="text/javascript">
    $(document).ready(function(){
      $.i18n.init(
        {
          lng: 'en-US'
        },
        function(t) {
        // translate nav
        $(".nav").i18n();
      });

      $('.changeLng').click(function() {
        $.i18n.setLng("de-DE", function(t) {
          $(".nav").i18n();
        });
      });
    });
    </script>
  </head>
  <body>
    <a href="#" class="changeLng">change to de</a>
    <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>

当您点击版本中的链接时,您正在重新加载页面,并且语言设置为&#39; en-US&#39;再次(因为document.ready函数再次被调用)。在此版本中,页面不会重新加载,因此语言更改仍然存在。