i18next 没有加载翻译文件

Posted

技术标签:

【中文标题】i18next 没有加载翻译文件【英文标题】:i18next is not loading the translation file 【发布时间】:2013-07-21 04:09:30 【问题描述】:

我正在开发一些基于 Backbone 的项目,我在其中使用 i18next 进行语言环境。

以下是我的 app.js 代码:

    /*
    This file is used to initialize your application.
*/
require(['i18n','application','handlebars_Helpers'], function(i18n, Application) 

    i18n.init(
        lng: 'en',
        debug: true,
        fallbackLng: false,
        load:'unspecific',
        resGetPath: "locales/__lng__/__ns__.json",
        ns: 
            namespaces: ['translation']
        
    );

    (new Application()).initialize();
);

翻译文件:


    "loginModule": 
        "signin": "Sign In"
    

以下是我的帮助文件:

/**
 * Set of generic handlebars helpers
 */
define(['i18n'], function(i18n) 
    /**
     * This helper provides i18Next in templates
     *
     *
     * Usage: span t "my.key" 
     */
    Handlebars.registerHelper('t', function(i18n_key) 
        var result = i18n.t(i18n_key);
        return new Handlebars.SafeString(result);
    );

    return Handlebars;

);

当我通过 localhost 加载页面时,它会在控制台中显示以下消息:

currentLng set to: en i18n.js:490
GET http://localhost:8000/locales/en/translation.json?_=1374495189376 404 (Not Found) i18n.js:376
failed loading: locales/en/translation.json

不明白我错过了什么?或者为什么会出现这个错误?

【问题讨论】:

【参考方案1】:

您将翻译文件存储在哪个文件夹中? i18n 的默认行为是,它尝试在特定路径中查找本地化文件:/locales/lang-code/namespace.json

如果您将文件保存在根目录下,请尝试将初始化代码更改为以下内容:

    i18n.init(
    lang: 'en',
    debug: true,
    fallbackLng: false,
    load:'unspecific',
    resGetPath: "__ns__-__lng__.json",
    ns: 
        namespaces: ['translation'],
        defaultNs: 'translation'
    
);

这将尝试从以下 url 加载文件:http://localhost:8000/translation-en.json

基本上,尝试检查翻译文件的位置,翻译文件的名称并相应地构造'regGenPath',更多信息可以在i18n文档http://i18next.com/node/pages/doc_init.html中找到

【讨论】:

当我从 firebug 复制 URL 并将其粘贴到浏览器的地址栏中时,它显示了 404;我删除了“?_ = 1374495189376”它正确地向我显示了文件。为什么要添加这个额外的号码? 好的,jQuery 添加了 "?_=1374495189376" 以防止缓存问题。它只是一个随机数,它强制浏览器下载文件,即使它以前在浏览器缓存中。您将不得不检查应用程序的服务器端。如果传递了一些查询字符串,则必须有一些设置可以防止下载静态文件。 知道了。我已经用 i18next.amd.withJQuery-1.6.3.min.js 文件更新了我的 i18N.js,它现在可以工作了。谢谢

以上是关于i18next 没有加载翻译文件的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用 i18next translation.json 文件的缓存?

如何在 Next.js 中设置 i18n 翻译的 URL 路由?

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

如何使用 i18next?翻译问题

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

i18next 不能在 Cordova iOS 6.1.0 上翻译