IETF 언어 태그

IETF language tag

IETF BCP 47 언어 태그HTTP,[1] HTML,[2] XML[3], PNG와 같은 컴퓨팅 표준에 의해 사용되는 인터넷 프로그래밍에서 인간 언어를 식별하는 데 사용되는 표준화된 코드 또는 태그다.[4] 태그 구조는 Best Current Practice(BCP) 47의 IETF(Internet Engineering Task Force)에 의해 표준화되었으며, 하위 태그는 IANA Language Subtag Registry에 의해 유지된다.[5][6][7] 국가, 지역 또는 쓰기 시스템의 언어 변형을 구별하기 위해 IETF 언어 태그는 ISO 639, ISO 15924, ISO 3166-1UN M.49와 같은 다른 표준과의 하위 태그를 결합한다.

특히 태그영어, es-419중남미 스페인어, rm-sursilvanrm-sd-chzh, 취리히 독일어gsw-u-sd-chzh, 민난(民南) 중국어는 전통적한자를 사용하여 대만에서 사용되는 난-한-TW를 의미한다.[why?]

역사

IETF 언어 태그는 1995년 3월에 발행된 Harald Tveit Alvestrand에 의해 편집된 RFC 1766에서 처음 정의되었다. 태그는 ISO 639 2글자 언어 코드와 ISO 3166 2글자 국가 코드를 사용했으며 3~8글자의 변형 또는 스크립트 하위 태그를 포함하는 전체 태그 등록을 허용했다.

2001년 1월, RFC 3066에 의해 업데이트되었는데, 이 코드에는 ISO 639-2 3글자 코드, 숫자로 허용된 하위 태그가 추가되었고, 언어 태그의 일치를 돕기 위해 HTTP/1.1부터 언어 범위의 개념을 채택하였다.

사양서의 다음 개정은 2006년 9월에 Addison Philips와 Mark Davis 및 RFC 4647(일치 행동을 다루는)이 편집한 RFC 4646(사양서의 주요 부분)의 발행과 함께 이루어졌다. RFC 4646은 언어 태그에 보다 구조화된 형식을 도입하였고, ISO 15924 4글자 스크립트 코드와 UN M.49 3자리 지리적 지역 코드의 사용을 추가하였으며, 태그의 이전 레지스트리를 새로운 하위 태그의 레지스트리로 대체하였다. RFC 3066과의 호환성을 유지하기 위해 새로운 구조에 부합하지 않는 소수의 이전에 정의된 태그가 확장되었다.

규격의 현재 버전인 RFC 5646은 2009년 9월에 발표되었다. 이 개정의 주된 목적은 ISO 639와 BCP 47 간의 상호운용성을 높이기 위해 ISO 639-3639-5의 3글자 코드를 언어 하위 태그 레지스트리에 통합하는 것이었다.[8]

언어 태그 구문

각 언어 태그는 하이픈(-)으로 구분된 하나 이상의 "하위 태그"로 구성된다. 각 하위 태그는 기본 라틴 문자 또는 숫자만으로 구성된다.

개인용 언어 태그가 x 접두사 및 그랜드파테르 언어 태그(i 접두사로 시작하는 태그와 이전 언어 태그 레지스트리에 등록된 태그 포함)로 시작하는 경우를 제외하고, 하위 태그는 다음과 같은 순서로 발생한다.

  • ISO 639-1(2002)의 2글자 언어 코드 또는 ISO 639-2(1998), ISO 639-3(2007) 또는 ISO 639-5(2008)의 3글자 코드에 기초한 단일 1차 언어 하위 태그 또는 BCP 47 프로세스를 통해 등록되고 5~8글자로 구성됨
  • 하이픈으로 구분된 각각 3개의 문자로 구성된 최대 3개의 선택적 확장 언어 하위 태그. (현재 동등하고 선호하는 기본 언어 하위 태그 없이 언어 하위 태그 레지스트리에 등록된 확장 언어 하위 태그는 없다. 언어 태그의 이 구성요소는 역호환성을 위해 보존되며 ISO 639의 향후 부분을 위해 보존된다.)
  • ISO 15924의 4글자 스크립트 코드에 기반한 선택적 스크립트 하위 태그(일반적으로 제목 케이스에 기록됨)
  • ISO 3166-1 알파-2의 2자리 국가 코드(일반적으로 대문자로 작성됨) 또는 UN M.49의 3자리 지역 코드(지리적 지역)에 기초한 선택적 지역 하위 태그
  • 하이픈으로 구분되는 옵션 변종 하위 태그는 각각 5-8자 또는 숫자로 시작하는 4자로 구성된다. (변종 하위 태그는 IANA에 등록되고 외부 표준과 연관되지 않음)
  • 하이픈으로 구분된 옵션 확장 하위 태그(문자 x를 제외하고 각각 단일 문자로 구성됨)와 하이픈으로 구분된 각 2~8자 이상의 하위 태그가 하이픈으로 구분됨.
  • x와 하이픈으로 구성된 선택적 개인 사용 하위 태그와 하이픈으로 구분된 1~8자 하위 태그.

