我正在使用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"
本身。那么问题是什么呢?
4条答案
按热度按时间wbrvyc0a1#
尝试
this.translateService.get("TEXT").subscribe(...)
请参阅https://github.com/ngx-translate/core#4-use-the-service-the-pipe-or-the-directive
即时(密钥:串|数组,插入参数?:对象):字符串|Object:获取键(或键数组)的即时翻译值。/!\此方法是同步的,默认文件加载程序是异步的。您有责任了解翻译加载的时间,使用此方法是安全的。如果您不确定,则应改用get方法。
0mkxixxg2#
如果我理解正确的话,那么在新生成的服务中,只需注入翻译服务:
xxls0lw83#
首先在服务构造函数中注入翻译服务:
然后用它来获取当前语言的翻译:
icnyk63a4#
我也遇到了同样的问题,但是我在命令生成的服务的构造函数中添加了语言,并修复了它。