IETF 언어 태그

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

IETF 언어 태그는 1995년 처음 정의된 이후 여러 차례 개정을 거쳐 현재 RFC 5646이 표준으로 사용되고 있으며, 언어, 문자 체계, 지역, 변이형, 확장, 개인용 하위 태그를 하이픈으로 연결하여 언어 정보를 표현한다. IETF 언어 태그는 ISO 639, ISO 15924, ISO 3166, UN M.49 등의 표준을 참조하며, 확장 하위 태그를 통해 변환된 콘텐츠나 유니코드 로케일 속성과 같은 추가 정보를 포함할 수 있다.

IETF 언어 태그
일반 정보
이름IETF 언어 태그
설명IETF (Internet Engineering Task Force)에서 정의한 언어 식별자
목적
용도컴퓨터 프로그램에서 텍스트나 다른 내용의 언어를 식별
HTTP의 `Accept-Language` 헤더 필드
HTML의 `lang` 속성
XML의 `xml:lang` 속성
PNG의 텍스트 청크
관련 RFCRFC 5646: 언어 태그 구조 정의
RFC 4647: 언어 태그 매칭 정의
RFC 7231: HTTP에서 언어 태그 사용 규정
구조
기본 구조language[-script][-region][-variant]*[-extension]*[-privateuse]
언어필수. ISO 639에 정의된 언어 코드 (예: `en` (영어), `ko` (한국어))
스크립트선택 사항. ISO 15924에 정의된 문자 집합 (예: `Latn` (라틴 문자), `Hang` (한글))
지역선택 사항. ISO 3166-1 alpha-2에 정의된 국가 코드 또는 UN M.49에 정의된 지역 코드 (예: `US` (미국), `029` (카리브 해))
변형선택 사항. 언어의 특정 방언이나 변형을 나타냄
확장선택 사항. 단일 문자 접두사 뒤에 오는 하위 태그 (예: `u` (Unicode), `x` (비공개 사용))
비공개 사용선택 사항. `x-`로 시작하는 하위 태그로, 특정 당사자 간의 비공개 합의에 따라 사용
예시
영어`en`
스페인어 (라틴 아메리카)`es-419`
로만슈어 (수르실바 방언)`rm-sursilv`
세르비아어 (키릴 문자)`sr-Cyrl`
민난어 (중국어 번체, 대만)`nan-Hant-TW`
광둥어 (중국어 번체, 홍콩)`yue-Hant-HK`
스위스 독일어 (Unicode 확장, 추가 지역 정보)`gsw-u-sd-chzh`
추가 정보
IANA 레지스트리언어 하위 태그 레지스트리
언어 태그 확장 레지스트리
📚 더 읽어볼만한 페이지
  • RFC - 다이제스트 인증
    다이제스트 인증은 HTTP 통신에서 클라이언트와 서버 간 사용자 인증 방식으로, 클라이언트가 사용자 이름, 비밀번호, nonce 등을 해싱한 응답 값을 서버에 전송하여 인증하며, RFC 2069의 취약점을 개선한 RFC 2617과 RFC 7616으로 강화되었으나, HTTPS 기본 인증에 비해 단점이 많아 사용이 줄고 있다.
  • RFC - RFC 1149
    RFC 1149는 조류 운반체를 이용하여 IP 데이터그램을 전송하는 규격을 다룬 문서로, IPoAC 프로토콜을 통해 IP 데이터를 두루마리에 인쇄하여 조류의 다리에 부착, 전송하는 방식을 설명한다.
  • 국제화와 지역화 - 언어 현지화
    언어 현지화는 특정 지역의 문화, 언어, 법률 등을 고려하여 제품이나 서비스를 적응시키는 포괄적인 과정으로, 세계화 전략의 핵심 단계인 국제화 이후에 수행되며, 다양한 기술과 방법으로 이루어져 시장에서의 성공적인 출시와 성장에 필수적이다.
  • 국제화와 지역화 - ISO 3166
    ISO 3166은 국가, 속령, 특별 지역 및 그 하위 구분에 대한 코드를 정의하는 국제 표준으로, ISO 3166-1, ISO 3166-2, ISO 3166-3으로 구성되어 있으며 ISO 3166/MA에 의해 관리 및 업데이트된다.
  • 고유 식별자 - MAC 주소
    MAC 주소는 네트워크 장치를 식별하는 고유한 48비트 식별자로, IEEE 802 MAC 주소로 알려져 있으며, 최근 스푸핑 악용 및 개인 정보 보호를 위한 랜덤화 기술이 논의되고 있다.
  • 고유 식별자 - 범용 상품 부호
    범용 상품 부호(UPC)는 소매점에서 상품을 식별하기 위해 상품 포장에 인쇄되는 널리 사용되는 바코드의 일종으로, 12자리 숫자로 구성된 UPC-A를 포함한 다양한 변형이 존재한다.

