我有像login-page.login这样的简单翻译键。
在AOT中构建时,转换将不正确地显示,而是显示键fr.login-page.login。我没有找到为什么AOT会添加lang前缀。
显然,在JIT中,一切都运行得很好。在这两种模式下(AOT和JIT),我可以看到翻译文件正在加载FYI,每个组件都有一个翻译文件,每个文件都在组件提供程序中限定范围。以下是我的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只是充满了默认的信任,所有的项目配置都消失了…
发布于 2020-02-24 17:31:20
将Transloco从2.12.0更新为2.13.3并用provideTranslocoConfig translocoConfig**,替换的为我工作。
我用transloco原理图从新的空白项目构建中启发了我的配置:
import { Injectable, NgModule } from '@angular/core';
import {
Translation,
TRANSLOCO_CONFIG,
TRANSLOCO_LOADER,
translocoConfig,
TranslocoLoader,
TranslocoModule,
} from '@ngneat/transloco';
import { HttpClient } from '@angular/common/http';
import { environment } from '../environments/environment';
import { TranslocoMessageFormatModule } from '@ngneat/transloco-messageformat';
import { TranslocoLocaleModule } from '@ngneat/transloco-locale';
@Injectable({ providedIn: 'root' })
export class TranslocoHttpLoader implements TranslocoLoader {
constructor(private http: HttpClient) {}
getTranslation(lang: string) {
return this.http.get<Translation>(`assets/i18n/${lang}.json`);
}
}
@NgModule({
imports: [
TranslocoModule,
TranslocoMessageFormatModule.init(),
TranslocoLocaleModule.init({
langToLocaleMapping: {
en: 'en-US',
fr: 'fr-FR',
},
}),
],
exports: [TranslocoModule, TranslocoMessageFormatModule, TranslocoLocaleModule],
providers: [
{
provide: TRANSLOCO_CONFIG,
useValue: translocoConfig({
availableLangs: ['en', 'fr'],
reRenderOnLangChange: true,
defaultLang: 'fr',
fallbackLang: 'en',
missingHandler: {
useFallbackTranslation: true,
logMissingKey: false,
},
prodMode: environment.production,
flatten: {
aot: environment.production,
},
}),
},
{ provide: TRANSLOCO_LOADER, useClass: TranslocoHttpLoader },
],
})
export class TranslocoRootModule {}https://stackoverflow.com/questions/60324458
复制相似问题