質問: Railsの`i18n`では`ja.yml`が日本語の設定ファイルとして使われていますが、ISO 3166 の定義では`jp`になっているようです。 `ja`はどこかで規定されている物なのでしょうか? `ja`以外にもISO 3166の定義から外れているものがあるのかを調べるために知りたいです。
回答: rails-i18nのREADME.mdによると、妥当な言語/地域コードのリストについては、isoライブラリを参照するとしています。isoライブラリはISO 639-1 alpha2に基づく言語コードとして小文字2文字、ISO 3166-1に基づく地域コードとして大文字2文字または数字3文字(UN M49に基づく)を使うとしています。それらを組み合わせて、`言語コード`または`言語コード-地域コード`をタグとして使うとなっています。 上の話から言えば、日本語だと"ja"以外に"ja-JP"でも問題は無いはずです。実際、rails-i18n等の翻訳済みデータを使う必要が無ければ別に何であっても動作はします。しかし、各ライブラリの翻訳済みデータは日本語を"ja"としているため、それを使うのであれば"ja"に合わせる必要があると言うだけです。翻訳済みのリストについてはrails-i18nのREADME.mdにあるAvailable Localesを参考にしてください。 なお、規格としてIETF言語タグ(IETF language tag)のlanguageとlanguage-regionがありますが、この規格を採用しているというわけではないようです。