main-logo

다국어 프로젝트를 위한 언어 코드 알아보기

브라우저 선호 언어에 따라 언어 셋을 제공하려면 어떤 언어 코드를 사용해야 할까?

profile
박바름
2024년 01월 31일 · 0 분 소요

들어가며

저희는 그동안 다양한 다국어를 지원하는 프로젝트를 많이 진행해왔습니다. 대개는 특정 언어를 기본 언어로 설정해두고 사용자가 원하는 언어로 변경할 수 있도록 기능을 제공해왔죠. 그런데 최근에는 사용자가 설정한 브라우저 선호 언어를 기본 언어로 제공하는 방식으로 전환했습니다.

특히 중국어를 지원하는 프로젝트를 진행하면서 간체와 번체 중국어를 어떤 언어 코드를 기준으로 구분해야 할지 고민이 많았습니다. 이번 기회에 언어 코드에 대해 좀 더 알아보려 합니다.


ISO 639-1 / IETF(BCP 47)

언어 설정에는 주로 ISO 639-1IETF(BCP 47)의 두 가지 표준 코드가 사용됩니다.

ISO 639-1

ISO 639-1은 국제 표준화 기구(ISO)에서 제공하는 언어 코드 시스템으로, 각 언어에 대해 2자리 알파벳 코드를 할당합니다. 예를 들어, 영어는 'en', 한국어는 'ko'로 표시됩니다. ISO 639-1은 주로 웹과 기타 디지털 환경에서 언어를 표현하는 데 사용됩니다. 이 표준은 1967년에 처음 승인되었고, 이후 여러 차례 개정을 거쳐 다양한 언어에 대한 코드를 제공하고 있습니다.

IETF(BCP 47)

IETF(BCP 47)은 언어 태그를 표현하기 위한 국제적인 표준입니다. BCP 47은 ISO 639-1 언어 코드와 ISO 3166-1 국가 코드를 결합하여 더 구체적인 언어 및 지역 설정을 제공합니다. 예를 들어, 'en-US'는 미국 영어, 'en-GB'는 영국 영어를 나타냅니다. 이 표준은 웹 브라우저 및 기타 인터넷 기반 시스템에서 널리 사용됩니다.

 


중국어 간체와 번체의 처리

ISO 639-1에서 중국어 코드는 'zh'입니다만, 이것만으로는 간체와 번체를 구분할 수 없습니다. 이때 필요한 언어 코드가 IETF(BCP 47)입니다. 일반적으로 브라우저의 Accept-Language HTTP 헤더에서 중국어 간체와 번체는 IETF 언어 태그(BCP 47) 규격을 따라 표시됩니다. 따라서 중국어 간체는 'zh-Hans', 번체는 'zh-Hant'로 처리할 수 있습니다.

일반적으로는 위와 같이 처리할 수 있지만, 제 로컬 환경에서 언어 테스트를 했을 때는 조금 다른 결과가 나왔습니다. 크롬 브라우저의 선호 언어를 중국어 간체, 번체로 설정하여 테스트했을 때, Accept-Language HTTP 헤더에서는 각각 'zh-CN'과 'zh-TW'로 표시되는 것을확인할 수 있었습니다. 'zh-CN'과 'zh-TW'는 각각 중국 본토의 중국어 간체와 대만의 중국어 번체를 지칭하는 데 자주 사용됩니다.

또, 마이크로소프트 제품이나 구 버전의 윈도우 운영 체제에서는 중국어 간체와 번체를 'zh-chs'와 'zh-cht'로 구분하기도 했다고합니다.

저는 중국어 사용자에게 적합한 다국어 환경을 제공하기 위해 'zh-Hans'와 'zh-Hant'를 기본 코드로 설정하고, Accept-Language HTTP 헤더 값으로 'zh-CN', 'zh-TW', 'zh-chs', 'zh-cht'가 내려오더라도 중국어 간체와 번체로 언어 표시가 되도록 추가 작업을 해주었습니다.

다국어 프로젝트나 시스템을 개발할 때는 다양한 플랫폼과 시스템에서의 호환성을 위해 가능한 한 국제 표준을 따르는 것이 중요합니다. 중국어 간체와 번체처럼 비표준 코드가 사용될 수 있는 경우를 대비해 언어 설정을 조정해야 할 필요가 있습니다.


마치며

이번 기회를 통해 그동안 당연하게 사용했던 언어 코드에 대해 더 깊이 이해하게 되었고, 다양한 언어를 가진 사용자들을 커버하기 위한 언어 설정 방법에 대해서도 알게 되었습니다.

오늘도 읽어주셔서 감사합니다. 🙇‍♀️

참고 문서

Wikipedia ISO 639-1

미국 의회 도서관(Library of Congress)