npm install @ngx-translate/core --save
๐ฝ ngx-translate
์ด๋ฒ์ ํ์ฌ์์ ๊ธฐ์กด์ ๊ด๋ฆฌํ๊ณ ์๋ Ionic์ ์ฑ์ ๋ค๊ตญ์ด๊ฐ ํ์ํ๋ค๋ ์์ฒญ์ด ๋ค์ด์๋ค. ๊ทธ๋ฆฌํ์ฌ ngx-translate๋ฅผ ์ ์ฉํ๊ธฐ๋ก ํ์๋ค. (https://github.com/ngx-translate/core )
๐ ngx-translate ์ค์น
npm install @ngx-translate/core --save
๐ app.module.ts์ import
Angular์์ ๋ชจ๋์ ์ค์นํ๋ฉด ํญ์ app.module.ts์ import๋ฅผ ํด์ค์ผ ํ๋ค.
// app.moudule.ts
import { TranslateModule } from '@ngx-translate/core';
@NgModule({
.
.
.
imports: [
.
.
.
TranslateModule.forRoot()
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
์๋๋ ์ ๊ฐ ์ง์ importํ ๊ฒ์ด๋ฏ๋ก ์ฐธ์กฐ์ฉ์ผ๋ก ๋ด์ฃผ์ จ์ผ๋ฉด ํฉ๋๋ค.


๐ฑ๐ SharedModule์์ฑ
๊ฐ์๊ธฐ ์ SharedModule๋ฅผ ๋ง๋๋๋ผ๊ณ ํ ์ ์์ง๋ง, translate๋ฅผ ์ ์ญ์ผ๋ก ์ฌ์ฉํ ๋ ค๋ฉด ์ฌ์ฉํ๊ณ ์ ํ๋ ์ปดํผ๋ํธ์ module์ ์ถ๊ฐ๋ฅผ SharedModule๋ฅผ ์ถ๊ฐํด์ค์ผ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
์๋๋ SharedModule ๋ช ๋ น์ด์ด๋ค.
ng g module shared
๊ทธ๋ฆฌ๊ณ shared ๋ชจ๋์ TranslateModule๋ฅผ ์ถ๊ฐํด์ค๋ค.
//shared.module.ts
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
@NgModule({
declarations: [],
imports: [
CommonModule,
TranslateModule
],
exports: [
CommonModule,
TranslateModule
]
})
export class SharedModule { }

๐ง ์ธ์ด๋ณ json ์ถ๊ฐ
์ธ์ด๋ณ json ๋ฐ์ดํฐ๊ฐ ํ์ํ๋ค ๊ทธ๋ฆฌํ์ฌ assets/i18n/en.json , assets/i18n/ko.json ์ ์์ฑํด์ค๋ค.

๋ ๊ฐ์ ๊ฒฝ์ฐ๋ ์์์ด๋ฏ๋ก jsonํ์ผ์ ์๋์ ๊ฐ์ด ์์ฑํ์๋ค.
//en.json
{
"HELLO" : "Hello"
}
//ko.json
{
"HELLO" : "์๋
ํ์ธ์"
}
๐บ TranslateHttpLoader ์ถ๊ฐ
npm install @ngx-translate/http-loader --save
๐ฅ TranslateModule.forRoot์ ์ถ๊ฐ
//app.module.ts
import { 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: [
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: createTranslateLoader,
deps: [HttpClient]
}
}),
]
})
์๋๋ ๋์ ์ธํ ํ๊ฒฝ ํ๊ฒ์ ์บก์ณํ ๊ฒ์ด๋ค.


๐ง ๊ธฐ๋ณธ์ธ์ด ์ค์
app.component.ts์์ ์ฌ์ฉํ๊ณ ์ ํ๋ ์ธ์ด๋ฅผ ์ธํ ํด์ค๋ค.
import { Component } from '@angular/core';
import {TranslateService} from '@ngx-translate/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'Translate';
constructor(private translate: TranslateService) {
this.translate.use('ko'); //ํ๊ตญ์ด ์ฌ์ฉํ ๊ฒฝ์ฐ
//this.translate.use('en'); // ์์ด ์ฌ์ฉํ ๊ฒฝ์ฐ
}
}
๐ถโ๏ธ ์ฌ์ฉํ๊ณ ์ ํ๋ ์ปดํผ๋ํธ์ ๋ชจ๋์ sharedModule์ถ๊ฐ
๋ ๊ฐ์ ๊ฒฝ์ฐ translate.componet์ ์๋ก์ด ๋ชจ๋์ ์ถ๊ฐํ์๋ค.
ng g module translate
//translate.module.ts
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { SharedModule } from '../shared/shared.module';
@NgModule({
declarations: [],
imports: [
CommonModule,
SharedModule
]
})
export class TranslateModule { }
์๋ ์บก์ฒ๋ ์ ๊ฐ ์์ฑํ ๊ฒ์ ๋๋ค.

๐ฑ๐ ์ฌ์ฉํ๊ณ ์ ํ๋ ์ปดํผ๋ํธ HTML์ ์ฌ์ฉํ๊ธฐ
<p>HELLO : {{ 'HELLO' | translate }}</p>
์ ์ฒ๋ผ ์ฌ์ฉํ ๊ฒฝ์ฐ์ ํ๊ธ ๊ฐ์ ๊ฒฝ์ฐ๋ ์๋ ์ฒ๋ผ ๋์จ๋ค.

์์ด๊ฐ์ ๊ฒฝ์ฐ ์๋์ฒ๋ผ ๋์จ๋ค.

'Angular' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ๐ Angular ng-content (0) | 2022.10.26 |
|---|---|
| ๐ngrx๋ฅผ ์ด์ฉํ์ฌ ์๋ฌ๋ ํ์ผ์ฒ๋ฆฌ (0) | 2022.07.30 |
| Ngrx ๋์ (0) | 2022.06.16 |
| Rxjs? (0) | 2022.02.19 |
๋๊ธ