"<fmt:bundle>"태그는 웹 브라우저의 언어(Locale) 설정을 인식하여 "basename"속성에 지정된 패키지의 프로퍼티 파일(properties)을 자동으로 읽습니다. 웹 브라우저의 언어 설정을 인식하는 방법은 웹 요청의 해더(Request Headers)에 포함되어 있는 "Accept-Language"을 분석하여 인식합니다.
크롬 웹 브라우저의 언어 설정을 확인해보겠습니다.
"한국어 -> 영어 -> 영어(미국)"순으로 되어 있습니다.
Locale로 하면 " ko or ko_KR -> en -> en_US"순일 겁니다.
크롬 웹 브라우저의 해더(Request Headers)를 확인해보겠습니다.
"Accept-Language"는 "ko,en;q=0.9,en-US;q=0.8,ko-KR;q=0.7"으로 되어있습니다.
"Accept-Language"는 언어코드 또는 언어코드-국가코드로 구성되어 ","(콤마)로 구분됩니다.
그리고 ";q="는 해당 언어 설정에 대한 우선순위입니다. ";q="가 생략되면 1을 의미합니다.
";q="가 1에 가까울수록 우선순위가 높습니다.
"ko,en;q=0.9,en-US;q=0.8,ko-KR;q=0.7"를 해석하면
우선순위 1위는 "ko;q=1", 2위는 "en;q=0.9", 3위는 "en-US;q=0.8", 4위는 "ko-KR;q=0.7" 입니다.
(우리 생각과 다르게 "ko-KR"이 2위가 아닙니다.)
이전에서 'test_html_kor.properties"를 만들고 "native2ascii.exe"를 이용하여 "test_html_ko.properties"를 생성하고 "test_html_en.properties"로 만들어 다국어 처리를 해보았습니다.
여기서, "test_html_ko.properties"의 이름을 "test_html.properties"로 언어권을 없애어서 다시 실행한다면 "<fmt:bundle>"태그는 어떤 언어권으로 처리할까요?
"test_html_ko.properties"를 "test_html.properties"로 변경했습니다.
"Servers"탭에서 "tomcat8"를 선택하고 "start"버튼(start the server)을 클릭합니다. 웹 브라우저에서 "http://localhost:8080/test2/test1.do"를 입력합니다.
이처럼, "Accept-Language"의 언어 우선순위에 따라 영어(en)인 "test_html_en.properties"로 처리되었습니다. 한글이(ko;q=1)이 없어 두 번째인 영어(en;q=0.9)가 선택된 겁니다.
국제화(다국어)를 처리하신다면 "_ko.properties"는 반드시 있어야 합니다.