web-dev-qa-db-ja.com

Angular 9 'en-US'のロケールデータが見つかりません。このロケールのロケールデータは含まれません

私はこの奇妙な警告を受けています

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ロケールデータを手動で登録しても効果がない

6
SeaBiscuit

これは確かに迷惑です。コンパイラーはen-USリソースを想定しており、en-USとbase-hrefを使用してアプリケーションをコンパイルします。

これは私がこれを解決した方法です。

1)警告とen-US出力ディレクトリを無視します。

2)アプリケーションを2回コンパイルします。まず--localizedオプションなし。これにより、元のアプリケーションがコンパイルされ、\がbase-hrefとして使用され、翻訳ファイルは使用されません。次に、-localizedを使用してもう一度コンパイルします。これにより、すべての言語が言語コードと一致するbase-hrefでコンパイルされます。

ng build --prod --outputPath=dist/original
ng build --prod --outputPath=dist/localized --localize

3)元のビルドをdist/originalからデプロイし、en-USディレクトリを除く他のすべてのビルドをdist/localizedからデプロイします。

1
Jaska

私は同じ問題を抱えています。

あなたが言ったように、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);
[...]
0
cocoseis

最新バージョン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/"
      }
    }
0
Tony Smith