我正试图在我的项目中实现@angular/localize,这是NX工作区(NX@16.4.3)的一部分.我在遵循官方指南:https://angular.io/guide/i18n-overview

具体来说,我

  • 我安装了@angular/localize@16.1.3的版本,它与我当前的Angular 版本一致

  • import '@angular/localize/init'添加到我的多边形填充中.ts

  • 在我的Main上增加了/// <reference types="@angular/localize" />.ts

  • 已将I18N配置添加到我的项目配置:

    "i18n": {
      "sourceLocale": "en",
      "locales": {
        "de": {
          "translation": "apps/web/login/src/locale/messages.de.xlf"
        }
      }
    }
    
  • 已配置构建目标

    ...
    "aot": true,
    "localize": ["de"]
    ...
    

当我nx serve这个项目,我希望有我的字符串在de本地化.但是,我得到了以下错误

错误:您的应用程序或其依赖项之一似乎正在使用I18N. Angel 9引入了一个需要加载的全局$localize()函数. 请从Angular CLI运行ng add @angular/localize. (对于非CLI项目,在polyfills.ts文件中添加import '@angular/localize/init';.

当我判断Polyfis.js包文件时,我发现webpack显然忽略了@angular/localize/init的导入,这解释了应用程序中缺少$LOCALIZE函数.

...
/***/ 85028:
/*!****************************************!*\
  !*** @angular/localize/init (ignored) ***!
  \****************************************/
/***/ (() => {

/* (ignored) */

/***/ }),
...

我如何才能让webpack不忽视这一点,并使其发挥作用?

使用@angular-devkit/build-angular:extract-i18n提取标签的效果非常好.

我try 重新安装NODE_MODULE以确保版本正确,并查找GitHub问题以找到答案--但没有成功

推荐答案

郑重声明:我遇到了一个问题,一个过时的浏览器列表配置阻止了它的工作:https://github.com/angular/angular/issues/48194

基本上我已经配置了safari >= 12,而ANGLE官方只支持最新的两个主要版本.我将其更改为safari >= 15,现在一切正常.

我只花了7天的时间研究……

Angular相关问答推荐

如何go 除融合图中的拖尾水印?

在Angular中将路由解析器提供程序和组件提供程序相结合

我如何更新此Ionic应用程序以解决路由问题?

Angular 如何渲染ngFor?

从 applescript 调用Angular 前端以从列表中 Select 一个项目

Angular 为什么延迟加载返回空路径?

NgRx Effects 抛出类型错误,我不知道发生了什么

大型 Angular 12 应用程序 - 我如何管理 js 文件

RxJs 中的空闲可观察对象在幕后做了什么?

将 autoSpy 与 ng-mocks 一起使用时,如何重置 jasmine 间谍调用?

Angular JWT Token 被添加到lazyUpdate 而不是 HttpHeaders 中的标头

如何在 Angular 中创建通用的可重用组件

Subject.complete() 是否取消订阅所有听众?

如何在Angular Material2中获取活动选项卡

Angular 2: Debounce(ngModelChange)?

无法绑定到matMenuTriggerFor,因为它不是 button的已知属性

Angular 2 通过 [class.className] 绑定添加多个类

Angular 2 - 全局 CSS 文件

实现autocomplete功能

RxJS - 发生错误时观察到的不会完成