我有一个角度应用程序,使用两种语言。我用过$ translate.instant('id');在我的控制器中绑定一些变量。但是当我使用$ translate.use('jp')更改翻译语言时;控制器变量不会改变。
我在HTML中使用了'translate'过滤器。那个会改变,但控制器变量不会改变。有没有办法实现它?
使用以下代码初始化。
$translateProvider.useStaticFilesLoader({
prefix: '/translations/',
suffix: '.json'
});
$translateProvider.preferredLanguage('en');
$translateProvider.fallbackLanguage('en');
$translateProvider
.useSanitizeValueStrategy('escape');
在控制器中我使用了以下代码。 vm.userName = $ translate.instant('USER_NAME');
使用以下代码更改语言时
$translate.use('jp');
用户名不会更改。
答案 0 :(得分:0)
当您调用$translate.instant('USER_NAME')
在控制器上进行翻译也是不推荐,因为翻译只是一种表示(视图),不应该在控制器逻辑中处理。
如果你只想翻译userName
,你可以这样做(假设你已经完成了):
<p>{{USER_NAME | translate}}</p>
以下SO问题中提到了对此问题的进一步研究:
Correct use for angular-translate in controllers
检查@PascalPrecht(角度翻译的作者)@ RobinvanBaalen的回答