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 相关文章推荐
javascript getElementsByTagName
Jan 31 Javascript
扩展IE中一些不兼容的方法如contains、startWith等等
Jan 09 Javascript
JS实现向表格行添加新单元格的方法
Mar 30 Javascript
如何高效率去掉js数组中的重复项
Apr 12 Javascript
Three.js学习之文字形状及自定义形状
Aug 01 Javascript
基于Bootstrap和jQuery构建前端分页工具实例代码
Nov 23 Javascript
Javascript循环删除数组中元素的几种方法示例
May 18 Javascript
js获取一组日期中最近连续的天数
May 25 Javascript
在vue项目中使用element-ui的Upload上传组件的示例
Feb 08 Javascript
react koa rematch 如何打造一套服务端渲染架子
Jun 26 Javascript
js实现右键弹出自定义菜单
Sep 08 Javascript
关于IDEA中的.VUE文件报错 Export declarations are not supported by current JavaScript version
Oct 17 Javascript
详解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二维数组排序方法(array_multisort usort)
2013/12/25 PHP
windows7下php开发环境搭建图文教程
2015/01/06 PHP
PHP超牛逼无限极分类生成树方法
2015/05/11 PHP
JQuery与iframe交互实现代码
2009/12/24 Javascript
jquery URL参数判断,确定菜单样式
2010/05/31 Javascript
关于js datetime的那点事
2011/11/15 Javascript
eclipse导入jquery包后报错的解决方法
2014/02/17 Javascript
JavaScript分析、压缩工具JavaScript Analyser
2014/12/31 Javascript
js实现照片墙功能实例
2015/02/05 Javascript
jquery制作多功能轮播图插件
2015/04/02 Javascript
简单谈谈json跨域
2016/03/13 Javascript
jQuery.deferred对象使用详解
2016/03/18 Javascript
javascript数组去重方法分析
2016/12/15 Javascript
JS如何生成一个不重复的ID的函数
2016/12/25 Javascript
Vue.js实现按钮的动态绑定效果及实现代码
2017/08/21 Javascript
js防刷新的倒计时代码 js倒计时代码
2017/09/06 Javascript
React + webpack 环境配置的方法步骤
2017/09/07 Javascript
jQuery实现图片上传预览效果功能完整实例【测试可用】
2018/05/28 jQuery
微信内置浏览器图片查看器的代码实例
2019/10/08 Javascript
小程序中设置缓存过期的实现方法
2020/01/14 Javascript
JS+JQuery实现无缝连接轮播图
2020/12/30 jQuery
Linux下使用python调用top命令获得CPU利用率
2015/03/10 Python
pandas 读取各种格式文件的方法
2018/06/22 Python
浅谈Python 列表字典赋值的陷阱
2019/01/20 Python
python中dict使用方法详解
2019/07/17 Python
Django项目中使用JWT的实现代码
2019/11/04 Python
解决tensorflow模型压缩的问题_踩坑无数,总算搞定
2021/03/02 Python
通信工程专业女生个人求职信
2013/09/21 职场文书
农业大学毕业生的个人自我评价
2013/10/11 职场文书
省优秀教师事迹材料
2014/01/30 职场文书
教师求职信
2014/06/17 职场文书
2014年教育工作总结
2014/11/26 职场文书
红色电影观后感
2015/06/18 职场文书
实习报告范文之电话客服岗位
2019/07/26 职场文书
关于antd tree 和父子组件之间的传值问题(react 总结)
2021/06/02 Javascript
mysql sum(if())和count(if())的用法说明
2022/01/18 MySQL