如何配置Angular本地化:不同subPath共用相同baseHref
Angular i18n: 用subPath控制输出目录但保留统一baseHref
问题核心
Angular i18n的baseHref字段已废弃,官方推荐使用subPath,但subPath默认会同时设置输出目录和HTML的base标签。需要实现:不同本地化版本输出到对应子目录,但所有版本共用同一个baseHref。
解决方案
通过全局配置baseHref + subPath指定输出目录的组合方式,满足需求:
- 修改i18n配置,移除所有
baseHref字段,用subPath定义各本地化版本的输出目录:
"i18n": { "sourceLocale": { "code": "en", "subPath": "en" }, "locales": { "zh-hans": { "translation": "src/locale/messages.zh-hans.xlf", "subPath": "zh-hans" } } }
- 在
angular.json的项目build配置中设置全局baseHref(覆盖subPath对base标签的修改):
找到projects -> [你的项目名] -> architect -> build -> options,添加或修改:
"baseHref": "/"
或者在构建时通过命令行参数指定:
ng build --localize --base-href "/"
效果验证
- 构建后,各本地化版本会输出到
dist/en、dist/zh-hans目录; - 所有版本的
index.html中,base标签均为<base href="/">,不会带上本地化路径段。
内容的提问来源于stack exchange,提问作者Hao
相关产品推荐
相关产品推荐

