AngularJS翻译静态文件加载器

时间:2014-08-04 09:46:58

标签: javascript json angularjs

我刚刚开始学习角度,我对这段代码有点失落,有人可以帮我解决这个问题。比如,我如何修改它以使用位于locale / locale-en_US.json的en_US.json。

 .factory("$translateStaticFilesLoader", ["$q", "$http",
    function(a, b) {
        return function(c) {
            if (!c || !angular.isString(c.prefix) || !angular.isString(c.suffix)) throw new Error("Couldn't load static files, no prefix or suffix specified!");
            var d = a.defer();
            return b({
                url: [c.prefix, c.key, c.suffix].join("../locale/locale-"),
                method: "GET",
                params: ".json"
            }).success(function(a) {
                d.resolve(a)
            }).error(function() {
                d.reject(c.key)
            }), d.promise
        }
         $translateProvider.preferredLanguage('en_US');
    }
]);

2 个答案:

答案 0 :(得分:0)

我感觉有点傻。我设法修复了我的代码,解决方案是>

app.js(主)

app.config(['$translateProvider', function ($translateProvider) {
    $translateProvider.preferredLanguage('en_US');

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

services.js

app.factory("$translateStaticFilesLoader", ["$q", "$http",
function(a, b) {
    return function(c) {
        if (!c || !angular.isString(c.prefix) || !angular.isString(c.suffix)) throw new Error("Couldn't load static files, no prefix or suffix specified!");
        var d = a.defer();
        return b({
            url: [c.prefix, c.key, c.suffix].join(""),
            method: "GET",
            params: ""
        }).success(function(a) {
            d.resolve(a);
        }).error(function() {
            d.reject(c.key);
        }), d.promise;
    }
    $translateProvider.preferredLanguage('');
}]);

我只需要复制原始来源的静态翻译并将其粘贴到我的服务中,并将所有参数留空。

答案 1 :(得分:0)

使用$translate加载静态文件由您需要加载的其他外部* .js文件处理。这包含此处提到的$translateStaticFilesLoader工厂。

您可以像@ALoppu那样在工厂手动复制,但更好的方法是在angular-translate.js后立即加载外部脚本:

<script src="vendor/angular/angular-translate.min.js"></script>    
<script src="vendor/angular/angular-translate-loader-static-files.min.js"></script>

您可以在GitHub here上获取angular-translate-loader-static-files.min.js的最新副本。