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 相关文章推荐
JS实现打开本地文件或文件夹
Mar 09 Javascript
jquery实现的一个导航滚动效果具体代码
May 27 Javascript
JS判断数组中是否有重复值得三种实用方法
Aug 16 Javascript
利用jquery.qrcode在页面上生成二维码且支持中文
Feb 12 Javascript
jquery动态添加元素事件失效问题解决方法
May 23 Javascript
Javascript实现颜色rgb与16进制转换的方法
Apr 18 Javascript
jquery实用技巧之输入框提示语句
Jul 28 Javascript
基于JS实现类似支付宝支付密码输入框
Sep 02 Javascript
javascript 分号总结及详细介绍
Sep 24 Javascript
微信小程序 网络请求(GET请求)详解
Nov 16 Javascript
jqgrid实现简单的单行编辑功能
Sep 30 Javascript
浅析node.js的模块加载机制
May 25 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 HTML JavaScript MySQL代码如何互相传值的方法分享
2012/09/30 PHP
laravel 5.3中自定义加密服务的方案详解
2017/05/09 PHP
IE8 下的Js错误HTML Parsing Error...
2009/08/14 Javascript
javascript 设计模式之单体模式 面向对象学习基础
2010/04/18 Javascript
深入理解JavaScript定时机制
2010/10/29 Javascript
js实现的跟随鼠标移动的时钟效果(中英文日期显示)
2011/01/17 Javascript
JS+CSS制作DIV层可(最小化/拖拽/排序)功能实现代码
2013/02/25 Javascript
jQuery判断密码强度实现思路及代码
2013/04/24 Javascript
JS简单实现元素复制示例附图
2013/11/19 Javascript
js下拉选择框与输入框联动实现添加选中值到输入框的方法
2015/08/17 Javascript
使用jQuery实现WordPress中的Ctrl+Enter和@评论回复
2016/05/21 Javascript
原生JavaScript实现Tooltip浮动提示框特效
2017/03/07 Javascript
JS实现动态给标签控件添加事件的方法示例
2017/05/13 Javascript
详解vue项目打包后通过百度的BAE发布到网上的流程
2018/03/05 Javascript
jQuery length 和 size()区别总结
2018/04/26 jQuery
PostgreSQL Node.js实现函数计算方法示例
2019/02/12 Javascript
JavaScript数组排序功能简单实现
2020/05/14 Javascript
python图像处理之镜像实现方法
2015/05/30 Python
python获取文件扩展名的方法
2015/07/06 Python
Python中的if、else、elif语句用法简明讲解
2016/03/11 Python
PYQT5设置textEdit自动滚屏的方法
2019/06/14 Python
Python虚拟环境的原理及使用详解
2019/07/02 Python
Python 字符串、列表、元组的截取与切片操作示例
2019/09/17 Python
python列表推导式操作解析
2019/11/26 Python
使用python实现哈希表、字典、集合操作
2019/12/22 Python
对python pandas中 inplace 参数的理解
2020/06/27 Python
迪奥美国官网:Dior美国
2019/12/07 全球购物
Tuckernuck官网:经典的美国品质服装、鞋子和配饰
2021/01/11 全球购物
《和我们一样享受春天》教学反思
2014/02/07 职场文书
初中升旗仪式演讲稿
2014/05/08 职场文书
2014党员批评和自我批评思想汇报
2014/09/21 职场文书
2015年销售部工作总结范文
2015/04/27 职场文书
公司表扬信格式
2015/05/04 职场文书
校运会通讯稿
2015/07/18 职场文书
幼儿园小班班务总结
2015/08/03 职场文书
消防宣传标语大全
2015/08/03 职场文书