Angular2中如何使用ngx-translate进行国际化


Posted in Javascript onMay 21, 2017

相较于AngularJS中的ng-translate, angular2也有适合自己的国际化模块,就是ngx-translate。

项目地址:https://github.com/ngx-translate/core

使用angular-cli初始化项目:

ng new my-project

使用npm安装ngx-translate模块

npm install --save @ngx-translate/core 
npm install --save @ngx-translate/http-loader

在项目的根模块app.module.ts中引入该模块

import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
import { TranslateHttpLoader } from '@ngx-translate/http-loader';

export function HttpLoaderFactory(http:Http){
 return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}
@NgModule({
 declarations: [
  AppComponent
 ],
 imports: [
  ...
  TranslateModule.forRoot({
   loader:{
    provide:TranslateLoader,
    useFactory:HttpLoaderFactory,
    deps:[Http]
   }
  }

  )
 ],
 providers: [],
 bootstrap: [AppComponent]
})

在assets文件夹下新建i18n文件夹,并且新建两个语言的json文件。(比如zh-CN.json和en.json)

json文件是key-value形式的,key值代表要翻译的字符串,value值为特定语言的翻译结果,不用语言的文件一般key值是相同的,只是value值不同。

//zh-CN.json
{
  "welcome":"欢迎使用本应用",
  "hello":"你好",
  "get-lang":"获取语言类型"
}

//en.json
{
  "welcome":"welcome to this app",
  "hello":"Hola"
}

然后在相应的组件中使用Translate服务

import { TranslateService } from '@ngx-translate/core'
@Component({
 ...
})
export class AppComponent {
 constructor(private translate: TranslateService) {
  //添加语言支持
  translate.addLangs(['zh-CN', 'en']);
  //设置默认语言,一般在无法匹配的时候使用
  translate.setDefaultLang('zh-CN');

  //获取当前浏览器环境的语言比如en、 zh
  let broswerLang = translate.getBrowserLang();
  translate.use(broswerLang.match(/en|zh-CN/) ? broswerLang : 'zh-CN');
 }

 changeLang(lang) {
  console.log(lang);
  this.translate.use(lang);
 }
 toggleLang() {
  console.log(this.translate.getBrowserLang());
  //获取语言风格,相当于更详细的语言类型,比如zh-CN、zh-TW、en-US
  console.log(this.translate.getBrowserCultureLang());
 }
}

示例模板:

<div>
 <h2>{{ title | translate }}</h2>
 <label>
  {{ 'hello' | translate }}
  <select #langSelect (change)="changeLang(langSelect.value)">
   <option *ngFor="let lang of translate.getLangs()" [value]="lang" [selected]="lang === translate.currentLang">{{ lang }}</option>
  </select>
 </label>
</div>
<button (click)="toggleLang()">{{'get-lang' | translate}}</button>

使用方式和angularjs中的ng-translate类似,使用translate管道。

效果:

Angular2中如何使用ngx-translate进行国际化

源码地址:https://github.com/justforuse/angular2-demo/tree/master/angular-translate

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
捕获关闭窗口的脚本
Jan 10 Javascript
js实现页面打印功能实例代码(附去页眉页脚功能代码)
Dec 15 Javascript
js的Boolean对象初始值示例
Mar 04 Javascript
js实现文字截断功能
Sep 14 Javascript
解析预加载显示图片艺术
Dec 05 Javascript
JavaScript自定义文本框光标
Mar 05 Javascript
socket.io学习教程之深入学习篇(三)
Apr 29 Javascript
VUE element-ui 写个复用Table组件的示例代码
Nov 18 Javascript
微信小程序 Animation实现图片旋转动画示例
Aug 22 Javascript
从零开始实现Vue简单的Toast插件
Dec 03 Javascript
基于javascript实现放大镜特效
Dec 03 Javascript
vue+spring boot实现校验码功能
May 27 Vue.js
详解angularjs利用ui-route异步加载组件
May 21 #Javascript
如何在AngularJs中调用第三方插件库
May 21 #Javascript
详解Angular-Cli中引用第三方库
May 21 #Javascript
Angular2安装angular-cli
May 21 #Javascript
Angular2使用Augury来调试Angular2程序
May 21 #Javascript
Angular2使用Angular-CLI快速搭建工程(二)
May 21 #Javascript
Angular2使用Angular CLI快速搭建工程(一)
May 21 #Javascript
You might like
[原创]效率较高的php下读取文本文件的代码
2008/07/02 PHP
php利用递归实现删除文件目录的方法
2016/09/23 PHP
js判断移动端是否安装某款app的多种方法
2015/12/18 Javascript
基于JavaScript如何制作遮罩层对话框
2016/01/26 Javascript
纯js代码制作的网页时钟特效【附实例】
2016/03/30 Javascript
Bootstrap表单布局
2016/07/19 Javascript
深入理解JavaScript中的块级作用域、私有变量与模块模式
2016/10/31 Javascript
关于ES6的六个小特性(二)
2017/02/20 Javascript
JavaScript拖动层Div代码
2017/03/01 Javascript
浅析Angular2子模块以及异步加载
2017/04/24 Javascript
seaJs使用心得之exports与module.exports的区别实例分析
2017/10/13 Javascript
Vue 实现树形视图数据功能
2018/05/07 Javascript
详解easyui基于 layui.laydate日期扩展组件
2018/07/18 Javascript
Nodejs中的JWT和Session的使用
2018/08/21 NodeJs
在Vue.js中使用TypeScript的方法
2020/03/19 Javascript
python实现提取百度搜索结果的方法
2015/05/19 Python
python实现批量图片格式转换
2020/06/16 Python
python爬虫之urllib3的使用示例
2018/07/09 Python
python通过zabbix api获取主机
2018/09/17 Python
python 监听salt job状态,并任务数据推送到redis中的方法
2019/01/14 Python
python中import与from方法总结(推荐)
2019/03/21 Python
pyqt 实现QlineEdit 输入密码显示成圆点的方法
2019/06/24 Python
详细介绍Python进度条tqdm的使用
2019/07/31 Python
使用Python生成200个激活码的实现方法
2019/11/22 Python
django之从html页面表单获取输入的数据实例
2020/03/16 Python
如何基于线程池提升request模块效率
2020/04/18 Python
离线状态下在jupyter notebook中使用plotly实例
2020/04/24 Python
Python 字符串池化的前提
2020/07/03 Python
一些常用的HTML5模式(pattern) 总结
2015/07/14 HTML / CSS
LTD Commodities:礼品,独特发现,家居装饰,家用器皿
2017/08/11 全球购物
Trip.com澳大利亚:在线旅行社
2019/12/01 全球购物
linux面试题参考答案(6)
2014/08/29 面试题
怎样写留学自荐信
2013/11/11 职场文书
人力资源作业细则
2014/03/03 职场文书
2014年维稳工作总结
2014/11/18 职场文书
Android自定义双向滑动控件
2022/04/19 Java/Android