以下のプログラムで取得可能です。
for (NSString *localId in [NSLocale preferredLanguages]) { NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"ja_JP"]; NSString *displayNameString = [locale displayNameForKey:NSLocaleIdentifier value:localId]; NSLog(@"%@ - %@", localId, displayNameString); [locale release]; }
iPhone 4で実行した場合、結果は以下のようになりました。
ja - 日本語 en - 英語 zh-Hans - 中国語(簡体字) de - ドイツ語 uk - ウクライナ語 fr - フランス語 zh-Hant - 中国語(繁体字) nl - オランダ語 it - イタリア語 es - スペイン語 pt-PT - ポルトガル語(ポルトガル) da - デンマーク語 fi - フィンランド語 nb - ノルウェー語 (ブークモール) sv - スウェーデン語 ko - 韓国語 ru - ロシア語 pl - ポーランド語 pt - ポルトガル語 tr - トルコ語 ar - アラビア語 hr - クロアチア語 cs - チェコ語 el - ギリシャ語 he - ヘブライ語 ro - ルーマニア語 sk - スロバキア語 th - タイ語 id - インドネシア語 ms - マレー語 en-GB - 英語(イギリス) ca - カタロニア語 hu - ハンガリー語 vi - ベトナム語
ちなみに英語で取得したい場合は ja_JP の代わりに en_US を使用します。
同じく、iPhone 4で実行したところ以下の結果になりました。
※ここでは一部文字化けしてますが実際のプログラムの結果では文字化けしていません。実機でも合わせて確認下さい。
ja - Japanese en - English zh-Hans - Chinese (Simplified Han) de - German uk - Ukrainian fr - French zh-Hant - Chinese (Traditional Han) nl - Dutch it - Italian es - Spanish pt-PT - Portuguese (Portugal) da - Danish fi - Finnish nb - Norwegian Bokmål sv - Swedish ko - Korean ru - Russian pl - Polish pt - Portuguese tr - Turkish ar - Arabic hr - Croatian cs - Czech el - Greek he - Hebrew ro - Romanian sk - Slovak th - Thai id - Indonesian ms - Malay en-GB - English (United Kingdom) ca - Catalan hu - Hungarian vi - Vietnamese
localId を代わりに使うとそれぞれの言語で国名が表示されます。
これが一番iPhoneの設定画面で見のものに近い表示になります。
※ここではかなり文字化けしてますが実際のプログラムの結果では文字化けしていません。実機でも合わせて確認下さい。
ja - 日本語 en - English zh-Hans - 中文(简体中文) de - Deutsch uk - українська fr - français zh-Hant - 中文 (繁體中文) nl - Nederlands it - italiano es - español pt-PT - português (Portugal) da - dansk fi - suomi nb - norsk bokmål sv - svenska ko - 한국어 ru - русский pl - polski pt - português tr - Türkçe ar - العربية hr - hrvatski cs - čeština el - Ελληνικά he - עברית ro - română sk - slovenčina th - ไทย id - Bahasa Indonesia ms - Bahasa Melayu en-GB - English (United Kingdom) ca - català hu - magyar vi - Tiếng Việt