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

Posted

技术标签:

【中文标题】如何使 Angular 11 i18n 在 NRWL NX workspace.json 中工作?【英文标题】:How to make Angular 11 i18n work in NRWL NX workspace.json? 【发布时间】:2021-05-13 23:15:57 【问题描述】:

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

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

任何想法如何让 i18n 在 NRWL NX 中工作?

提前谢谢你。

【问题讨论】:

备案:这里是关于缺少文档的错误报告的链接github.com/nrwl/nx/issues/4751 【参考方案1】:

经过几次尝试,我找到了一种方法。

所以有几个步骤可以让 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/

【讨论】:

以上是关于如何使 Angular 11 i18n 在 NRWL NX workspace.json 中工作?的主要内容,如果未能解决你的问题,请参考以下文章

占位符文本的 Angular2 i18n

Angular 国际化 (i18n) 和 *ngFor

如何使 Angular 8 与 IE11 兼容?

使用 i18n 翻译 Angular 2 中的数据绑定文本

Angular Universal 与 i18n(服务器端渲染)

angular2 i18n 无法读取未定义的属性“创建”