Angular開發(二十一)-關於國際化的處理
阿新 • • 發佈:2019-01-10
angular2中開發國際化(一個頁面中來回切換幾種語言)
實現國際化基本步驟
- 1、使用
angular-cli
建立一個專案工程 - 2、建立一個元件
page3
的demo
來展現國際化功能 - 3、使用
npm
安裝ngx-translate
模組
npm install --save @ngx-translate/core
npm install --save @ngx-translate/http-loader
4、在根模組中
app.module.ts
中引入上面安裝的模組import { TranslateModule, TranslateLoader } from '@ngx-translate/core'
- 5、在
assets
資料夾中新建i18n
資料夾新增兩個json檔案
- zh-CN.json
- en.json
- 6、
zh-CN.json
檔案表示中文內容
{
"title": "我是需要翻譯的",
"hello": "你好",
"get-lang": "獲取語言型別",
"content": "你好世界"
}
- 7、
en.json
檔案表示英文下內容
{
"title": "title",
"hello ": "Hi",
"get-lang": "getlang",
"content": "hello word"
}
- 8、繼續在app.module.ts檔案中新增內容
....
export function HttpLoaderFactory(http:Http){
return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}
....
@NgModule:({
...
imports:[
TranslateModule.forRoot({
loader:{
provide:TranslateLoader,
useFactory:HttpLoaderFactory,
deps:[Http]
}
})
]
...
})
- 9、在
Page3Component.ts
檔案中新增引入
import { TranslateService } from '@ngx-translate/core'
- 10、在
Page3Component.ts
書寫中英文切換
export class Page3Component implements OnInit {
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');
}
//定義在select上下拉獲取值的方法
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());
}
ngOnInit() {
}
}
- 11、在
Page3Component.html
書寫頁面
<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>
<p>{{'content' | translate}}</p>
</div>
<button (click)="toggleLang()">{{'get-lang' | translate}}</button>