i18next未加载翻译文件

时间:2013-07-22 12:15:36

标签: backbone.js requirejs i18next

我正在开发一些基于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 个答案:

答案 0 :(得分:12)

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

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

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

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

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