Angular翻译-多语言-静态文件-竞争条件

Angular Translate - Multi Language - Static Files - Race Condition?

本文关键字:文件 竞争 静态 条件 语言 翻译 Angular      更新时间:2023-09-26

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

我尝试了以下方法,没有改变:

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

99.9%的翻译目前正在视图中完成,例如:{{::'我的翻译键' | translate}}

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

我使用的是Angular 1.5.0和Angular Translate 2.11.1。

TIA !

所以这实际上是一个竞争条件,加载语言文件的初始时间有时(并非总是)比angular-translate加载语言文件所需的时间长。

据我所知,有两种选择——要么手动加载和设置语言文件,要么自己将语言文件移动到单独的小文件中。但是,我希望始终保证这不会成为一个问题,所以我选择手动加载和设置语言文件。这实际上是相当简单的,需要以下内容:

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

2)语言文件本身将被分配一个变量-即var enUS = {'LOGIN': 'LOGIN', 'USER': 'USER'}

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');
}]);

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