如何在不更改 NGX Translate 中当前语言的情况下检索翻译值?

问题描述 投票:0回答:6

我的问题是关于 ngx 在 Angular2 中的翻译。我的项目支持 2 种语言:英语和阿拉伯语,因此有 en.json 和 ar.json 文件。下面的代码将根据我当前的语言为我提供键的翻译值

this.translate.get('key').subscribe((msg: string) => {
    console.log(msg);
  }

问题:如何传递特定语言作为输入并获取该特定语言的翻译?例如,我当前的语言是英语(并且不想更改当前语言),但是从 ts 文件中,我需要从 ar.json 检索密钥的阿拉伯语翻译而不更改当前语言。

angular typescript ngx-translate
6个回答
0
投票

我建议不要使用 ngx 翻译来满足此特定要求。 ngx translate 的目的是将其绑定到视图并加载当前所选语言的 JSON。另一种方法是简单地设置另一个服务,通过传递一个字符串来加载您需要的 json 文件,例如英语的“en”和阿拉伯语的“ar”。然后,您可以根据需要在 ts 中使用该 JSON。


0
投票

我没有找到任何官方解决方案,但我做了解决方法。

const interval = Observable.interval(1000);
const langObservable = Observable.from(['EN', 'PL']);
langObservable.zip(interval, (v1, v2) => {
  return v1;
}).subscribe(lang => {
  this.translate.getTranslation(lang).subscribe(values => {
    const value = values['TRANSALTION_KEY'];
    this.messageProvider.next(value);
  });

});

0
投票

我也没有找到任何官方解决方案,但这样做了:

this.preferences.languages.forEach((lang) => {
   this.translate.getTranslation(lang).subscribe(values => {
     this.languages.push({ label: values.i18n.LANG, value: lang});
   });
 });

其中

lang
类似于 'en'、'pt' 等,必须与
getTranslation
参数的预期值名称匹配。


0
投票

你好,试试这个包https://www.npmjs.com/package/ngx-translate-in基于ngx-translate

您可以获得当前语言以外的特定语言的翻译

{{'key' | translateIn : 'fr' | async}}

只需导入 tjis 模块 NgxTranslateInModule 并使用管道 translateIn


0
投票

您好,我们找到了一种使用 ngx-translate 来实现此行为(使用不同语言的翻译而不更改系统语言)的方法:

this.translateService.getTranslation(this.languageId).subscribe...

首先我们在translateService中加载所需的语言翻译,之后我们可以使用以下命令在服务中查找翻译:

var transaltedValue = this.translateService.getParsedResult(this.translateService.translations[this.languageId], 'resourceKey')

这可以在打字稿中使用,对于 HTML,您可以使用相同的逻辑创建管道


0
投票

检索更新翻译的官方解决方案:

let currentLanguageLocale = 'en'; //Any language locale like fr, es, ja, etc.
this.translateService.reloadLang(currentLanguageLocale).subscribe((response)=>{
    this.translateService.use(languageLocale);
});
© www.soinside.com 2019 - 2024. All rights reserved.