5 ポイント 投稿者 GN⁺ 2025-05-20 | 1件のコメント | WhatsAppで共有
  • IPベースの言語設定は誤った前提に基づく機能である
  • IPアドレスは位置しか示さず、ユーザーの実際の言語選好を反映できない
  • Accept-Languageヘッダーが言語選好の情報を正確に伝える
  • UI言語は信頼できるシグナルであるブラウザーヘッダーに基づいて設定する必要がある
  • ユーザーの言語選択権と体験の尊重が最も重要な原則である

IPで推定する言語設定の限界

  • いまだに**IPジオロケーション(GeoIP)**で使用言語を決めるのは誤った仮定である
  • IPアドレスは単にリクエスト元の位置情報しか提供しない
  • ユーザーが実際に好む、または理解できる言語を把握できない
  • VPN、海外旅行、海外在住、複数の公用語を持つ国などさまざまな状況で頻繁に失敗する
  • こうしたやり方は賢いのではなく、不便と混乱を招く

公用語の数と現実のずれ

  • 国とIP情報は言語と1対1で対応しない
    • Belgiumは3つ、Switzerlandは4つ、Indiaは22、Canadaは公式には2つで、実際には多言語国家である
  • ユーザーはその国に居住している場合も、訪問中の場合も、あるいは偶然その国を経由して通信している場合もある
  • 単純な国情報だけで1つのUI言語を強制表示するのは誤った行為である

間違ったエンジニアリングの例

  • 誤ったデータに依存するのは怠惰な開発手法である
  • 「大規模なWebサイトもこうしている」という言い訳は正しくない
  • 正確に処理できないのであれば、むしろ何もしないほうがよい

Accept-Languageヘッダーの価値

  • 多くのユーザーがVPN利用などによって新しい言語を強制表示され、不便を経験している
  • すべてのブラウザーはAccept-Languageヘッダーを送信する
    • ユーザーのOSまたはブラウザー設定に応じて言語選好が指定される
    • ユーザーは望めばこの値を自分で設定・変更できる
    • 例: Accept-Language: en-US,en;q=0.9,de;q=0.8
  • このヘッダーは正確で、無料で、すでに組み込まれており、ライセンスや追加保守を必要としない情報である

正しい言語処理の方法

  • 画面解像度や色と同じように、言語もユーザー環境を尊重すべきである
  • 英語話者にフランスで英語、ブリュッセルのフランス語話者にオランダ語、香港VPNユーザーに中国語を表示するなど、見当違いの言語指定が頻繁に起こる
  • ユーザーの不満、サービス離脱、UIを探し回った末の一時的な対処の試みなどの問題が生じる
  • こうしたミスは信頼できないIPデータを言語判断の根拠にしているためである

実用的な解決策

  • Accept-Languageを読む
  • その値を尊重する
  • 必要に応じてユーザーが直接言語を変更できるようにする(選択内容はCookieやURLパラメーターに保存)
  • GeoIP情報は通貨、配送、法的要素にのみ使用し、言語には適用しない

結論

  • 人が使うソフトウェアであれば、ユーザーの選好を推測してはならない
  • 正確に実装するか、あるいは最初から言語指定機能を提供しないほうが望ましい

