Chapter 16. Internationalization
(해석 또는 이해가 잘못된 부분이 있다면 댓글로 편하게 알려주세요.)
✏️ 요약
- Language Tags : 언어를 지칭하는 짧고 표준화된 문자열 (RFC 3066)
- (Ex) 영어(en), 한국어(ko), 독일어(de)
- 언어 태그는 지역에 따른 변형과 방언을 묘사할 수 있다
- (Ex) Brazilian Portuguese(pt-BR)
- Types of Language Tags
- General language classes
- Country-specific languages
- Dialects of languages
- Regional languages
- Standardized non variant languages
- Nonstandard languages
Content-Language: mi, en
- 엔티티에 대한 타겟 사용자의 언어
- 텍스트 문서에만 국한되지 않고 오디오, 영화, 응용 프로그램 등 임의의 미디어 타입에 사용 가능
- 여러 국가의 사용자에게 전달되어야 하는 경우, 엔티티에 여러 언어가 사용된 경우 콤마로 구분한 리스트 전달 가능
Accept-Language: en, de-CH, de
- 사용자가 선호하는 언어
- 웹 서버가 서로 다른 언어로 된 리소스를 보유하고 있을 때 사용 가능
- 클라이언트가 여러 언어를 호환할 수 있는 경우 콤마로 구분한 리스트 전달 가능

- 하이픈으로 구분된 태그 구분
- First Subtag : Primary Subtag -> IANA 표준화
- Primary Subtag는 A-Z 사이의 문자만 사용한다
- 그 밖의 Subtag는 숫자까지 포함하여 8글자 내로 표현한다
- Second Subtag(optional) -> IANA 표준화
- Trailing Subtags -> 비표준
- 대소문자 구분 없음
First Subtag: Namespace

- ISO 639에서 선택된 표준화된 언어 토큰 사용
- IANA에 등록된 이름을 식별하기 위해 ‘i’ 문자와 ‘x’ 문자가 붙기도 한다
- 문자가 2개면 ISO 639, 3개면 ISO 639-2에 정의된 언어 코드
Second Subtag: Namespace

- ISO 3166에서 선택된 표준화된 국가 토큰 사용
- 문자가 2개면 ISO 3166에 정의, 3-8개의 문자는 IANA에 등록되었을 것
- 문자 1개는 허용되지 않는다
Internationalized URIs
- URI는 US-ASCII 문자의 부분집합으로 표현된다

- Reserved : URI에서 특별한 의미를 가지고 있어 일반적으로 사용할 수 없는 문자
- Unreserved : 임의의 URI 컴포넌트에서 사용 가능한 문자
- Escape : 지원되지 않는 문자를 % 기호와 두 자리의 16진수로 표현한 것
- % 기호 뒤의 두 자리는 US-ASCII 문자의 코드
- HTTP 응용 프로그램이 URI를 전달할 때는 Escape를 그대로 두고, 데이터가 필요할 때만 디코딩해야 한다
- URI를 두 번 디코딩(Unescape)하지 않도록 주의해야 한다
- 아스키 문자 시퀀스를 다른 문자 집합의 문자로 표현하는 경우 주의가 필요하다 (표준화된 방식 X)
Other Considerations
-
Headers and Out-of-Spec Data : 클라이언트와 서버가 적절히 구현되지 않은 경우가 많아 US-ASCII 문자 집합을 벗어난 헤더가 전달될 수 있다. -> 헤더명이 아스키 범위를 벗어나지 않도록 주의
-
Dates : HTTP 명세에서는 GMT 포맷을 정의하고 있지만 모든 웹 서버와 클라이언트가 해당 포맷을 따르지 않는다. -> out-of-spec date에 가능한 한 오류가 발생하지 않게 해야 하고, 만약 파싱이 불가능하다면 보수적으로 해석한다
-
Domain Names : 도메인 이름으로 국제 문자를 지원하지 않는다.