Angular2中如何使用ngx

网友投稿 337 2023-05-13


Angular2中如何使用ngx

相较于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({

...

})

http://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());

}

}

示例模板:

{{ 'hello' | translate }}

使用方式和angularjs中的ng-translate类似,使用translate管道。

效果:

源码地址:https://github.com/justforuse/angular2-demo/tree/master/angular-translate


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:数据库接口实现(数据库接口如何实现)
下一篇:Angular2使用Augury来调试Angular2程序
相关文章

 发表评论

暂时没有评论,来抢沙发吧~