博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ionic2 基于ngx-translate实现多语言切换,翻译
阅读量:7078 次
发布时间:2019-06-28

本文共 2462 字,大约阅读时间需要 8 分钟。

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

将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

{
{ 'HOME.TITLE' | translate }}

{
{ 'HOME.CONTENT' | translate }}

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;    });  }}

结果:

转载地址:http://axpml.baihongyu.com/

你可能感兴趣的文章
xcode5.1上真机调试报告No architectures to compile for...的解决办法
查看>>
算法导论读书笔记-第十四章-数据结构的扩张
查看>>
HttpClient使用详解
查看>>
char、varchar、nchar、nvarchar的区别
查看>>
锐捷、赛尔认证MentoHUST
查看>>
前后台传值 201...
查看>>
POJ 2133 暴搜
查看>>
BZOJ 1379 模拟退火
查看>>
MSDN中关于COM教程编译参数的修改
查看>>
一个js验证类
查看>>
ansible笔记(12):handlers的用法
查看>>
GPS文件处理
查看>>
Spring Boot 入门
查看>>
数据库excel导出
查看>>
MyBati__mapper 中取值(#{} 或${}) 以及 parameterType为(基本类型 或复杂类型)
查看>>
在Ubuntu上为Android系统内置Java应用程序测试Application Frameworks层的硬件服务
查看>>
docker的安装
查看>>
设计原则—依赖倒转原则
查看>>
让IE10等支持classList2.0(转)
查看>>
hausaufgabe--python 31 - Pickle
查看>>