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

问题描述 投票:0回答:2

我正在创建一个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"
}

有没有办法让应用程序回归英语而不必复制所有英文翻译?

angular ngx-translate
2个回答
1
投票

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


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,
    }),
© www.soinside.com 2019 - 2024. All rights reserved.