【问题标题】:i18next special features when using RequireJS-i18next-plugin使用 RequireJS-i18next-plugin 时的 i18next 特殊功能
【发布时间】:2023-05-29 10:04:02
【问题描述】:

我正在使用 i18next 处理项目的翻译。 它有很多不错的功能,比如这两个:

// pluralization (http://i18next.com/translate/pluralSimple/):
i18next.t('apple', {count: 5}); // apples

// translation context (http://i18next.com/translate/context/):
i18next.t('friend', {context: 'male'}); // A boyfriend

但是,我的项目还使用 RequireJS 及其 i18next 插件,正如文档 (http://requirejs.org/docs/api.html#i18n) 中提到的那样,它的工作原理如下:

我将翻译声明为 RequireJS 模块:

//Contents of my/nls/translations.js
define({
    "root": {
        "friend": "A friend",
        "friend_male": "A boyfriend",
        "friend_female": "A girlfriend",

        "apple": "apple",
        "apple_plural": "apples"
    },
    "fr-fr": {
        "friend": "Un ami",
        "friend_male": "Un petit ami",
        "friend_female": "Un petite amie",

        "apple": "pomme",
        "apple_plural": "pommes"
    }
});

然后我以这种方式加载和使用它们:

//Content of my/logic.js
var translations = require("i18n!my/nls/translations.js");
console.log(translations.friend); // logs "Un ami" (in my French browser!)

但是,在这样的上下文中,我不明白如何使用我上面提到的 i18next 的各种功能(复数、上下文等)。这不会出现在插件的文档中。我有点迷茫……

【问题讨论】:

    标签: javascript requirejs i18next


    【解决方案1】:

    RequireJS i18n 插件不适用于 i18next。使用require-i18next插件

    RequireJS i18n 插件是一个简单的key=>val 映射器。 i18next 是一个强大的工具。

    我个人不使用 require-i18next 插件。我使用 domready 插件和这段代码:

    domReady(function () {
      i18n.init({
        fallbackLng: 'en',
        shortcutFunction: 'sprintf',
        nsseparator: ':::',
        keyseparator: '::'
      }, initApp);
    });
    

    initApp 是运行我的应用程序的函数。

    【讨论】:

    • 感谢您的回复。不过,对于您对官方插件的评价,我感到有些惊讶。 “不起作用”是什么意思?至于我上面给出的最后一段代码,它对我来说很好。你的意思是我将无法使用其他功能?我也想知道需要优化:你的意思是它不起作用吗?至于 jcbvm/require-i18next,我正在尝试安装它,但我遇到了一些问题。我可能会再来问另一个问题。
    最近更新 更多