Intl Api
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분기 전 //* 시간은 직접 계산해 줘야 함. ```