[TIL] HTTP : The Definitive Guide "p384 ~ p394"

시윤·2026년 1월 17일

[TIL] Two Pages Per Day

목록 보기
149/153
post-thumbnail

Chapter 16. Internationalization

(해석 또는 이해가 잘못된 부분이 있다면 댓글로 편하게 알려주세요.)


✏️ 요약


Language Tags and HTTP

  • 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

The Content-Language Header

Content-Language: mi, en
  • 엔티티에 대한 타겟 사용자의 언어
  • 텍스트 문서에만 국한되지 않고 오디오, 영화, 응용 프로그램 등 임의의 미디어 타입에 사용 가능
  • 여러 국가의 사용자에게 전달되어야 하는 경우, 엔티티에 여러 언어가 사용된 경우 콤마로 구분한 리스트 전달 가능

The Accept-Language Header

Accept-Language: en, de-CH, de
  • 사용자가 선호하는 언어
  • 웹 서버가 서로 다른 언어로 된 리소스를 보유하고 있을 때 사용 가능
  • 클라이언트가 여러 언어를 호환할 수 있는 경우 콤마로 구분한 리스트 전달 가능

Subtags

  • 하이픈으로 구분된 태그 구분
  • 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 : 도메인 이름으로 국제 문자를 지원하지 않는다.

profile
틈틈이 두 페이지씩 원서 읽기

0개의 댓글