如何使 Angular 11 i18n 在 NRWL NX Workspace.json 中工作?

Dav*_*bec 3 internationalization angular nrwl nrwl-nx

Angular 11 内置了对i18n的支持。angular.json当在配置文件中配置时,这非常有效。我正在开发一个大型项目,其中单个 monorepo 中有多个子项目。我们使用 Nrwl NXworkspace.json来配置项目。问题是workspace.jsoni18n 有不同的语法,并且它似乎与angular.json. 另外,NX 文档关于 i18n 的内容非常简短(几乎不存在)。

结果是目前我的应用程序根本没有本地化。

有什么想法可以让 i18n 在 NRWL NX 中工作吗?

先感谢您。

Dav*_*bec 8

经过几次尝试,我找到了一种让它发挥作用的方法。

\n

因此,如何使 Angular 的 i18n 在 NRWL NX 工作区中工作需要几个步骤。

\n

步骤#1) 在默认构建目标中定义多个语言环境

\n
"targets": {\n  "build": {\n    "executor": "@angular-devkit/build-angular:browser",\n    "options": {\n        // \xe2\x80\xa6 options not relevant to i18n removed\n        "i18nMissingTranslation": "warning",\n        "localize": ["fr", "en", "sp"]\n    },\n
Run Code Online (Sandbox Code Playgroud)\n

步骤#2) 为每个语言环境定义命名构建目标

\n
"configurations": {\n   "production": {\n     // ... some prod settings\n   },\n   "en": {\n     "localize": ["en"]\n   },\n   "fr": {\n     "localize": ["fr"]\n   }\n  },\n
Run Code Online (Sandbox Code Playgroud)\n

步骤 #3) 更新服务配置以使用特定构建目标\n注意appname:build:en- 指示 nx 服务使用特定构建目标

\n
"serve": {\n "executor": "@angular-devkit/build-angular:dev-server",\n "options": {\n   "browserTarget": "appname:build:en"\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

步骤#4) 运行 nxserve 来验证其工作

\n

包含更多详细信息的完整文章在这里 - http://blog.davidjs.com/2021/03/working-with-angular-i18n-inside-nrwl-nx-workspace/

\n