2. 역사

IETF 언어 태그는 1995년 5월에 발행된 RFC 1766에서 처음으로 정의되었다. 이후 2001년 1월에 RFC 3066으로 대체되었는데, ISO 639-2 코드가 추가되고(이전에는 ISO 639-1 코드만이 허용) 처음으로 하위 태그에 숫자를 사용하는 것이 허용되었다.

2006년 9월에는 RFC 4646(사양의 주요 부분)과 RFC 4647(매칭의 태도에 대해서)이 발행되었다. RFC 4646은 언어 태그에 구조화된 서식을 도입하고, 이전부터 사용되던 ISO 639(part 1과 2)와 ISO 3166에 더해서 ISO 15924와 UN M.49를 이용하였으며, 하위 태그의 레지스트리를 오래된 것에서 새로운 것으로 바꾸었다. 또한 이 이전에 정의되어 있던 태그 중 새로운 구조에 적합하지 않은 것에 대해서는 RFC 3066과의 호환성을 유지하기 위해서 계승되었다.

현재 IETF 워킹 그룹은 ISO 639-3을 언어 하위 태그 레지스트리에 포함시키는 것을 주요 목표로 하는 다음 버전의 사양을 준비하고 있으며, 승인 절차가 진행 중이다.

2.1. 초기 정의 및 발전 (RFC 1766, RFC 3066)

