ngx-перевод текста по умолчанию, если ключ отсутствует или загружается файл перевода - PullRequest
1 голос
/ 13 апреля 2019

Я устанавливаю новое приложение Angular 7.Я хочу установить текст по умолчанию для перевода.Так что в переводе {{'wait' |translate}}, я хочу установить текст «Waiting Now» как текст по умолчанию, если есть какой-либо запасной вариант.Означает, что если данные загружаются или ключ отсутствует, то должно появиться переданное значение (в данном случае «Ожидание сейчас»).

Я пытался сделать что-то вроде {{ 'Intro' | translate:'localizedText' }}

Не работает

{{ 'Intro' | translate:'localizedText' }}

Я ожидаю, что результат должен быть в виде

{{'Intro' |translate: 'localizedText'}} => Intro (если загружается или отсутствует ключ)

{{'Intro' |translate: 'localizedText'}} => переведенный текст

1 Ответ

0 голосов
/ 13 апреля 2019

вам нужно будет использовать пользовательский MissingTranslationHandler Вот так:

в вашем app.module или куда вы загружаете TranslateModule.forRoot сделайте это:

@Injectable()
export class MyMissingTranslationHandler implements MissingTranslationHandler {
    handle(params: MissingTranslationHandlerParams): string {
        return `**MISSING KEY: ${params.key}**`;
    }
}

А в вашем providers:[] добавьте это: (после импорта MissingTranslationHandler)

{
    provide: MissingTranslationHandler,
    useClass: MyMissingTranslationHandler
},

См. Эту ссылку для более подробной информации:

https://github.com/ngx-translate/core#how-to-handle-missing-translations

Чтобы вернуть значения по умолчанию для отсутствующих, вы можете попробовать это:

1- Создайте объект / json, содержащий значения по умолчанию, чтобы json содержал ту же структуру, что и исходный json.

const alternativeJson = {  
       value1: 'default1'
}

handle(params: MissingTranslationHandlerParams): string {
        return this.alternativeJson[params.key];
}
...