?
?
ngx-translate ? 包使用
?
1. ?安装
npm @ngx-translate/core --save npm @ngx-translate/http-loader
?
2. app.module.ts
import { BrowserModule } from '@angular/platform-browser' ;
import { NgModule } from '@angular/core' ;
import { FormsModule } from '@angular/forms' ;
import { HttpModule, Http } from '@angular/http' ;
import { TranslateModule, TranslateLoader } from '@ngx-translate/core' ;
import { TranslateHttpLoader } from '@ngx-translate/http-loader' ;
import { AppComponent } from './app测试数据ponent' ;
export function createTranslateLoader(http: Http) {
return new TranslateHttpLoader(http, './assets/i18n/', '.json' );
}
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: (createTranslateLoader),
deps: [Http]
}
}),
FormsModule,
HttpModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
?
加载TranslateModule的loader, parser 或者missing translations handler
TranslateModule.forRoot();
默认的http loader
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: (createTranslateLoader),
deps: [Http]
}
}),
?
实现AOT编译
export function createTranslateLoader(http: Http) {
return new TranslateHttpLoader(http, './assets/i18n/', '.json' );
}
TranslateHttpLoader 加载 "/assets/i18n/[lang].json"? 文件, [lang] 为语言文件名
初始化 TranslateService ?
import { Component } from '@angular/core' ;
import { TranslateService } from '@ngx-translate/core' ;
@Component({
selector: 'app-root' ,
templateUrl: './app测试数据ponent.html' ,
styleUrls: [ './app测试数据ponent.css' ]
})
export class AppComponent {
constructor(public translate: TranslateService) {
// this language will be used as a fallback when a translation isn't found in the current language
translate.addLangs(["en", "ch" ]);
let browserLang = translate.getBrowserLang();
console.log( "browser languague: " + browserLang);
translate.use(browserLang.match( /en|ch/) ? browserLang : 'en' );
}
}
?
语言文件 /assets/i18n/ch.json
{
"HOME" : {
"TITLE": "你好, Angular ngx-translate!" ,
"SELECT": "更改语言"
}
}
/assets/i18n/en.json
{
"HOME" : {
"TITLE": "Hello Angular with ngx-translate!" ,
"SELECT": "Change language"
}
}
?
app测试数据ponent.html 文件
< div >
< h2 > {{ 'HOME.TITLE' | translate }} </ h2 >
< label >
{{ 'HOME.SELECT' | translate }}
< select #langSelect (change) ="translate.use(langSelect.value)" >
< option *ngFor ="let lang of translate.getLangs()" [value] ="lang" [selected] ="lang === translate.currentLang" > {{ lang }} </ option >
</ select >
</ label >
</ div >
?
效果
?
?
查看更多关于Angular 2/4 多语言 国际化支持的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did222962