我正在开发一个 Angular 项目。我首先在项目中添加了 translaService ,一切都很好。所有组件都正确共享该语言。
当我启用延迟加载时,我已按模块划分了我的项目(这是预期的),并且我注意到翻译后的语言不再在模块之间共享。对于翻译,我使用 ngx-translate。
在 app.module 我有这个:
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: (httpTranslateLoader),
deps: [HttpClient]
},
isolate:false
})
export function httpTranslateLoader(http: HttpClient) {
return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}
Run Code Online (Sandbox Code Playgroud)
在我的共享模块中我有这个:
export function HttpLoaderFactory(http: HttpClient) {
return new TranslateHttpLoader(http);
}
@NgModule({
declarations: [],
imports: [
CommonModule,
TranslateModule.forChild({
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [HttpClient]
},
isolate: false,
extend:true
})
]
,
exports:[TranslateModule]
})
export class SharedTranslateModule {
constructor( translate: TranslateService) {
translate.addLangs(['en', 'fr']);
translate.setDefaultLang('en');
translate.use('en');
} …Run Code Online (Sandbox Code Playgroud)