[iOS,Objective-C]言語ごとの通貨記号などロケール情報を調べる方法

国ごとに決められた通貨記号や日付の書式などのルールを「ロケール」といいますが、iOSにおいては「NSLocale」クラスがその役割を担います。

NSLocaleクラスではISOによって決められた国コード(ISO3166-1)と言語コード(ISO639)を組み合わせたロケールコードを指定してインスタンスを取得すると、その国のロケール情報をゲットできるようになります。

NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];

ロケールコードのリストはSupported Locales (英語)が分かりやすいでしょう。

objectForKeyメソッドで各情報を取得

ロケールインスタンスを取得後は、objectForKeyメソッドで以下の表にあるキーを使って通貨単位などの情報を取得できます。

[locale objectForKey:NSLocaleCurrencySymbol];

キー名と情報の対応表

項目 キー名 日本語 英語 イタリア語
ロケールID NSLocaleIdentifier ja_JP en_US it_IT
言語コード NSLocaleLanguageCode ja_JP en_US it_IT
国コード NSLocaleCountryCode JP US IT
スクリプトコード NSLocaleScriptCode (null) (null) (null)
旧通貨用付加コード NSLocaleVariantCode (null) (null) (null)
見本文字セット NSLocaleExemplarCharacterSet ※1 ※1 ※1
カレンダー NSLocaleCalendar ※2 ※2 ※2
照合順序 NSLocaleCollationIdentifier (null) (null) (null)
メートル法採用かどうか NSLocaleUsesMetricSystem 1 0 1
測量システム NSLocaleMeasurementSystem Metric U.S. Metric
小数点文字 NSLocaleDecimalSeparator . . ,
桁区切り文字 NSLocaleGroupingSeparator , , .
通貨単位文字 NSLocaleCurrencySymbol $
通貨コード NSLocaleCurrencyCode JPY USD EUR
照合ID NSLocaleCollatorIdentifier ja_JP en_US it_IT
クォート開始文字 NSLocaleQuotationBeginDelimiterKey
クォート終了文字 NSLocaleQuotationEndDelimiterKey
クォート開始文字(代替) NSLocaleAlternateQuotationBeginDelimiterKey
クォート終了文字(代替) NSLocaleAlternateQuotationEndDelimiterKey

これらのデータをNSLogメソッドで一覧出力するコードを用意したので、必要な方はコピペして使ってください。 最初のinitWithLocaleIdentifierメソッドのパラメーターに調べたいロケールコードを指定すればOKです。

NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"ja_JP"];
NSLog(@"NSLocaleIdentifier: %@", [locale objectForKey:NSLocaleIdentifier]);
NSLog(@"NSLocaleLanguageCode: %@", [locale objectForKey:NSLocaleIdentifier]);
NSLog(@"NSLocaleCountryCode: %@", [locale objectForKey:NSLocaleCountryCode]);
NSLog(@"NSLocaleScriptCode: %@", [locale objectForKey:NSLocaleScriptCode]);
NSLog(@"NSLocaleVariantCode: %@", [locale objectForKey:NSLocaleVariantCode]);
NSLog(@"NSLocaleExemplarCharacterSet: %@", [locale objectForKey:NSLocaleExemplarCharacterSet]);
NSLog(@"NSLocaleCalendar: %@", [locale objectForKey:NSLocaleCalendar]);
NSLog(@"NSLocaleCollationIdentifier: %@", [locale objectForKey:NSLocaleCollationIdentifier]);
NSLog(@"NSLocaleUsesMetricSystem: %@", [locale objectForKey:NSLocaleUsesMetricSystem]);
NSLog(@"NSLocaleMeasurementSystem: %@", [locale objectForKey:NSLocaleMeasurementSystem]);
NSLog(@"NSLocaleDecimalSeparator: %@", [locale objectForKey:NSLocaleDecimalSeparator]);
NSLog(@"NSLocaleGroupingSeparator: %@", [locale objectForKey:NSLocaleGroupingSeparator]);
NSLog(@"NSLocaleCurrencySymbol: %@", [locale objectForKey:NSLocaleCurrencySymbol]);
NSLog(@"NSLocaleCurrencyCode: %@", [locale objectForKey:NSLocaleCurrencyCode]);
NSLog(@"NSLocaleCollatorIdentifier: %@", [locale objectForKey:NSLocaleCollatorIdentifier]);
NSLog(@"NSLocaleQuotationBeginDelimiterKey: %@", [locale objectForKey:NSLocaleQuotationBeginDelimiterKey]);
NSLog(@"NSLocaleQuotationEndDelimiterKey: %@", [locale objectForKey:NSLocaleQuotationEndDelimiterKey]);
NSLog(@"NSLocaleAlternateQuotationBeginDelimiterKey: %@", [locale objectForKey:NSLocaleAlternateQuotationBeginDelimiterKey]);
NSLog(@"NSLocaleAlternateQuotationEndDelimiterKey: %@", [locale objectForKey:NSLocaleAlternateQuotationEndDelimiterKey]);
[locale release];

このページをシェアする

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

2011-12-07