Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs $translate.instant(';id);语言更改时不更新_Angularjs_Angular Translate - Fatal编程技术网

Angularjs $translate.instant(';id);语言更改时不更新

Angularjs $translate.instant(';id);语言更改时不更新,angularjs,angular-translate,Angularjs,Angular Translate,我有一个使用两种语言的angular应用程序。我使用$translate.instant('id');在我的控制器中绑定一些变量。但是当我使用$translate.use('jp')更改翻译语言时;控制器变量不会改变 我在HTML中使用了“翻译”过滤器。这一个会改变,但控制器变量不会改变。有什么办法可以实施吗 使用下面的代码初始化 $translateProvider.useStaticFilesLoader({ prefix: '/translations/', suffix: '.j

我有一个使用两种语言的angular应用程序。我使用$translate.instant('id');在我的控制器中绑定一些变量。但是当我使用$translate.use('jp')更改翻译语言时;控制器变量不会改变

我在HTML中使用了“翻译”过滤器。这一个会改变,但控制器变量不会改变。有什么办法可以实施吗

使用下面的代码初始化

$translateProvider.useStaticFilesLoader({
  prefix: '/translations/',
  suffix: '.json'
});
$translateProvider.preferredLanguage('en');
$translateProvider.fallbackLanguage('en');
$translateProvider
  .useSanitizeValueStrategy('escape');
在控制器中,我使用了以下代码。 vm.userName=$translate.instant('USER_NAME')

当使用以下代码更改语言时

$translate.use('jp');

用户名不会更改。

在调用
$translate.instant('USER\u NAME')时,如果语言文件未完全加载,则会发生这种情况。

也不建议在控制器上执行翻译,因为翻译只是一种表示(视图),不应在控制器逻辑中处理

如果您只是想翻译
用户名
,您可以这样做(假设您已经这样做了):

{{USER_NAME | translate}}

下面的SO问题中提到了对该问题的进一步研究:


检查@PascalPrecht(angular translate的作者)@Robinbanbaalen的答案

是否有示例代码,以便我们可以更仔细地查看?编辑。请现在检查。你能解决你的问题吗?