NSLocaleクラス

2010. 10. 22
●概要

ロケールは、言語や文化、技術的な慣習や基準についての情報をカプセル化します。

ロケールがカプセル化する情報には数字の小数点で使われる記号や、日付などの書式を含みます。

ロケールは通常、ユーザの習慣や好みに基づいて、情報を解釈する書式を提供します。

ロケールはしばしばフォーマッタと共に使用されます。
(『Data Formatting Guide』を参照)

多くのロケールを使用することができますが通常はユーザが現在関連付けしている一つを使います。

NSLocaleには『toll-free bridged』の対象としてCore FoundationのCFLocaleがあります。

これはFoudationオブジェクトを橋渡ししてCore Foundationの型に変換し、関数やメソッドで呼び出せることを意味します。

したがってNSLocale *パラメータを参照する際に、CFLocaleRefに渡してCFLocaleRefパラメータとして参照することができ、(コンパイラの警告を抑えるために型変換をして)NSLocaleインスタンスに渡すこともできます。

型変換に関する詳細は『toll-free bridging』を参照してください。



●タスク

●ロケールの取得と初期化

– initWithLocaleIdentifier:
+ systemLocale
+ currentLocale
+ autoupdatingCurrentLocale

●ロケールに関する情報の取得

– displayNameForKey:value:
– localeIdentifier
– objectForKey:

●システムロケール情報の取得

+ availableLocaleIdentifiers
+ ISOCountryCodes
+ ISOCurrencyCodes
+ ISOLanguageCodes
+ commonISOCurrencyCodes

●識別子間の変換

+ canonicalLocaleIdentifierFromString:
+ componentsFromLocaleIdentifier:
+ localeIdentifierFromComponents:
+ canonicalLanguageIdentifierFromString:
+ localeIdentifierFromWindowsLocaleCode:
+ windowsLocaleCodeFromLocaleIdentifier:

●優先言語の取得

+ preferredLanguages

●言語に関する行と文字の方向の取得

+ characterDirectionForLanguage:
+ lineDirectionForLanguage:



●クラスメソッド

currentLocale

+ (id)currentLocale

現在のユーザのために論理ロケールを返します。

ロケールは、システム環境設定でユーザが指定した任意のカスタム設定の上書きを含めた、現在のユーザが選択したシステムロケールの設定によって形成されています。

このメソッドは保持されたキャッシュオブジェクトを返します。

このロケールから取得した設定は、貴方の操作に一貫性を持たせるため、システム環境設定が変更されても変更されません。

通常は返されたオブジェクトでいくつかの操作を実行してから処理を行います。

また、返されたオブジェクトがキャッシュされている可能性があるので、無期限に保持する必要はありません。

autoupdatingCurrentLocaleの対象となっています。



●インスタンスメソッド

displayNameForKey:value:


- (NSString *)displayNameForKey:(id)key value:(id)value

指定された値の表示名を返します。

全てのロケールのプロパティキーが表示名の値での値を持っているわけではありません。

下記の例で示すように、他のロケールの言語にあるロケールの名前の取得にNSLocaleIdentifierキーを使用することができます。

最初はfr_FRロケールを使用します。


NSLocale *frLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"fr_FR"] autorelease];

NSString *displayNameString = [frLocale displayNameForKey:NSLocaleIdentifier value:@"fr_FR"];

NSLog(@"displayNameString fr_FR: %@", displayNameString);

displayNameString = [frLocale displayNameForKey:NSLocaleIdentifier value:@"en_US"];

NSLog(@"displayNameString en_US: %@", displayNameString);

返される値は次のようになります。


displayNameString fr_FR: francais (France)

displayNameString en_US: anglais (Etats-Unis)

次にen_GB localeロケールを使用した例を示します。


NSLocale *gbLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"] autorelease];

displayNameString = [gbLocale displayNameForKey:NSLocaleIdentifier value:@"fr_FR"];

NSLog(@"displayNameString fr_FR: %@", displayNameString);

displayNameString = [gbLocale displayNameForKey:NSLocaleIdentifier value:@"en_US"];

NSLog(@"displayNameString en_US: %@", displayNameString);

返される値は次のようになります。


displayNameString fr_FR: French (France)

displayNameString en_US: English (United States)

key
:ロケールのプロパティキーの値を指定します。(『定数』参照)

value:キーの値を指定します。


initWithLocaleIdentifier:

- (id)initWithLocaleIdentifier:(NSString *)string

指定したロケール識別子を使ってレシーバを初期化します。

