ionic2 html 转义,ionic2 基于ngx-translate实现多语言切换,翻译

本文详细介绍了如何在Angular项目中实现多语言支持,包括安装ng2-translate模块、配置语言包及使用方法等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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文件。

2e32dc74c6c6?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

833855-20170517153705682-1729067632.png

en.json

{

"HOME": {

"TITLE":"Home",

"CONTENT":"Hello word!"

}

}

zh.json

{

"HOME": {

"TITLE":"首页",

"CONTENT":"你好,世界!"

}

}

再次声明下,如果使用的是懒加载的情况,需要在home.module.ts里声明下

2e32dc74c6c6?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

QQ截图20180514113445.png

4.用法

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

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

import { TranslateService } from 'ng2-translate';

constructor(translate: TranslateService) {

translate.setDefaultLang('en');

}

在页面里,这样使用

home.html

第一种

{{ 'HOME.TITLE' | translate }}

第二种

在home.ts

第一种

this.translate.get("LOGIN.EMAIL_NULL").subscribe(value => {

this.native.showToast(value);

});

第二种

this.translate.instant("ALL.CAMERT");

instant方法的参数和返回类型与get方法一致,与get方法不同的是该方法是同步的,当lang改变时,是无法即时更新的。大多数时候,instant方法可以满足我们的使用需求,可是在页面缓存的情况下,比如动态的标签栏,无法动态刷新。解决办法如下:

ionViewDidLoad() {

this.listenLangChange();

}

// 当切换本地语言的时候,tabs标签栏各项子标题需手动切换

listenLangChange() {

this.translate.onLangChange

.subscribe(() => {

// 写法一

for(let tab of this.tabs) {

tab.title = this.translate.instant(`tabsPage.${tab.name}`);

}

// 写法二

let titles = this.translate.instant("tabsPage");

for(let tab of this.tabs) {

tab.title = titles[ tab.name ];

}

});

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值