我尝试用这个问题中的所有这些例子来解决我的任务Angular ngx-translate 在打字稿中的用法我不知道如何将 TranslateService 连接到我的方法。
瑞典语翻译文件se.json
(无钥匙)
{
NAME: Namn
}
英文翻译文件en.json
(无钥匙)
{
NAME: Name
}
打字稿:
从“@ngx-translate/core”导入{TranslateService};
constructor {
private translate: TranslateService
} {
this.translate.use(localStorage.getItem("language")); // Get selected language
}
我要翻译的方法:
setColumns(): void {
this.loggedInUserType = Meteor.user().profile.user_type;
if (this.type === "history") {
this.columns = [
{ header: "NAME" },
{ header: "TOTALSUM" },
{ header: "VAT" },
{ header: "INVOICES" },
];
} else if (this.type === "clients") {
this.columns = [
{ header: "NAME" },
{ header: "ORGANIZATIONNUMBER" },
{ header: "CITY" },
{ header: "COUNTRY" },
{ header: "ACTIONS" },
];
this.getClients();
}
}
-
应用程序模块.ts
export function HttpLoaderFactory(httpClient: HttpClient) {
return new TranslateHttpLoader(httpClient, 'assets/i18n/', '.json');
}
export class TranslateHandler implements MissingTranslationHandler {
handle(params: MissingTranslationHandlerParams) {
/* some logic */
}
}
export function appInitializerFactory(translateService: TranslateService, injector: Injector): () => Promise<any> {
// tslint:disable-next-line:no-any
return () => new Promise<any>((resolve: any) => {
const locationInitialized = injector.get(LOCATION_INITIALIZED, Promise.resolve(null));
locationInitialized.then(() => {
translateService.use(localStorage.getItem("language") || window.navigator.language) // here u can change language loaded before reander enything
.pipe(take(1))
.subscribe(() => {},
err => console.error(err), () => resolve(null));
});
});
}
@NgModule({
imports: [
...,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: (HttpLoaderFactory),
deps: [HttpClient]
},
isolate: false,
missingTranslationHandler: [{provide: MissingTranslationHandler, useClass: TranslateHandler}]
}),
]
providers: [
...,
{
provide: APP_INITIALIZER,
useFactory: appInitializerFactory,
deps: [TranslateService, Injector],
multi: true
}
]
})
export class AppModule {}
-
在组件的模块中添加TranslationModule
-
在组件构造函数中public ts: TranslateService) {}
-
现在你可以使用:
this.ts.instant('YOUR_KEY'); // return translated string or your key if translation not founded, but u can change logic in TranslateHandler
-
所有翻译都存储在资产/i18n/。例如en.json
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)