Избегайте повторных переводов в @ ngx-translate - PullRequest
0 голосов
/ 29 августа 2018

Я создаю приложение Angular, и я решил не использовать встроенный i18n, а вместо этого использую ngx-translate (в основном простота настройки / использования).

Я хочу, чтобы приложение по умолчанию использовало английский язык и ленивую загрузку по HTTP, если требуется.

Например, в HTML-коде компонента I введите:

<h1 translate>
    We build apps
</h1>

и укажите, например, файл "de.json" с переводом с использованием HttpTranslateLoader.

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

Проблема, с которой я сталкиваюсь, заключается в том, что я могу успешно переключиться на немецкий язык, но не обратно, не предоставив еще один "en.json" с дублирующимися переводами.

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

Есть ли способ вернуть приложение на английский язык, не дублируя все переводы на английский?

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Благодаря 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,
    }),
0 голосов
/ 30 августа 2018

Одним из решений может быть создание MissingTranslationHandler и просто возврат ключа.

...