Угловая ngx-translate проблема getTranslation

Mattew Eon спросил: 12 мая 2018 в 04:11 в: angular

Я использую ngx-translate для перевода своего Angular Web-приложения, и кажется, что ngx-translate имеет проблему с функцией getTranslation(language). Когда он вызывается, он изменяет текущий язык? Временно? а затем мой компонент не отображается на нужном языке.

export class InputRadioComponent extends FormComponentInput implements OnInit {
  constructor(protected formDynamicS) {
  }  public ngOnInit() {
    this.translate.getTranslation("fr").subscribe(res => {
      this.choose["fr"] = res['form-component']['choose-answer'];
    });
    this.translate.getTranslation("en").subscribe(res => {
      this.choose["en"] = res['form-component']['choose-answer'];
    });
    this.translate.getTranslation("de").subscribe(res => {
      this.choose["de"] = res['form-component']['choose-answer'];
    });
  }
}

В этом случае, как this.translate.getTranslation("de") - последний вызов, мой компонент всегда отображается на немецком языке , Я нахожу обходное решение, но это не то, что я хочу сохранить в своем коде. Вот мой способ:

let languages: string[] = ["fr", "en", "de"];languages.splice(languages.indexOf(this.translate.currentLang));
languages.push(this.translate.currentLang);languages.forEach((language) => {
  this.translate.getTranslation(language).subscribe(res => {
    this.choose[language] = res['form-component']['choose-answer'];
  });
});

Это позволяет мне сохранять currentLang, потому что это будет последний вызов getTranslation


1 ответ

DiabolicWords ответил: 12 мая 2018 в 04:44

Я согласен, что это довольно странное поведение. Но, ссылаясь на ваше обходное решение, вы могли бы упростить решение для сброса языка.

просто позвоните

this.translate.use('<LANGUAGE>');

например

this.translate.getTranslation("de").subscribe(res => {
  this.choose["de"] = res['form-component']['choose-answer'];
  this.translate.use('en');
});
Mattew Eon ответил: 12 мая 2018 в 04:50
Это хорошая идея, которую вы получили здесь, я должен предупредить людей на своем посту, но я уже пробовал это, и это не сработало. И это не чистый код, я думаю, я бы посмотрел, есть ли другой способ получить конкретные переводы или другое решение. Но спасибо за вашу помощь приятеля
DiabolicWords ответил: 12 мая 2018 в 04:52
Пожалуйста.