我正在尝试使我的应用程序以多种语言提供,并且我正在关注Angular的i18n guide。默认语言环境为en-US
,并且还有法语fr
和西班牙语es
的翻译。
例如,当使用ng serve --configuration=fr
运行应用程序时,此方法工作正常。
现在我要构建应用程序。我正在使用以下命令:
ng build --prod --build-optimizer --i18n-file src/locale/messages.es.xlf --i18n-format xlf --i18n-locale es
我也按照指南中的说明更新了angular.json
:
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"outputPath": "dist/myapp",
},
"configurations": {
"production": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true
},
"es": {
"aot": true,
"outputPath": "dist/myapp/es",
"baseHref": "/es/",
"i18nFile": "src/locale/messages.es.xlf",
"i18nFormat": "xlf",
"i18nLocale": "es",
"i18nMissingTranslation": "error"
},
"fr": {
"aot": true,
"outputPath": "dist/myapp/fr",
"baseHref": "/fr/",
"i18nFile": "src/locale/messages.fr.xlf",
"i18nFormat": "xlf",
"i18nLocale": "fr",
"i18nMissingTranslation": "error"
}
}
},
构建过程正常进行,我得到了该应用程序的翻译版本。
不幸的是,有些事情不起作用:
1。)
该应用程序始终内置在dist/myapp
中,而不是内置在dist/myapp/fr
或dist/myapp/es
中。
2。)
没有使用baseHref
参数,因此我不能简单地将构建内容移到/dist/myapp/fr
之类的子目录中。
为了更加清楚,在运行build
之后,我想要一个这样的文件夹结构:
/dist/myapp/en
/dist/myapp/fr
/dist/myapp/es
并且当myapp
是我的Webroot时,应该可以在浏览器中访问以下路由:
/en
/fr
/es
3。)
最后,lang
属性未正确设置。 index.html
未被更改,将始终显示:
<html lang="en">
代替<html lang="es">
或<html lang="fr">
。
缺少什么才能使它正常工作?
答案 0 :(得分:5)
在进行构建时,您需要传递正确的配置。否则,它将仅使用do.call("mapply", c(myfunc, eg, SIMPLIFY=FALSE))
配置
实际上,您需要为每种语言做一个构建。
production
您可以为每种配置指定要使用的选项(自动,输出哈希等),也可以将其放在ng build --configuration=fr
ng build --configuration=en
ng build --configuration=es
内的options
设置中
build
关于更改 "build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"outputPath": "dist/myapp",
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true
},
属性,根据此github issue,您必须手动进行
lang