angular - Hur hämtar man översatt värde utan att ändra nuvarande språk i NGX Translate?


Min fråga handlar om ngx translate i angular2. Mitt projekt stödjer 2 språk: engelska och arabiska och därför finns det en en.json och ar.json filer. Koden nedan kommer att ge mig det översatta värdet av nyckeln baserat på mitt nuvarande språk

this.translate.get('key').subscribe((msg: string) => {
    console.log(msg);
  }

Fråga: Hur skickar jag in ett specifikt språk som indata och får översättningen för just det språket? Till exempel, mitt nuvarande språk är engelska (och jag vill inte ändra det nuvarande språket), men från ts-filen behöver jag hämta den arabiska översättningen för en nyckel från ar.json utan att ändra det nuvarande språket.

Svar #1

Jag hittade heller ingen officiell lösning men gjorde detta:

this.preferences.languages.forEach((lang) => {
   this.translate.getTranslation(lang).subscribe(values => {
     this.languages.push({ label: values.i18n.LANG, value: lang});
   });
 });

I vilken lang är något som 'en', 'pt', etc som måste matcha med namnet på det förväntade värdet för argumentet till getTranslation.

Svar #2

Jag skulle rekommendera att inte använda ngx translate för detta specifika krav. Syftet med ngx translate är att binda det till vyn och ladda JSON för det för närvarande valda språket. Alternativet är helt enkelt att sätta upp en annan tjänst som laddar JSON-filen som du behöver genom att skicka en sträng, t.ex. 'en' för engelska och 'ar' för arabiska. Du kan sedan använda den JSON-filen i din ts efter behov.

Relaterade artiklar