2017-02-22 20 views
0

Я пытаюсь использовать ng2-translate на Ionic2, чтобы сделать многоязычный, и я добавил button для изменения языка Apps на setting page. В принципе, функция изменения языка работает только на странице настроек, но на другой странице ничего не произойдет.Изменить язык на Ionic2 - Каков наиболее эффективный способ изменить весь язык страницы?

И у меня есть глупый способ сделать перевод, то есть добавить функцию, которая меняет язык текущей страницы, на каждой странице, и она будет выполнена, когда я нажму кнопку на 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'); 
         } 
    
        } 
    

ответ

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 }} трубы и изменит перевод когда вы выбираете другой язык без каких-либо изменений.

Надеюсь, это поможет вам

+0

Спасибо за ваш ответ. Я пытался использовать ваш код, и это не работает для меня. Является ли это моим конструктором неправильно? – Capslock10

+1

Я выяснил эту проблему. Конструктор на других страницах НЕ ДОЛЖЕН иметь параметр «TranslateService». Я удалил все TranslateService на других страницах, и сейчас это работает. Большое спасибо. – Capslock10

 Смежные вопросы

  • Нет связанных вопросов^_^