Safariとそれ以外のブラウザで言語コードが変化する件について


ブラウザの設定言語によって表示言語を変更するシステムなんかよくありますよね。
今回はphpだったので $_SERVER['HTTP_ACCEPT_LANGUAGE'] で言語コードを取得→判定して表示言語を設定するシステムのテストを行ってる時に起きた話について。

Chromeさん、IE11さん、FireFoxさんでメキシコスペイン語を設定したら、取得できた言語コードは「es-MX」。
ISO 3166で取り決められているes(スペイン)に副言語としてmx(メキシコ)を設定した言語コードです。正しい。

がしかし、
Mac Safariさんで同じように設定すると、なぜか言語コードが「es_XL」に変身。誰だお前!!
このXLという謎のコード、ISO 3166に記述はなく、調べて日本語サイトはてんで引っかからなかったのでいろいろ探し回った結果をまとめました。

https://github.com/mozilla/donate.mozilla.org/issues/1659
It turns out Safari also fudges up the es-MX locale code, and instead uses es-XL, which is supposed to be Latin America

【和訳】
Safariはes-MXのロケールコードを見直し、ラテンアメリカと思われるes-XLを使用しています。



やはりこれはSafariのみの仕様のようです。他ブラウザと同じように言語コードを「es-MX」にする方法はないのか?
調べてたら似たような状況の質問を発見。



http://stackoverflow.com/questions/28688415/getting-django-localization-working-with-es-xl-latin-america-spanish
■質問
iOS 8 has two language choices for Spanish. Espa?ol and Espa?ol (Mexico).
If I switch to Espa?ol and the browser sends HTTP_ACCEPT_LANGUAGE: es-es everything works perfectly.
When switching my iPad to Espa?ol (Mexico) localization defaults back to English. When looking at the headers I can see HTTP_ACCEPT_LANGUAGE: es-xl.
I have tried adding es_XL and ex_MX translation file in my locale directory with no luck.

【和訳】
iOS 8には EspañolとEspañol(Mexico)とスペイン語の選択肢が2つあります。
Españolに切り替えてブラウザからHTTP_ACCEPT_LANGUAGEが送信された場合:es-esはすべて正常に動作します。
iPadをEspañol(Mexico)に切り替えると、デフォルトのローカライズが英語に戻ります。
ヘッダーを見ると、HTTP_ACCEPT_LANGUAGE:es-xlが見えます。
es_XLとex_MXの翻訳ファイルを自分のロケールディレクトリに追加してみました。


■回答
So the issue ended up being that neither django or python supports the language code es-xl.
The language code that iOS sends when setting the system language to Espa?ol (Mexico).
So my solution was to create middleware that when es-xl is present I activate es-mx as the current language.

【和訳】
原因はdjangoもpythonも言語コードes-xlをサポートしていないせいです。
(es-xlは)iOSがシステム言語をEspañol(Mexico)に設定するときに送信する言語コード。
だから、私の解決策はes-xlが存在するときにes-mxを現在の言語として有効にするミドルウェアを作成することでした。



他にもいくつか見つかったんだけど、大体似たような内容でした。
結論としては「Safariの仕様だからes-xlならes-mxの言語を表示するようにしましょう」

しかし、探しても探しても、こういった掲示板の書き込み内容しかでてこなかった。
どうしてSafariからこのことについて触れた公式の発表がないのか…。MAC民の暗黙の了解なの?
せめて設定される言語コードの一覧表ぐらい、どこか公式リファレンスで出してほしいものだな~と思いました。