하위 태그는 대소문자를 구분하지 않지만, 규격은 언어 하위 태그 레지스트리에서와 동일한 대소문자를 사용할 것을 권장한다. 여기서 지역 하위 태그는 UPERCASE이고, 스크립트 하위 태그는 Title Case이며, 다른 모든 하위 태그는 소문자임. 이 자본화는 기본 ISO 표준의 권고를 따른다.

선택적 스크립트 및 영역 하위 태그는 언어 태그에 구별되는 정보를 추가하지 않을 때 생략하는 것이 선호된다. 예를 들어, es-Latn보다 스페인어가 라틴어 문자로 충분히 쓰여질 것으로 예상되기 때문에 es가 더 선호되고, ja-JP보다는 ja가 더 선호되며, 일본에서 사용되는 일본어가 다른 곳에서 사용되는 것과 현저하게 다르지 않기 때문이다.

모든 언어 영역이 유효한 지역 하위 언어로 표현될 수 있는 것은 아니다: 일차 언어의 하위 국가 지역 방언은 변종 하위 언어로 등록된다. 예를 들어 카탈로니아발렌시아어 방언에 대한 발렌시아 변종 하위 태그는 접두사 ca로 언어 하위 태그 레지스트리에 등록되어 있다. 이 방언은 스페인에서 거의 독점적으로 사용되기 때문에 일반적으로 지역 하위 태그 ES를 생략할 수 있다.

IETF 언어 태그는 많은 응용 프로그램에서 로케일 식별자로 사용되어 왔다. RFC 4647에 기술된 전략이 적절하지 않은 경우, 이러한 애플리케이션은 로케일을 정의, 인코딩 및 일치시키기 위한 자체 전략을 수립해야 할 수 있다.

IETF 언어 태그의 사용, 해석 및 매칭은 현재 RFC 5646과 RFC 4647에 정의되어 있다. 언어 하위 태그 레지스트리는 현재 유효한 모든 공개 하위 태그를 나열한다. 개인 사용 하위 태그는 구현에 의존하고 있으며 이를 사용하는 제3자 사이의 개인 동의가 적용되기 때문에 등록부에 포함되지 않는다. 이러한 민간계약은 BCP 47의 적용범위에서 벗어나 있다.

기타표준과의 관계

일부 유형의 하위 태그는 ISO 또는 UN 핵심 표준에서 파생되지만, 시간이 지남에 따라 언어 태그의 의미가 변경될 수 있기 때문에 이러한 표준을 절대적으로 준수하지는 않는다. 특히, ISO 639, ISO 15924, ISO 3166 또는 UN M.49가 할당한 코드에서 파생된 하위 태그는 해당 핵심 표준에서 코드를 철회하더라도 유효(소모되기는 하지만) 하위 태그로 남아 있다. 이 표준이 나중에 철회된 코드에 새로운 의미를 부여한다면 해당 하위 태그는 여전히 이전 의미를 유지할 것이다.

이 안정성은 RFC 4646에서 도입되었다.

ISO 639-3 및 ISO 639-1

