HOME » Natsu note » 古い投稿 » [iOS] 設定されている言語や書式を知る

[iOS] 設定されている言語や書式を知る 2010/08/19/|古い投稿

この記事は情報が古い可能性があります。参照する際にはご注意ください。

iPhoneには言語設定と書式設定(地域設定)が存在する。さらに、書式設定は「地域」と「言語」に分かれている。これは、同一言語を話す地域が複数あるためだ。一方、言語設定とは、iPhone上に表示されている言語そのものである。

左が言語設定画面、右が書式設定画面だ。書式は現在「フランス語/スイス」に設定されている。フランス語を話す地域は他にもたくさんあるため、フランス語を選択するとさらに地域を選択する画面が出てくるはずだ。

Setting languageSetting region

この言語設定と書式設定は独立しており、言語は日本語のまま書式(地域)を日本以外に設定することも可能だ(上のスクリーンショットもその一例)。

これらの設定情報はNSLocaleにより管理されており、以下のようにして知ることができる。あえてこれらの情報を取得しなくてはならない場面はあまりないだろうけれど(ローカライズやNSFormatterの地域設定には不要なので)、知っておいて損はないと思う。

言語設定

意外と知られていないようだが、言語設定は以下のようにして取得可能だ。

[NSLocale preferredLanguages]で、言語設定画面に表示されている言語が上から順に取得できる。したがって、この配列の先頭が現在設定されている言語になるというわけだ。

NSArray *languages = [NSLocale preferredLanguages];
NSString *lang = [languages objectAtIndex:0];

langは、ISO 639-x/IETF BCP 47(http://www.rfc-editor.org/rfc/bcp/bcp47.txt)に基づいた言語コードである。

言語を日本語に設定していれば、langは”ja”になっているはずだ。

地域設定

現在設定されている地域は、 [NSLocale currentLocale] で取得可能だ。

さらに、インスタンスメソッド – (NSString *)localeIdentifier を利用して、locale identifierを取得すれば設定されている地域と言語(地域情報の中の言語)がわかる。

NSString *localeIdentifier = [[NSLocale currentLocale] localeIdentifier];

localeIdentifierは、”fr_CH”というようになっている(詳細はLocales Programming Guideを参照のこと)。

“fr_CH”は、フランス語圏のスイスを示す。設定をみると、上のスクリーンショットのようになっているはずだ。