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의 차이점