RFC 4646은 "확장 언어 하위 태그"(때로는 extlang이라고도 함)의 개념을 정의했지만, 당시에는 그러한 하위 태그가 등록되지 않았다.[9][failed verification][10][failed verification]

RFC 5645 및 RFC 5646은 레지스트리에 존재하지 않는 모든 언어에 대해 ISO 639-3 코드에 해당하는 1차 언어 하위 태그를 추가했다. 또한, 특정 언어에 포함되는 언어의 코드는 확장 언어 하위 태그로 등록되었다. 수화는 또한 extlang으로 등록되었고 접두사 sgn이 붙었다. 이러한 언어는 포함된 언어만을 위한 하위 태그(중국어의 경우 cmn) 또는 언어-extlang 조합(zh-cmn)으로 나타낼 수 있다. 첫 번째 옵션은 대부분의 용도로 선호된다. 두 번째 옵션은 "extlang form"이라고 불리며 RFC 5646에서는 새로운 것이다.

RFC 4646 이전에 등록되어 현재 "그랜더파더링" 또는 "중복"으로 분류되는 전체 태그는 (새 구문에 적합한지 여부에 따라) 해당 ISO 639-3 기반 언어 하위 태그가 존재하는 경우 해당 태그가 있는 경우 이를 위해 사용되지 않는다. 몇 가지 예를 들면, 민난 중국어에서는 zh-min-nan보다 nan이, 하카 중국어에서는 i-hakazh-hakka가, 미국 수화에서는 sgn-US보다 ase가 더 선호된다.

ISO 639-5 및 ISO 639-2

ISO 639-5는 알파-3 코드가 있는 언어 컬렉션을 ISO 639-2(ISO 639-1에 이미 존재하는 하나의 코드를 포함)로 인코딩한 것과 다른 방식으로 정의한다. 구체적으로, 언어 모음은 현재 ISO 639-5에서 일부 언어 모음이 독점적으로 정의되기 보다는 모두 포괄적으로 정의된다. 즉, ISO 639-2 내에서 이미 별도로 인코딩된 언어를 포함할 수 있는 경우에 있어서 언어 모음의 범위가 이전보다 넓어졌다는 것을 의미한다.

예를 들어, ISO 639-2 코드 afa는 이미 고유 코드가 있는 아랍어 등의 언어를 제외한 "아프로 아시아어(기타)"라는 명칭과 이전에 연관되어 있었다. ISO 639-5에서 이 모음은 "아프리카어"로 명명되며 이러한 모든 언어를 포함한다. ISO 639-2는 2009년에 포괄적인 ISO 639-5 명칭과 일치하도록 전용 명칭을 변경하였다.[11]

이러한 컬렉션의 이전(배타적) 정의에 여전히 의존할 수 있는 구현 중단을 방지하기 위해 ISO 639-5는 이미 ISO 639-2로 인코딩된 모든 컬렉션에 대한 그룹화 유형 속성을 정의한다(이러한 그룹화 유형은 ISO 639-5에만 추가된 새로운 컬렉션에 대해서만 정의되지 않음).

BCP 47은 언어 컬렉션의 하위 태그를 식별하기 위한 "범위" 속성을 정의한다. 그러나 이러한 하위 태그에 대한 언어 하위 태그 레지스트리의 설명 필드가 ISO 639-5(포함) 이름과 일치하지만, 주어진 컬렉션을 포함 또는 배타적으로 정의하지 않으며 ISO 639-5 그룹화 유형 속성을 사용하지 않는다. 따라서 수집에 대한 주요 언어 하위 태그를 포함하는 BCP 47 언어 태그는 수집이 포함되도록 의도된 것인지 아니면 배타적으로 의도된 것인지 모호할 수 있다.

ISO 639-5는 어떤 언어가 이러한 컬렉션의 멤버인지 정확하게 정의하지 않으며, 이러한 컬렉션의 포괄적인 정의를 사용하여 컬렉션의 계층적 분류만 정의된다. 이 때문에 RFC 5646은 "다중 언어"와 "결정되지 않음"과 같이 의미가 훨씬 덜 구체적인 하위 태그보다 여전히 선호되고 있지만, 대부분의 애플리케이션에서 언어 컬렉션에 하위 태그의 사용을 권장하지 않는다.

