angular - 如何在 Angular 中翻译库而不在应用程序中初始化翻译服务?
问题描述
我有一个名为“控件”的库文件,该库文件被其他各种应用程序使用。我正在使用 ngx-translate 进行翻译。一些使用这个库的应用程序执行翻译,而有些则不执行。我希望我的库是自给自足的,并且默认加载英语而不在应用程序中初始化翻译服务。
我的 json 文件位于文件夹中:projects->controls->src->shared->assets->i18n。
我在 controls.module.ts 中编写了以下代码,但应用程序找不到 json 文件,因此无法加载翻译。
export function HttpLoaderFactory(handler:HttpBackend) {
const http = new HttpClient(handler);
return new TranslateHttpLoader(http, 'projects/controls/src/shared/assets/i18n/','.json');
}
@NgModule({
imports: [
......
HttpClientModule,
TranslateModule.forRoot({
isolate: true,
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps:[HttpBackend],
}
}),
.......]
exports:[ ....
TranslateModule]
})
export class ControlsModule {
constructor(private translate:TranslateService) {
this.translate.setDefaultLang('en');
}
}
解决方案
TranslateHttpLoader() 中的路径可能不正确。运行时ng serve
,应该可以使用您在此处指定的路径在浏览器上访问翻译文件。如果文件可在 处访问http://localhost:<PORT>/shared/assets/i18n/en.json
,请尝试以下操作 -
export function HttpLoaderFactory(http: HttpClient) {
return new TranslateHttpLoader(http, './shared/assets/i18n/');
}
此外,您可以在导入模块时设置默认语言。
imports: [
...
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [HttpClient]
},
defaultLanguage: 'en'
})
]
推荐阅读
- node.js - Node.js heroku 部署失败
- c# - 使用 ASP.NET MVC 使用 Web API 时出错 - “无法反序列化当前 JSON 对象”
- regex - 如何定义正则表达式/正则表达式并通过 Prolog 将其实现为自动机?
- c# - AddForce 到本地变换
- apache-kafka - Confluent Kafka docker 容器无法启动
- java - Kafka Java客户端等待节点分配超时
- python - django模板中ObjectId和字符串的连接
- machine-learning - 3d 数据集的深度学习,准备管道的最佳方法是什么?哪种算法最好?
- html - 如何将重叠的图像留在同一位置?
- stream - 切换标签时流广告停止,如何防止?