首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >i18next translator missingKey en翻译

i18next translator missingKey en翻译
EN

Stack Overflow用户
提问于 2017-09-12 16:06:43
回答 2查看 3.9K关注 0票数 0

我正试图在我的网站上实现i18next翻译,但无法获得成功。

代码语言:javascript
复制
i18next.init({
    debug: true,
    lng: 'en',
    resources: {
        en: {
            translation: {
                opt: {
                    page_title: 'Orders'
                },
            }
        },
        ru: {
            translation: {
                opt: {
                    page_title: 'Заказы'
                },
            }
        }
    }, function(err, t) {
        jqueryI18next.init(i18next, $);
    });

我有我系统的某些部分的词汇表,这些部分需要有一组命名的变量。

代码语言:javascript
复制
i18next.addResources('en', 'desktop', {
    'Авиа'                          :   'Avia',
    'Ж/Д'                           :   'Train',
    'Произвольная услуга'           :   'Custom Service',

    'Текущий баланс'                :   'Current balance',
    'Оборот за предыдущий месяц'    :   'Turnover for the previous month',
    'Оборот за текущий месяц'       :   'Turnover for the current month',
    'Общий оборот'                  :   'Total turnover',
});

i18next.loadNamespaces('desktop');

下一个方程式没有成功:

代码语言:javascript
复制
var fincanceDict = {
    company_balance                 :   $.t('Текущий баланс'),
    company_turnover_prev_month     :   $.t('Оборот за предыдущий месяц'),
    company_turnover_current_month  :   $.t('Оборот за текущий месяц'),
    company_turnover_full           :   $.t('Общий оборот')
}

每个转换操作都会出现错误:

代码语言:javascript
复制
i18next.js?v=e988b1:142 i18next::translator: missingKey en translation Текущий баланс Текущий баланс
i18next.js?v=e988b1:142 i18next::translator: missingKey en translation Оборот за предыдущий месяц Оборот за предыдущий месяц
i18next.js?v=e988b1:142 i18next::translator: missingKey en translation Оборот за текущий месяц Оборот за текущий месяц
i18next.js?v=e988b1:142 i18next::translator: missingKey en translation Общий оборот Общий оборот

如果我检查我的i18next.translator.resourceStore.data,我会得到enru语言对象的初始词汇表,其中有translation子对象,它拥有一组没有扩展名的嵌套键/值对。

我补充说我遗漏了一些东西,我试着把namespace改成default,再改回desktop也没用。

EN

回答 2

Stack Overflow用户

发布于 2017-09-12 22:03:13

loadNamespace ->确实通过后端加载命名空间(例如,xhr-后端):https://www.i18next.com/api.html#loadnamespaces

翻译是默认的命名空间,这就是为什么你可以在其中访问翻译,而不需要在t函数中预先加上它。https://www.i18next.com/configuration-options.html#languages-namespaces-resources

您可以创建一个"fixedT“函数

代码语言:javascript
复制
const desktopT = i18next.getFixedT(null, 'desktop');
desktopT('Текущий баланс');
票数 1
EN

Stack Overflow用户

发布于 2017-09-12 17:06:19

我在谷歌上到处搜索,发现了一些没有描述就能解决我的问题的东西。我应该在i18next.t / $.t函数中使用名称空间值:

i18next.t('namespace:key')

$.t('namespace:key')

这就是我解决问题的方法:

代码语言:javascript
复制
$.t('desktop:Текущий баланс')

我想知道如果我每次都要手动设置翻译namespacei18next.loadNamespaces函数会做什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46171118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档