September 07, 2021
보통 한국어와 영어는 기본!, 다국적 기업의 경우 그 외에 다양한 언어로 홈페이지를 보여준다.
🤔 왜 사용자의 언어 정보 쿠키/세션/로컬스토리지에 저장하나?
- 홈페이지 재방문시 사용자가 설정한 언어로 보여짐
- 브라우저는 영어로 설정해놓는 한국인 등등 다양한 사용자가 존재
cf. 서버에서 사용자가 접속한 ip주소를 바탕으로 접속한 위치에 따라 언어를 설정해주는 방법도 있다!
navigator.language
를 사용하여 가져올 수 있다.
다만, 브라우저에 따라 지원되지 않을 수도 있고 반환 값이 다를 수 있으므로 확인 후 사용하여야한다!
caniuse.com에서 확인해보았을 때 ie 6-10을 제외하고는 왠만한 브라우저에서는 지원된다.
하지만 ie 6-10 사용자를 포기할 수 없다면…!
navigator.userLanguage
나 navigator.systemLanguage
로 사용자의 언어를 가져올 수 있다
navigator.userLanguage 관련
IE 사용자의 “브라우저” 설정 언어 가져오는 방법
반환값이 ko-KR
, ko
등으로 브라우저마다 다르게 돌아올 수 있으므로
전처리를 거쳐 사용하면 좋다.
lang = lang.toLowerCase(); //받아온 값을 소문자로 변경
lang = lang.substring(0, 2); //소문자로 변경한 갚의 앞 2글자만 받아오기
로컬스토리지에 저장하는 경우도 많은 것 같으나, 이미 Google Assistant 관련 등 다른 정보들이 이미 쿠키로 저장되어있었기 때문에 사용자 언어 정보도 쿠키에 추가했다.
⚠️ 쿠키 주의할 점 1 : 인코딩
쿠키의 이름과 값에는 특별한 제약이 없기 때문에 모든 글자가 허용됨.
다만, 형식의 유효성을 일관성 있게 유지하기 위해 이름과 값을 처리해서 사용함!
escape
, encodeURIComponent
등으로 공백이나 특수문자, 한국어 등을 인코딩한다.
let date = new Date(Date.now() + 86400e3); // 만료기간 하루로 설정
date = date.toUTCString();
document.cookie = "user=John; expires=" + date;
ex)
window.location.replace('/en/index.html)
cf. location.href와 location.replace의 차이점