string:新しいロケールの識別子を指定します。


localeIdentifier


- (NSString *)localeIdentifier

レシーバの識別子を返します。

これはNSLocaleが正規化する可能性があるので、ロケールが生成した文字列と同じ文字列であるとは限りません。

キーNSLocaleIdentifierobjectForKey:に送信するのと同等です。


objectForKey:


- (id)objectForKey:(id)key

指定したキーに対応するオブジェクトを返します。

key:対応する値を返すためのキーを指定します。
キーの有効な値については『定数』を参照してください。



定数

NSLocaleLanguageDirection

これらの定数は言語のテキストの方向を表します。

lineDirectionForLanguage:characterDirectionForLanguage:メソッドによって使用されます。

enum {
    NSLocaleLanguageDirectionUnknown = kCFLocaleLanguageDirectionUnknown,
    NSLocaleLanguageDirectionLeftToRight = kCFLocaleLanguageDirectionLeftToRight,
    NSLocaleLanguageDirectionRightToLeft = kCFLocaleLanguageDirectionRightToLeft,
    NSLocaleLanguageDirectionTopToBottom = kCFLocaleLanguageDirectionTopToBottom,
    NSLocaleLanguageDirectionBottomToTop = kCFLocaleLanguageDirectionBottomToTop
};
typedef NSUInteger NSLocaleLanguageDirection;

NSLocaleLanguageDirectionUnknown
言語の方向は不明です。

NSLocaleLanguageDirectionLeftToRight
言語の方向は左から右です。

NSLocaleLanguageDirectionRightToLeft
言語の方向は右から左です。

NSLocaleLanguageDirectionTopToBottom
言語の方向は上から下です。

NSLocaleLanguageDirectionBottomToTop
言語の方向は下から上です。


NSLocale Component Keys

以下の定数はobjectForKey:でロケールの要素の取得に使用するキーを指定します。

NSString * const NSLocaleIdentifier;
NSString * const NSLocaleLanguageCode;
NSString * const NSLocaleCountryCode;
NSString * const NSLocaleScriptCode;
NSString * const NSLocaleVariantCode;
NSString * const NSLocaleExemplarCharacterSet;
NSString * const NSLocaleCalendar;
NSString * const NSLocaleCollationIdentifier;
NSString * const NSLocaleUsesMetricSystem;
NSString * const NSLocaleMeasurementSystem;
NSString * const NSLocaleDecimalSeparator;
NSString * const NSLocaleGroupingSeparator;
NSString * const NSLocaleCurrencySymbol;
NSString * const NSLocaleCurrencyCode;
NSString * const NSLocaleCollatorIdentifier;
NSString * const NSLocaleQuotationBeginDelimiterKey;
NSString * const NSLocaleQuotationEndDelimiterKey;
NSString * const NSLocaleAlternateQuotationBeginDelimiterKey;
NSString * const NSLocaleAlternateQuotationEndDelimiterKey;

NSLocaleIdentifier
ロケール識別子のキーです。
対応する値はNSStringオブジェクトです。
値の例:『es_ES_PREEURO』

NSLocaleLanguageCode
ロケールの言語コードのキーです。
対応する値はNSStringオブジェクトです。
値の例:『es』

NSLocaleCountryCode
ロケールの国コードのキーです。
対応する値はNSStringオブジェクトです。
値の例:『ES』

NSLocaleScriptCode
ロケールのスクリプトコードのキーです。
対応する値はNSStringオブジェクトです。

NSLocaleVariantCode
ロケールの別コードのキーです。
対応する値はNSStringオブジェクトです。
値の例:『PREEURO』

NSLocaleExemplarCharacterSet
ロケールに設定された見本文字セットのキーです。
対応する値はNSCharacterSetオブジェクトです。

NSLocaleCalendar
ロケールに関連付けられたカレンダーのキーです。
対応する値はNSCalendarオブジェクトです。

NSLocaleCollationIdentifier
ロケールに関連付けられた照合用のキーです。
対応する値はNSStringオブジェクトです。

NSLocaleUsesMetricSystem
ロケールがメートル法を使用するかどうかを示すフラグのキーです。
対応する値はブール型のNSNumberオブジェクトです。
値がNOの場合、通常はアメリカの測定単位(例えば法定マイルなど)を用いることができます。

NSLocaleMeasurementSystem
ロケールに関連付けられた測定システムのキーです。
対応する値は『Metric』や『U.S.』などのロケールによって使用される測定システムの説明を含むNSStringオブジェクトです。

