angular - ngx-translate standardtext om nyckel saknas eller översättningsfilen laddas


Jag håller på att sätta upp en ny Angular 7-app. Jag vill ställa in en standardtext för översättning. Så i översättningen {{ 'wait' | translate }}, vill jag ställa in texten 'Väntar nu' som standardtext om det finns någon fallback. Det betyder att om data laddas eller om nyckeln saknas, bör det skickade värdet (i det här fallet Väntar nu) visas.

Jag försökte göra något som {{ 'Intro' | translate:'localizedText' }}

Inte fungerade

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

Jag förväntar mig att resultatet ska bli

{{ 'Intro' | translate:'localizedText' }} => Intro (Om den laddas eller saknas nyckel)

{{ 'Intro' | translate:'localizedText' }} => översatt text

Svar #1

Jag följde instruktionerna för att skapa en hanterare för saknade översättningar här: https://github.com/ngx-translate/core#how-to-handle-missing-translations

Men min version tillåter att skicka ett standardvärde till pipen på det här sättet

<span>{{"MyTranslateKey" | translate: {Default: "Default Translation"} }}</span>

Standardvärdet kan vara en specifik sträng som ovan, eller en variabel.

Här är min handlare:

import {MissingTranslationHandler, MissingTranslationHandlerParams} from '@ngx-translate/core';

export class MissingTranslationHelper implements MissingTranslationHandler {
  handle(params: MissingTranslationHandlerParams) {
    if (params.interpolateParams) {
      return params.interpolateParams["Default"] || params.key;
    }
    return params.key;
  }
}

Svar #2

du kommer att behöva använda en anpassad MissingTranslationHandler Så här:

i din app.module eller var du än laddar TranslateModule.forRoot, gör detta:

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

Och i din providers:[] lägg till detta: (Efter att du har importerat MissingTranslationHandler)

{
    provide: MissingTranslationHandler,
    useClass: MyMissingTranslationHandler
},

Se den här länken för mer information:

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

För att returnera standardvärden för det som saknas kan du prova detta:

1- Skapa ett objekt/json för att innehålla standardvärden, det json ska innehålla samma struktur som det ursprungliga json.

const alternativeJson = {  
       value1: 'default1'
}

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

Relaterade artiklar