網站搜尋

angular - ngx-translate:重新載入時翻譯無法顯示


在我的網頁應用中,我使用 ngx-translate 模組進行本地化。它對於我用管道翻譯的 HTML 字串工作正常。我在 ts 元件中翻譯的字串遇到問題。字串會被翻譯,但如果我重新載入頁面,它們會變成空字串;如果我在應用內跳轉到其他頁面再回來,它們又會恢復正常。我已經定義了方法:

public getTranslation(key: string){
    let str="";
    this.translate.get(key).subscribe(value => {str = value});
    return str;
}

所以當我定義變數時,我使用:

variable: string = this.getTranslation("key-in-my-json-file")

我在 app.module 中的配置,載入器:

export function createTranslateLoader(http: HttpClient) {
  return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}

以及在進口中:

TranslateModule.forRoot({
  loader: {
    provide: TranslateLoader,
    useFactory: (createTranslateLoader),
    deps: [HttpClient]
  }
})

我在 package.json 中的版本:

"@ngx-translate/core": "^8.0.0",
"@ngx-translate/http-loader": "^1.0.2",
"typescript": "2.5.2"

以及 Angular 版本 4.3.6

答案#1

嘗試使用 localStorage。例如,我在更改語言的函數中使用它:

public changeLanguage(lang) {
  this.languageActive = lang;
  this.translateService.use(lang);
  localStorage.setItem("language", this.languageActive);
}

答案#2

用最小的超時時間包圍該行,這樣就可以工作了。

setTimeout(()=> {
          variable: string = this.getTranslation("key-in-my-json-file");  
}, 500);