5 ポイント 投稿者 GN⁺ 2025-05-20 | 1件のコメント | WhatsAppで共有
  • Webサービスが 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 を優先し、利用者が自分で変更した言語を Cookieや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 を読む
    • その値を尊重する
    • 利用者が必要なら言語を変更できるようにする
    • 変更した選択はCookieやURLパラメータで記憶する
  • GeoIP が必要であっても、言語ではなく通貨、配送、法的要件のような領域に限定して使うのが適切である

1件のコメント

 
GN⁺ 2025-05-20
Hacker News のコメント
  • Accept-Language を受け入れないのは本当に腹立たしい。
    さらに悪いのは、多言語サイトが言語切り替えボタンや言語一覧まで現在の言語に翻訳していることが多い点で、目的そのものを台無しにする愚かな設計だ。
    Wikipedia はこれをきちんとやっている。言語切り替えボタンは汎用的な多言語アイコンで分かりやすく、言語一覧は各言語の名称をその言語自身で表示し、概ねアルファベット順に並べたうえで、可能性の高い候補を上に出している。
    たとえば英語版 Wikipedia のページでは、DeutschFrançaisNederlands のようなおすすめ言語が表示される。言語を勝手に決めつけるとお互い疲れるだけなので、Wikipedia のようにすればいい。

    • 検索エンジンから目的のページに入ったのに、国選択モーダルが出て、国を選んだ瞬間にその地域サイトのホームページへ飛ばされるのも怒りを誘う。
      閉じるボタンがあるサイトもあるが、ないところが多くて余計にイライラする。
    • 「アルファベット順」と言うには微妙だ。今日の英語版特集記事で言語一覧を見ると、中文Italiano がおすすめとして出ていて、残りは地理的地域ごとにまとめられており、特にアルファベット順でもなかった。
      ヨーロッパ側にはキリル文字のグループがあるようだが、ҚазақшаУкраїнська の後に出ており、カザフ語基準でも正確ではないし、Қ を知らない人にとっても予想外かもしれない。中国語系も画数順に並んでいるようには見えず、韓国語はその下にある。
      Wikipedia のローカライズは素晴らしいが、言語名をその言語自身で表示する場合に「アルファベット順ソート」がどれほど曖昧かについての、ちょっとした補足だ。
    • Wikipedia は前回の選択も覚えていて、上に出してくれる。それこそが ユーザー体験 だ。実際に役に立ち、イライラさせないもの。
    • 完璧な悪例として、iPhone の YouTube アプリが突然アムハラ語に変わったことがある。
      Google のサポート文書 https://support.google.com/youtube/answer/87604 は押すべきボタンを英語で説明してくれたが、アムハラ語は分からず、当時はそれが何語なのかも分からなかった。iPhone の翻訳もこのエチオピアの言語を認識できなかった。
      汎用的な多言語アイコンが一つあるだけで簡単に避けられたはずの、困った状況だった。
    • この問題には二段階ある。別のヨーロッパ言語が表示された場合は、たいてい “English” に相当する単語を何となく探して切り替えられるので、大ごとにはならない。
      だがベンガル文字のように知らない文字体系が出てくると問題になる。
      だからすべての 言語選択メニュー には、脱出口として英語と中国語をローカライズしない形で入れておくとよいかもしれない。ほぼすべての Web 利用者が、メニューを手探りして実際の自分の言語を見つけられる程度には見分けられるからだ。
  • YouTube が動画タイトルを設定言語に 自動翻訳 する「機能」も嫌いだ。英語は理解できるので、こういう自動翻訳は不要だし本当に煩わしい。

    • これは単に「英語を理解できる」という話より、ずっと悪い。
      その言語が分からないなら、その動画はおそらく自分向けではない可能性が高い。国際的な視聴者を狙った動画はほとんどが英語か、少なくとも制作者が自分で翻訳している。
      タイトルは短い文なので、翻訳に必要な文脈が不足している。ポルトガル語で Vamos assistir uma conexão com o passado のようなタイトルを見たことがあるが、直訳すると「過去とのつながりを見よう」で、頭の中で逆翻訳してようやく原題が Let's play A Link to the Past だったと分かった。
      オンライン資料は第二言語の練習にもよいので、能力を過小評価しないでほしい。少なくとも原文を直接読ませてくれれば、必要なら Google Translate や辞書を使える。
      この機能がオンラインコンテンツへのアクセスを広げる点は認めるが、体験を悪くするなら少なくともオフにできるようにすべきだ。
    • ドイツ人だがコンピューターは英語に設定しているところ、YouTube がドイツ語の動画や広告を自動翻訳して、非常に奇妙な文句と 不自然な機械音声 を聞かせてくることがある。
      Lidl is worth it, ja! みたいな感じだ。
    • タイトルだけでなく 音声トラック も問題だ。
      よく見る YouTuber の何人かは、ファン制作の翻訳音声トラックで対応言語を広げており、英語がその一つであることもある。そうした動画を見るたびに、原語の言葉遊びや隠れた意味が翻訳で消えてしまうので、毎回元の言語へ手動で切り替えなければならない。
      YouTube が Firefox と YouTube 関連拡張機能を嫌っているせいで、コントロールが全部読み込まれる前に動画が始まり、言語トラックを変えるために巻き戻しまでしなければならないことも多い。
      別の返信で助けになる拡張機能をリンクしてくれたので試すつもりだが、YouTube の設定に「常に元の言語を使う」トグルが一つないのが腹立たしい。翻訳音声が欲しいときは自分でオンにできるし、複数の言語をある程度使えるので、自分が見るコンテンツではそういう場合はまれだ。
      広告ブロックを邪魔したり広告を押し付けたりする意図ならまだ理解できるが、これは単に実装の悪い「便利」機能だ。それでもどこかの PM は褒められたのだろう。
    • YouTube のアルゴリズムはこの機能を使って「コンテンツのアクセシビリティ」を高めた人に報酬を与えているようだ。
      だが、自分が読める英語タイトルの代わりに醜い機械翻訳のノルウェー語タイトルを見せられるなら、経験上そのチャンネルは アルゴリズムを追いかける低品質チャンネル だというシグナルなので、「このチャンネルをおすすめに表示しない」を押すことになる。
    • 今では Google と Kagi の Reddit 検索結果も翻訳されて表示されるため、自分の言語で書かれた関連回答を見つけたと思ったら、実際には英語投稿の 機械翻訳 だった、ということが起きている。
  • こういう設計には「誰もが1つの言語しか理解しない」という暗黙の前提があるので嫌い
    4つの言語を楽に読めるし、たいていは出来の悪いローカライズより原文を好む。だからIPベースで優先言語を推測すると、ほぼ必ず外れる
    すでにブラウザの言語設定で、どの言語を使えるかを伝えているのに、ユーザーがそれをきちんと設定できるほど賢くないと仮定する理由はない
    YouTubeでデフォルト有効になっているAI吹き替えはさらにひどい。見る動画の半分くらいは、開いて、設定を押してAI吹き替えをオフにし、最初まで巻き戻してやり直さなければならない。時間はそれほどかからないが、ものすごく邪魔

    • YouTubeのAI吹き替えは本当にひどい。聞いていた音声が別タブの変な広告ではなく、動画そのものから出ているのだと気づくまで5分かかった
      タイトルが翻訳されて表示されるのも嫌い。話しているのは英語の動画なのに、タイトルが別の言語になっていると、すごく奇妙
    • Googleにスペイン語を理解できる言語の1つとして設定しているのに、いまだに何でも英語に自動翻訳する
      スペイン語は流暢ではないが、流暢になるための良い方法の1つが原語コンテンツの消費なのに、YouTubeがそれを難しくしている
  • いちばん腹が立つのはGoogle。私が誰かを知っていて、旅行中であることも知っていて、言語の好みが英語であることも知っているのに、特定のページではいまだに位置情報ベースの言語を表示する
    Googleに私を追跡することを許しているのだから、広告だけでなく、良いユーザー体験にも少しは使ってほしい

    • カタルーニャ語ユーザーは、Googleアカウント、システム言語、ブラウザ言語のどこにもスペイン語が結びついていなくても、スペイン語を強制される
      米国に住んでいるのに、Googleはカタルーニャ語関連の検索でもスペイン語の結果を出そうとする。たとえばスペイン語版Wikipediaを優先する。検索エンジンの挙動は年によって良くなったり悪くなったりしたが、良かったことはない
      スペイン語を理解しない子どもたちにとって大きな問題だし、Andorraを含むスペイン以外のカタルーニャ語圏地域にとっても問題
      Geminiはカタルーニャ語コンテンツを簡単に安全ではないと判定し、会話を続けられないようにしていた。「この記事を要約して」のようなプロンプトでもそうだったし、最近は改善しているかもしれない
      かつてのGoogleは、世界の多様性に敏感な責任ある大企業の手本だった。今でも複数のチームの努力は高く評価しているが、もはや優先事項ではないことは明らかに見える
    • Googleはこの問題に関して、なぜか最悪
      最近では、Mapsのレビューで現地語を英語に自動翻訳するのは間違いだと判断したらしい。他のすべての言語は英語に翻訳するのに、私がその地域に住んでいるという理由で、現地語もできるはずだと仮定し、英語は不要だと見なす
      検索結果も同じ。長くそこにいたのだから、当然現地語版Wikipediaを望んでいるはずだと考える。現地情報を探すには現地語で検索しなければならないだけなのに、それを好みのシグナルとして解釈する
      「ソフトウェアは賢くすべての好みを推測すべきだ」という流れ全体にも当てはまる。Googleがこれほど一貫して失敗しているのに続ける理由は、誤った企業的うぬぼれ以外には理解しにくい
    • Googleの開発者とこの問題で議論したことがある
      彼は、効率のためにコンテンツのレンダリングには段階があり、メインページ構造を作る時点ではまだユーザー情報がないと言っていた。だがその段階でもAccept-Languageヘッダーはすぐ使えるはずなので、筋が通らないと思う
    • 最悪の体験は、新しい国に到着したのにPlay Storeがローカルアプリを表示しなかったこと。Googleアカウントが以前の国に紐づいていたため
      国の変更は簡単ではなく、以前の国とそのアプリを諦めなければならなかった。行き来することが多いので、結局2台目のスマートフォンを買い、新しい国用のアカウントを作ることになった
    • Googleは私が英国に住んでいて英語を使うことを知っているのに、スペインのホテルの部屋のテレビにログインして英語のYouTube動画を見ると、スペイン語広告を表示する
      私が理解できないことをよく分かっているはずなのに、広告主には課金できるから続けているように見えて、滑稽
  • はるかに重要な原則は、ユーザーの言語にコンテンツを自動翻訳するなということ
    実際にデータが存在する言語を表示すればよい。ユーザーが望めばブラウザの「翻訳」ボタンを押せるくらいには賢いし、その翻訳品質のほうが高い可能性も大きい
    英語は私の母語でも第二言語でもないが、毎日仕事で使える程度にはよく理解している。元の英語版を読むためのボタンを探そうとして、自動翻訳のゴミ山をかき分けたくない
    不思議なことに、この問題は主に英語に対してだけ起きる。他の言語圏のサイトはたいていそうしないが、その事実だけでも海外からの訪問者がこれを嫌っているという十分なシグナルになる
    Webサイトに機械翻訳を使おうとするなら、公開前にすべての言語で往復翻訳を試すべき。翻訳し、その結果をまた貼り付け、もう一度元の言語に翻訳してみれば、公開しようとしていた内容がだいたい何だったのか見えてくるはず。やらないほうがいい

    • Redditがフランス語に自動翻訳するので嫌い。ユーザー特有の文体は、人間がきちんと翻訳するのも難しいか不可能だろうに、自動翻訳してしまう
      英語ができないとしても、その翻訳されたコンテンツには見る価値がないと思う
      言語を変えたり原文を表示したりする機能は見つけにくく、アプリなのかモバイルWebなのかデスクトップWebなのかによっても違う
      アプリをダウンロードさせようと必死すぎるのも別の問題
    • 機械翻訳は数年前から十分に良くなっており、ネイティブ話者でも気づかないほどになっている
  • 「すべてのブラウザが Accept-Language ヘッダーを送り、ユーザーの OS やブラウザ設定に基づく優先言語を知らせ、ユーザーが望めば変更できる」という前提も崩れている
    まず Accept-Language は順序付きリストだが、日常的に複数の言語を使う人は、絶対的な優先順位ではなくトピック別の好みを持つことが多い
    英語ニュースサイトにフランス語翻訳版があっても、フランス語のほうが得意であっても、英語版を望むことがある
    そのためユーザーは、実際の好みよりも最も実用的な言語を指定することになる。たとえばローカルの非英語サイトは国際的な英語サイトより余計な小細工をしない傾向があるので、言語を英語だけに設定すると、前者には英語表示を強制し、ほかの大半のサイトへの影響は少ない
    むしろフランスのサイトがすべての設定を無視してデフォルトでフランス語版を押し出してくれるほうが、そういう場合には助かる
    結局、サイト運営者には賢いふりをせず、別バージョンへ切り替えるための非常に明確で素早いインターフェースを提供してほしい。Wikipedia はかなりうまくやっている

    • 有用な Accept-Language ヘッダーを捨てるのではなく、中途半端な翻訳を提供しないことが解決策
      多言語ウェブサイトなら、完全に翻訳され検証済みの翻訳セットだけを提供すべき。UI と自社コンテンツをいくつかの言語に翻訳することは、対象顧客によっては会社にとって意味があるかもしれないが、そのすべてを保守し同期しなければならない
      ユーザーコンテンツには手を出すべきではない。「スペイン語が検出されました。英語の自動翻訳を見るにはクリック」のようなボタンの下に補助機能として置く場合でない限り、自動翻訳すべきではないし、実際それもブラウザに任せるのがよい
      Accept-Language で言語を選び、追加で切り替え方法を提供すればよい
      Wikipedia は実際には同じコンテンツの翻訳を提供している方式ではない。各言語は別インスタンスであり、MediaWiki UI の文言を除けば、同じ文書の翻訳ではなく、重なる部分のある別言語の別文書である。Language 項目のオランダ語版は、同じ記事のオランダ語訳だとは主張しておらず、意図的に別のサブドメインとパスに置かれている
    • 技術的には Accept-Language は各言語に「品質値」や重みを指定できる: https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/...
      ブラウザとウェブサイトの双方に、改善の余地は多いと思う
      ウェブサイトは、ブラウザが要求した言語をユーザーが上書きできるようにすべき。ブラウザもサイトごとに「サイトのデフォルト」「システムの既定言語を要求」「英語を要求」「中国語を要求」「スペイン語を要求」などを選べるようにすべき
      最もよい方法は、サイトが対応言語の一覧を公開すること。たとえば manifest.json に置ける: https://developer.mozilla.org/en-US/docs/Web/Progressive_web... 形式は Map> のような形になり得る
      言語選択はサーバー側ではなくクライアント側で行われるべき
    • Accept-Language は順序付きリストではなく 部分順序リストである
      英語ニュースサイトにフランス語翻訳版があっても英語版を望むなら、2つの言語を同じ優先順位にすればよい
    • ユーザーが実際の好みではなく最も実用的な言語を指定する、という前提がどこから来るのかわからない
      多くの、もしかするとほぼすべてのサイトが Accept-Language ヘッダーを尊重していない現実を見ると、ユーザーがこの設定を選ぶときに頭の中でそこまでゲーム理論を回しているとは考えにくい
  • 政府系サイトで アクセシビリティと多言語対応を実装するプロジェクトを担当したことがある
    対応言語の中からデフォルトを選ぶのに Accept-Language を使ったが、PM がその決定を覆して英語デフォルトを強制した
    アクセシビリティ監査官は監査報告書に「Accept-Language の使用」を赤項目として入れ、当初はそう実装されていたのに差し戻されたという事実を知って、会社を強く叱責した
    この件と似たような愚かな判断のおかげで、契約作業をさらに数週間行うことになった

  • 言語への不満を吐き出す場のようなので、Apple TV への不満もある
    日本語しか話さない家族がいて、私の Apple アカウントはフィンランドのものだ。一緒に The Martian を見ようとしたが、日本語吹き替え音声トラックが明らかに存在するのに選択できなかった
    アカウントの国に関係ないオプションはそもそも表示せず、回避するには Apple アカウント全体を別の国に変更しなければならない
    ところが有効な Apple TV サブスクリプションがあると、その変更もできない。結果として、家族で一緒に Apple TV を見ることができなかった

    • おそらく ライセンス問題だと思う。日本語吹き替えがフィンランドで再生されるよう許可されていなかったのかもしれない。この場合、愚かなのは著作権法か弁護士たちのせいだ
    • Netflix もフィンランドで似たような奇妙な点があった
      記憶が正しければアカウントの言語設定があり、Kim's Convenience を見るには英語に設定しなければならなかった。VPN も不要で、別の国にいると主張する必要もないが、正しい言語を設定しないとコンテンツを隠す
      フィンランド語 UI で英語字幕付きのコンテンツを見る場合でもそうだった
  • 海外にいるときは本当に理不尽だし、自国にいてもプログラミング文書のようにローカライズ版が同等ではない場合には腹が立つ
    理想的な場合でも英語の原文を好む可能性が高いし、実際には機械翻訳であることが多く、ずっと悪い
    最近さらに頻繁に見かける、もう一つ極めて腹立たしいことは、検索結果にコンテンツの機械翻訳版が出てくること。Reddit が今それをやっていて、本当にひどい
    非英語の検索語を使う主な理由の一つは、非英語の結果を得るため。たとえば、世界中に当てはまるわけではない話題について情報を探す場合がそう

    • Reddit のプロダクトチームがこの機能を作りながら、自分たちを単一言語ユーザーだと想定し、米国国歌を口ずさんでいる様子が聞こえてくるようだ
      世界のそれ以外の人々は複数の言語を十分に理解できる
    • 最近、Mongo のドキュメントのせいでかなりひどくフラストレーションがたまっている
      位置情報ベースなのか Accept-Language ベースなのかは試していないが、挙動が本当に怒りを誘う
      Web 検索をすると英語版の結果が出て、開くと JavaScript が読み込まれた瞬間に PT-BR に切り替わり、数秒後にページが完全に読み込まれると、URL には /pt-br/ スラッグを残したまま再び英語に戻る
      翻訳も人の手で作られた、あるいは確認されたものではないのがあまりにも明らか。しかも私は PT-PT ユーザーなので、PT-BR との違いのせいでさらにいら立つ
  • 以前、Accept-Language をパースしてユーザーの優先順位に重み付けし、こちらが提供しているものの中からユーザーの好みに最も近い言語を選ぶ小さなシステムを作ったことがある
    たとえばブラジルポルトガル語の翻訳はあるがポルトガルのポルトガル語はないので、後者を要求したユーザーには前者を提供しつつ、より低い優先順位で完全一致があればそちらを使う、というような形だった
    技術的にはうまく動き、コードもきれいで、作るのも楽しかった
    しかしユーザー視点では、ほとんどの人が Accept-Language ヘッダーに関係なく、単に英語を望んでいた。フッターで変更できたが、十分に目立っていなかったようだ
    今は単に尋ねるようにしていて、ユーザーもそのほうが満足している

    • 「尋ねる」というのが、Cookie がない状態でサイトを訪れるたびに、まず言語選択の壁を表示するという意味なら、よく遭遇する苦痛だ
      クリックしたページにそのままとどまる方法が分かりにくい。「continue」ボタンがあらかじめ選択された値を適用するのか、ポップアップだけを閉じて現在のページを表示し続けるのか迷う
      前者なら、あらかじめ選択された値が現在のページの言語なのか別の言語なのかも分からず、現在のロケールを推測して選択したうえでポップアップを閉じるべきなのか悩む。開発者ツールでモーダルを削除して回避できるかまで考えてしまう。小さな閉じるボタン一つでさえ、こうした言語の壁ではぜいたく品だ
      100 回中 95 回は、クリックした言語のままで問題ない。ドイツ語版の地域別配送情報や決済オプションが必要なら、右上かフッターの言語セレクターを探すだろう
      その二つの場所のどちらか一方にあるだけで、JavaScript のポップアップが出続けない Web はずっと幸せなものになりそうだ
    • それでもデフォルトは Accept-Language にしておきたいが、ユーザーに尋ねることが肝心だ
      選択肢を提供するパターンが気になる。この記事はアイコンを拒否している点は良いが、複数の地域を一つの言語に帰着させるやり方は好きではない: https://usersnap.com/blog/design-language-switch/
    • 多くの人はこの値がOS のデフォルトに設定されているはずで、ただ慣れてしまっており、変更方法も知らない可能性が高い