首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角构建中的AOT模式添加“fr.”或“en.”作为transloco中翻译键的前缀

角构建中的AOT模式添加“fr.”或“en.”作为transloco中翻译键的前缀
EN

Stack Overflow用户
提问于 2020-02-20 16:24:59
回答 1查看 550关注 0票数 3

我有像login-page.login这样的简单翻译键。

在AOT中构建时,转换将不正确地显示,而是显示键fr.login-page.login。我没有找到为什么AOT会添加lang前缀。

显然,在JIT中,一切都运行得很好。在这两种模式下(AOT和JIT),我可以看到翻译文件正在加载FYI,每个组件都有一个翻译文件,每个文件都在组件提供程序中限定范围。以下是我的transloco配置:

代码语言:javascript
复制
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只是充满了默认的信任,所有的项目配置都消失了…

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-24 17:31:20

将Transloco从2.12.0更新为2.13.3并用provideTranslocoConfig translocoConfig**,替换的为我工作。

我用transloco原理图从新的空白项目构建中启发了我的配置:

代码语言:javascript
复制
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 {}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60324458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档