Ionic Angular ngx转换内部服务

sxissh06  于 2022-12-09  发布在  Ionic
关注(0)|答案(4)|浏览(194)

我正在使用ngx-translate和ngx-translate/http-loader来翻译我的离子/Angular 项目。我在app.module.ts导入中有以下代码:

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

和此加载器函数在同一个文件中:

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

这让我有机会在组件的html中使用这种翻译语法:{{ 'TEXT' | translate }},我也可以编写类似的代码来翻译组件的ts文件:var text = this.translateService.instant("TEXT");
现在我想使用"ng generate s"命令生成的服务内部的translateService.instant,我试过了,但是它不起作用,它返回"TEXT"本身。那么问题是什么呢?

wbrvyc0a

wbrvyc0a1#

尝试this.translateService.get("TEXT").subscribe(...)
请参阅https://github.com/ngx-translate/core#4-use-the-service-the-pipe-or-the-directive
即时(密钥:串|数组,插入参数?:对象):字符串|Object:获取键(或键数组)的即时翻译值。/!\此方法是同步的,默认文件加载程序是异步的。您有责任了解翻译加载的时间,使用此方法是安全的。如果您不确定,则应改用get方法。

0mkxixxg

0mkxixxg2#

如果我理解正确的话,那么在新生成的服务中,只需注入翻译服务:

constructor(translateService: TranslateService) {}
xxls0lw8

xxls0lw83#

首先在服务构造函数中注入翻译服务:

constructor(public translateService: TranslateService) {}

然后用它来获取当前语言的翻译:

this.translateService.getTranslation(this.translateService.currentLang).subscribe((translation: string) => { this.translationText= translation.text; });
icnyk63a

icnyk63a4#

我也遇到了同样的问题,但是我在命令生成的服务的构造函数中添加了语言,并修复了它。

constructor(
    private translate: TranslateService,
  ) {
    this.translate.use(environment.lang);
  }

相关问题