【发布时间】:2020-02-20 16:24:59
【问题描述】:
我有简单的翻译键,例如 login-page.login。
在 AOT 中构建时,无法正确显示翻译,而是显示键 fr.login-page.login。
我没有找到为什么 AOT 会添加 lang 前缀。
显然,在 JIT 中,一切都运行良好。在两种模式(AOT 和 JIT)下,我都可以看到正在加载的翻译文件 仅供参考,我每个组件都有一个翻译文件,每个文件的范围都在组件提供程序中。 这是我的 transloco 配置:
provideTranslocoConfig({
availableLangs: ['en', 'fr'],
reRenderOnLangChange: true,
defaultLang: 'fr',
fallbackLang: 'en',
missingHandler: {
useFallbackTranslation: true,
logMissingKey: false,
},
prodMode: environment.production,
flatten: {
aot: environment.production,
},
}),
编辑
我在运行时检查过,我有:
this.translocoService.availableLangs -> []
同时:
this.translocoService.lang.getValue() -> "fr"
当我查看this.translocoService.translations 时,我已经完成了所有“fr”翻译。
最后,如果我尝试this.translocoService.translate('login-page.login'),它会记录为错误Missing translation for 'fr.login-page.login'。
编辑 当我在 JIT 中启动项目时,translocoService.config 会返回我设置的配置。但是当我打开 AOT 时 translocoService.config 只是充满了默认配置所有项目配置都消失了......
【问题讨论】:
-
availableLangs 为空太奇怪了,我不知道为什么...
标签: angular translation aot transloco