대조적으로, 그들의 언어 내의 개별 언어의 분류는 ISO 639-3와 언어 하위 태그 레지스트리에서 표준화된다.

ISO 15924, ISO/IEC 10646 및 유니코드

스크립트 하위 태그는 RFC 4646이 발행되었을 때 ISO 15924에 정의된 코드 목록에서 처음으로 언어 하위 태그 레지스트리에 추가되었다. 1차 및 확장 언어 하위 태그 뒤에 언어 태그로 인코딩되지만 지역 및 변형 하위 태그를 포함한 다른 유형의 하위 태그 앞에 암호화된다.

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

또 다른 예로서 zh-Hans-SG는 지역 코드가 유의하지 않을 수 있기 때문에 zh-Hans와 동등한 것으로 간주될 수 있다; 싱가포르에서 사용되는 중국어의 서면 형태는 중국어가 쓰여진 다른 나라와 마찬가지로 간체된 한자를 사용한다. 그러나 스크립트 하위 태그는 유의미하기 때문에 유지된다.

ISO 15924에는 유니코드ISO/IEC 10646 내에서 통일된 스크립트 변형(예: 중국어 간체 및 전통 형식의 한스한트)에 대한 일부 코드가 포함되어 있다는 점에 유의하십시오. 이러한 스크립트 변형은 대부분 서지학 목적으로 인코딩되는 경우가 많으나 언어적 관점에서 항상 중요한 것은 아니다(예: 라틴 스크립트의 프락투르 및 게일어 변형에 대한 라트프라트그 스크립트 코드, 대부분이 유니코드와 ISO/IEC 10646에서 일반 라틴 문자로 인코딩됨). 문자, 분음 부호 및 디그그래프/트리그래프의 분석이 다르거나 문자 케이싱 규칙의 차이가 있는 경우, 그것들은 때때로 활자 또는 의미적 차이를 노출하기 위해 언어 태그에 유용할 수 있다.

ISO 3166-1 및 UN M.49

2글자 영역 하위 태그는 ISO 3166-1에서 할당된 코드 또는 "예외적으로 예약된" 코드를 기반으로 한다. ISO 3166 정비국이 이전에 다른 국가에 할당되었던 코드를 재할당할 경우, 그 코드에 해당하는 기존 BCP 47 하위 태그는 그 의미를 유지할 것이고, UN M.49에 기초한 새로운 지역 하위 태그가 새로운 국가에 등록될 것이다. UN M.49는 또한 다음과 같은 지리적 지역에 대한 숫자 지역 하위 태그의 출처다. 005 남미의 경제 지역에 대한 유엔 M.49 코드는 허용되지 않는다.

지역 하위 태그는 특정 지역에서 사용되는 언어의 다양성을 지정하는 데 사용된다. 그들은 다양성이 본질적으로 지역적일 때 적합하며, 영국 영어(en-GB)와 미국 영어(en-US)를 구별할 때처럼 관련 국가를 식별하여 적절하게 포착할 수 있다. 차이점이 스크립트 또는 스크립트 다양성 중 하나일 때, 단순화전통적인 한자에 대해서는 지역 하위 태그 대신 스크립트 하위 태그로 표현해야 한다. 이 예에서는 zh-CN과 zh-HK 대신 zh-Hanszh-Hant를 사용해야 한다.

지역적 다양성으로 간주될 수 있는 언어에 대해 구별되는 언어 하위 태그가 존재할 경우, 종종 언어-지역 조합 대신 보다 구체적인 하위 태그를 사용하는 것이 바람직하다. 예를 들어, ar-DZ(알제리에서 사용되는 아라빅)는 알제리 구어 아랍어의 경우 arq로 더 잘 표현될 수 있다.

확장

확장 하위 태그(확장 언어 하위 태그와 혼동되지 않음)는 언어를 식별하는 데 반드시 도움이 되지 않는 언어 태그에 추가 정보를 첨부할 수 있도록 한다. 확장에 대한 한 가지 용도는 캘린더 및 통화와 같은 로케일 정보를 인코딩하는 것이다.

