【问题标题】:current language angularjs and i18next当前语言 angularjs 和 i18next
【发布时间】:2013-10-07 04:38:26
【问题描述】:

我正在使用这个: https://github.com/archer96/ng-i18next

我只能在选项中获取语言(如果已设置):

console.log("language: " + $i18next.options.lng);

您如何获得当前语言? 文档说: i18n.lng() 返回当前的 lng。

但在角度 $i18next.lng() 的上下文中不存在。

我也试过了:

console.log("language: " + $i18next.lang);
console.log("language: " + $i18next.language );
console.log("language: " + $i18next.lng);

【问题讨论】:

    标签: javascript angularjs internationalization i18next


    【解决方案1】:

    我是ng-i18next的开发者。

    ng-i18next 使用 Angular 的 $watch 函数来查找 $i18next.options 上的任何更改。

    这意味着您应该通过将$i18next.options.lng 设置为您想要的任何语言来更改语言。

    因此,$i18next.options.lng 始终包含当前语言。不需要$i18next.lng()

    当然这也可以:window.i18n.lng()

    【讨论】:

    • 如果你让它检测浏览器语言并且在初始化时没有指定 lng,那么 $i18next.options.lng 是未定义的。
    • 例如将 $i18next.options.lng 设置为“de”不会为我重新加载语言。我必须再次进行初始化才能在不刷新的情况下翻译页面。你知道为什么吗?
    【解决方案2】:

    这就是 i18next 提供商的做法:window.i18n.lng();

    Check the code here.

    [编辑] 我知道这是一个老问题,但我也在寻找答案,我认为分享我的发现是个好主意。

    【讨论】:

      【解决方案3】:

      这对我有用:

          var language;
          /* init i18next */ 
          i18n.init(options, function(t) {
              $("body").i18n();
          /* set global language var for usage in other functions */
              var language = i18n.detectLanguage();
          });
      

      要设置语言,请将参数添加到您的 URL (?setLng=de),而在示例中 de 是您的语言键。

      【讨论】:

        猜你喜欢
        • 2020-09-26
        • 1970-01-01
        • 1970-01-01
        • 2020-11-24
        • 2021-03-22
        • 2020-10-25
        • 2013-03-02
        • 1970-01-01
        • 2023-01-15
        相关资源
        最近更新 更多