삽질인가 고찰인가

언어코드. 다국어 지원할 때 언어코드는 뭘 써야할까?

우당탕 오리의 개발모험 2025. 5. 14. 06:28

 

예를 들어보자.

리뷰서비스에서 리뷰를 여러국가 사람들이 읽을 수 있게 다국어 지원을 한다하면, 어떻게 지원해야할까?

홈페이지 등에서 언어를 선택하면 해당 페이지 외 화면전환되서도 언어가 유지되게 할 수 있을까?

 

이럴 때, 요청받는 백엔드에서는 언어코드 형식을 뭐로 받아야 할까?

 

이미 IETF(국제 인터넷 표준화 기구)에서 정의한 규칙이 있다.

 

Best Current Practices

RFC 8713 : IAB, IESG, IETF Trust, and IETF LLC Selection, Confirmation, and Recall Process: Operation of the IETF Nominating and Recall Committees RFC 9389 : Nominating Committee Eligibility

datatracker.ietf.org

 

 

언어 태그(language tags) - BCP 47

 

BCP 47

Javascript disabled? Like other modern websites, the IETF Datatracker relies on Javascript. Please enable Javascript for full functionality. BCP 47 BCP 47 consists of: RFC 4647 : Matching of Language Tags RFC 5646 : Tags for Identifying Languages

datatracker.ietf.org

 

 

IETF에서 정한 규칙 BCP 47은 ISO 639-1 언어 코드와 ISO 3166-1 국가 코드 결합으로 구성된다.

 

예를 들면 en-US는 english의 언어코드 'en'에 미국의 국가코드 'US'를 결합한 BCP 47 코드다.

언어코드는 소문자로, 국가코드는 대문자를 사용한다.

주태그는 앞의 언어코드이고, 서브태그에는 국가코드가 들어간다.

 

하지만, 주의사항이 있다.

태그 전체를 쓰지 않고 가능한 en처럼 간략하게 사용하라고 권고한다.

즉, en-US 대신 en을 사용하라고 한다.

 

이유는,

예를들어 영어는 미국도 사용하고 호주도 사용한다. 구체적인 태그로는 미국은 en-US 호주는 en-AU 다.

하지만 상세태그 대신 en으로 사용하는 것을 권장한다.

(상세한 이유는 아래 더알아보기의 RFC5646 부분 참고)

 

📌 바로 사용하기 - 모든 언어태그

 

Language & Country Codes (ISO IETF RFC .NET LCID)

Letter codes of cultures (languages, countries / regions) - list Name (.NET culture, English, native), ISO code (ISO 639-1 two letter, ISO 639-2 three letter), Windows code (API three letter, LCID), IETF language tag (RFC 4646). Description of table column

www.venea.net

 

 

 

더 알아보기

BCP 47은 RFC4647RFC5646를 따른다.

(추가 참고 : https://www.rfc-editor.org/rfc/rfc5646)

 

RFC5646에서는 몇가지 가이드를 제공하는데 아래와 같다.

 

  • 불필요한 서브태그(subtag) 사용 지양: 서브태그는 유용한 구별 정보를 추가할 때만 사용해야 하며, 그렇지 않으면 언어 태그의 의미를 혼란스럽게 만들 수 있습니다. 예를 들어, 프랑스어(fr)는 대부분 라틴 문자로 작성되므로 fr-Latn 대신 단순히 fr을 사용하는 것이 좋습니다. Langtag
  • 필요한 만큼만 구체적으로 지정: 태그는 가능한 한 정확하게 지정하되, 과도하게 상세한 서브태그는 피해야 합니다. 예를 들어, 독일어 이메일을 태그할 때 de로 충분하며, de-CH-1996과 같이 불필요하게 상세한 태그는 피하는 것이 좋습니다. Langtag
  • 모호함 회피: 주 언어 서브태그만으로는 충분하지 않을 수 있습니다. 예를 들어, 아제르바이잔어(az)는 지배적인 문자가 없으므로 az-Latn, az-Cyrl 또는 az-Arab와 같이 스크립트 서브태그를 추가하여 명확하게 지정하는 것이 좋습니다.
  • 선호 값 사용: 레지스트리에 Preferred-Value 필드가 있는 경우 해당 값을 사용하는 것이 좋습니다. 예를 들어, 히브리어의 경우 iw 대신 he를 사용하는 것이 권장됩니다.