i18next 显示键而不是值

Posted

技术标签:

【中文标题】i18next 显示键而不是值【英文标题】:i18next Displayed key instead of value 【发布时间】:2013-08-18 08:54:51 【问题描述】:

我在/locales/en/ 中有translation.json 文件


    "app": 
        "name": "Example App"
    

html,我有:

<a href="/" data-i18n="app.name">

js:

$(document).ready(function() 

    var language_complete = navigator.language.split("-");
    var language = (language_complete[0]);

    console.log('language', language);

    $.i18n.init(
        lng: language,
        fallbackLng: false,
        debug: false
    , function() 
        $('a').i18n();
    );
);

它显示app.name 而不是Example App。我在代码中遗漏了什么?谢谢

【问题讨论】:

您是否包含 i18next 的 jQuery 版本? :) 同样的问题,你是怎么解决的?谢谢.. 【参考方案1】:

您必须将 useLocalStorageuseDataAttrOptions 设置为 true

$.i18n.init(useLocalStorage: true , useDataAttrOptions:true, ....);

【讨论】:

【参考方案2】:

在 js 中这是因为 $(document).ready 不等待外部内容被加载。您需要使用$(window).on('load',function()...)

【讨论】:

【参考方案3】:

从 i18next V2 开始,后端 不再提供开箱即用 (see the migration guide),因此您需要在 init 块中定义 backend 配置:

backend: 
    loadPath: '/locales/lng/ns.json'
,

如果您不这样做,您的资源将不会被加载,并且翻译值将回退到它们各自的键 (see the source code)。

【讨论】:

以上是关于i18next 显示键而不是值的主要内容,如果未能解决你的问题,请参考以下文章

材质 UI 多选不同的代码值和可见值 - 显示键而不是值

使用 i18next 进行反应生产构建会导致翻译仅显示字符串

使用 Laravel 获取数组键而不是值

使用 i18next(占位符,值)翻译自定义属性

如何在 next.js 中管理 i18n 路由以使用斜杠而不是破折号

打印 NSDictionary 的键而不是值