Je reçois cet étrange avertissement
Locale data for 'en-US' cannot be found. No locale data will be included for this locale
lors de l'exécution ng build --configuration=prod --localize
voici mon angular.json
// omitted
"i18n": {
"sourceLocale": "en-US",
"locales": {
"sr-Latn": {
"translation": "src/locale/messages.sr.xlf",
"baseHref": "/sr/"
}
}
},
// omitted
La documentation indique clairement que en-US est importé par défaut. Pour aggraver les choses, lorsque je change sourceLocale dans une autre langue (dites "de"), le message d'avertissement disparaît.
L'enregistrement manuel des données locales en-US n'aide pas non plus
C'est vraiment ennuyeux. Le compilateur s'attend à disposer de ressources en-US et compile même l'application à l'aide de en-US et de base-href.
Voilà comment j'ai résolu cela.
1) J'ignore simplement le répertoire d'avertissement et de sortie en-US.
2) Je compile l'application deux fois. D'abord sans option --localized. Cela compile l'application d'origine, utilise\comme base-href et n'utilise aucun fichier de traduction. Ensuite, je compile une autre fois avec --localized et cela compile toutes mes langues avec base-href correspondant aux codes de langue.
ng build --prod --outputPath=dist/original
ng build --prod --outputPath=dist/localized --localize
3) Je déploie la version d'origine à partir de dist/original
et toutes les autres versions de dist/localized
sauf le répertoire en-US.
J'ai le même problème.
Comme vous l'avez dit, la valeur par défaut de LOCALE_ID
semble être en-US
, car c'est ce que cela représente quand rien n'est spécifié.
De plus, en regardant @angular/common/locales/*
il semble que la valeur par défaut de registerLocaleData soit en
. @angular/common/locales/en
existe, @angular/common/locales/en-US
n'existe pas! Même avec de-DE
: @angular/common/locales/de-DE
n'existe pas, mais @angular/common/locales/de
Est-ce que.
Pour l'instant, j'ai tout changé pour en
/de
et ça marche:
Exemple de localisation pour l'anglais et l'allemand:
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);
[...]
Avec la version la plus récente 9.0.2, vous pouvez spécifier la 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/"
}
}