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

标签 javascript internationalization i18next

我使用 i18next js 解决方案创建了一个语言切换器。每次我单击链接更改语言时,新语言都会显示一秒钟 - 然后网站切换回 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>

最佳答案

试试这个代码:

<!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 函数时)。在此版本中,页面不会重新加载,因此语言更改仍然存在。

关于javascript - i18next - 语言切换无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27153030/

相关文章:

javascript - 使用 JavaScript 删除 Google 表格的过滤器

python - JSON 到 iOS 字符串文件

javascript - 使用 Express 中的 i18n-2 创建多语言 Web 应用程序

java - 没有 faces-config 的 JSF 2.0 国际化

ruby-on-rails - Rails中的常量哈希的国际化3

ruby-on-rails - 如何在 Rails 中显示所有要求的翻译字符串?

javascript - 错误: Module should export a function: i18next

javascript 函数不工作但不显示任何错误

javascript - 添加初始化函数时 Sencha xtype 导航失败

javascript - 在 Rails 中进行 javascript 和 jQuery 测试的 JSpec vs Jasmine vs QUnit