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 相关文章推荐
IE中jscript/javascript的条件编译
Sep 07 Javascript
javascript cookie操作类的实现代码小结附使用方法
Jun 02 Javascript
web的各种前端打印方法之jquery打印插件PrintArea实现网页打印
Jan 09 Javascript
向左滚动文字 js代码效果
Aug 17 Javascript
JavaScript的事件绑定(方便不支持js的时候)
Oct 01 Javascript
jQuery使用hide方法隐藏元素自身用法实例
Mar 30 Javascript
javascript 初学教程及五子棋小程序的简单实现
Jul 04 Javascript
element-ui表格列金额显示两位小数的方法
Aug 24 Javascript
js的继承方法小结(prototype、call、apply)(推荐)
Apr 17 Javascript
配置一个vue3.0项目的完整步骤
Apr 26 Javascript
vue element自定义表单验证请求后端接口验证
Dec 11 Javascript
JS 数组和对象的深拷贝操作示例
Jun 06 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
Ajax+PHP 边学边练 之二 实例
2009/11/24 PHP
深入解析php之sphinx
2013/05/15 PHP
PHP扩展模块Pecl、Pear以及Perl的区别
2014/04/09 PHP
PHP整数取余返回负数的相关解决方法
2014/05/15 PHP
新浪SAE云平台下使用codeigniter的数据库配置
2014/06/12 PHP
PHP程序员必须知道的两种日志实例分析
2020/05/14 PHP
Javascript 模式实例 观察者模式
2009/10/24 Javascript
JQuery从头学起第三讲
2010/07/06 Javascript
jQuery 源码分析笔记(7) Queue
2011/06/19 Javascript
浅谈JS闭包中的循环绑定处理程序
2014/11/09 Javascript
javascript生成不重复的随机数
2015/07/17 Javascript
javascript制作幻灯片(360度全景图片)
2015/07/28 Javascript
AngularJS自动表单验证
2016/02/01 Javascript
基于JS实现移动端访问PC端页面时跳转到对应的移动端网页
2020/12/24 Javascript
JavaScript对Json的增删改属性详解
2016/06/02 Javascript
jquery attr()设置和获取属性值实例教程
2016/09/25 Javascript
单行 JS 实现移动端金钱格式的输入规则
2017/05/22 Javascript
详解mpvue开发小程序小总结
2018/07/25 Javascript
详解js创建对象的几种方法及继承
2019/04/12 Javascript
extjs4图表绘制之折线图实现方法分析
2020/03/06 Javascript
jquery更改元素属性attr()方法操作示例
2020/05/22 jQuery
Javascript如何递归遍历本地文件夹
2020/08/06 Javascript
JavaScript实现音乐导航效果
2020/11/19 Javascript
javascript中导出与导入实现模块化管理教程
2020/12/03 Javascript
PyQt5每天必学之创建窗口居中效果
2018/04/19 Python
python读文件保存到字典,修改字典并写入新文件的实例
2018/04/23 Python
Python2和Python3之间的str处理方式导致乱码的讲解
2019/01/03 Python
详解Appium+Python之生成html测试报告
2019/01/04 Python
在pytorch中查看可训练参数的例子
2019/08/18 Python
Django中modelform组件实例用法总结
2020/02/10 Python
PyQt5 文本输入框自动补全QLineEdit的实现示例
2020/05/13 Python
如何基于python把文字图片写入word文档
2020/07/31 Python
PyCharm 2020.2下配置Anaconda环境的方法步骤
2020/09/23 Python
详解HTML5之pushstate、popstate操作history,无刷新改变当前url
2017/03/15 HTML / CSS
使用canvas来完成线性渐变和径向渐变的功能的方法示例
2019/07/25 HTML / CSS
个人自荐书怎么写
2015/03/26 职场文书