タイトルのとおりですが、Androidではインドネシア語、ヘブライ語、イディッシュ語の言語コードがISO639-1のコードと違います。
例えばインドネシア語のstrings.xmlを作ろうとした時 values-id
ではなく values-in
ディレクトリを作らなければなりません。Railsなんかでi18n対応した場合は id
を使うので混乱しやすく、注意が必要です。
また、コード上で言語を切り替える時は変換が必要になります。以下のように愚直にやるしかなさそうです。
private String convertOldISOCodes(@NonNull String language) {
language = language.toLowerCase.intern();
switch (language) {
case "he": // ヘブライ語
return "iw";
case "yi": // イディッシュ語
return "ji";
case "id": // インドネシア語
return "in";
default:
return language;
}
}