JavaScript for detecting browser language (브라우저 언어 추출)

현재 브라우저 언어 설정값을 가져오는 방법에는 IE와 비IE(파폭, 크롬 등등)의 차이가 있습니다.
IE의 navigator객체에는 systemLanguage, userLanguage, browserLanguage 가 있어 마치 브라우저 언어를 보여줄 것 같지만,
전혀 그렇지 않아 사람을 혼란에 빠트리죠.

혼란을 주는 IE전용 속성

  • navigator.userLanguage OS의 제어판 – 국가 및 언어 – 입력언어를 나타낸다.
  • navigator.browserLanguage, navigator.systemLanguage OS의 제어판 – 국가 및 언어 – 표시언어의 반환한다.(browserLanguage와 systemLanguage의 차이는 발견하지 못했다.)
  • 모두 OS 언어 설정과 연관되어있다
$(function(){
  /*
   * 비 IE에서는 navigator.language 로 브라우저 현재 설정된 언어를 쉽게 알 수 있으나,
   * IE에서는 브라우저에 설정된 언어를 알 수 있는 navigator.language 속성이 없기때문에,
   * HTTP 응답 헤더값을 알아와야 하는 별도 처리가 슬프게도 필요 합니다.
   */
  var language;
  if (navigator.language) {
    // 비 IE에서 작동
    language = navigator.language
  } else {
    // IE에서 작동
    $.ajax({
      url: "http://ajaxhttpheaders.appspot.com",
      dataType: 'jsonp',
      success: function(headers) {
        language = headers['Accept-Language'];
        alert(language) // 요청 헤더에서 추출한 사용자 브라우저의 언어를 열거합니다.
      }
    });
  }
});