2 min readSep 18, 2019
ionic i18n
Steps:
- Create New Ionic Project
- Install Required dependencies
- Create .json files for different language
- Declaring inside app.module.ts
- Working with home.html & home.ts
1. Create New Project
ionic start i18n blank
cd i18n
2. Install Required Dependencies
angular library -> https://github.com/ngx-translate/core
npm install @ngx-translate/core --save
npm install @ngx-translate/http-loader
! เลือก ngx-translate ให้ถูกต้องตาม version ของ angular
ตัวอย่างเช่น Angular5
npm install @ngx-translate/core@9.1.1 --save
3. Create .json file for languages
EN
assets/i18n/en.json
{"APPLE": "Apple", "BALL": "Ball", "CAT": "Cat" }
TH
assets/i18n/th.json
{ "APPLE": "แอปเปิล", "BALL": "บอล", "CAT": "แมว" }
4. Declaring inside app.module.ts
import { HttpClientModule, HttpClient } from '@angular/common/http';
import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
export function createTranslateLoader(http: HttpClient) {
return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}
@NgModule({
imports: [
BrowserModule,
IonicModule.forRoot(MyApp),
HttpClientModule,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: createTranslateLoader,
deps: [HttpClient]
}
})
]
})
export class AppModule {}
5. working with home.html & home.ts
home.html
<ion-list>
<ion-item>
<ion-label>Language</ion-label>
<ion-select [(ngModel)]="lang" (ionChange)="switchLanguage()">
<ion-option value="en">English</ion-option>
<ion-option value="ta">Tamizh (தமிழ்)</ion-option>
</ion-select>
</ion-item>
</ion-list><ion-list>
<ion-item>
<h2>{{ 'APPLE' | translate }}</h2>
</ion-item>
<ion-item>
<h2>{{ 'BALL' | translate }}</h2>
</ion-item>
<ion-item>
<h2>{{ 'CAT' | translate }}</h2>
</ion-item>
</ion-list>
home.ts
import { TranslateService } from '@ngx-translate/core';
export class HomePage {
lang:any;
constructor(public translate: TranslateService) {
this.lang = 'en';
this.translate.setDefaultLang('en');
this.translate.use('en');
}
switchLanguage() {
this.translate.use(this.lang);
}
}