2017-10-18 13 views
2

Ma question concerne ngx translate en angular2. Mon projet prend en charge 2 langues: l'anglais et l'arabe et il y a donc des fichiers en.json et ar.json. Le code ci-dessous me donnera la valeur traduite de clé basée sur ma langue actuelleComment récupérer la valeur traduite sans changer la langue actuelle dans NGX Translate?

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

Question: Comment passer dois-je une langue spécifique en entrée et obtenir la traduction pour cette langue spécifique? Par exemple, ma langue actuelle est l'anglais (et ne veut pas changer la langue actuelle), mais à partir du fichier ts, j'ai besoin de récupérer la traduction arabe d'une clé de ar.json sans changer la langue actuelle.

+0

Est-ce que vous essayez d'utiliser les exemples dans la section (http://www.ngx-translate.com) [Comment utiliser NGX-translate?] Du site NGX-translate? –

Répondre

0

Je recommande de ne pas utiliser ngx translate pour cette exigence spécifique. Le but de ngx translate est de le lier à la vue et de charger le JSON de la langue actuellement sélectionnée. L'alternative consiste simplement à configurer un autre service qui charge le fichier json dont vous avez besoin en transmettant une chaîne, par exemple 'en' pour l'anglais et 'ar' pour l'arabe. Vous pouvez ensuite utiliser ce JSON dans vos ts, au besoin.

0

Je ne trouve aucune solution officielle, mais j'ai fait une solution de contournement.

const interval = Observable.interval(1000); 
const langObservable = Observable.from(['EN', 'PL']); 
langObservable.zip(interval, (v1, v2) => { 
    return v1; 
}).subscribe(lang => { 
    this.translate.getTranslation(lang).subscribe(values => { 
    const value = values['TRANSALTION_KEY']; 
    this.messageProvider.next(value); 
    }); 

});