【问题标题】:ngx-translate: translations are not shown on reloadngx-translate:重新加载时不显示翻译
【发布时间】:2018-04-15 22:25:09
【问题描述】:

在我的 webapp 中,我使用 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"

和角度版本 4.3.6

【问题讨论】:

  • 试试新库 Transloco。

标签: angular typescript localization ng2-translate ngx-translate


【解决方案1】:

尝试使用本地存储。例如,我在更改语言时在函数中使用它:

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);
    

    【讨论】:

    • 这种方式根本行不通,我得到的只是空字符串。
    猜你喜欢
    • 1970-01-01
    • 2020-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-23
    • 2019-02-04
    • 2021-04-22
    相关资源
    最近更新 更多