言語環境の設定で、現在どの言語が選択されているか取得するには、
NSArray *langs = [NSLocale preferredLanguages];
を使います。
NSLogで出力するとこうなります。
----
ja,
en,
fr,
de,
nl,
it,
es,
pt,
"pt-PT",
da,
fi,
nb,
sv,
ko,
"zh-Hans",
"zh-Hant",
ru,
pl,
tr,
uk,
ar,
hr,
cs,
el,
he,
ro,
sk,
th,
id,
ms,
"en-GB",
ca,
hu,
vi
----
右上の画像に表示されている言語順で、言語コードが表示されているようです。
選択した言語が一番上に表示されるので、現在設定されている言語は、配列要素の0番目になります。
あとは、この言語コードからNSLocaleを作成します。
NSString *langID = [langs objectAtIndex:0];
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:langID];
と簡単に作成できます。
これをどう使うかはいろいろとあると思うけど、
僕はやりたかったのは、日付書式の言語設定を表示言語に変えたかった!
日付書式:英語
表示言語:日本語
となってると、NSDateFormatterで得られる日付書式が英語になるんですね。
これが嫌で、表示言語に合わしたくて、さっきのNSLocaleをNSDateFormatterに適用するわけです。
適用するのも2行でおわり、かんたん〜♪
NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setLocale:locale];
ローカライズの機能を利用して、表示言語設定に応じて、日付書式を変えることもできる。
英語のとき、Feb. 2011 (書式:MMM. yyyy)
日本語のとき、2011年2月 (書式:yyyy年M月)
という風にもできる。
0 件のコメント:
コメントを投稿