๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Angular

๐ŸฅทAngular์˜ ๋‹ค๊ตญ์–ด ๊ด€๋ฆฌ

by frontChoi 2021. 11. 7.
๋ฐ˜์‘ํ˜•
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ํ•œ ๊ฒƒ์ด๋ฏ€๋กœ ์ฐธ์กฐ์šฉ์œผ๋กœ ๋ด์ฃผ์…จ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค.

TranslateModule import
imports์— ์ถ”๊ฐ€

 

๐Ÿฑ‍๐Ÿ‘“ 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 { }

 

sharedModule.ts

๐Ÿšง ์–ธ์–ด๋ณ„ json ์ถ”๊ฐ€

์–ธ์–ด๋ณ„ json ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•˜๋‹ค ๊ทธ๋ฆฌํ•˜์—ฌ assets/i18n/en.json , assets/i18n/ko.json ์„ ์ƒ์„ฑํ•ด์ค€๋‹ค.

 

en.json , 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]
          }
        }),
    ]
})

 

์•„๋ž˜๋Š” ๋‚˜์˜ ์„ธํŒ…ํ™˜๊ฒฝ ํ•œ๊ฒƒ์„ ์บก์ณํ•œ ๊ฒƒ์ด๋‹ค.

TranslateModule ์ถ”๊ฐ€1
TranslateModule ์ถ”๊ฐ€2

 

๐Ÿง‘ ๊ธฐ๋ณธ์–ธ์–ด ์„ค์ •

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

๋Œ“๊ธ€