【问题标题】:Change language on Ionic2 - What is the most effective way to change all page language?更改 Ionic2 上的语言 - 更改所有页面语言的最有效方法是什么?
【发布时间】:2017-02-22 09:28:45
【问题描述】:

我正在尝试在Ionic2 上使用ng2-translate 来执行多语言,我在setting page 上添加了一个button 来更改Apps 的语言。基本上,换语言的功能只在设置页面起作用,其他页面什么都不会发生。

我有一个愚蠢的翻译方法,那就是添加一个功能,改变当前页面的语言,在每个页面上,当我点击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');
             }
    
      }
    

【问题讨论】:

    标签: ionic-framework ionic2 ng2-translate


    【解决方案1】:

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

    我在 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 }} 管道,当您选择另一种语言时,它会更改翻译,无需更多更改。

    希望对你有帮助

    【讨论】:

    • 感谢您的回复。我尝试使用您的代码,但它对我不起作用。是不是我的构造函数错了?
    • 我发现了问题。其他页面中的构造函数不应该有任何 `TranslateService 参数。我删除了其他页面中的所有 TranslateService,它现在可以正常工作了。非常感谢。
    猜你喜欢
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    • 2019-07-08
    • 1970-01-01
    • 2018-05-15
    • 2023-03-29
    • 1970-01-01
    • 2016-05-20
    相关资源
    最近更新 更多