다국어를 지원하는 사이트에서 사용자가 접속한 브라우저의 언어를 보여주는 기능을 추가하였습니다.
navigator.language 의 경우 브라우저에 설정 된 언어를 문자열로 반환해줍니다. 그리고 IE의 경우 navigator.userLanguage 를 사용해야 언어를 반환해줍니다.
navigator.language | navigator.userLanguage
그런데 특정 브라우저 혹은 동일한 크롬 브라우저에서 브라우저에서 설정한 언어가 아닌 다른 언어가 나오는 문제가 발생하였습니다.
원인을 알아보니 navigator.language 의 실행 결과가 'ko' 또는 'ko-KR' 두개의 결과가 나왔습니다.
특정 브라우저에서는 'ko-KR' 결과로 나온다는 것은 확인하였지만 동일한 크롬에서도 'ko-KR' 이 나오는 문제가 있었습니다.
그래서 아래와 같이 switch를 통해 문제를 해결하였습니다.
let locale = navigator.language || navigator.userLanguage;
switch (locale) {
case 'ko':
case 'ko-KR':
locale = 'ko';
break;
case 'en':
case 'en-US':
locale = 'en';
break;
}