i18n이란 internationalization(국제화) 라는 단어를 축약한 것이다. i부터 n까지 18개의 문자수를 축약해서 i18n으로 나타낸다. 국제화는 다양한 언어 및 지역에 적용할 수 있도록 프로그램을 설계하는 프로세스다. 이상적으로는 국제화는 설계의 기본 단계 중 하나이다.
프로그램이 특정 지역이나 언어에 종속되지 않고 다양한 지역, 언어에서 정상 작동하도록 국제적으로 통용되는 sw을 설계하고 개발하는 과정을 말한다.
참고자료: Web best practices
i18n은 일반적으로 다음과 같은것을 의미한다.
l10n이란 Localization(현지화) 라는 뜻으로 특정 대상 시장의 언어나 문화 및 기타 요구 사항을 충족하기 위해 제품을 조정하는 것을 말한다.
예를들면, 한국에서의 통화기호는 ₩(원)를 사용하고 미국의 경우 $(달러)를 사용한다.
날짜형식의 경우 우리나라는 yyyy-mm-dd 형식을 사용하지만 대부분의 나라의 경우 dd-mm-yyyy 형식을 사용한다.
이와 같은 부분은 하드코딩으로 관리하는 것이 아니라 라이브러리로 관리 되어야하는 부분이다.
라이브러리는 프로젝트 규모와 성격에 맞게 선택하면 된다.
다음과 같이 찾아볼 수 있다.
참고로 date format에 대해 얘기하는 김에 이제
Moment.js
로 새로운 프로젝트를 설계하지 않기를 바란다.
더 이상의 업데이트나 기능 추가가 없을 것이라고 공식적으로 발표했기 때문이다.
Moment.js Documentation
이상적으로는 국제화는 설계 및 개발 프로세스의 기본이며 사후 고려되어야 하는 사항은 아니다. 기존에 이러한 고려 없이 만들어진 제품을 글로벌한 시장에 도입하는 것은 다시 재설계 하는 것 보다 어렵기 때문이다. 따라서 기본적으로 고려해야할 사항이다.
프론트엔드에서 라이브러리 사용, Locale에 따른 CSS적용, 필요한 컨텐츠를 로드하는 방식으로 global products를 만들 수 있다면 DB는 어떤 식으로 설계되어서 적용해야 할까? 라는 궁금증이 생겨서 찾아봤다. 단순하게 Locale에 따라 값을 저장하기만 하면 되는지 궁금해졌다.
찾아보니 여러가지 패턴이 있고 각각의 장단점이 있었다.
장점
단점
장점
단점
장점
단점
장점
나름대로 번역을 해봤지만 원글에 설명이 훨씬 잘 되어있다.
출처: Database Internationalization(I18N)/Localization(L10N) design patterns