확장 하위 태그는 싱글톤이라고 하는 단일 문자(x 이외의 문자)로 시작하는 여러 개의 하이픈으로 구분된 문자 문자열로 구성된다. 각 확장자는 자체 IETF RFC에 설명되어 있으며, 이는 해당 확장에 대한 데이터를 관리하기 위한 등록 기관을 식별한다. IANA는 단골격 배분을 담당한다.

2014년 1월 현재 2개의 연장이 배정되었다.

확장명 T(변환된 내용)

확장자 T는 태그된 데이터가 어떻게 번역, 변환되었는지에 대한 정보를 언어 태그에 포함시킬 수 있도록 한다. 예를 들어, en-t-jp 태그는 원래 일본어에서 번역된 영어로 된 내용에 사용될 수 있다. 추가 하위 문자열은 번역이 기계적으로 이루어졌거나 발표된 표준에 따라 이루어졌음을 나타낼 수 있다.

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

확장 U(유니코드 로케일)

확장 U는 CLDR(Common Locale Data Repository)에서 발견된 다양한 로케일 속성을 언어 태그에 포함시킬 수 있도록 허용한다. 이러한 속성에는 국가 세분화, 캘린더 및 시간대 데이터, 데이터 정렬 순서, 통화, 숫자 시스템 및 키보드 식별이 포함된다.

일부 예는 다음과 같다.

확장 U는 2010년 12월에 발행된 RFC 6067에 설명되어 있다. 등록 권한은 유니코드 컨소시엄이다.

참고 항목

참조

  1. ^ Fielding, Roy T.; Reschke, Julian F., eds. (June 2014). "Language Tags". Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content. sec. 3.1.3.1. doi:10.17487/RFC7231. RFC 7231.
  2. ^ "Language information and text direction". w3.org. Retrieved 28 July 2015.
  3. ^ "Extensible Markup Language (XML) 1.0 (Fifth Edition)". w3.org. Retrieved 28 July 2015.
  4. ^ "Portable Network Graphics (PNG) Specification (Second Edition)". w3.org. Retrieved 28 July 2015.
  5. ^ "Language Subtag Registry". iana.org. Internet Assigned Numbers Authority. Retrieved 2018-12-05.
  6. ^ "Language Tag Extensions Registry". iana.org. Internet Assigned Numbers Authority. Retrieved 2018-12-06.
  7. ^ "IANA — Protocol Registries". iana.org. Retrieved 28 July 2015.
  8. ^ Language Tag Registry 업데이트 헌장 Wayback Machine에 2007-02-10 보관
  9. ^ Addison Phillips, Mark Davis (2008). "Tags for Identifying Languages (old draft for the revision of RFC 4646, now obsolete and may disappear soon)". IETF WG LTRU. Retrieved 2008-06-23.
  10. ^ Doug Ewell (2008). "Update to the Language Subtag Registry (old draft for the revision of RFC 4645, now obsolete and may disappear soon)" (1MB). IETF WG LTRU. Retrieved 2008-06-23.
  11. ^ "ISO 639-2 Language Code List - Codes for the representation of names of languages (Library of Congress)". loc.gov. Retrieved 28 July 2015.

외부 링크

  • BCP 47 언어 태그 – 현재 규격(RFC 5646 및 RFC 4647 두 개가 서로 다른 날짜에 별도로 발행되지만 단일 문서에 통합되어 있음)
    • (또한 이전의 정보 RFC 4645를 보완하는 관련 정보 RFC 5645와 이러한 BCP 47 개정 사이에 레지스트리에서 추가되거나 수정된 각 언어에 대해 다른 사용자가 별도로 발행한 기타 개별 등록 양식을 참조)
  • 언어 하위 태그 레지스트리 – IANA에서 유지 관리
  • 언어 하위 태그 레지스트리 검색 – 레지스트리에서 하위 태그 찾기 및 항목 보기
  • HTMLXML의 언어 태그 – W3C에서 사용
  • 언어 태그 - IETF 언어 태그 레지스트리 업데이트 작업 그룹의 언어 태그