NSLocaleDecimalSeparator
ロケールに関連付けられた小数点文字のキーです。
対応する値はNSStringオブジェクトです。

NSLocaleGroupingSeparator
ロケールに関連付けられた桁区切り文字のキーです。
対応する値はNSStringオブジェクトです。

NSLocaleCurrencySymbol
ロケールに関連付けられた通貨記号のキーです。
対応する値はNSStringオブジェクトです。

NSLocaleCurrencyCode
ロケールに関連付けられた通貨コードのキーです。
対応する値はNSStringオブジェクトです。

NSLocaleCollatorIdentifier
ロケールの照合識別子のキーです。
対応する値はNSStringオブジェクトです。
不明の場合はnilを返します。

NSLocaleQuotationBeginDelimiterKey
ロケールに関連付けられた開始引用符のキーです。
対応する値はNSStringオブジェクトです。

NSLocaleQuotationEndDelimiterKey
ロケールに関連付けられた終了引用符のキーです。
対応する値はNSStringオブジェクトです。

NSLocaleAlternateQuotationBeginDelimiterKey
ロケールに関連付けられた代替開始引用符のキーです。
いくつかのロケールでは、引用符がネスト(入れ子)されている時に代替引用符になります。
例えばNSLocaleQuotationBeginDelimiterKeyの後にNSLocaleAlternateQuotationBeginDelimiterKeyなどとなります。
対応する値はNSStringオブジェクトです。

NSLocaleAlternateQuotationEndDelimiterKey
ロケールに関連付けられた代替終了引用符のキーです。
いくつかのロケールでは、引用符がネスト(入れ子)されている時に代替引用符になります。
例えばNSLocaleQuotationEndDelimiterKeyの後にNSLocaleAlternateQuotationEndDelimiterKeyなどとなります。
対応する値はNSStringオブジェクトです。


NSLocale Calendar Keys

これらの定数はNSCalendarインスタンスを識別します。

NSString * const NSGregorianCalendar;
NSString * const NSBuddhistCalendar;
NSString * const NSChineseCalendar;
NSString * const NSHebrewCalendar;
NSString * const NSIslamicCalendar;
NSString * const NSIslamicCivilCalendar;
NSString * const NSJapaneseCalendar;
NSString * const NSRepublicOfChinaCalendar;
NSString * const NSPersianCalendar;
NSString * const NSIndianCalendar;
NSString * const NSISO8601Calendar;

NSGregorianCalendar
グレゴリオ暦の識別子。

NSBuddhistCalendar
仏暦(仏滅紀元)の識別子。

NSChineseCalendar
中国暦の識別子(未サポート)。
Mac OS X v10.4~10.5では中国暦をサポートしていないことに注意してください。
この定数を使用してカレンダーを作成しても、オブジェクトは正常に機能しません。

NSHebrewCalendar
ヘブライ暦(ユダヤ暦)の識別子。

NSIslamicCalendar
イスラム暦(ヒジュラ暦)の識別子。

NSIslamicCivilCalendar
イスラム市民暦の識別子。

NSJapaneseCalendar
日本の暦(和暦)の識別子。

NSRepublicOfChinaCalendar
中華民国(台湾)暦の識別子。
民国紀元(中華民国暦)を生成することができ、暦の計算を行うことができますが、まだ正常に機能していないので必要な基本機能としての書式に使用するべきではありません。

NSPersianCalendar
ペルシア暦(イラン暦)の識別子。

NSIndianCalendar
インド暦の識別子。
ヒンドゥー暦インド固定暦のどちらかは不明)

NSISO8601Calendar
ISO8601の識別子。
ISO8601の暦はまだ実装されていません。

initWithCalendarIdentifier:を使用して新しいNSCalendarオブジェクトを初期化する際に、これらの識別子を使用します。
calendarIdentifierからの戻り値として、これらの識別子の一つを取得できます。



●通知

NSCurrentLocaleDidChangeNotification

ユーザのロケールが変更された事を示す通知です。



参考文献

NSLocale Class Reference

colori/役に立つかもしれないBlog/[iOS,Objective-C]言語ごとの通貨記号などロケール情報を調べる方法

Wikipedia/引用符

Wikipedia/グレゴリオ暦

Wikipedia/仏滅紀元

Wikipedia/中国暦

Wikipedia/ユダヤ暦

Wikipedia/ヒジュラ暦

Wikipedia/和暦

Wikipedia/民国紀元

Wikipedia/イラン暦

Wikipedia/ヒンドゥー暦

