ロキャール

http://d.hatena.ne.jp/propella/20050907/p1http://d.hatena.ne.jp/korakurider/20050907/p1の問題です。

僕が考えているのは、2段重ね戦法で、

  • システムからは国情報つきか国情報なしかのどちらかでロキャールが取れてくる。
  • KnownLocalesには、国情報つきか国情報なしのどちらも入ってよい。が、国情報なしのものがないのに国情報付きのものがある状況は避ける。
  • KnownLocalesに厳密に一致するものがあればそれを使う。
  • KnownLocalesに厳密に一致するものがない場合:
    • 国情報つきであれば、国情報を取ってみてそれを探す
    • 国情報なしであれば、英語にする。

ということになります。スペインとメキシコのような場合はどちらかはesで、もう片方がes-mx(あるいはes-es)として入るようにすべきです。継承という関係にしても、得るものはないですし、たぶん翻訳辞書の入れ子(アプリケーションごとに辞書を分けられるようにする)が作られたときに、その仕組みと統合するのがよさそうです。

'pt'はたとえばすでにブラジル向けになっているので、'pt-br'は一生入らずに、'pt-pt'がいずれはいるかもしれない、ということですね。

「例えば日本語の場合、ja-JP の辞書を作るのか、ja の辞書を作るのかという事を明確にしておかなくてはならない」ということは、実は試したことはないのでうまく動かないところがあるのかもしれませんが、LocaleIDは国情報も含めて一意性(#=)を見ているので、「国情報が違えばまったく別物」ということでコード的には(たとえばDictionaryに入れたりとか)問題はない(かないようにできる)と思います。

ひらがな版は、ja-kidsみたいに独自に国コードを作ってやろう、ということにはなっています。
そういうイメージで作られたプロジェクトをロードする場合は、実は山宮さんの最近のパッチでうまく行くような気はします。