そーす

福岡在住。iOS/Androidアプリ, Webフロントエンドのエンジニアです。Swift, Kotlin, JavaScript, ReactNative

言語設定をコードで切り替える

海外向けアプリを作っているんですが、 ある国だと端末に言語設定が無い場合があるのでアプリ自体に言語切替機能が付いてる事が多いようだったので 弊社もアプリ内に言語設定を変更出来る機能をつけました。

以下やりかた

String lang = "in";//設定したい言語コード
Locale locale = new Locale(lang);
Locale.setDefault(locale);
Configuration configuration = new Configuration();
configuration.locale = locale;
application.getResources().updateConfiguration(configuration, null);

言語コードは以下参照

ISO 639-1 - Wikipedia, the free encyclopedia

ただし、注意なのがJavaのLocaleクラスでは上記の言語コードと違うコードが返ってくる場合があります。

Locale | Android Developers

Note that Java uses several deprecated two-letter codes. The Hebrew ("he") language code is rewritten as "iw", Indonesian ("id") as "in", and Yiddish ("yi") as "ji". This rewriting happens even if you construct your own Locale object, not just for instances returned by the various lookup methods.

なので、サーバサイドと言語コードを合わせる場合などには注意が必要です。