1. ホーム
  2. ios

[解決済み] iOSで現在のデバイスの言語を取得するには?

2022-03-22 07:37:46

質問

デバイスUIが現在使用している言語を表示したいのですが。どのようなコードを使用すればよいでしょうか?

として欲しい。 NSString を完全なスペルアウトのフォーマットで表示します。(@"en_US" ではありません)

EDIT: 車でお越しの方は、新しいiOSのリリースに伴って答えが進化しているため、ここに有用なコメントがたくさんあります。

解決方法は?

提供されている解決策は、実際には、現在選択されている言語ではなく、デバイスの現在のリージョンを返します。これらは多くの場合、同じものです。しかし、もし私が北米に住んでいて、言語を日本語に設定しても、地域は英語(米国)のままです。現在選択されている言語を取得するためには、次のようにします。

NSString * language = [[NSLocale preferredLanguages] firstObject];

英語なら "en"、スペイン語なら "es"、ドイツ語なら "de" などのように、現在選択している言語の2文字コードを返します。その他の例については、Wikipediaの項目(特に639-1列目)を参照してください。

ISO 639-1コード一覧

あとは、2文字コードを表示したい文字列に変換するだけです。つまり、"en"であれば、"English"と表示します。

EDIT

NSLocale.hのヘッダー情報を引用する価値があります。

+ (NSArray *)preferredLanguages NS_AVAILABLE(10_5, 2_0); // note that this list does not indicate what language the app is actually running in; the [NSBundle mainBundle] object determines that at launch and knows that information

アプリの言語に興味がある方は、以下のサイトをご覧ください。 マインドビジョンさんの回答