글로벌 시대, 다국어 지원하는 웹사이트 만들기
제가 회사에서 만들고 있는 제품은 한국뿐 아니라 일본, 싱가폴, 대만, 유럽 등 다양한 국가에 고객사가 있습니다. 지금은 영어, 일본어, 한국어를 지원하고 있는데요. 취준생 시절 포트폴리오를 만들기 위한 웹서비스 개발을 할 때에는 다국어 지원 경험이 많지 않아서 처음엔 조금 생소한 주제였습니다. 그래서 이번 기회에 다국어 지원을 위한 구현 방법을 정리해보려고 합니다.
먼저, 생각해 볼까요?
위와 같이 다양한 언어를 지원하는 서비스를 만들려면 어떻게 해야할까요? 간단히 구현방법을 생각해보면 다음과 같습니다.
- 컴포넌트 내 모든 문구를 하드코딩하지 않고, 언어에 맞는 문구를 반환하는 메서드를 사용한다.
- 언어별로 문구를 관리하는 파일을 마련한다.
- 언어 선택 버튼을 만들어서, 언어를 선택하면 해당 언어로 문구를 반환할 수 있도록 한다.
생각보다 복잡하지는 않습니다. 직접 구현해 보는 것도 좋은 경험이지만 위에 나열한 것들을 쉽게 구현할 수 있도록 도와주는 라이브러리가 이미 존재합니다!
i18n
i18n 라이브러리를 사용하는 이유가 단순히 'key - value' 형태로 문구를 쉽게 관리할 수 있기 때문만은 아니고, interpolation(보간)이나 pluralization(복수형) 등 다양한 기능을 제공하기 때문입니다. 그 외에도 플러그인이 많아서 필요한 기능을 직접 구현하는 시간과 비용을 아낄 수 있습니다.
i18n은 internationalization(국제화)의 약자로, i와 n 사이에 있는 글자 수가 18개라서 i18n이라고 한다고 해요.
그리고 i18n라이브러리를 사용하면 Locize라는 유료 서비스를 활용하는 것도 쉬워지는데요. 제품의 크기가 커지면 관리해야할 문자열이 굉장히 많아지고, 언어가 추가되기 시작하면 그 양은 배로 늘어납니다. 단순히 언어를 추가하는 것뿐만 아니라 어순이나 복수형 표기 등에 대해서도 고민해야하는데요. 이런 디테일들은 다국어 시스템을 구축하기 전에 미리 생각하지 못하는 경우가 많습니다. 우리가 보기엔 그냥 중국어인데 중국 대륙의 중국어와 대만의 중국어, 홍콩의 중국어가 각각 다르기 때문에 그런 것들도 놓치기 쉬운 부분 중 하나입니다. 한마디로 개발자가 혼자 해결할 수 있는 영역이 아니며 협업이 불가피합니다.