1件のコメント

 
GN⁺ 2025-05-20
Hacker Newsの意見
  • Accept-Languageヘッダーを無視するウェブサイトは本当に不快な問題だと思う。多言語サイトはしばしば言語切り替えボタンや言語一覧まで現在の言語に翻訳してしまい、混乱を招く。この点ではWikipediaが標準的な模範だと思う。Wikipediaは明確な多言語アイコン、各言語名をその言語で表示する一覧、そして最上部に推奨言語を表示する方式を使っている。言語を事前に決めつけて推測してはならない。Wikipediaのようにすれば役に立つ

    • 検索エンジン経由で目的のページに入ったとき、突然「国を選べ」というモーダルポップアップが出て、それを選ぶと地域サイトのホームページに強制的に飛ばされる体験が嫌いだ。一部のサイトには閉じるボタン(X)があるが、ない場合も多くていら立つ

    • Wikipediaの言語一覧は必ずしも「アルファベット順」ではないように見える。たとえば推奨言語に「中文」「Italiano」が来ることもあり、残りは地理やスクリプト基準でまとまっているように見える。自分の言語における真のアルファベット順ではなくても、Wikipediaはローカライズがうまい。重要なのは、言語名を各言語で表示するとき「正確な」アルファベット順という概念自体が複雑だという点だ

    • Wikipediaはユーザーが以前に選んだ言語を記憶して、それを一番上に表示する。本当のユーザー体験を提供している

    • YouTubeアプリで言語が突然Amharicに変わった経験がある。Googleのサポート文書を見るとEnglishボタンの位置を案内しているが、Amharicを知らない自分には何の意味もない案内だった。iPhoneの翻訳アプリもこの言語を認識しなかった。もし普遍的な多言語アイコンだけでもあれば、こうした状況で簡単に解決できたはずだ

    • 皮肉なことに、Universal Language Selector(U.S.L)も結局はユーザーのIPベースの国情報を主に使って推奨言語を決めている。この方式は正確でないことが多い。U.S.LのFAQによれば、IPで出発国を判断したうえで主要言語候補を推薦するという

  • みんなが単一言語しか使わないと仮定する設計が嫌いだ。私は4つの言語で十分読めるし、たいていは翻訳より原語を好む。IPベースの言語予測はとても頻繁に外れる。自分で対応言語を設定済みなのだから、それを尊重してほしい。YouTubeでは自動AI吹き替えがデフォルトで適用され、少し聞いてから元に戻して無効にする作業を何度も繰り返している。時間はそれほどかからないが、本当にいら立つ体験だ

    • YouTubeのAI吹き替えは本当に最悪の品質だ。5分たってようやく映像の音声が本文のオーディオだと気づいた。動画タイトルが翻訳されるのも嫌だ。英語で話している動画を見ているのに、タイトルは見当違いの言語になっている

    • Googleで使用言語をスペイン語に設定していても、YouTubeはすべてを英語に自動翻訳する。スペイン語力を伸ばしたくて原語コンテンツを見たいのに、YouTubeのせいで難しく感じる

  • YouTubeが動画タイトルを自分の設定言語に自動翻訳する機能は本当にうっとうしい。英語は理解できるのだから、わざわざ翻訳は要らないと思う

    • 自分が文章を理解できない言語なら、その動画はもともと自分向けではない可能性が高い。たいていの国際向け動画は英語で提供されるので、本来の投稿者ならおそらく翻訳してあるはずだ。そして動画タイトルは文脈が少ないので、まともに翻訳もできない。以前、ポルトガル語の「Vamos assistir uma conexão com o passado」という動画が、実際には「Let's play A Link to the Past」だったことがあり、英語タイトルを知るには逆翻訳して推測しなければならなかった。こうした機能はアクセシビリティを高めるかもしれないが、少なくともオフにする機能は入れるべきだと思う

    • YouTubeのアルゴリズムがこうした機能の利用を促し、コンテンツのアクセシビリティを理由に報いるのかもしれないが、出来の悪い機械翻訳のノルウェー語タイトルより英語タイトルのほうがいい。自分の経験では、こういう機械翻訳タイトルが出てきたらそのチャンネルをおすすめしない設定にする

    • 自分のコンピューターはドイツ人向け設定だが、言語は英語にしている。それでもYouTubeが機械翻訳音声を聞かせたり、ドイツ語の動画や広告を英語に妙に翻訳したりする。本当に奇妙で不自然なことが多い

    • 問題なのはタイトルだけでなく、オーディオトラックまで翻訳されることだ。よく見るYouTuberが複数言語のファンメイド音声トラックを提供していると、私はいつも自分で原語に戻さなければならない。機械翻訳のせいで言葉遊びや文化的な含意が失われることが多い。ときには言語トラックを変えるために動画の最初まで戻さなければならず、ブラウザー拡張との衝突も問題だ。こうした翻訳をデフォルトにせず、自由に切り替えられるインターフェースがあればいいのにと思う

    • 今ではGoogle、KagiなどでもRedditの検索結果が翻訳されて出てくる。探していた答えが自分の言語で書かれていると思ったら、実際には機械翻訳された英語の投稿だった

  • 何より、どんな場合でも自動翻訳をデフォルトとして適用するのは避けるべきだ。実際に翻訳済みの言語一覧だけを明確に見せればいい。翻訳ボタンはブラウザーにすでにあるのだから、ユーザーが自分で適用すればよい。英語は私の第一言語でも第二言語でもないが、十分読める。元の英語を探すために自動翻訳の山の中からボタンを探す手間は避けたい。他のロケールではこういうことはあまり起きないのに、むしろ英語でばかりこうした問題が多い。機械翻訳を使いたいなら、実際に一度回してみて、意図と結果が合っているか確認するような検証が必要だと思う

    • Redditがフランス語に自動翻訳された内容を見せてくるが、Reddit特有の文体は本当に人手で移すのもほとんど不可能なレベルだ。英語をまったく知らなくても、こうした自動翻訳版は読む価値がない。原文表示や言語変更機能も、端末やアプリによっては見つけにくく、それ以外にもRedditはしきりにアプリのインストールを促してくる

    • 機械翻訳はここ数年でかなり良くなり、ネイティブですら翻訳だと分からない水準まで進歩した

  • 自分が最も不便だと感じるのはGoogleだ。自分の身元、旅行中かどうか、好みの言語(英語)までGoogleは全部知っているのに、それでも一部のページでは地域ベースの言語で表示する。Googleが自分の情報を追跡に使うのと同じように、ユーザー体験の向上にももっと活用してほしい

    • カタルーニャ語ユーザーだが、スペイン語はGoogleアカウントにもシステム言語やブラウザー言語にも登録したことがないのに、いつもスペイン語が強制表示される。アメリカに住んでいるのに、カタルーニャ関連の検索でスペイン語版Wikipediaが優先表示される。検索エンジンのこうした挙動はいつも良くなかった。自分の子どものようにスペイン語ができない人や、スペインではないカタルーニャ語圏の人たちの双方にとって問題だ。特にGoogle Geminiはカタルーニャ語のコンテンツを危険だとみなし、会話をブロックする。Googleは以前は多様性に本当に敏感だったが、今はそうではない

    • 最近のGoogleは、Mapのレビューなどで現地の言語を英語に翻訳せずそのまま見せる。長く滞在した場所だからその国の言語が分かるだろうと考えているようだが、実際には分からず英語が必要なことが多い。検索結果も同じだ。地域の言語を使うのは、その地域の事情を知りたいだけのことなのに、Googleはこうしたユーザーパターンをきちんと反映できていない

    • Googleの開発者とこの議論を直接したことがある。彼はGoogleが二重レンダリングの過程を経るため、メインページではまだユーザー情報を使えず言語設定を反映できないと言っていたが、Accept-Languageヘッダーは最初のリクエストにすでに含まれているので、納得できないと思った

    • Googleは自分が英国に住み、英語を使うことを知っている。それなのにスペインのホテルのテレビでログインして英語のYouTube動画を見ると、スペイン語の広告を見せてくる。自分が理解できない言語だとGoogleが知っていながら、広告主のためにわざわざそうしているように感じる

    • 新しい端末やブラウザーを使うたびに、Googleとそのサービスはヘブライ語で始まる。ずっと英語に変えてきたが、毎回そうしなければならず、読めはするものの、汎用的な言語である英語のほうがよい

  • すべてのブラウザーはAccept-Languageヘッダーを送り、ユーザーの希望言語を伝えられるし、関心があればユーザーが自分で修正することもある。ただしAccept-Languageですべてが解決するわけではない。多言語話者の大半は絶対的な優先順位ではなく、話題ごとの好みを持っているからだ。たとえばフランス語に堪能でも、英語ニュースのフランス語翻訳版は望まない。サイト運営者は無理に複雑な機能を作るのではなく、明確で素早い言語切り替えインターフェースだけを提供すれば十分だ。Wikipediaはこれをうまくやっている

    • 実際にはAccept-Languageなどの機能より重要なのは、中途半端な自動翻訳ではなく、完成度の高い翻訳を提供することだ。UIや自社コンテンツは公式翻訳を維持するのがよいが、ユーザーコンテンツは自動翻訳ではなく、必ずブラウザーの翻訳ボタンなどで選択的に表示すべきだ。Accept-Languageで優先言語を選び、明確な言語切り替えオプションも併せて提供する方式を勧めたい。Wikipediaの各言語版は別々のサイトとして、コンテンツがそれぞれ個別に書き直される構造になっている

    • 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に関係なく英語だけを望み、言語変更オプションはフッターにあったものの十分目立たなかった。そこで今は直接言語を尋ねる方式に変えたところ、ユーザー満足度が大きく上がった

    • 直接尋ねるというのは、Cookieが保存されていない状態でサイトに入るたび、必ず言語選択ポップアップが出るということか? こうしたポップアップは一貫性がなく、Xボタンが1つあるだけでもありがたいくらいだ。100回中95回は、自分がクリックして入った言語ならそれで十分で、必要なら右上やページフッターに言語選択だけ置いてくれれば便利だ。ポップアップやモーダルはないほうがいい

    • Accept-Languageをデフォルトにしつつ、追加でユーザーに選択権を与えるのがよい。言語切り替えデザインでアイコンをなくすことには賛成だが、複数の地域を1つの言語にまとめるのは残念だ

    • ほとんどのユーザーはOSのデフォルト言語をそのまま使っていて、変え方も分からず、その状態に慣れている

  • 海外ではこうした問題は本当にひどく、母国でもプログラミング文書のようなローカライズ版は内容が違い、翻訳の質も低い。理想的には元の英語を見たい。最近では検索結果にも機械翻訳がますます増えてきた。Redditも最近この方式を導入した。自分がわざわざ英語以外の検索語を使うのは、その言語特有の情報を探したいからだ

    • Redditチームは自国の母語話者しか想定せずに機能を作ったように見える。世界中には複数の言語を理解できる人がいるのだから、わざわざそうする必要はない

    • MongoDBのドキュメントでも、言語ベースの自動切り替え機能のせいで腹が立ったことがある。検索結果では英語で出るのに、ページを開くとすぐJSがブラジル・ポルトガル語に切り替える。ところが完全に読み込まれるとまた英語に戻るのに、URLは依然として/pt-br/のままだ。しかも翻訳品質には自動化の痕跡がはっきり出ている。自分はPortugalポルトガル語の利用者なので、そうした微妙な違いがなおさら気になる