W3C의 Internationalization Core Working Group에서 Internationalization Best Practices: Specifying Language in XHTML & HTML Content라는 제목의 문서를 새로 갱신해서 올려놓았다.
이 문서는 HTML 문서 내용을 다루는 저자나 프로그램 개발자들에게 세계 각국 언어에 맞는 현지화를 위한 일종의 안내서로서 사용될 수 있도록 관련 권고 사항들을 전해주고 있다.
문서 내용을 요약을 하면 먼저 HTML 문서에 사용 언어를 선언할 때 주의할 사항으로 character encoding과 글이 읽혀지는 방향(direction of text)을 언어 선언과 혼동해서 쓰지 말라고 경고하고 있다. Character encoding 값과 사용 언어는 일 대 일로 바로 적용될 수가 없는데, 그 이유로 어떤 하나의 인코딩 값이 여러 다양한 언어를 대표할 수도 있기 때문이다. 글이 읽히는 방향도 한 언어 안에서 문서 내의 문맥에 따라 서로 다른 방향으로 읽히고 해석되어야 할 필요가 생길 수도 있고, 대표 언어를 선언하는 것 만으로는 이런 상황을 제대로 표현해 줄 수가 없게 된다.
위 문서에는 웹 브라우저나 화면 해독기와 같은 user agents가 문서에 쓰여진 언어를 올바로 해석할 수 있도록 하기 위해 (X)HTML 문서 안에 사용 언어를 선언해 주는 대표적 방법들을 다음과 같이 소개하고 있다.
첫 번째 방법으로는 XHTML 요소에 lang과 xml:lang 속성을 사용하는 방법으로, 문서 전체의 언어를 지정할 경우 html 태그에 정의해 준다. 물론 문서 안에 포함되어 있는 특정 요소에 다른 언어가 사용되었을 경우에는 해당 요소에 따로 적당한 언어 속성을 지정해 줄 수도 있다.
보기 1: text/html mime type으로 전달되는 XHTML 1.0 문서 안에 언어 속성을 사용해서 선언해 준 예.
<html lang="ko" xml:lang="ko" xmlns= "http://www.w3.org/1999/xhtml">
여기서 주의할 것은, HTML일 경우 lang 속성만 사용되며, XML로 전달되는 XHTML의 경우에는 xml:lang 속성만 사용한다.
두 번째 방법은 아래처럼 meta 요소의 http-equiv를 Content-Language로 지정해 주는 방법이 있다.
보기 2: meta 요소의 Content-Language 선언.
<meta http-equiv="Content-Language" content="ko" />
여기서 문서에 사용된 언어와 의도된 독자의 사용 언어가 여럿일 경우 각 언어를 모두 나열해 줄 수도 있지만, 문서의 언어 해석을 위한 용도로는 적절치 않거니와 아직까지 이 곳에 지정되어 있는 정보의 이용 상황은 극히 낮은 수준이다.
마지막으로, 언어 해석 정보는 문서와 함께 전달되는 HTTP header에서도 얻을 수 있는데, 이것도 대부분의 웹 브라우저들은 문서의 올바른 언어 해석을 위해서 이 곳의 정보를 참고하지는 않고 있다.
결과적으로, 지금까지는 첫 번째로 소개된 html 언어 속성을 이용한 방법이 HTML 문서의 언어 해석을 위해 가장 일관성있고 효과적인 방법이라 할 수 있다.
추가 참고 문서: W3C I18N FAQ: Why use the language attribute?