避免在@ ngx-translate中重复翻译

时间:2018-08-29 20:43:42

标签: angular ngx-translate

我正在创建Angular应用,因此我决定不使用内置的i18n,而是使用ngx-translate(主要是易于设置/使用)。

如果需要,我希望该应用默认为英语,并通过HTTP进行延迟加载翻译。

例如,在组件的HTML中,我输入:

<h1 translate>
    We build apps
</h1>

并提供例如使用HttpTranslateLoader进行翻译的“ de.json”文件。

{
    "We build apps": "Wir bauen apps"
}

我面临的问题是,我可以成功切换到德语语言环境,而无需提供另一个具有重复翻译的“ en.json”,就不能返回。

{
    "We build apps": "We build apps"
}

有什么方法可以使应用返回英文而不必重复所有英文翻译?

2 个答案:

答案 0 :(得分:1)

一种解决方案是创建MissingTranslationHandler并仅返回密钥。

答案 1 :(得分:0)

感谢PeS,我能够解决此问题,但仅创建处理程序是不够的。

我还必须在其他翻译旁边添加一个仅包含en.json作为内容的空{}文件。

export class MyMissingTranslationHandler implements MissingTranslationHandler {
    handle(params: MissingTranslationHandlerParams) {
        return params.key;
    }
}

export function createTranslateLoader(http: HttpClient) {
    return new TranslateHttpLoader(http, './assets/locale/', '.json');
}

TranslateModule.forRoot({
        loader: {
            provide: TranslateLoader,
            useFactory: createTranslateLoader,
            deps: [HttpClient],
        },
        missingTranslationHandler: {
            provide: MissingTranslationHandler,
            useClass: MyMissingTranslationHandler,
        },
        useDefaultLang: false,
    }),