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中数组Array的操作方法
May 09 Javascript
JavaScript中的setUTCDate()方法使用详解
Jun 11 Javascript
11种ASP连接数据库的方法
Sep 18 Javascript
JavaScript、jQuery与Ajax的关系
Jan 24 Javascript
jQuery实现下拉菜单(内容为时间)的实时更新及图表的随动更新的方法
Jul 07 Javascript
AngularJS 自定义指令详解及示例代码
Aug 17 Javascript
浅谈jQuery中Ajax事件beforesend及各参数含义
Dec 03 Javascript
使用DeviceOne实现微信小程序功能
Dec 29 Javascript
关于jquery form表单序列化的注意事项详解
Aug 01 jQuery
小程序tab页无法传递参数的方法
Aug 03 Javascript
基于node简单实现RSA加解密的方法步骤
Mar 21 Javascript
vue + el-form 实现的多层循环表单验证
Nov 25 Vue.js
详解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简单实现“相关文章推荐”功能的方法
2014/07/19 PHP
php实现简单的语法高亮函数实例分析
2015/04/27 PHP
详解PHP实现支付宝小程序用户授权的工具类
2018/12/25 PHP
PHP7 标准库修改
2021/03/09 PHP
Extjs4 类的定义和扩展实例
2013/06/28 Javascript
基于zepto.js简单实现上传图片
2016/06/21 Javascript
javascript中使用未定义变量或值的情况分析
2016/07/19 Javascript
解析javascript图片懒加载与预加载的分析总结
2016/10/27 Javascript
Express与NodeJs创建服务器的两种方法
2017/02/06 NodeJs
详解VUE的状态控制与延时加载刷新
2017/03/27 Javascript
jQuery使用JSONP实现跨域获取数据的三种方法详解
2017/05/04 jQuery
jQuery Validate格式验证功能实例代码(包括重名验证)
2017/07/18 jQuery
JQuery 选择器、DOM节点操作练习实例
2017/09/28 jQuery
Vue2.5学习笔记之如何在项目中使用和配置Vue
2018/09/26 Javascript
Nodejs处理异常操作示例
2018/12/25 NodeJs
vue中的 $slot 获取插槽的节点实例
2019/11/12 Javascript
vue-路由精讲 二级路由和三级路由的作用
2020/08/06 Javascript
[01:07:21]NAVI vs VG Supermajor 败者组 BO3 第二场 6.5
2018/06/06 DOTA
[01:23]2019完美世界全国高校联赛(春季赛)合肥全国总决赛
2019/06/10 DOTA
新手该如何学python怎么学好python?
2008/10/07 Python
Python类属性的延迟计算
2016/10/22 Python
python微信跳一跳系列之自动计算跳一跳距离
2018/02/26 Python
5分钟 Pipenv 上手指南
2018/12/20 Python
python字符串下标与切片及使用方法
2020/02/13 Python
django中url映射规则和服务端响应顺序的实现
2020/04/02 Python
基于pytorch中的Sequential用法说明
2020/06/24 Python
python实现画图工具
2020/08/27 Python
python跨文件使用全局变量的实现
2020/11/17 Python
银行职员个人的工作自我评价
2014/02/15 职场文书
小学生勤俭节约演讲稿
2014/08/28 职场文书
群众路线四风自我剖析材料
2014/10/08 职场文书
2019年新郎保证书3篇
2019/10/17 职场文书
《围炉夜话》110句人生箴言,精辟有内涵,引人深思
2019/10/23 职场文书
详解CSS开发过程中的20个快速提升技巧
2021/05/21 HTML / CSS
Python字典的基础操作
2021/11/01 Python
SQL Server 中的事务介绍
2022/05/20 SQL Server