1

我正在尝试使用ng2-translate onIonic2来做多语言,我添加了一个用于button更改. 基本上,更改语言的功能只在设置页面起作用,而其他页面不会发生任何事情。Appssetting page

我有一个愚蠢的翻译方法,那就是添加一个功能,改变当前页面的语言,在每个页面上,当我点击按钮时它就会被执行setting page

但是这种解决方案效率较低,如何才能有效地做同样的事情呢?

这是我的代码的一部分:

  1. 设置页面:

      import { Component,  ViewChild } from '@angular/core';
    
      import { NavController, List } from 'ionic-angular';
      import {TranslateService, TranslatePipe, TranslateLoader, TranslateStaticLoader} from 'ng2-translate/ng2-translate';
      @Component({
          selector: 'page-setting',
          templateUrl: 'setting.html'
       })
    
      export class SettingPage {
          translate;
         @ViewChild(List) list: List;
         constructor(public navCtrl: NavController,   translate: TranslateService) {
              translate.setDefaultLang('zh');
              this.translate = translate;
          }
           //When the translation button is clicked
           click() {
              this.translate.use('en');
                   //Change all the pages language
                   location.change('en');`enter code here`
                   home.change('en');
             }
    
      }
    
4

1 回答 1

3

我有同样的设置页面来更改语言。

我在 html 上有这个:

<ion-item>
  <ion-label class="primary-text-color">{{ 'Settings.settings.language' | translate }}</ion-label>
  <ion-select [(ngModel)]="language" (ionChange)="onChange($event)">
    <ion-option value="es">Español</ion-option>
    <ion-option value="en">English</ion-option>
  </ion-select>
</ion-item>

然后在我的 ts 文件上:

import { TranslateService } from 'ng2-translate';

[...]

language: String;

constructor(public translate: TranslateService) {
    this.language = translate.currentLang;
    this.usermail = this.userdata.getEmail();
}

onChange(e) {
    this.translate.use(e);
}

这将更改您在所有页面中的语言,只需使用{{ 'Settings.info.mail' | translate }}管道,当您选择另一种语言时,它会更改翻译,无需更多更改。

希望对你有帮助

于 2017-02-22T09:35:32.517 回答