9

我收到了这个奇怪的警告

Locale data for 'en-US' cannot be found. No locale data will be included for this locale 跑步时ng build --configuration=prod --localize

这是我的 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 语言环境数据也无济于事

4

5 回答 5

5

如果您将 sourceLocale 设置为en.

  • 但我无法弄清楚为什么默认值en-USdosnt 起作用。
"i18n": {
    "sourceLocale": "en",
    "locales": {...}
}
于 2020-02-09T14:52:39.670 回答
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/"
      }
    }
于 2020-03-03T18:13:12.153 回答
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)我从除 en-US 目录之外的dist/original所有其他版本部署原始版本。dist/localized

于 2020-01-02T22:08:20.743 回答
0

我也有同样的问题。

就像您说的那样,默认值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并且它可以工作:


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

角.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);
[...]
于 2020-03-10T14:09:15.460 回答
0

也许这与该文件被命名为 en-US-POSIX 的事实有关,如此处所示https://github.com/angular/angular/blob/master/packages/common/locales/en-US-POSIX.ts

尝试动态import('@angular/common/locales/en-US-POSIX')工作。

所以尝试这可能会奏效

"i18n": {
    "sourceLocale": "en-US-POSIX",
    "locales": {...}
}
于 2020-11-10T14:49:42.163 回答