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重要知识更新
Jul 08 Javascript
JS链式调用的实现方法
Mar 07 Javascript
使用jQuery同时控制四张图片的伸缩实现代码
Apr 19 Javascript
window.location.href IE下跳转失效的解决方法
Mar 27 Javascript
JavaScript基本语法讲解
Jun 03 Javascript
javascript中sort() 方法使用详解
Aug 30 Javascript
浅析js中substring和substr的方法
Nov 09 Javascript
js设置文字颜色的方法示例
Dec 30 Javascript
js实现文字向上轮播功能
Jan 13 Javascript
JS中IP地址与整数相互转换的实现代码
Apr 10 Javascript
产制造追溯系统之通过微信小程序实现移动端报表平台
Jun 03 Javascript
JavaScript闭包相关知识解析
Oct 19 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中怎样保持SESSION不过期 原理及方案介绍
2013/08/08 PHP
php模拟post上传图片实现代码
2016/06/24 PHP
PHP7匿名类用法分析
2016/09/26 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
2012/02/03 Javascript
jQuery学习笔记 操作jQuery对象 文档处理
2012/09/19 Javascript
关于extjs treepanel复选框选中父节点与子节点的问题
2013/04/02 Javascript
原生js实现跨浏览器获取鼠标按键的值
2013/04/08 Javascript
多种方法判断Javascript对象是否存在
2013/09/22 Javascript
JS生成某个范围的随机数【四种情况详解】
2016/04/20 Javascript
js实现简单的碰壁反弹效果
2016/08/30 Javascript
JavaScript String(字符串)对象的简单实例(推荐)
2016/08/31 Javascript
使用jQuery给Table动态增加行、清空table的方法
2018/09/05 jQuery
layui的表单提交以及验证和修改弹框的实例
2019/09/09 Javascript
Layui Form 自定义验证的实例代码
2019/09/14 Javascript
vue路由切换时取消之前的所有请求操作
2020/09/01 Javascript
python在windows下实现备份程序实例
2014/07/04 Python
Python实现的径向基(RBF)神经网络示例
2018/02/06 Python
python实战之实现excel读取、统计、写入的示例讲解
2018/05/02 Python
Python爬虫爬取新浪微博内容示例【基于代理IP】
2018/08/03 Python
浅析python中numpy包中的argsort函数的使用
2018/08/30 Python
详解Python的数据库操作(pymysql)
2019/04/04 Python
在SQLite-Python中实现返回、查询中文字段的方法
2019/07/17 Python
python实现电子书翻页小程序
2019/07/23 Python
Python中低维数组填充高维数组的实现
2019/12/02 Python
解决pyqt5异常退出无提示信息的问题
2020/04/08 Python
一款恶搞头像特效的制作过程 利用css3和jquery
2014/11/21 HTML / CSS
Tuckernuck官网:经典的美国品质服装、鞋子和配饰
2021/01/11 全球购物
读书小明星事迹材料
2014/05/03 职场文书
绿色环保标语
2014/06/12 职场文书
孝敬父母的活动方案
2014/08/28 职场文书
导游词400字
2015/02/13 职场文书
新生儿未入户证明
2015/06/23 职场文书
幼儿园托班开学寄语(2016秋季)
2015/12/03 职场文书
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
2022/04/21 Python
Django框架模板用法详解
2022/06/10 Python