- 웹 서비스가 IP 위치 정보로 표시 언어를 정하면 VPN, 여행, 해외 거주, 다언어 국가 사용자에게 원하지 않는 언어가 노출됨
- 국가와 언어는 1:1 관계가 아니며, Belgium은 3개, Switzerland는 4개, India는 22개 공식 언어를 쓰고 Canada는 공식 이중언어 국가임
- 브라우저는 OS나 브라우저 설정에 기반해 Accept-Language 헤더를 보내며, 예시는
Accept-Language: en-US,en;q=0.9,de;q=0.8임 - 더 나은 구현은
Accept-Language를 우선하고, 사용자가 직접 바꾼 언어를 쿠키나 URL 파라미터로 기억하는 방식임 - GeoIP는 통화, 배송, 법적 요구처럼 위치가 필요한 영역에 쓰고 언어 선택에는 쓰지 않는 편이 사용자 선호를 덜 왜곡함
IP 위치 정보는 언어 선호를 말해주지 않음
- IP 주소는 요청이 어디서 왔는지만 보여줄 뿐, 사용자가 어떤 언어를 원하거나 이해하는지는 알려주지 않음
- VPN, 여행, 해외 거주, 여러 공식 언어를 가진 국가에서는 IP 기반 언어 선택이 쉽게 빗나감
- 국가와 언어는 단순히 대응되지 않음
- Belgium: 공식 언어 3개
- Switzerland: 공식 언어 4개
- India: 공식 언어 22개
- Canada: 공식적으로 이중언어이며 비공식적으로 다언어 환경
- VPN 사용자는 IP가 바뀔 때마다 무작위 언어가 표시될 수 있고, Google 접속 시 이해하지 못하는 언어가 나오는 사례도 있음
- 잘못된 IP 데이터베이스를 브라우저의 언어 정보보다 우선하면 사용자는 원하지 않는 UI 언어를 받게 됨
브라우저의 Accept-Language를 우선해야 함
- 모든 브라우저는 사용자의 선호 언어를 담은
Accept-Language헤더를 보냄 - 이 값은 위치나 IP가 아니라 OS 또는 브라우저 설정에 기반함
- 예시:
Accept-Language: en-US,en;q=0.9,de;q=0.8
- 합리적인 처리 흐름은 단순함
Accept-Language를 읽음- 그 값을 존중함
- 사용자가 필요하면 언어를 바꿀 수 있게 함
- 바꾼 선택은 쿠키나 URL 파라미터로 기억함
- GeoIP가 필요하더라도 언어가 아니라 통화, 배송, 법적 요구 같은 영역에 한정해 쓰는 것이 적절함