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 模拟实现类似c#下的hashtable的简单功能代码
Jan 24 Javascript
firefox下frameset取不到值的解决方法
Sep 06 Javascript
ASP.NET jQuery 实例8 (动态添加内容到DropDownList)
Feb 03 Javascript
密码框显示提示文字jquery示例
Aug 29 Javascript
jQuery实现等比例缩放大图片让大图片自适应页面布局
Oct 16 Javascript
使用 Node.js 做 Function Test实现方法
Oct 25 Javascript
jQuery中:disabled选择器用法实例
Jan 04 Javascript
JavaScript 封装一个tab效果源码分享
Sep 15 Javascript
如何在Linux上安装Node.js
Apr 01 Javascript
javascript操作cookie
Jan 17 Javascript
vue-cli 脚手架基于Nightwatch的端到端测试环境的过程
Sep 30 Javascript
vue.js iview打包上线后字体图标不显示解决办法
Jan 20 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
php5中date()得出的时间为什么不是当前时间的解决方法
2008/06/30 PHP
PHP使用array_multisort对多个数组或多维数组进行排序
2014/12/16 PHP
php入门教程之Zend Studio设置与开发实例
2016/09/09 PHP
thinkPHP框架整合tcpdf插件操作示例
2018/08/07 PHP
用jscript实现新建和保存一个word文档
2007/06/15 Javascript
javascript jscroll模拟html元素滚动条
2012/12/18 Javascript
原生js实现跨浏览器获取鼠标按键的值
2013/04/08 Javascript
使用js判断当前时区TimeZone是否是夏令时
2014/02/23 Javascript
Windows 系统下安装和部署Egret的开发环境
2014/07/31 Javascript
javascript操作数组详解
2014/12/17 Javascript
轻松创建nodejs服务器(8):非阻塞是如何实现的
2014/12/18 NodeJs
Python脚本后台运行的几种方式
2015/03/09 Javascript
JavaScript 常见安全漏洞和自动化检测技术
2015/08/21 Javascript
JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)
2017/01/06 Javascript
js实现鼠标拖动功能
2017/03/20 Javascript
Angular4自制一个市县二级联动组件示例
2017/11/21 Javascript
vue组件中的数据传递方法
2018/05/14 Javascript
vue2.0中set添加属性后视图不能更新的解决办法
2019/02/22 Javascript
vue-router懒加载的3种方式汇总
2021/02/28 Vue.js
[43:51]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS Secret
2018/03/31 DOTA
python根据给定文件返回文件名和扩展名的方法
2015/03/27 Python
python如何获取服务器硬件信息
2017/05/11 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
2017/12/28 Python
NLTK 3.2.4 环境搭建教程
2018/09/19 Python
python 对字典按照value进行排序的方法
2019/05/09 Python
Python调用REST API接口的几种方式汇总
2020/10/19 Python
Python实现淘宝秒杀功能的示例代码
2021/01/19 Python
捷克鲜花配送:Florea.cz
2018/10/29 全球购物
意大利珠宝店:Luxury Zone
2019/01/05 全球购物
设备售后服务承诺书
2014/05/30 职场文书
反腐倡廉标语
2014/06/24 职场文书
2014年国庆节演讲稿
2014/09/19 职场文书
在职员工证明书
2014/09/19 职场文书
档案工作个人总结
2015/03/03 职场文书
详解CSS故障艺术
2021/05/25 HTML / CSS
关于python中readlines函数的参数hint的相关知识总结
2021/06/24 Python