Angular ngx-内部翻译服务

时间:2019-02-08 12:30:05

标签: angular typescript ionic-framework

我正在使用ngx-translate和ngx-translate / http-loader来翻译我的离子/角度项目。我在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文件中进行翻译:{{1​​}}

现在,我想在命令var text = this.translateService.instant("TEXT");生成的服务中使用translateService.instant,但我尝试了一下,但它不起作用,它本身返回了"ng generate s"。那是什么问题呢?

3 个答案:

答案 0 :(得分:1)

尝试func viewControllersForPagerTabStrip(_ pagerTabStripController: PagerTabStripViewController) -> [UIViewController] { }

请参阅:https://github.com/ngx-translate/core#4-use-the-service-the-pipe-or-the-directive

  

instant(键:字符串|数组,interpolateParams ?:对象):字符串|对象:获取键(或键数组)的即时转换值。 /!\此方法是同步的,默认文件加载器是异步的。您有责任知道何时加载翻译,使用此方法是安全的。如果不确定,则应改用get方法。

答案 1 :(得分:0)

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

constructor(translateService: TranslateService) {}

答案 2 :(得分:0)

首先将翻译服务注入您的服务构造函数中:

constructor(public translateService: TranslateService) {}

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

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