Wikipedia/インド固定暦

Wikipedia/ISO 8601






Bose QuietComfort 20
0 Comments
Leave a comment
管理者にだけ表示を許可する
Top
0 Trackbacks
Top
Calendar
08 | 2017/09 | 10
Sun Mon Tue Wed Thu Fri Sat
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Recent Articles
iTunes


Swift
Categories
Tips
Profile

水月杏香

Author:水月杏香
永遠の初心者プログラマ。

Wish List
WACOM


ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
BOSE

Bose QuietComfort 20
Reference
NSApplicationDelegateプロトコル
NSArrayクラス
NSAutoreleasePoolクラス
NSBundleクラス
NSBundle UIKit追加分
NSCalendarクラス
NSCoderクラス
NSCodingプロトコル
NSCopyingプロトコル
NSDataクラス
NSDateクラス
NSDateFormatterクラス
NSDictionaryクラス
NSEntityDescriptionクラス
NSEnumeratorクラス
NSErrorクラス
NSExceptionクラス
NSFetchRequestクラス
NSFileHandleクラス
NSFileManagerクラス
NSIndexPathクラス
NSIndexPath UIKit追加分
NSKeyedArchiverクラス
NSKeyedUnarchiverクラス
NSKeyValueCodingプロトコル
NSLocaleクラス
NSManagedObjectクラス
NSManagedObjectContextクラス
NSManagedObjectModelクラス
NSMutableArrayクラス
NSMutableCopyingプロトコル
NSMutableDictionaryクラス
NSMutableSetクラス
NSNotificationクラス
NSNotificationCenterクラス
NSNullクラス
NSNumberクラス
NSObjectクラス
NSObject UIKit追加分
NSObjectプロトコル
NSPersistentStoreクラス
NSPersistentStoreCoordinatorクラス
NSPredicateクラス
NSPropertyListSerializationクラス
NSRunLoopクラス
NSSetクラス
NSStringクラス
NSString UIKit追加分
NSTimerクラス
NSTimeZoneクラス
NSURLクラス
NSURLProtectionSpaceクラス
NSURLRequestクラス
NSUserDefaultsクラス
NSValueクラス

UIActionSheetクラス
UIActionSheetDelegateプロトコル
UIActivityIndicatorViewクラス
UIAlertViewクラス
UIAlertViewDelegateプロトコル
UIApplicationクラス
UIApplicationDelegateプロトコル
UIBarButtonItemクラス
UIBarItemクラス
UIButtonクラス
UIColorクラス
UIControlクラス
UIDatePickerクラス
UIDeviceクラス
UIEventクラス
UIFontクラス
UIGestureRecognizerクラス
UIImageクラス
UIImageViewクラス
UIKit Function
UILabelクラス
UINavigationControllerクラス
UINavigationItemクラス
UIPickerViewクラス
UIPickerViewDataSourceプロトコル
UIPickerViewDelegateプロトコル
UIPinchGestureRecognizerクラス
UIResponderクラス
UIScreenクラス
UIScrollViewクラス
UISearchBarクラス
UISearchBarDelegateプロトコル
UISegmentedControlクラス
UISliderクラス
UISwipeGestureRecognizerクラス
UISwitchクラス
UITableViewクラス
UITableViewCellクラス
UITableViewControllerクラス
UITableViewDataSourceプロトコル
UITableViewDelegateプロトコル
UITapGestureRecognizerクラス
UITextFieldクラス
UITextFieldDelegateプロトコル
UITextInputTraitsプロトコル
UITextViewクラス
UITextViewDelegateプロトコル
UIToolbarクラス
UITouchクラス
UIViewクラス
UIViewControllerクラス
UIWebViewクラス
UIWebViewDelegateプロトコル
UIWindowクラス

AVAudioPlayerクラス
AVAudioPlayerDelegateプロトコル

CADisplayLinkクラス
CAEAGLLayerクラス
CALayerクラス

CGAffineTransform
CGBitmapContext
CGColor
CGColorSpace
CGContext
CGGeometry
CGImage
CGPath

EAGLContextクラス
EAGLDrawableプロトコル

Foundation Constants
Foundation Data Types
Foundation Functions

MPMediaItemクラス
MPMediaItemArtworkクラス
MPMediaPlaylistクラス
MPMediaPropertyPredicateクラス
MPMediaQueryクラス
MPMusicPlayerControllerクラス

Randomization Services

System Sound Services
Amazon


OpenGL ES
SQLite
Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Visitors
QR Code
QR