2017-07-21 2 views
1

Je suis capable de traduire du texte en utilisant translate pipe, mais j'ai du mal à charger les traductions en utilisant la méthode Get et Instant du service translate. Ci-dessous mon code dans app.component.tsImpossible de traduire le texte à l'aide du service-translate.get de ngx-translate

export class AppComponent { 

event : string; 
constructor(private translate: TranslateService) { 
    translate.addLangs(["en", "fr"]); 
    translate.setDefaultLang('en'); 
    let LangChangeEvent : {} 
    let browserLang = translate.getBrowserLang(); 
    translate.use(browserLang.match(/en|fr/) ? browserLang : 'en'); 

    this.translate.get('ALL_LOCATIONS_TREEVIEW').subscribe((event: String) => { 
       console.log(event); 

      }); 
} 

} 

Je événement l'impression dans la console. Je souhaite que sa traduction change lorsque l'utilisateur change de langue. Mon reste de traductions (en utilisant pipe) fonctionnent bien, mais je ne peux pas voir de changement dans la console avec le changement de langue. Qu'est-ce que je rate?

Répondre

3

get ne s'exécutera qu'une seule fois et obtiendra la valeur de la clé avec la langue actuellement utilisée. Vous devez lier le journal de la console à l'événement de changement de langue comme suit: il y a une autre façon de faire

this.translate.onLangChange 
.mergeMap(() => this.translate.get('ALL_LOCATIONS_TREEVIEW')) 
.subscribe(v => console.log(v)); 

Avec la nouvelle relase (^ 7.0.0), en utilisant la méthode stream:

this.translate 
.stream('ALL_LOCATIONS_TREEVIEW') 
.subscribe(v => console.log(v)); 

Ceci est fondamentalement le même que get, mais changement de langue au courant (émet une nouvelle valeur chaque fois que la langue sélectionnée est modifiée). Pour plus d'informations, consultez the documentation

+0

Je voulais savoir s'il n'y avait pas d'autre moyen que d'utiliser subscribe sur .stream ou .get car dans angular-translate c'était plus simple comme ça. $ Translate.instant (key). – pankaj

+0

la méthode instantanée fait aussi partie de l'API, mais je ne peux pas dire si elle va être mise au courant, car je ne l'ai pas utilisée –