i18n.changeLanguage发送一部分字符串来定位,而不是nn-NO,而是nn

问题描述 投票:0回答:1

我正在使用locize.io和i18n来翻译我的应用程序。一切工作正常,但是由于我用破折号添加了新语言:“ nn-NO”,所以我变得空了{}。

我正在像这样更改语言:i18n.changeLanguage(“ nn-NO”),但是方法以某种方式将不完整的字符串发送到服务器:

请求网址:https://api.locize.io/KEY_HERE/latest/nn申请方法:GET

并且当我手动尝试使用控制台和cUrl用“ nn-NO”更新此请求时,我得到了所有“ nn-NO”语言的翻译体裁。

[changeLanguage方法似乎不支持“-”,并且只考虑了字符串的第一部分就剪切了此字符串。

也许有人遇到这个问题?

javascript reactjs i18next
1个回答
0
投票

如果您遇到相同的问题,只需更改您的i18n配置:

load: 'languageOnly'

为此:

load: 'all'

所以,配置看起来像这样:

i18n

    .use(Backend)
    .use(LastUsed)
    .use(Editor)
    .use(initReactI18next)
    .init({
        fallbackLng: 'en',
        debug: false,
        saveMissing: true,
        whitelist: [list of allowed languages],
        ns: [list of namespaces],
        defaultNS: your_default_namespace,
        interpolation: {
            escapeValue: false,
        },
        backend: locizeOptions,
        locizeLastUsed: locizeOptions,
        editor: {
            ...locizeOptions,
            onEditorSaved: async (lng, ns) => {
                await i18n.reloadResources(lng, ns);
                i18n.emit('editorSaved');
            },
        },
        react: {
            bindI18n: 'languageChanged editorSaved',
            useSuspense: false
        },
        load: 'all'
    });

我在文档中找到了答案:

“要查找的语言代码,给定的设置语言是'en-US':'all'-> ['en-US','en','dev'],'currentOnly'->'en-US ','languageOnly'->'en'“

https://www.i18next.com/overview/configuration-options

© www.soinside.com 2019 - 2024. All rights reserved.