zoukankan      html  css  js  c++  java
  • ionic2 基于ngx-translate实现多语言切换,翻译

    介绍 ngx-translate 是Angular 2+的国际化(i18n)库,在github的地址是箭头 https://github.com/ngx-translate/core

    将ngx-translate  使用与ionic2 项目中,实现多语言的切换。

    1.安装ng2-translate

    在命令提示符中进入到项目目录下,输入以下 回车。

    npm install ng2-translate --save

    2.导入TranslateModule

    首先导入TranslateModule

    在app.module.ts 下添加以下代码

    import { HttpModule, Http } from '@angular/http';
    import { TranslateModule, TranslateLoader, TranslateStaticLoader } from 'ng2-translate';
    
    export function createTranslateLoader(http: Http) {
      return new TranslateStaticLoader(http, './assets/i18n', '.json');
    }
    
    @NgModule({
      imports: [
        BrowserModule,
        TranslateModule.forRoot({
          provide: TranslateLoader,
          useFactory: (createTranslateLoader),
          deps: [Http]
        }), 
        IonicModule.forRoot(MyApp)
      ]
    })

    圈起来的就是添加的代码

    3.添加语言包

    在src/assets 下新建文件夹i18n,在i18n文件夹下添加 en.json ,tw.json,zh.json 这三个json文件。

    并添加内容

    en.json

    {
      "HOME": {
       "TITLE":"Home",
       "CONTENT":"Hello word!"
      }
    }

    tw.json

    {
      "HOME": {
       "TITLE":"首頁",
       "CONTENT":"你好,世界!"
      }
    }

    zh.json

    {
      "HOME": {
       "TITLE":"首页",
       "CONTENT":"你好,世界!"
      }
    }

    3.用法

    打开文件app.component.ts,添加代码

     translate.setDefaultLang('en'); // 设置默认的语言包
    
    

    并导入

    import { TranslateService } from 'ng2-translate';

    在页面里,这样使用

    home.html

    <ion-header>
      <ion-navbar>
        <ion-title>{{ 'HOME.TITLE' | translate }}</ion-title>
      </ion-navbar>
    </ion-header>
    
    <ion-content padding>
       <button (click)="ChangeLanguage()" ion-button color="light">设置语言</button>
      <h2>{{ 'HOME.CONTENT' | translate }}</h2>
    </ion-content>

    home.ts

    import { Component } from '@angular/core';
    import { NavController, AlertController } from 'ionic-angular';
    import { TranslateService } from 'ng2-translate';
    @Component({
      selector: 'page-home',
      templateUrl: 'home.html'
    })
    export class HomePage {
      RadioOpen: boolean;
      RadioResult;
      langs: [{}];
      constructor(public navCtrl: NavController, public alerCtrl: AlertController, public translate: TranslateService) {
    
      }
    
      ChangeLanguage() {
        this.langs = [{ language: "English", type: "en" }, { language: "简体中文", type: "zh" }, { language: "繁体中文", type: "tw" }]
    
        let alert = this.alerCtrl.create();
        alert.setTitle('语言选择');
        for (let lang of this.langs) {
          alert.addInput({
            type: 'radio',
            label: lang["language"],
            value: lang["type"],
            checked: (lang["type"] == this.translate.getDefaultLang() ? true : false)
          });
        }
        alert.addButton('取消');
        alert.addButton({
          text: '确认',
          handler: data => {
            this.RadioOpen = false;
            this.RadioResult = data;
            this.translate.setDefaultLang(data);
            this.translate.use(data);
          }
        });
    
        alert.present().then(() => {
          this.RadioOpen = true;
        });
      }
    
    }

    结果:

  • 相关阅读:
    《SmartJs系列》屌丝逆袭,华丽转身,解读自定义ScrollBar(一)
    IE6/IE7下,li设置float后,行高变高问题__UL的padding-top Bug
    团队作业
    团队作业
    结对作业
    个人作业
    心得
    css3的自定义字体
    javascript中的call方法
    javascript对象访问
  • 原文地址:https://www.cnblogs.com/huangenai/p/6868173.html
Copyright © 2011-2022 走看看