1995년 3월, Harald Tveit Alvestrand가 편집한 [http://tools.ietf.org/html/rfc1766 RFC 1766]에서 IETF 언어 태그가 처음 정의되었다. 이 태그는 ISO 639-1의 두 글자 언어 코드와 ISO 3166의 두 글자 국가 코드를 기반으로 했으며, 3~8자의 변형 또는 스크립트 하위 태그를 포함하는 전체 태그의 등록을 허용했다.

2001년 1월, [http://tools.ietf.org/html/rfc3066 RFC 3066]으로 업데이트되면서 ISO 639-2의 세 글자 언어 코드를 추가하고, 숫자 하위 태그 사용을 허용했다. 또한, HTTP/1.1에서 언어 태그의 일치를 돕기 위한 언어 범위 개념을 채택했다.

2.2. 구조화된 형식 도입 (RFC 4646, RFC 4647)

2006년 9월, RFC 4646 및 RFC 4647이 발표되면서 언어 태그의 구조가 더욱 정교해졌다. ISO 15924 (문자 체계 코드) 및 UN M.49 (지역 코드)가 추가되어 언어 태그의 표현 범위가 확장되었다. 이전 태그 레지스트리가 새로운 하위 태그 레지스트리로 대체되었으며, 이전 버전과의 호환성을 위해 일부 예외 조항이 마련되었다.

2.3. ISO 639-3 통합 및 현재 표준 (RFC 5646)

2009년 9월에 발행된 현재 표준인 RFC 5646ISO 639-3 및 639-5의 세 글자 코드를 언어 하위 태그 레지스트리에 통합하여 ISO 639와 BCP 47 간의 상호 운용성을 높였다. BCP 47 (Best Current Practice 47)은 RFC 5646과 관련 RFC 문서들을 포함하는 IETF 언어 태그의 최신 표준을 나타낸다.

3. 서식

IETF 언어 태그는 하이픈('-')으로 구분된 하나 이상의 '하위 태그(subtag)'로 구성되며, 각 하위 태그는 기본 라틴 문자 또는 숫자로만 구성된다. 하위 태그는 대소문자를 구별하지 않지만, 지역 하위 태그는 모두 대문자, 문자 체계 하위 태그는 머리글자만 대문자, 그 외 모든 하위 태그는 소문자로 작성하는 것이 권장된다.

일반적으로 언어 태그는 언어 하위 태그만 사용하거나, 언어 하위 태그와 지역 하위 태그를 함께 사용한다. 예를 들어, `en`은 영어를 나타내며, `en-CA`는 캐나다 영어를 나타낸다. 언어 태그에 구별되는 정보를 추가하지 않는 경우, 스크립트 및 지역 하위 태그는 생략하는 것이 좋다. 예를 들어, 스페인어는 라틴 문자로 쓰이는 것이 일반적이므로 es-Latn보다 es가 더 선호된다.

3.1. 하위 태그의 종류 및 순서

IETF 언어 태그는 하이픈(-)으로 구분된 하나 이상의 "하위 태그(subtag)"로 구성된다. 일반적으로 하위 태그는 다음 순서로 작성된다.

* language영어
* script영어
* region영어
* variant영어
* extension영어
* private use영어

따라서 형식은 대략 다음과 같다. (이 중 language영어 태그만 필수)

```
언어-문자 체계-지역-변이형-확장-개인용
```

각 하위 태그는 다음 표준에서 파생된다.

* language영어: ISO 639-1, ISO 639-2, ISO 639-3, ISO 639-5
* script영어: ISO 15924
* region영어: ISO 3166-1 alpha-2, UN M.49
* variant영어: (독자적인 것이므로 파생 원본 표준 없음)
* extension영어: (미래 확장을 위한 예약 영역이므로 파생 원본 표준 없음)
* privateuse영어: (사적 이용 부분이므로 파생 원본 표준 없음)

IANA에서 관리하는 [https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry 언어 하위 태그 레지스트리(Language Subtag Registry)]에는 현재 공개되어 있는 유효한 하위 태그 목록이 있다.

하위 태그에서는 알파벳의 대소문자를 구분하지 않지만, 사양에서는 언어 하위 태그 레지스트리와 동일한 방법으로, 즉, region영어 하위 태그에 대해서는 모두 대문자로, script영어 하위 태그에 대해서는 머리글자만 대문자로, 그 외 모든 하위 태그에 대해서는 소문자로 표기하도록 권장하고 있다.

언어 태그의 사용법으로 자주 보이는 스타일은 단순히 language영어 하위 태그만 사용하거나, language영어 하위 태그와 region영어 하위 태그를 사용하는 방법이다. 예를 들어, `en`은 단일 language영어 하위 태그(ISO 639-1에서)로 구성되어 영어를 나타낸다. 한편, `en-CA`는 language영어 하위 태그 다음에 region영어 하위 태그 `CA`(ISO 3166-1에서)를 붙여서 구성되며, 캐나다 영어를 나타낸다.

3.2. 하위 태그 표기 규칙

하위 태그는 대소문자 구분을 하지 않지만, 규약에서는 region영어 하위 태그는 모두 대문자, script영어 하위 태그는 머리글자만 대문자, 그 외의 모든 하위 태그는 소문자로 작성하는 것을 권장하고 있다. 이 대소문자 사용은 기본 ISO 표준의 권장 사항을 따른다.

4. 언어 태그의 예시

BCP 47은 IETF 언어 태그의 표준이다. 다음은 BCP 47에서 제시하는 언어 태그의 예시이다.

* 언어 하위 태그만 사용하는 경우:
* 독일어독일어
* 日本語일본어
* grandfathered 태그의 예i-enochian
* 언어-문자(language-script) 하위 태그:
* 중국어 (번체자)zh-Hant
* 중국어 (간체자)zh-Hans
* 세르비아어 (키릴 문자)sr-Cyrl
* 세르비아어 (라틴 문자)sr-Latn
* 언어-지역(language-region) 하위 태그:
* 영어 (미국)en-US
* 스페인어 (라틴 아메리카), UN 지역 코드 이용es-419
* 언어-변형(language-variant) 하위 태그:
* 슬로베니아어 Nadiza 방언sl-nedis
* 언어-지역-변형(language-region-variant) 하위 태그:
* 스위스에서 사용되는 독일어, 1901년 [[맞춤법]]에 사용된 독일어de-CH-1901
* 이탈리아에서 사용되는 슬로베니아 Nadiza 방언sl-IT-nedis
* 언어-문자-지역-변형(language-script-region-variant) 하위 태그:
* 중국 대륙에서 사용되는 중국어 (간체자)zh-Hans-CN
* 세르비아 몬테네그로에서 사용되는 세르비아어 (라틴 문자)sr-Latn-CS
* 이탈리아에서 사용되는 슬로베니아어 (라틴문자) Nadiza 방언sl-Latn-IT-nedis (권장되지 않음)

4.1. 일반적인 언어 태그

IETF 언어 태그는 BCP47 표준을 따르며, 다양한 형태로 사용된다.

* 언어 하위 태그만 사용하는 경우:
* 독일어독일어
* 日本語일본어
* grandfathered 태그의 예i-enochian
* 언어-문자(language-script) 하위 태그:
* 중국어 (번체자)zh-Hant
* 중국어 (간체자)zh-Hans
* 세르비아어 (키릴 문자)sr-Cyrl
* 세르비아어 (라틴 문자)sr-Latn
* 언어-문자-지역(language-script-region) 하위 태그:
* 중국 대륙에서 사용되는 중국어 (간체자)zh-Hans-CN
* 세르비아 몬테네그로에서 사용되는 세르비아어 (라틴 문자)sr-Latn-CS
* 언어-변형(language-variant) 하위 태그:
* 슬로베니아어 Nadiza 방언sl-nedis
* 언어-지역-변형(language-region-variant) 하위 태그:
* 스위스에서 사용되는 독일어, 1901년 [[맞춤법]]에 사용된 독일어de-CH-1901
* 이탈리아에서 사용되는 슬로베니아 Nadiza 방언sl-IT-nedis
* 언어-문자-지역-변형(language-script-region-variant) 하위 태그:
* 이탈리아에서 사용되는 슬로베니아어 (라틴문자) Nadiza 방언sl-Latn-IT-nedis (권장되지 않음)
* 언어-지역(language-region) 하위 태그:
* 영어 (미국)en-US
* 스페인어 (라틴 아메리카), UN 지역 코드 이용es-419

다음은 일반적으로 사용되는 언어의 IETF 하위 태그를 나타낸 표이다.

👆
좌우로 밀어서 보기
일반적인 언어 및 해당 IETF 하위 태그
영어 이름원어 이름하위 태그
아프리칸스어Afrikaans아프리칸스어af
암하라어አማርኛ암하라어am
아랍어العربية아랍어ar
마푸둥군어Mapudungunarnarn
모로코 아랍어الدارجة المغربيةaryary
아삼어অসমীয়া아삼어as
아제르바이잔어Azərbaycan아제르바이잔어az
바시키르어Башҡорт바시키르어ba
벨라루스어беларуская벨라루스어be
불가리아어български불가리아어bg
벵골어বাংলা벵골어bn
티베트어བོད་ཡིག티베트어bo
브르타뉴어brezhoneg브르타뉴어br
보스니아어bosanski보스니아어/босанскиbs-Cyrlbs
카탈루냐어català카탈루냐어ca
중앙 쿠르드어کوردیی ناوەندیckbckb
코르시카어Corsu코르시카어co
체코어čeština체코어cs
웨일스어Cymraeg웨일스어cy
덴마크어dansk덴마크어da
독일어Deutsch독일어de
저지 소르브어dolnoserbšćinadsbdsb
디베히어ދިވެހިބަސް디베히어dv
그리스어Ελληνικά그리스어el
영어Englishen
스페인어español스페인어es
에스토니아어eesti에스토니아어et
바스크어euskara바스크어eu
페르시아어فارسى페르시아어fa
핀란드어suomi핀란드어fi
필리피노어Filipino필리핀어fil
페로어føroyskt페로어fo
프랑스어français프랑스어fr
프리지아어Frysk서프리슬란트어fy
아일랜드어Gaeilge아일랜드어ga
스코틀랜드 게일어Gàidhlig스코틀랜드 게일어gd
길버트어Taetae ni Kiribatigil
갈리시아어galego갈리시아어gl
스위스 독일어Schweizerdeutschgswgsw
구자라트어ગુજરાતી구자라트어gu
하우사어Hausa하우사어ha
히브리어עברית히브리어he
힌디어हिंदी힌디어hi
크로아티아어hrvatski크로아티아어hr
세르보크로아티아어srpskohrvatski세르보크로아트어
српскохрватскиsh-Cyrl
hrv
상 소르브어hornjoserbšćinahsbhsb
헝가리어magyar헝가리어hu
아르메니아어Հայերեն아르메니아어hy
인도네시아어Bahasa Indonesia인도네시아어id
이그보어Igbo이그보어ig
이족어ꆈꌠꁱꂷ쓰촨 이어ii
아이슬란드어íslenska아이슬란드어is
이탈리아어italiano이탈리아어it
이누이트어Inuktitut이누크티투트어
ᐃᓄᒃᑎᑐᑦ이누크티투트어 (ᑲᓇᑕ이누크티투트어)
iu
일본어日本語일본어ja
조지아어ქართული조지아어ka
카자흐어Қазақша카자흐어kk
그린란드어kalaallisut그린란드어kl
크메르어ខ្មែរ크메르어km
칸나다어ಕನ್ನಡ칸나다어kn
한국어한국어한국어ko
콘칸어कोंकणी콩칸어kok
쿠르드어Kurdîku-Latn/کوردیku-Arabku
키르기스어Кыргыз키르기스어ky
룩셈부르크어Lëtzebuergesch룩셈부르크어lb
라오어ລາວ라오어lo
리투아니아어lietuvių리투아니아어lt
라트비아어latviešu라트비아어lv
마오리어Reo Māori마오리어mi
마케도니아어македонски јазик마케도니아어mk
말라얄람어മലയാളം말라얄람어ml
몽골어Монгол хэл몽골어
ᠮᠤᠨᠭᠭᠤᠯ ᠬᠡᠯᠡmn-Mong
mn
모호크어Kanien'kéhamohmoh
마라티어मराठी마라티어mr
말레이어Bahasa Malaysia말레이어ms
몰타어Malti몰타어mt
미얀마어မြန်မာဘာသာ미얀마어my
노르웨이어(부크몰)norsk (bokmål)노르웨이어(보크몰)nb
네팔어नेपाली (नेपाल)네팔어ne
네덜란드어Nederlands네덜란드어nl
노르웨이어(뉘노르스크)norsk (nynorsk)노르웨이어(뉘노르스크)nn
노르웨이어norsk노르웨이어no
오크어occitan오크어oc
오리야어ଓଡ଼ିଆ오리야어or
파피아멘토어Papiamentupappap
펀자브어ਪੰਜਾਬੀ펀자브어 / پنجابیpnbpa
폴란드어polski폴란드어pl
다리어درىprsprs
파슈토어پښتو파슈토어ps
포르투갈어português포르투갈어pt
키체어K'ichequcquc
케추아어runasimi케추아어qu
로만슈어Rumantsch로만슈어rm
루마니아어română루마니아어ro
러시아어русский러시아어ru
키냐르완다어Kinyarwanda르완다어rw
산스크리트어संस्कृत산스크리트어sa
사하어сахаsahsah
사미어(북부)davvisámegiella북부 사미어se
신할라어සිංහල신할라어si
슬로바키아어slovenčina슬로바키아어sk
슬로베니아어slovenski슬로베니아어sl
사미어(남부)åarjelsaemiengielesmasma
사미어(룰레)julevusámegiellasmjsmj
사미어(이나리)sämikielâsmnsmn
사미어(콜트)sääʹmǩiõllsmssms
알바니아어shqip알바니아어sq
세르비아어srpski세르비아어/српски세르비아어sr
세소토어Sesotho소토어st
스웨덴어svenska스웨덴어sv
스와힐리어Kiswahili스와힐리어sw
시리아어ܣܘܪܝܝܐsycsyc
타밀어தமிழ்타밀어ta
텔루구어తెలుగు텔루구어te
타지크어Тоҷикӣ타지크어tg
태국어ไทย태국어th
투르크멘어türkmençe투르크멘어tk
츠와나어Setswana츠와나어tn
튀르키예어Türkçe튀르키예어tr
타타르어Татарча타타르어tt
타마지트어Tamazighttzmtzm
위구르어ئۇيغۇرچە위구르어ug
우크라이나어українська우크라이나어uk
우르두어اُردو우르두어ur
우즈베크어Uzbek우즈베크어/Ўзбек우즈베크어uz
베트남어Tiếng Việt베트남어vi
왈로프어Wolof월로프어wo
코사어isiXhosa코사어xh
요루바어Yoruba요루바어yo
중국어中文zh-Hanizh
줄루어isiZulu줄루어zu


이 표는 전체 언어 하위 태그의 일부(약 2%)만 나타내며, 전체 정보는 언어 하위 태그 레지스트리를 직접 참조해야 한다.

4.2. 복잡한 언어 태그

다음은 BCP47에서 발췌한 내용이다.

* language영어 하위 태그만:
* de영어
* ja영어
* i-enochian영어
* language영어-script영어:
* zh-Hant영어
* zh-Hans영어
* sr-Cyrl영어
* sr-Latn영어
* language영어-script영어-region영어:
* zh-Hans-CN영어
* sr-Latn-CS영어
* language영어-variant영어:
* sl-nedis영어
* language영어-region영어-variant영어:
* de-CH-1901영어
* sl-IT-nedis영어
* language영어-script영어-region영어-variant영어:
* sl-Latn-IT-nedis영어
* language영어-region영어
* en-US영어
* es-419영어

5. 다른 표준과의 관계

IETF 언어 태그는 ISO나 UN의 표준을 일부 따르지만, 완전히 종속되지는 않는다. 시간이 지나면서 언어 태그의 의미가 변할 수 있기 때문이다.

ISO 639, ISO 15924, ISO 3166, UN M49에서 코드가 삭제되더라도, 이미 할당된 IETF 언어 하위 태그는 유효하게 유지된다. 심지어 해당 표준에서 코드가 다른 의미로 재사용되더라도, IETF 언어 하위 태그는 원래 의미를 유지한다. 이러한 안정성은 RFC 4646에서 도입되었다.

5.1. ISO 639

ISO 639는 언어 코드에 대한 국제 표준이다. BCP 47은 ISO 639-1 (2자 코드), ISO 639-2 (3자 코드), ISO 639-3 (3자 코드), 그리고 ISO 639-5 (언어 집합 코드)를 사용한다.

RFC 5645와 RFC 5646은 이미 레지스트리에 존재하지 않는 모든 언어에 대해 ISO 639-3 코드에 해당하는 기본 언어 하위 태그를 추가하였다. 또한, 특정 매크로 언어에 포함된 언어에 대한 코드는 확장 언어 하위 태그로 등록되었다.

ISO 639-5는 ISO 639-2에서 처음 인코딩된 방식과 다른 방식으로 알파-3 코드를 사용하여 언어 컬렉션을 정의한다. 특히, 언어 컬렉션은 이제 모두 ISO 639-5에서 배타적이지 않고 포괄적으로 정의된다.

BCP 47은 언어 컬렉션에 대한 하위 태그를 식별하기 위해 "범위" 속성을 정의한다. 그러나 어떤 컬렉션도 포괄적 또는 배타적으로 정의하지 않으며, ISO 639-5 그룹화 유형 속성을 사용하지 않는다.

반대로, ISO 639-3과 언어 하위 태그 레지스트리 모두에서 개별 언어의 매크로 언어 내 분류가 표준화되어 있다.

5.2. ISO 15924

ISO 15924는 문자 체계 코드에 대한 국제 표준이다. BCP 47은 ISO 15924의 4자 코드를 문자 체계 하위 태그로 사용한다.

문자 체계 하위 태그는 RFC 4646이 발표되었을 때 처음 언어 하위 태그 레지스트리에 추가되었으며, 이는 ISO 15924에 정의된 코드 목록에서 가져온 것이다. 문자 체계 하위 태그는 기본 및 확장 언어 하위 태그 뒤에, 그리고 지역 및 변형 하위 태그를 포함한 다른 유형의 하위 태그 앞에 언어 태그에 인코딩된다.

일부 기본 언어 하위 태그는 "Suppress-Script"라는 속성으로 정의되어 있는데, 이는 다른 스크립트로 작성될 수 있더라도 일반적으로 해당 언어에 대해 단일 스크립트가 기본적으로 가정될 수 있는 경우를 나타낸다. 이 경우, 성공적인 일치 가능성을 높이기 위해 스크립트 하위 태그를 생략하는 것이 좋다. 필요한 경우 다른 스크립트 하위 태그를 추가하여 구별할 수 있다. 예를 들어, 이디시어의 경우 히브리 문자 하위 태그가 가정되므로 대부분의 상황에서 yi-Hebr보다 yi가 선호된다.

ISO 15924에는 유니코드 및 ISO/IEC 10646 내에서 통합된 스크립트 변형에 대한 일부 코드(예: 중국어 간체 및 번체에 대한 HansHant)가 포함되어 있다. 이러한 스크립트 변형은 주로 서지 목적으로 인코딩되지만 언어학적 관점에서는 항상 중요하지는 않다(예: 유니코드 및 ISO/IEC 10646에서 일반 라틴 문자로 주로 인코딩되는 라틴 스크립트의 프락투어 및 게일 변형에 대한 LatfLatg 스크립트 코드). 때때로 언어 태그에서 문자의 다른 분석, 발음 구별 기호 및 이중/삼중 자음 클러스터(digraphs/trigraphs) 또는 대소문자 규칙의 차이와 함께, 철자법 또는 의미론적 차이를 드러내는 데 유용할 수 있다.

5.3. ISO 3166

ISO 3166-1에서 할당되거나 "예외적으로 예약된" 코드에 기반한 두 글자 지역 하위 태그가 사용된다. ISO 3166 유지 관리 기관이 이전에 다른 국가에 할당되었던 코드를 재할당하는 경우, 해당 코드에 해당하는 기존 BCP 47 하위 태그는 그 의미를 유지하고, 새로운 국가에 대한 UN M.49를 기반으로 하는 새로운 지역 하위 태그가 등록된다. UN M.49는 남아메리카의 `005`와 같은 지리적 지역에 대한 숫자 지역 하위 태그의 소스이기도 하다. 경제 지역에 대한 UN M.49 코드는 허용되지 않는다.

지역 하위 태그는 특정 지역에서 사용되는 언어의 변형을 지정하는 데 사용된다. 이는 변형이 본질적으로 지역적이며, 영국 영어 (en-GB)와 미국 영어 (en-US)를 구별하는 경우와 같이 관련된 국가를 식별하여 적절하게 포착할 수 있을 때 적합하다. 차이점이 간체와 번체와 같은 스크립트 또는 스크립트 변형인 경우, 지역 하위 태그 대신 스크립트 하위 태그로 표현해야 한다. 이 예에서 zh-CN/zh-SG/zh-MYzh-TW/zh-HK/zh-MO 대신 zh-Hanszh-Hant를 사용해야 한다.

지역적 변형으로 간주될 수 있는 언어에 대해 별도의 언어 하위 태그가 존재하는 경우, 언어-지역 조합 대신 더 구체적인 하위 태그를 사용하는 것이 더 좋다. 예를 들어, ar-DZ (아랍어 알제리)는 알제리 구어 아랍어arq로 더 잘 표현될 수 있다.

5.4. UN M.49

UN에서 사용하는 통계용 지역 코드이다. BCP 47은 UN M.49의 3자리 숫자 코드를 지역 하위 태그로 사용한다. 경제 지역에 대한 UN M.49 코드는 허용되지 않는다.

UN M.49는 남아메리카의 `005`와 같은 지리적 지역에 대한 숫자 지역 하위 태그의 소스이기도 하다.

6. 확장

확장 하위 태그('확장된 언어 하위 태그'와 혼동하지 않도록 주의)는 언어 식별에 필수적인 것은 아니지만, 언어 태그에 추가 정보를 제공한다. 확장의 한 가지 용도는 달력, 통화 등 로케일 정보를 담는 것이다.

확장 하위 태그는 '싱글톤'이라는 단일 문자(x 제외)로 시작해 하이픈으로 구분된 여러 문자열로 구성된다. 각 확장은 해당 확장의 데이터를 관리하는 등록 기관을 나타내는 자체 IETF RFC 문서에 설명되어 있다. IANA가 싱글톤 할당을 담당한다.

2014년 1월 기준으로 두 가지 확장이 할당되었다.

6.1. 확장 T (Transformed Content)

확장 T는 언어 태그에 태그된 데이터가 음역, 전사 등 어떤 방식으로 변환되었는지에 대한 정보를 추가할 수 있게 한다. 예를 들어, 'en-t-jp' 태그는 일본어에서 영어로 번역된 콘텐츠를 나타낸다. 번역이 기계적으로 수행되었는지, 아니면 공개된 표준에 따라 수행되었는지를 나타내는 추가 하위 문자열이 사용될 수 있다.

확장 T는 2012년 2월에 발행된 정보 RFC 6497에 설명되어 있다. 등록 기관은 유니코드 컨소시엄이다.

6.2. 확장 U (Unicode Locale)

RFC 6067에 정의되어 있으며, 공통 로케일 데이터 저장소(CLDR)의 로케일 속성을 포함한다. 국가, 달력, 시간대, 정렬 순서, 통화, 숫자 체계 등 다양한 정보를 포함할 수 있다.

몇 가지 예시는 다음과 같다.
* gsw-u-sd-chzhgsw
* ar-u-nu-latn아랍어
* he-IL-u-ca-hebrew-tz-jeruslm히브리어

예를 들어, `ko-KR-u-ca-gregory`는 대한민국에서 사용되는 한국어로, 그레고리력을 사용함을 나타낸다.