问题描述
Angular 11 内置了对 i18n 的支持。这在 angular.json
配置文件中配置时非常有效。
我正在从事大型项目,其中单个 monorepo 中有多个子项目。我们使用 Nrwl NX workspace.json
来配置项目。
问题是 workspace.json
对 i18n 有不同的语法,而且它似乎与 angular.json
的语法不兼容。此外,NX 文档对 i18n 的描述非常简短(几乎不存在)。
结果是目前我的应用根本没有本地化。
有什么想法可以让 i18n 在 NRWL NX 中工作吗?
提前致谢。
解决方法
经过多次尝试,我找到了一种方法。
因此有几个步骤可以让 Angular 的 i18n 在 NRWL NX 工作区中工作。
第 1 步)在默认构建目标中定义多个语言环境
"targets": {
"build": {
"executor": "@angular-devkit/build-angular:browser","options": {
// … options not relevant to i18n removed
"i18nMissingTranslation": "warning","localize": ["fr","en","sp"]
},
第 2 步)为每个语言环境定义命名构建目标
"configurations": {
"production": {
// ... some prod settings
},"en": {
"localize": ["en"]
},"fr": {
"localize": ["fr"]
}
},
第 3 步)更新服务配置以使用特定的构建目标
注意 appname:build:en
- 指示 nx serve 使用特定的构建目标
"serve": {
"executor": "@angular-devkit/build-angular:dev-server","options": {
"browserTarget": "appname:build:en"
}
}
第 4 步)运行 nx serve 以验证其工作
包含更多详细信息的完整文章在这里 - http://blog.davidjs.com/2021/03/working-with-angular-i18n-inside-nrwl-nx-workspace/