angular translate static-loader-file PascalPrecht

时间:2013-10-14 10:52:19

标签: angularjs

我正在使用Angular-translate(PascalPrecht模块)。

我根据http://www.ng-newsletter.com/posts/angular-translate.html

中的示例成功地使其工作

但是,我想使用loader-static-files将所有翻译放在不同的json文件中,但这对我不起作用。我不确定我是在这里做的。

在我的角度模块中,我只是使用loader-static调用替换了工作代码(现在已注释):

angular.module('myApp.i18n', ['pascalprecht.translate'])
    .config(['$translateProvider', function ($translateProvider) {
        /*$translateProvider.translations('en', {
            HOME: 'Home',
            COMPANIES: 'Companies',
            WHAT_TO_DO: 'What to do',
            ABOUT: 'About us',
            CONTACT: 'Contact'
        })
        .translations('es', {
            HOME: 'Inicio',
            COMPANIES: 'Empresas',
            WHAT_TO_DO: 'Qué hacer',
            ABOUT: 'Nosotros',
            CONTACT: 'Contacto'
        });*/
        $translateProvider.preferredLanguage('es');

        $translateProvider.useStaticFilesLoader({
          prefix: '/languages/',
          suffix: '.json'
        });
}]);

我已在我的app文件夹中添加了文件:

/app/languages/en_US.json  /app/languages/es.json

当我加载我的主站点时,我在控制台中看到下一个错误:

http://localhost:1234/languages/es.json 404 (Not Found)

如果我删除前缀中的第一个'/',就像这样:

$translateProvider.useStaticFilesLoader({
              prefix: 'languages/',
              suffix: '.json'
            });

然后,我在控制台中出现下一个错误:

意外的令牌H

对不起,我想我不应该知道这应该如何运作。

2 个答案:

答案 0 :(得分:9)

确保您的服务器将.json作为json而不是纯文本发送。 另外,请确保.json文件的名称取决于相应的语言密钥。

你可以在这里阅读:http://angular-translate.github.io/docs/#/guide/12_asynchronous-loading(“使用staticFilesLoader”)

代码对我来说很好,所以一旦你修复了服务器没有以json的形式发送json的问题,事情应该会有效。

答案 1 :(得分:3)

我修好了。正如Pascal在评论中所说,问题是json文件格式错误。您必须将所有值放在双引号之间。

路径是对的。