5P by GN⁺ 2일전 | ★ favorite | 댓글 1개
  • IP 기반 언어 설정은 잘못된 전제에 근거한 기능임
  • IP 주소는 위치만 알려줄 뿐, 사용자의 실제 언어 선호를 반영하지 못함
  • Accept-Language 헤더가 언어 선호 정보를 정확히 전달함
  • UI 언어는 신뢰할 수 있는 신호인 브라우저 헤더를 기반으로 설정 필요
  • 사용자의 언어 선택권과 경험 존중이 가장 중요한 원칙임

IP로 추정하는 언어 설정의 한계

  • 여전히 IP 지리정보(GeoIP) 로 사용 언어를 결정하는 행위는 잘못된 가정임
  • IP 주소는 단지 요청 위치 정보만 제공함
  • 사용자가 실제로 선호하거나 이해하는 언어를 파악하지 못함
  • VPN, 해외여행, 해외 거주, 복수 공식 언어 국가 등 다양한 상황에서 자주 실패 발생
  • 이런 방식은 똑똑함이 아닌 불편과 혼란 초래

공식 언어 개수와 현실의 괴리

  • 국가와 IP 정보는 언어와 1:1 매핑이 아님
    • Belgium은 3개, Switzerland는 4개, India는 22개, Canada는 공식적으로 2개, 사실상 다국어 국가임
  • 사용자는 해당 국가에 거주, 방문, 혹은 우연히 트래픽이 해당 국가를 통해 경유되는 경우가 있음
  • 단순 국가 정보만으로 한 가지 UI 언어 강제 노출은 잘못된 행동임

잘못된 엔지니어링의 예

  • 잘못된 데이터에 의존하는 것은 게으른 개발 방식
  • “대형 웹사이트도 이렇게 한다”는 변명은 올바르지 않음
  • 정확하게 처리하지 못할 바에야 차라리 아무 것도 하지 않는 편이 나음

Accept-Language 헤더의 가치

  • 많은 사용자가 VPN 사용 등으로 새로운 언어가 강제 노출되어 불편 경험
  • 모든 브라우저는 Accept-Language 헤더를 전송함
    • 사용자의 OS 또는 브라우저 설정에 따라 언어 선호가 지정됨
    • 사용자가 원하는 경우 직접 이 값을 설정, 변경할 수 있음
    • 예시: Accept-Language: en-US,en;q=0.9,de;q=0.8
  • 이 헤더는 정확, 무료, 이미 내장, 라이선스나 추가 유지보수가 필요 없는 정보임

올바른 언어 처리 방법

  • 화면 해상도나 색상처럼, 언어도 사용자의 환경을 존중해야 함
  • 영어 사용자에게 프랑스에서 영어로, 브뤼셀의 프랑스 사용자는 네덜란드어로, 홍콩 VPN 사용자에게는 중국어로 노출 등과 같이 엉뚱한 언어 지정 빈번히 발생
  • 사용자 불만, 서비스 이탈, UI 탐색 끝에 임시 해결 시도 등 문제가 생김
  • 이런 실수는 신뢰할 수 없는 IP 데이터를 언어 판단 근거로 삼았기 때문임

실질적 해결 방안

  • Accept-Language 읽기
  • 이 값 존중하기
  • 원할 경우 사용자가 직접 언어를 변경 가능하게 지원 (선택 사항은 쿠키나 URL 파라미터에 저장)
  • GeoIP 정보는 통화, 배송, 법적 요소에만 사용하고 언어에는 적용 금지

결론

  • 사람이 사용하는 소프트웨어라면, 사용자 선호를 추측해서는 안 됨
  • 정확하게 구현하거나, 아예 언어 지정 기능을 제공하지 않는 것이 바람직함
