我只是像这样引用translateProvider:
var myAppModule = angular.module('myapp', ['ngRoute', 'ngMaterial', 'ngResource', 'pascalprecht.translate']);
启动js,我想在我的commonService.js中使用它, 像这样:
myAppModule.factory('commonService', ['$resource', '$translate', function ($resource, $translate) {
var auth = $resource('http://localhost:8012/user/auth.aspx', {}, {});
return {
init: function () {
var language = $resource("/Resources/Chinese.json");
language.get(function (data) {
console.data(data);
});
$translate.translations('en', {
HEADLINE: 'Hello there, This is my awesome app!',
INTRO_TEXT: 'And it has i18n support!'
})
.translations('de', {
HEADLINE: 'Hey, das ist meine großartige App!',
INTRO_TEXT: 'Und sie untersützt mehrere Sprachen!'
});
$translate.preferredLanguage('de');
},
submit: function (user) {
user.uk = "ad82544450d6fd3296878cbcd7a95d6b";
return auth.get(user);
}
}
}]);
但它警告我: TypeError:undefined不是函数 在Object.init(commonService.js:14) at new(loginController.js:8) at Object.invoke(angular.js:4182) at $ get.extend.instance(angular.js:8441) 在angular.js:7693 在forEach(angular.js:331) at nodeLinkFn(angular.js:7692) 在compositeLinkFn(angular.js:7075) at publicLinkFn(angular.js:6954) 在angular.js:1451 angular.js:9814获取http://localhost:41251/Resources/Chinese.json 404(未找到)
答案 0 :(得分:1)
顺便说一下你得到的错误,简单地说是Chinese.json的路径 是错误的,尝试在不同的选项卡中打开它,它会给你相同的404.所以提供正确的路径到json文件。 我没有使用过角度翻译,但从那里看来,你似乎是以错误的方式使用它。 基本上,提供程序仅在配置阶段可用,而不是在此之后。 来自AngularJs网站
在应用程序引导期间,在Angular关闭之前创建所有 服务,它配置和实例化所有提供者。我们称之为 应用程序生命周期的配置阶段。在这 阶段,服务无法访问,因为它们尚未创建 爱好。
配置阶段结束后,与提供商的互动就是 不允许,并开始创建服务的过程。我们称之为 应用程序生命周期的一部分运行阶段。
您需要在配置阶段设置首选语言和翻译, 您可以使用$ translate服务切换应用程序中的语言 使用方法。以下代码来自http://angular-translate.github.io/链接 他们也在这里给出了逐步文档http://angular-translate.github.io/docs/#/guide/07_multi-language 对于异步加载,可以在http://angular-translate.github.io/docs/#/guide/12_asynchronous-loading
找到示例
var myAppModule = angular.module('myapp', ['ngRoute', 'ngMaterial', 'ngResource', 'pascalprecht.translate']);
myAppModule.config(function ($translateProvider) {
$translateProvider.translations('en', {
HEADLINE: 'Hello there, This is my awesome app!',
INTRO_TEXT: 'And it has i18n support!'
});
$translateProvider.translations('de', {
HEADLINE: 'Hey, das ist meine großartige App!',
INTRO_TEXT: 'Und sie untersützt mehrere Sprachen!'
});
$translateProvider.preferredLanguage('en');
});
myAppModule.controller('Ctrl', function ($scope, $translate) {
//key is 'en','de' i.e. the language you
//you want to use
$scope.changeLanguage = function (key) {
$translate.use(key);
};
});