javascript - i18next 最佳实践

标签 javascript json internationalization multilingual i18next

我已经成功实现了 i18next,顺便说一句,它是一个很棒的库!尽管我仍在寻找“最佳实践”。这是我现在的设置,总的来说我喜欢:

var userLanguage = 'en'; // set at runtime

i18n.init({
    lng                 : userLanguage,
    shortcutFunction    : 'defaultValue',
    fallbackLng         : false,
    load                : 'unspecific',
    resGetPath          : 'locales/__lng__/__ns__.json'
});

在 DOM 中我做这样的事情:

<span data-i18n="demo.myFirstExample">My first example</span>

在 JS 中我做这样的事情:

return i18n.t('demo.mySecondExample', 'My second example');

这意味着我在代码本身中维护英文翻译。然而,我确实使用单独的 translation.json 文件维护其他语言,使用 i18next-parser:

gulp.task('i18next', function()
{
    gulp.src('app/**')
        .pipe(i18next({
            locales : ['nl','de'],
            output  : '../locales'
        }))
        .pipe(gulp.dest('locales'));
});

一切都很好。唯一的问题是,当我将 'en' 设置为 userLanguage 时,i18next 坚持获取 /locales/en/translation.json 文件,即使它不包含任何翻译。为防止出现 404,我目前在该文件中提供一个空的 json 对象 {}

有没有办法完全阻止加载空的 .json 文件?

最佳答案

也许我在这里遗漏了一些东西,但你不能简单地这样做:

if (userLanguage != 'en') {

    i18n.init({
        lng                 : userLanguage,
        shortcutFunction    : 'defaultValue',
        fallbackLng         : false,
        load                : 'unspecific',
        resGetPath          : 'locales/__lng__/__ns__.json'
    });
}

那样的话,除非您确实需要翻译服务,否则您的脚本 i18n 不会被初始化。

关于javascript - i18next 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26561879/

相关文章:

django - 为什么 Django 不从另一个目录中的模板文件生成语言环境文件?

internationalization - WiX 中 Windows Installer 默认字符串的本地化

javascript - 如何在请求 header 上设置 key 以在nodejs中进行授权?

javascript - 与 Hooks react : When do re-renders happen?

javascript - 如何将 'this' 传递给 setTimeout 回调

javascript - JSON 文件中的动态 key (例如由 backbone.js 模型使用...)

.net - 全局化现有的Windows Forms应用程序?

javascript - 如何在extjs 4中制作不同颜色的柱形图

json - JMSSerializerBundle显示空白值而不是空值

javascript - 将 Json 数据返回给 Ajax 调用