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

问题描述

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/

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...