【发布时间】:2019-05-27 02:04:18
【问题描述】:
我创建了自己的私有 Angular 库,其中包含多个组件,让我的生活更轻松。 我按照tutorial 制作了这个库。 一切都很顺利,我什至将它添加到另一个项目中进行测试。
现在是我必须支持多种语言的部分,因为我住在比利时 ????。我过去使用过 ngx-translate 包没有任何问题,所以我认为这很容易。
我在我的项目中添加了一个带有翻译 json 的 assets/i18n 文件夹。
我发现 Angular cli 不包含构建时的资产,因此您必须在制作包之前手动或使用 gulp 将它们添加到 dist 文件夹。 这样做之后,我注意到标签没有被翻译,除非我将翻译包含在主应用程序的 json 文件中。
我的库中的每个组件都有自己的模块,所以我认为我只需要在这些模块中添加翻译模块。所以我做了以下事情。
export function httpLoaderFactory(http: HttpClient) {
return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}
@NgModule({
imports: [
CommonModule,
FormsModule,
DirectivesModule,
ButtonModule,
IconModule,
PillModule,
TranslateModule.forChild({
loader: {
provide: TranslateLoader,
useFactory: (httpLoaderFactory),
deps: [HttpClient]
},
isolate: true
})
],
declarations: [
FilterComponent
],
exports: [
FilterComponent
]
})
这让事情变得更糟,不仅标签仍未被翻译,我的主要应用程序甚至都没有使用自己的翻译。在库模块发生这些更改之前,主应用程序的翻译没有问题...
所以你猜对了,我被卡住了...... 我似乎找不到合适的解决方案。
【问题讨论】:
-
您好!我理解你的问题。我对直接在您的库组件中进行翻译有疑问。你变得依赖于你的图书馆更新。是否可以将翻译后的单词/句子作为 @Input 传递?
-
我知道你的意思,但翻译是针对 aria-labels、锚标签上的标题(仅在悬停时可见)。另外,这个库仅供个人使用,所以我想要一个开箱即用的自支持库。
标签: angular internationalization ngx-translate angular-library