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 相关文章推荐
jQuery 表格工具集
Apr 25 Javascript
JavaScript高级程序设计(第3版)学习笔记13 ECMAScript5新特性
Oct 11 Javascript
js 删除数组的几种方法小结
Feb 21 Javascript
js中自定义方法实现停留几秒sleep
Jul 11 Javascript
node.js中的console.log方法使用说明
Dec 09 Javascript
利用JQuery写一个简单的异步分页插件
Mar 07 Javascript
javascript用正则表达式过滤空格的实现代码
Jun 14 Javascript
JS遍历页面所有对象属性及实现方法
Aug 01 Javascript
JS遍历ul下的li点击弹出li的索引的实现方法
Sep 19 Javascript
微信小程序 天气预报开发实例代码源码
Jan 20 Javascript
JS 逻辑判断不要只知道用 if-else 和 switch条件判断(小技巧)
May 27 Javascript
Nest.js参数校验和自定义返回数据格式详解
Mar 29 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+mysql分页代码详解
2008/03/27 PHP
php的memcached客户端memcached
2011/06/14 PHP
php读取EXCEL文件 php excelreader读取excel文件
2012/12/06 PHP
php实现的简单数据库操作Model类
2016/11/16 PHP
小议javascript 设计模式 推荐
2009/10/28 Javascript
关于div自适应高度/左右高度自适应一致的js代码
2013/03/22 Javascript
jQuery之简单的表单验证实例
2016/07/07 Javascript
jQuery实现最简单的切换图效果【可兼容IE6、火狐、谷歌、opera等】
2016/09/04 Javascript
Angularjs 实现一个幻灯片示例代码
2016/09/08 Javascript
原生js实现瀑布流布局
2017/03/08 Javascript
vue使用drag与drop实现拖拽的示例代码
2017/09/07 Javascript
ES7中利用Await减少回调嵌套的方法详解
2017/11/01 Javascript
Node.js动手撸一个静态资源服务器的方法
2019/03/09 Javascript
封装Vue Element的table表格组件的示例详解
2020/08/19 Javascript
[49:28]VP vs Optic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python标准库之Sys模块使用详解
2015/05/23 Python
Python类属性的延迟计算
2016/10/22 Python
Python爬虫包 BeautifulSoup  递归抓取实例详解
2017/01/28 Python
Python生成密码库功能示例
2017/05/23 Python
Python实现调用另一个路径下py文件中的函数方法总结
2018/06/07 Python
python 定义给定初值或长度的list方法
2018/06/23 Python
pyspark操作MongoDB的方法步骤
2019/01/04 Python
Python JSON格式数据的提取和保存的实现
2019/03/22 Python
python 使用opencv 把视频分割成图片示例
2019/12/12 Python
python切片作为占位符使用实例讲解
2021/02/17 Python
驴妈妈旅游网:中国新型的B2C旅游电子商务网站
2016/08/16 全球购物
全球高级音频和视频专家:HiDef Lifestyle
2019/08/02 全球购物
都柏林通行卡/城市通票:The Dublin Pass
2020/02/16 全球购物
介绍一下SQL中union,intersect和minus
2012/04/05 面试题
结婚典礼证婚词
2014/01/11 职场文书
提拔干部考察材料
2014/05/26 职场文书
关于读书的演讲稿400字
2014/08/27 职场文书
2014年店长工作总结
2014/11/17 职场文书
亲戚关系证明
2015/06/24 职场文书
解决golang 关于全局变量的坑
2021/05/06 Golang
Mongo服务重启异常问题的处理方法
2021/07/01 MongoDB