plausible languages

利用者の言語

[1] 各種のプラットフォーム応用利用者の言語の概念を持っています。

概要

[2] 自然言語ロケールの根幹となる構成要素です。 現代の多くのプラットフォームプロセスごとにロケールを決められます。

[3] 通常はロケール言語は1つだけですが、 Webブラウザーのように複数の言語利用者好みとして指定できるようになっている応用もあります。

Web における利用者の言語

[16] 一般的には利用者の言語ロケール言語であり、 利用者インターフェイス翻訳テキストの選択に使う言語であり、 数値日時の表示や入力に使う言語であるべきです。

[17] 複数の言語が通用する地域の利用者や、 外国の言語を解する利用者などは、 利用者インターフェイス言語と違う言語も良しとすることがあります。 多くの Webブラウザーは複数の言語を選ぶ機能を持っています。


[5] Webプラットフォーム利用者の言語にアクセスする機能をいくつか提供しています。

[6] Web における利用者の言語の取得

[10] いくつかの処理は利用者の言語に依存する挙動を持ちます。

[11] Web における利用者の言語の参照

[18] こうした挙動が(広義の)ロケールを構成する諸言語のうちどれを使うべきか、 諸仕様は必ずしも整理されておらず曖昧なところがありますが、 表示する文言の決定は利用者インターフェイス言語によるべきであり、 API が返すのは利用者の言語の設定によるべきであり、 判定や表示のアルゴリズムで参照するのは利用者の言語の設定によるべきでしょう。

[19] なお、 仕様書でロケール依存とされているものの一部を含め、 Webアプリケーション利用者インターフェイスの部分を構成することになる機能の一部については、 翻訳テキストの選択は利用者の言語ではなく節点の言語によるべきという考え方もあります。

値の決定

[8] 利用者プライバシーの保護のため、Webブラウザー利用者情報を秘匿することが認められています。 その場合は代替となる値を使うことになっています。 >>418

[9] このため HTML Standardnavigator.language の値を either a plausible language or the user's most preferred language とし、 navigator.languages の値を either one or more plausible languages, or the user's preferred languages とし、 Accept-Language: の値をそれらと同じリストを使うべきとしています。 >>418

複数の値の解釈

[56] 言語の折衝, Accept-Language:, navigator.languages も参照.

利用者インターフェイス

[412] 利用者エージェントは何らかの形で利用者の望む言語を利用者が指定できるようにする必要があります。 利用者にそのような方法を提供しない利用者エージェントは、 Accept-Language: ヘッダーを送信してはなりません>>35

[50] 一般的な Webブラウザーは、設定画面に自然言語の指定機能が用意されているのが普通です。 選択肢からいくつかの言語を選んだり、それ以外の言語タグを追加したりできるのが普通です。

[51] 既定では、プラットフォームの言語設定が Webブラウザーにも反映されるようになっているのが一般的です。 プラットフォームの言語設定を変化させた時に自動的に Webブラウザーにも反映されるのかどうかは不明です。 自動的に反映されるべきかもしれませんし、利用者の個別設定があればそれが優先されるべきかもしれません。

[413] 利用者は普通言語範囲の一致の仕組みに詳しくないですから、 利用者エージェントは何らかの配慮をするべき (ought to) です。 例えば利用者eb-GB を選択した時に、 en も追加することを提案するとよさそうです。 >>35

[52] 一般的な実装では、利用者が非論理的な指定をできてしまい、 特に何の警告も発されないことがあります。例えば、 en-GB, ja, en のような指定は、 利用者英語日本語のどちらを求めているのか、 真意が定かではありません。サーバーは決めかねて、 利用者の意図に沿わない動作をするかもしれません。 利用者が試行錯誤している場合など、深い意図もなくそのような指定をしてしまうこともありますから、 利用者エージェントが問題のありそうな指定を検出して利用者に警告できれば良いのですが、 どのような指定方法だと問題となるかもあまり明確ではありませんし、 利用者がそう頻繁に使いそうな設定項目でもありませんから、 実装を複雑化させるコストに見合わないかもしれません。むしろ設定画面の奥の方に押し込んで、 不注意な利用者がうっかり触ることが内容にした方が良いのかもしれません。

プライバシー

[7] 利用者の言語の情報は fingerprinting vector です。 かなり繊細な利用者プライバシーに関わる情報であり、 慎重な取り扱いが求められます。 Webのプライバシー

[410] Accept-Language: ヘッダー利用者プライバシーに関わる情報を漏らすものですから、 注意が必要です。

[411] とはいえどの Webブラウザーもこのヘッダーをすべての要求につけて送信するようです。

[416] 実際には言語の情報だけでは個人を特定することはできないでしょうが、 話者が少数の言語の場合や、言語の組み合わせ、あるいは言語とそれ以外の情報の組み合わせによって、 個人を特定したり、複数の要求や複数のサイトにわたった行動の追跡に用いたりすることができるかもしれません。 また、話者が多数の言語であっても、あまりその言語の話者がいない Webサイトを閲覧すると、同様に特定したり追跡したりできるかもしれません。

[420] fingerprinting vector の項も参照してください。

[421] 匿名化サービスを使っている場合、言語としては en-US を用いることが提案されています >>418

[419] 利用者エージェントは、 Accept-Language:navigator.languages で同じ言語リストを用いるべきです >>418

メモ