我收到这个奇怪的警告
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”)时,警告消息就会消失。
手动注册美国语言环境数据无济于事
答案 0 :(得分:3)
如果将sourceLocale设置为en
,则可以正常工作。
en-US
不起作用。"i18n": {
"sourceLocale": "en",
"locales": {...}
}
答案 1 :(得分: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 :(得分:0)
在最新版本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/"
}
}
答案 3 :(得分: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
,并且可以使用:
英语和德语本地化示例:
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);
[...]
答案 4 :(得分: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": {...}
}