올바른 방법은 HTTP Accept-Language 를 보는 것입니다 서버로 전송 된 헤더를 보는 것입니다. 여기에는 사용자가 브라우저를 선호하도록 구성한 순서대로 가중치가 부여 된 언어 목록이 포함됩니다.
불행히도이 헤더는 JavaScript 내부에서 읽을 수 없습니다. 당신이 얻을 모든은 navigator.language
웹 브라우저의 지역화 된 버전이 설치되어 있었는지를 알려줍니다. 이것은 반드시 사용자가 선호하는 언어와 같은 것은 아닙니다. IE에서는 대신 systemLanguage
(OS 설치 언어) browserLanguage
(와 동일 language
) 및 userLanguage
(사용자 구성 OS 영역)이 표시되며 모두 비슷하지 않습니다.
그 속성들 중에서 선택해야한다면, 나는 userLanguage
처음으로 스니핑하고 language
그 이후로 (그리고 그 언어가 사용 가능한 언어와 일치하지 않으면)보고 browserLanguage
마지막으로 넘어갑니다 systemLanguage
.
Accept-Language 헤더를 읽고 문자열에 헤더 값이있는 JavaScript 파일로 다시 뱉어내는 서버 측 스크립트를 인터넷의 다른 곳에 배치 할 수있는 경우 :
var acceptLanguage= 'en-gb,en;q=0.7,de;q=0.3';
그런 다음 HTML에서 해당 외부 서비스를 가리키는 <script src>를 포함하고 JavaScript를 사용하여 언어 헤더를 구문 분석 할 수 있습니다. Accept-Language 구문 분석은 거의 항상 서버 측에서 수행 되므로이 작업을 수행하는 기존 라이브러리 코드를 모릅니다.
결국 어떤 일을 하든지, 어떤 사람들에게는 항상 잘못 추측 할 수 있기 때문에 사용자 재정의가 필요합니다. 종종 언어 설정을 URL (예 : http://www.example.com/en/site vs http://www.example.com/de/site)에 넣고 사용자가 클릭하도록하는 것이 가장 쉬운 방법입니다 둘 사이의 링크. 두 언어 버전 모두에 대해 단일 URL을 원할 경우 쿠키에 설정을 저장해야하지만 쿠키와 검색 엔진을 지원하지 않는 사용자 에이전트를 혼동시킬 수 있습니다.