Intl Api

Views:
5
Category:
Post
Posted on:
2023. 11. 28.

Intl Api

다국어 지원 Api

* 동기

전 회사에서 글로벌한 서비스를 위해 다양한 언어 및 날짜 숫자 등에 대해

번환이 필요 하였다. 기본은 node 환경에서 i18next모듈로 번역 및 변환을 할 수 있었다.

하지만 i18next 모듈은 한글.json파일을 기준으로 번역된 json파일이 있어야 매칭 번역이 가능하였다.

개발 환경에서는 번역된 다른나라 언어 json 파일을 받기까지 시간이 꾀 걸려 불편하기에

간단하게 변환할 수 있는 방법을 찾게 된 것이 Intl Api 이다.

* 기본 사용방법

//* Datetime format
new Intl.DateTimeFormat().format();
//* Number format
new Intl.NumberFormat().format();
//* RelativeTime Format
new Intl.RelativeTimeFormat().format();

* DateTimeFormat

new Intl.DateTimeFormat("ko", { dateStyle: 'full' }).format(new Date());
//* 2023년 1월 19일 목요일
new Intl.DateTimeFormat("ko", { dateStyle: 'long' }).format(new Date());
//* 2023년 1월 19일
new Intl.DateTimeFormat("ko", { dateStyle: 'medium' }).format(new Date());
//* 2023.01.19.
new Intl.DateTimeFormat("ko", { dateStyle: 'short' }).format(new Date());
//* 23.01.19.
new Intl.DateTimeFormat("ko", { timeStyle: 'full' }).format(new Date());
//* 오전 12시 4분 54초 대한민국 표준시 
new Intl.DateTimeFormat("ko", { timeStyle: 'long' }).format(new Date());
//* 오전 12시 5분 39초 GMT+9
new Intl.DateTimeFormat("ko", { timeStyle: 'medium' }).format(new Date());
//* 오전 12:06:02
new Intl.DateTimeFormat("ko", { timeStyle: 'short' }).format(new Date());
//* 오전 12:06

* NumberFormat

new Intl.NumberFormat('ko', { style: 'percent' }).format(0.5);
//*  50%
new Intl.NumberFormat('ko', { style: 'currency', currency: 'KRW' }).format(1238214);
//* ₩1,238,214
new Intl.NumberFormat('ko', { style: 'currency', currency: 'EUR' }).format(32.12);
//* €32.12
new Intl.NumberFormat('ko', { style: 'unit', unit: 'kilogram' }).format(53);
//* '53kg'

* RelativeTimeFormat

const rTf = new Intl.RelativeTimeFormat("ko");
rtf.format(1, "day");
//* 1일 후
rTf.format(-1, "quarter");
//* 1분기 전
//* 시간은 직접 계산해 줘야 함.
# Intl Api

### 다국어 지원 Api


### * 동기
전 회사에서 글로벌한 서비스를 위해 다양한 언어 및 날짜 숫자 등에 대해

번환이 필요 하였다. 기본은 node 환경에서 i18next모듈로 번역 및 변환을 할 수 있었다.

하지만 i18next 모듈은 한글.json파일을 기준으로 번역된 json파일이 있어야 매칭 번역이 가능하였다.

개발 환경에서는 번역된 다른나라 언어 json 파일을 받기까지 시간이 꾀 걸려 불편하기에 

간단하게 변환할 수 있는 방법을 찾게 된 것이 Intl Api 이다.

### * 기본 사용방법
```js
//* Datetime format
new Intl.DateTimeFormat().format();
//* Number format
new Intl.NumberFormat().format();
//* RelativeTime Format
new Intl.RelativeTimeFormat().format();
```
### * DateTimeFormat
```js
new Intl.DateTimeFormat("ko", { dateStyle: 'full' }).format(new Date());
//* 2023년 1월 19일 목요일
new Intl.DateTimeFormat("ko", { dateStyle: 'long' }).format(new Date());
//* 2023년 1월 19일
new Intl.DateTimeFormat("ko", { dateStyle: 'medium' }).format(new Date());
//* 2023.01.19.
new Intl.DateTimeFormat("ko", { dateStyle: 'short' }).format(new Date());
//* 23.01.19.
new Intl.DateTimeFormat("ko", { timeStyle: 'full' }).format(new Date());
//* 오전 12시 4분 54초 대한민국 표준시 
new Intl.DateTimeFormat("ko", { timeStyle: 'long' }).format(new Date());
//* 오전 12시 5분 39초 GMT+9
new Intl.DateTimeFormat("ko", { timeStyle: 'medium' }).format(new Date());
//* 오전 12:06:02
new Intl.DateTimeFormat("ko", { timeStyle: 'short' }).format(new Date());
//* 오전 12:06
```

### * NumberFormat
```js
new Intl.NumberFormat('ko', { style: 'percent' }).format(0.5);
//*  50%
new Intl.NumberFormat('ko', { style: 'currency', currency: 'KRW' }).format(1238214);
//* ₩1,238,214
new Intl.NumberFormat('ko', { style: 'currency', currency: 'EUR' }).format(32.12);
//* €32.12
new Intl.NumberFormat('ko', { style: 'unit', unit: 'kilogram' }).format(53);
//* '53kg'
```

### * RelativeTimeFormat
```js
const rTf = new Intl.RelativeTimeFormat("ko");
rtf.format(1, "day");
//* 1일 후
rTf.format(-1, "quarter");
//* 1분기 전
//* 시간은 직접 계산해 줘야 함.
```