2016-08-11 48 views
0

我目前正在使用角度翻譯與靜態文件加載器。我目前至少實現了3種語言,但是,我注意到,通常當它試圖加載語言文件時,有時加載語言文件比加載語言文件需要更長的時間 - 這會導致部分轉換後的UI 。屏幕上的大部分項目都將保持未翻譯狀態,但某些項目將會保留。Angular Translate - 多語言 - 靜態文件 - 競賽條件?

我試過以下,沒有變化:

  • 配置$ translateProvider時設置forceAsyncRefresh(真)。
  • 設置$ rootScope手錶在登錄控制器(第一視角,用戶將看到),並在translateLoadedSuccess,調用$ translate.refresh()。
  • 升級到最新的角轉換

99.9所有翻譯%,目前正在在視圖,例如:{{::「我的翻譯主要」做|翻譯}}

那我在試圖解決這個問題缺少什麼?我應該試圖手動加載這些語言文件並在早期加載時設置它們嗎?如果是這樣,我如何在配置中設置它們的使用?

我採用了棱角分明1.5.0和角翻譯2.11.1。

TIA!

回答

0

因此,這實際上是一個競爭條件的地方正在採取最初加載語言文件時,有時(並不總是)超過它會採取角轉換爲靜態文件加載語言文件。

據我所知,有兩個(2)選擇 - 手動加載和設置的語言文件,或語言文件移入獨立的小文件本身。然而,我總是保證向前推進,這不會是一個問題,所以我選擇手動加載和設置語言文件。這實際上是相當簡單,所需如下:

1)語言文件(S)將在index.html文件中的項目的頂部加載。

2)語言文件(一個或多個)將在本身被分配一個可變 - 即無功美式英語版本= { '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'); 
}]); 

這樣可以完全解決所有客戶端中的所有問題。