我尝试使用角度翻译本地化我的应用。
这是我的模块:
angular.module('myapp', [
'angular-meteor',
'ui.router',
'ngMaterial',
'ngMessages',
'ngAnimate',
'ngCookies',
'pascalprecht.translate'
]);
然后是我的配置:
angular.module('myapp').config(['$translateProvider', function ($translateProvider) {
$translateProvider.useStaticFilesLoader({
prefix: 'client/lib/translation/',
suffix: '.json'
});
$translateProvider.preferredLanguage('en-US');
}]);
我的en-US.json文件内容:
{
"TITLE" : "hello"
}
我正在用这个html测试它:
<h1> {{"TITLE" | translate}}</h1>
我用变量中的表测试它并且效果很好,问题似乎是找不到或忽略我的.json,因为它显示
标题
而不是
您好
答案 0 :(得分:0)
我目前正在处理同样的问题。看起来是由于外部文件被异步加载,摘要周期运行得太早。
解决方法:在HTML中使用属性指令。
示例:
.git
免责声明:这可能不是最好的解决方案,我自己还在学习AngularJS!
答案 1 :(得分:0)
实际上我发现了这个问题,我不得不将我的语言环境文件放在公共文件夹中。所以这是固定的。
答案 2 :(得分:0)
这是一个完全有效的例子: http://plnkr.co/edit/Ibq4EaFcvyUPGpqb81Jo?p=preview 要使用翻译,也可以使用类似
的内容{{"TITLE" | translate}}
或:
<h2 translate="TITLE"></h2>
我也有加载文件的问题,我最终发现起始路径似乎是www文件夹。 然后在配置开始时没有正斜杠,所以这在我的应用程序配置中对我有用:
.config(function ($translateProvider) {
//$translateProvider.fallbackLanguage("en");
$translateProvider.determinePreferredLanguage();
$translateProvider.useStaticFilesLoader({
prefix: 'js/translations/locale-',
suffix: '.json'
});
$translateProvider.use('en_US');
$translateProvider.preferredLanguage('en_US');
})
我通过使用chrome调试器(chrome:// inspect)找到它,它显示控制台中的错误,当使用-lc运行离子时,通常终端中没有显示错误。
我希望能帮助任何人:)!