角度翻译 - 多语言 - 静态文件 - 竞争条件?

时间:2016-08-11 18:36:51

标签: javascript angularjs angular-translate

我目前正在使用带有静态文件加载器的angular translate。我目前正在实现至少3种语言,但是,我注意到,通常当它试图加载语言文件时,有时加载语言文件需要的时间比视图本身要长 - 这会导致部分翻译的UI 。屏幕上的大多数项目将保持未翻译,但某些项目将是。

我尝试了以下内容,没有任何变化:

  • 在配置$ translateProvider时设置forceAsyncRefresh(true)。
  • 在登录控制器中设置$ rootScope监视(第一个视图用户将看到),在translateLoadedSuccess上,调用$ translate.refresh()。
  • 升级到最新的角度翻译

目前在视图中完成了99.9%的翻译,例如:{{::'我的翻译密钥'|翻译}}

在尝试解决此问题时我错过了什么?我应该尝试手动加载这些语言文件并在早期加载时设置它们吗?如果是这样,我如何在配置中设置它们的使用?

我正在使用Angular 1.5.0和Angular Translate 2.11.1。

TIA!

1 个答案:

答案 0 :(得分:0)

所以这实际上是一种竞争条件,其中最初加载语言文件所花费的时间有时(并非总是)长于将angular-translate转换为静态文件加载语言文件。

据我所知,有两(2)个选项可用 - 手动加载和设置语言文件,或者将语言文件移动到单独的较小文件中。但是,我希望始终保证向前发展,这不会成为一个问题,所以我选择手动加载和设置语言文件。这实际上非常简单,需要以下内容:

1)语言文件将加载到index.html文件中项目的顶部。

2)语言文件本身会被分配一个变量 - 即var enUS = {' LOGIN':'登录'用户' :'用户' }

3)语言将在app.config中手动设置:

app.config(['$translateProvider', function($translateProvider){
    $translateProvider.translations('en_US', enUS); // this is the variable we assigned to the language json in step 2
    $translateProvider.preferredLanguage('en_US');
    $translateProvider.useSanitizeValueStrategy('sanitize');
}]);

这完全解决了所有客户的所有问题。