1

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

有人知道我该如何解决吗?我认为它与document(ready)功能有关,但是当我删除它时 - 没有任何效果:/

谢谢!

索引.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>
4

1 回答 1

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>

当您单击版本中的链接时,您正在重新加载页面并且语言再次设置为“en-US”(因为 document.ready 函数再次被调用)。在这个版本中,页面不会重新加载,因此语言会发生变化。

于 2014-12-16T11:16:12.510 回答