我刚刚开始学习角度,我对这段代码有点失落,有人可以帮我解决这个问题。比如,我如何修改它以使用位于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');
}
]);
答案 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
的最新副本。