Hacker News 의견
  • Accept-Language 헤더를 무시하는 웹사이트는 정말 거슬리는 문제라고 생각함. 다국어 웹사이트들은 종종 언어 전환 버튼이나 언어 목록마저도 현재 언어로 번역해버려서 혼란을 준다는 점, 이 경우 위키피디아가 표준적 모범이라고 생각함. 위키피디아는 명확한 다국어 아이콘, 각 언어의 이름을 그 언어로 보여 주는 목록 그리고 최상단에는 추천 언어를 표시하는 방식 사용. 언어를 미리 정해 추측하는 일은 하지 않아야 함. 위키피디아처럼 하면 도움됨

    • 검색 엔진을 통해 원하는 페이지에 들어갔을 때, 갑자기 나라를 선택하라는 모달 팝업이 뜨고, 그걸 선택하면 지역 사이트의 홈페이지로 강제 이동시켜버리는 경험을 싫어함. 일부 사이트는 닫기 버튼(X)이 있지만, 없는 경우도 많아 짜증남

    • 위키피디아의 언어 목록이 반드시 "알파벳순"은 아닌 듯 보임. 예를 들어 추천 언어로 "中文", "Italiano"가 올 때도 있고, 나머지는 지리적, 스크립트 기준으로 묶여있는 것처럼 보임. 자기 언어의 진정한 알파벳 순서는 아니더라도 위키피디아는 현지화는 잘함. 중요한 점은 언어 이름을 각 언어로 나타낼 때 "정확한" 알파벳순이란 개념이 복잡하다는 점

    • 위키피디아는 사용자가 이전에 선택한 언어를 기억해서 그걸 맨 위에 보여줌. 진정한 유저 경험 제공

    • YouTube 앱에서 언어가 갑자기 Amharic으로 바뀐 경험 있음. Google 지원문서를 참고하면 English 버튼을 알려주지만, Amharic를 모르는 나에겐 아무 의미도 없는 안내였음. iPhone 번역 앱도 이 언어를 인식하지 못함. 만약 보편적인 다국어 아이콘만 있었다면 이런 상황에서 쉽게 해결됐을 것임

    • 아이러니하게도, Universal Language Selector(U.S.L)도 결국 사용자의 IP 기반 국가 정보를 주로 사용해서 추천 언어를 정함. 이 방식은 정확하지 않은 경우가 많음. U.S.L FAQ에 의하면, IP로 출발 국가를 결정한 뒤 주요 언어 후보를 추천한다고 함

  • 모두가 단일 언어만 쓴다고 가정하는 디자인을 싫어함. 나는 네 개의 언어로 충분히 읽을 수 있고, 보통은 번역보다는 원어를 선호함. IP 기반 언어 예측은 아주 자주 틀림. 내가 이미 지원 언어를 설정했으니 그걸 존중해 주는 게 맞음. YouTube는 자동 AI 더빙이 기본 적용되어 반만 듣고 다시 되돌리며 끄는 과정 반복. 시간은 많이 안 들지만 정말 짜증나는 경험

    • YouTube AI 더빙은 정말 최악의 품질임. 5분 만에 영상의 음성이 본문 오디오라는 걸 간신히 깨달음. 영상 제목이 번역되는 것도 싫음. 영어로 말하는 영상을 보는데 제목은 엉뚱한 언어로 되어 있음

    • 구글에 스페인어 사용 언어로 설정해도 YouTube는 모든 걸 영어로 자동 번역함. 스페인어 실력 늘리려고 원어 콘텐츠를 보고 싶은데 YouTube 때문에 어렵게 느껴짐

  • YouTube에서 내 설정 언어로 영상 제목을 자동 번역하는 기능이 정말 짜증남. 영어를 이해하는데 굳이 번역이 필요 없다는 생각

    • 내가 글을 이해 못하는 언어라면 그 영상은 원래 나를 위한 게 아닐 가능성 높음. 대부분의 국제용 영상은 영어로 제공되니까, 원래 저자라면 아마 번역해두었을 것임. 그리고 영상 제목이라는 것은 맥락이 부족해서 제대로 번역도 안 됨. 예전에 포르투갈어 "Vamos assistir uma conexão com o passado" 영상이 사실은 "Let's play A Link to the Past"였는데, 영어 제목을 알아내려면 다시 번역해서 유추해야 했음. 이런 기능은 접근성을 높일 순 있어도, 적어도 끄는 기능은 넣어줘야 한다고 생각

    • YouTube 알고리즘이 이런 기능 사용을 독려하고, 콘텐츠 접근성을 이유로 보상할 수도 있지만, 못생긴 기계 번역 노르웨이어 제목 대신 영어 제목이 더 좋음. 내 경험상, 이런 기계 번역 제목이 나오면 해당 채널을 추천받지 않도록 설정함

    • 내 컴퓨터는 독일인이지만 영어로 설정함. 그럼에도 YouTube가 기계 번역 음성을 들려주거나, 독일어 영상/광고를 영어로 이상하게 번역해줌. 진짜 이상하고 어색한 경우 많음

    • 제목뿐만 아니라 오디오 트랙도 번역되는 게 문제. 자주 보는 유튜버가 여러 언어로 팬-made 오디오 트랙을 제공할 때, 나는 항상 직접 원어로 돌려놓아야 함. 기계 번역으로 인해 언어 유희나 문화적 함의가 빠지는 경우 많음. 간혹 언어 트랙을 바꾸려면 영상 처음부터 되돌려야 하고 브라우저 확장과의 충돌도 문제. 이런 번역을 기본값으로 설정하지 않고 자유롭게 토글하는 인터페이스가 있으면 좋겠음

    • 이제 Google, Kagi 등에서도 Reddit 검색 결과가 번역되어 나옴. 내가 찾던 답이 내 언어로 달린 줄 알았는데, 사실은 기계 번역된 영어 글이었음

  • 무엇보다도, 어떤 경우에도 자동 번역을 기본값으로 적용하는 일은 피해야 함. 실제로 번역해놓은 언어 목록만 명확하게 보여주면 됨. 번역 버튼은 브라우저에 이미 있으니 사용자가 스스로 적용하면 됨. 영어가 나의 첫 언어나 두 번째 언어가 아니지만 충분히 읽을 수 있음. 원본 영어 찾으려고 자동번역 더미 속에서 버튼 찾는 수고는 피하고 싶음. 다른 로케일은 이런 경우가 드문데, 오히려 영어에만 이런 문제가 많음. 기계 번역을 쓰고 싶다면 실제로 한 번 돌려보며 의도와 결과가 맞는지 확인하는 식의 검증이 필요하다고 생각

    • Reddit이 프랑스어로 자동 번역된 내용을 보여주는데, Reddit만의 스타일은 진짜 사람 손으로 옮기는 것도 거의 불가능한 수준임. 영어를 전혀 몰라도 이런 자동 번역본은 읽을 가치 없음. 원문 보기나 언어 변경 기능도 기기나 앱에 따라 찾기 어렵고, 그 밖에도 Reddit은 자꾸 앱을 설치하도록 유도함

    • 기계 번역은 이제 몇 년 전부터 상당히 좋아져서 네이티브조차 번역인지 모를 수준으로 발전했음

  • 내가 가장 불편하다고 느끼는 건 Google임. 내 신원, 여행 여부, 선호 언어(영어)까지 구글이 다 알고 있는데, 여전히 일부 페이지에서는 지역 기반 언어로 보여줌. 구글이 내 정보를 추적하는 데 활용하듯이, 사용자 경험 향상에 더 활용해주길 바람

    • 카탈루냐어 사용자지만 스페인어가 구글 계정이나 시스템/브라우저 언어에도 등록된 적이 없는데도, 항상 스페인어가 강제로 표시됨. 미국에 살고 있는데도 카탈루냐 관련 검색에 스페인어 위키를 우선 노출함. 검색엔진의 이런 행동은 늘 별로였음. 내 아이들처럼 스페인어 못하는 사람이나 스페인 아닌 카탈루냐어 지역 모두에 문제. 특히 Google Gemini는 카탈루냐어 콘텐츠를 위험하다고 여기며 대화 차단함. 구글은 예전에는 다양성에 정말 민감했지만, 지금은 그렇지 않음

    • 최근 Google은 map 리뷰 등에서 현지 언어를 영어로 번역하지 않고 그냥 보여줌. 내가 오래 머무른 곳이니까 그 나라 언어를 알겠거니 하는 것 같은데, 진짜 모를 때 영어가 필요한 경우가 많음. 검색 결과도 마찬가지. 지역 언어를 쓰는 것은 단순히 지역 사정을 알아보려는 것임에도 불구하고, Google은 이런 사용자 패턴을 제대로 반영하지 못하고 있음

    • Google 개발자와 직접 이 논쟁을 해봤음. 그는 구글이 이중 렌더링 과정을 통해 메인 페이지에선 아직 사용자 정보를 활용할 수 없어 언어 선호를 반영하지 않는다고 했지만, Accept-Language 헤더는 이미 초기 요청에 포함되니 말이 안 된다고 생각

    • Google은 내가 영국에 살고 영어를 쓰는 걸 알고 있음. 그런데 스페인 호텔 TV에 로그인해서 영어 유튜브 영상을 보면 스페인어 광고를 보여줌. 내가 이해 못하는 언어임을 Google이 알고 있으면서 광고주를 위해 굳이 이러는 것처럼 느껴짐

    • 새로운 기기나 브라우저만 쓰면 Google과 그 서비스들이 히브리어로 시작됨. 계속 영어로 바꿔왔지만 매번 그래야 하고, 나는 읽을 순 있지만 범용 언어인 영어가 더 좋음

  • 모든 브라우저가 Accept-Language 헤더를 보내 사용자 선호 언어를 알릴 수 있으며, 사용자가 관심 있으면 직접 수정하기도 함. 하지만 Accept-Language로 모든 게 해결되진 않음. 왜냐하면 다중 언어 사용자 대부분이 절대적 선호 순위가 아니라 주제별 선호가 있기 때문임. 예를 들어 프랑스어에 능통하더라도 영문 뉴스의 프랑스어 번역본을 원하진 않음. 사이트 운영자는 억지로 복잡한 기능을 만들지 말고, 명확하고 빠른 언어 변경 인터페이스만 제공하면 충분함. 위키피디아는 이걸 잘하고 있음

    • 실제로 Accept-Language 등의 기능보다 중요한 건 반쪽짜리 자동 번역이 아니라, 완성도 높은 번역을 제공하는 것임. UI와 자체 콘텐츠는 공식 번역을 유지하는 게 좋은데, 사용자 콘텐츠는 자동 번역 대신 반드시 브라우저 번역 버튼 등으로 선택적으로 노출해야 함. Accept-Language로 우선 언어를 고르고, 명확한 언어 전환 옵션도 함께 제공하는 방식을 추천함. 위키피디아의 각 언어 버전은 별개의 사이트에 콘텐츠가 별도로 재작성되는 구조임

    • Accept-Language는 언어별로 가중치(q value)를 지정할 수도 있음. 웹사이트는 사용자가 브라우저 요청 언어를 재정의할 수 있게 해야 하고, 브라우저 역시 사이트별로 "사이트 기본값" "시스템 언어" "영어 요청" 등 선택지를 제공해야 함. 가장 이상적인 건 웹사이트가 지원하는 언어 목록을 명확히 manifest.json 등에 공개하고, 클라이언트 측에서 언어 선택을 처리하게 하는 방식

    • 사용자가 현실적으로 가장 편한 언어로 Accept-Language를 설정한다는 전제는 약함. 대부분 사이트가 Accept-Language를 제대로 지원하지 않아서, 사용자가 해당 설정을 할 때 큰 전략을 두고 할 것 같진 않음

  • 정부 관련 사이트에서 다국어·접근성 지원을 위해 Accept-Language로 기본 언어 선택 시스템을 구현함. 그런데 PM이 이 결정을 무시하고 EN(영어)만 기본값으로 고정했음. 접근성 감사관이 Accept-Language를 써야 한다고 요구했고, 구현된 걸 다시 되돌린 걸 알게 되자 강하게 지적함. 결국 이런 어이없는 일들 덕분에 몇 주 더 계약 일을 하게 됨

  • 내 언어 불만도 얘기해보고 싶음. Apple TV에서 일본어만 하는 가족이 있음. 내 Apple 계정 국가는 Finland. The Martian 영화를 가족과 보려는데, 계정 국가에서 지원되는 언어만 오디오 트랙에 보여주기 때문에 일본어 더빙 선택이 불가능. 계정 국가 변경은 활성화된 Apple TV 구독이 있으면 할 수 없음. 결국 가족이 함께 볼 수 없었음

    • 아마 지역별 라이선스 문제 때문일 것이라 추측함. 해당 언어 더빙이 Finland에서 사용하도록 라이선스되어 있지 않기 때문

    • Netflix도 비슷한 일이 있었음. Finland에선 계정 언어 설정을 영어로 해야 Kim's Convenience를 볼 수 있었음. 영어 자막을 쓰는 경우도, 핀란드어 UI에서는 해당 콘텐츠 접근 자체가 불가능

  • Accept-Language에서 사용자의 손쉬운 접근성을 위해, 가장 가까운 번역본을 제공하는 시스템을 직접 개발했던 경험 있음. 예를 들어 포르투갈어(Portugal)가 없는 경우 브라질 포르투갈어(브라질 변형)를 자동 제공. 기술적으로는 잘 동작했고 구현도 즐거웠지만, 실제로는 대부분 사용자가 Accept-Language와 무관하게 영어만 원했고, 언어 변경 옵션이 푸터에 있었지만 충분히 눈에 잘 띄지 않았음. 그래서 지금은 직접 언어를 묻는 식으로 바꿨고, 유저 만족도가 크게 올랐음

    • 직접 묻는다는 건, 쿠키 저장이 안 된 상태에서 사이트에 들어올 때마다 언어 선택 팝업이 무조건 등장한다는 것임? 이런 팝업은 일관성이 없고, X 버튼 하나만 있어도 감사할 지경임. 100번 중 95번은 내가 클릭해서 들어온 언어면 충분한데, 필요하면 상단 오른쪽이나 페이지 푸터에 언어 선택만 제공해줘도 편함. 팝업이나 모달은 없었으면 좋겠음

    • Accept-Language를 기본값으로 하고 추가로 사용자에게 선택권을 주는 게 좋음. 언어 전환 디자인에서 아이콘을 없애는 걸 찬성하지만, 여러 지역을 하나의 언어로 묶는 건 아쉬움

    • 대부분 사용자는 OS 기본 언어 그대로 두고 쓰면서, 어떻게 바꾸는 줄도 모르고 익숙해져 있음

  • 해외에서 이런 문제는 정말 어이없고, 심지어 본국에서도 프로그래밍 문서 같은 로컬라이즈된 버전은 내용이 다르고 번역본의 품질이 떨어짐. 이상적으로는 원문 영어를 보고 싶어 함. 최근에는 검색 결과에도 기계 번역물이 점점 더 많이 보이기 시작. Reddit도 최근에 이 방식 도입. 내가 일부러 영어가 아닌 검색어를 쓰는 건 그 언어 고유의 정보를 찾고 싶어서임

    • Reddit팀이 자국 모국어 사용자만 가정한 채 기능을 만든 듯 보임. 전세계는 여러 언어를 이해할 수 있으니 굳이 그렇게 할 필요 없음

    • MongoDB 문서에서도 언어 기반 자동 전환 기능 때문에 분노한 적 있음. 검색 결과에서는 영어로 나오는데, 페이지 열자마자 JS가 브라질 포르투갈어로 바꿔줌. 그런데 완전히 로드되면 다시 영어로 돌아가는데, URL은 여전히 /pt-br/임. 게다가 번역 품질은 자동화 티가 확연함. 나는 Portugal 포르투갈어 사용자라 미묘한 차이도 더 거슬림