WebView が埋め込まれた Android アプリケーションがあります。この WebView を介して表示される Web ページにカスタム言語設定を適用する必要があります。この関連する回答を見つけて、試してみました。
具体的には、コードは次のとおりです。
Map<String, String> headers = new HashMap<String, String>();
String lang = Locale.getDefault().getLanguage(); // for example, returns "ru"
headers.put("Accept-Language", lang); // also tried "ru", "ru_RU", "ru;q=0.8,en;q=0.6", etc.
mWebView.loadUrl("http://localhost/", headers);
何も機能しません。サーバー側では、常に「en_us」でヘッダーを取得します。
Androidのドキュメントによると:
additionalHttpHeaders - この URL の HTTP 要求で使用される追加のヘッダー。名前から値へのマップとして指定されます。このマップに、この WebView によってデフォルトで設定されるヘッダー (キャッシングを制御するもの、受け入れタイプまたはユーザー エージェントなど) が含まれている場合、それらの値は、この WebView のデフォルトによってオーバーライドされる可能性があることに注意してください。
問題のある部分は太字で強調表示されています。
問題は、WebView のデフォルトをオーバーライドして、ユーザーの優先言語に合わせる方法です。
現在、問題は Android 2.3 で発生しており、他のバージョンではまだ確認していません。