我有一个包含许多Angular (V13)应用程序的NX工作区,所有这些应用程序都非常相似.我使用NGX-Translate(V13)来处理多语言支持,所以目前我 for each 应用程序都有两个json文件(ENG和DE).
这真的很难维护,因为翻译中即使是很小的更改也会导致许多文件被修改.
我的愿望是将翻译文件的公共部分移动到库中,这样每个应用程序仍然有2个文件,但它们只包含特定于应用程序的翻译,其余的都在库中的2个文件中.
实现这一目标的最佳方式是什么?
我有一个包含许多Angular (V13)应用程序的NX工作区,所有这些应用程序都非常相似.我使用NGX-Translate(V13)来处理多语言支持,所以目前我 for each 应用程序都有两个json文件(ENG和DE).
这真的很难维护,因为翻译中即使是很小的更改也会导致许多文件被修改.
我的愿望是将翻译文件的公共部分移动到库中,这样每个应用程序仍然有2个文件,但它们只包含特定于应用程序的翻译,其余的都在库中的2个文件中.
实现这一目标的最佳方式是什么?
这就是我所做的:
我在库(文件夹Assets/i18n)中创建了翻译文件,并将其添加到应用程序的第project.json个部分,位于"build.options.assets"下
{
"input": "libs/shared-components/src/lib/assets/i18n",
"glob": "**/*.json",
"output": "assets/i18n/core"
}
使用MultiTranslateHttpLoader可以加载多个翻译文件,因此我将此添加到app.module.ts
export function HttpLoaderFactory(http: HttpClient) {
return new MultiTranslateHttpLoader(http, [
{ prefix: 'assets/i18n/core/', suffix: '.json' },
{ prefix: '/assets/i18n/', suffix: '.json' },
]);
}
注意:加载文件的顺序很重要,如果两个文件都包含密钥,则第二个文件中的密钥将覆盖第一个文件中的密钥.
我不确定这是否是实现这一目标的最好方法,但对我来说,它是有效的.