Angular 9无法找到'en-US'语言环境数据。对于此语言环境将不包括任何语言环境数据。

9

我遇到了一个奇怪的警告

在运行ng build --configuration=prod --localize时,无法找到'en-US'的区域数据。将不会为此区域包含任何区域数据。

这是我的angular.json文件

// omitted
"i18n": {
    "sourceLocale": "en-US",
    "locales": {
      "sr-Latn": {
        "translation": "src/locale/messages.sr.xlf",
        "baseHref": "/sr/"
      }
    }
  },
// omitted

文档清楚地说明了 en-US 默认被导入。 更糟糕的是,当我将 sourceLocale 更改为任何其他语言(比如“de”)时,警告消息就会消失。
手动注册 en-US 地区数据也没有帮助


对于hr-HR来说也是一样 - undefined
5个回答

5

如果将sourceLocale设置为en,则它会起作用。

  • 但我无法弄清楚为什么默认值en-US不起作用。
"i18n": {
    "sourceLocale": "en",
    "locales": {...}
}

2

使用最新的版本9.0.2,您可以指定sourceLocale baseHref

"i18n": {
    "sourceLocale": {
      "baseHref": "/",
      "code": "en"
    },
    "locales": {
      "fr": "src/locale/messages.fr.xlf",
      "de": "src/locale/messages.de.xlf",
      "es": "src/locale/messages.es.xlf",
      "it": "src/locale/messages.it.xlf",
      "ja": "src/locale/messages.ja.xlf",
      "ko": "src/locale/messages.ko.xlf",
      "zh": {
        "translation": "src/locale/messages.cn.xlf",
        "baseHref": "/cn/"
      }
    }

1

我也遇到了同样的问题。

正如你所说,如果没有指定特定的LOCALE_ID,它的默认值似乎是en-US

此外,查看@angular/common/locales/*,似乎registerLocaleData的默认值是en@angular/common/locales/en存在,而@angular/common/locales/en-US不存在!对于de-DE也是一样:@angular/common/locales/de-DE不存在,但@angular/common/locales/de存在。

目前,我已经将所有内容切换为en/de,这样就可以工作了:


为英语和德语本地化的示例:

angular.json

[...]
      "i18n": {
        "sourceLocale": "en",
        "locales": {
          "de": "src/locale/messages.de.xlf"
        }
      }
[...]

app.module.ts

[...]
import { registerLocaleData } from '@angular/common';
import localeDe from '@angular/common/locales/de';
import localeEn from '@angular/common/locales/en';

registerLocaleData(localeDe, localeEn);
[...]

1
这确实很烦人。编译器期望有en-US资源,甚至使用en-US和base-href来编译应用程序。
以下是我的解决方法:
1)我忽略了警告和en-US输出目录。
2)我将应用程序编译两次。首先不使用--localized选项进行编译。这会编译原始应用程序,使用\作为base-href,并且不使用任何翻译文件。然后我再次使用--localized进行编译,以匹配语言代码的base-href编译所有语言。
ng build --prod --outputPath=dist/original
ng build --prod --outputPath=dist/localized --localize

3) 我部署来自dist/original的原始构建以及来自dist/localized(除了en-US目录)的所有其他构建。


2
我的问题与众不同。我确实想保留en-US构建。问题是缺少en-US的区域设置数据,即使en-US数据应该默认安装。 - SeaBiscuit

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接