i18next 使用 RequireJS-i18next-plugin 时的特殊功能
i18next special features when using RequireJS-i18next-plugin
我正在使用 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 的各种功能(复数化、上下文等)。这不会出现在插件的文档中。我有点迷路...
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
是运行我的应用程序的函数。
我正在使用 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 的各种功能(复数化、上下文等)。这不会出现在插件的文档中。我有点迷路...
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
是运行我的应用程序的函数。