NSLoale类返回本地化信息,主要体现在"语言"和"区域格式"这两个设置项。有下面几种初始化方法:
1. + (id)systemLocale
返回系统初始本地化信息
NSLocale *locale = [NSLocale systemLocale];
NSLog(@"%@",[[locale objectForKey:NSLocaleCalendar] calendarIdentifier]);
2. + (id)currentLocale / + (id)autoupdatingCurrentLocale
这两个类方法都将返回当前客户端的本地化信息,区别在于:currentLocale取得的值会一直保持在cache中,第一次用此方法实例化对象后,即使修改了本地化设定,这个对象也不会改变。而使用autoupdatingCurrentLocale,当每次修改本地化设定,其实例化的对象也会随之改变。
下面的代码演示了区别所在,假设初始本地化信息为en_US,先用这两个函数分别初始化两个对象,然后修改本地化设定语言为台湾繁体中文,再重新打印这两个对象的信息:
NSLocale *locale1;
NSLocale *locale2;
- (IBAction)doTest:(id)sender
{
locale1 = [NSLocale currentLocale];
locale2 = [NSLocale autoupdatingCurrentLocale];
NSLog(@"%@",locale1.localeIdentifier);//print "en_US"
NSLog(@"%@",locale2.localeIdentifier);//print "en_US"
}
- (IBAction)doAgain:(id)sender
{
NSLog(@"%@",locale1.localeIdentifier);//print "en_US"
NSLog(@"%@",locale2.localeIdentifier);//print "zh_TW"
}
3. - (id)initWithLocaleIdentifier:(NSString *)string
用标示符初始化本地化信息
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];
NSString *strSymbol = [locale objectForKey:NSLocaleCurrencySymbol];
NSLog(@"%@",strSymbol);
代码用"zh_CN"来初始化对象,然后再打印出对象的货币符号,得到的结果是人民币符号¥
NSLoale常用对象方法与类方法:
1. - (id)objectForKey:(id)key
根据不同的key返回各种本地化信息,例如下面的代码返回了当前货币符号:
NSLocale *locale = [NSLocale currentLocale];
NSString *strSymbol = [locale objectForKey:NSLocaleCurrencySymbol];
NSCalendar *calendar = [[NSLocale currentLocale] objectForKey:NSLocaleCalendar];
2. - (NSString *)displayNameForKey:(id)key value:(id)value
显示特定地区代号下相应键的显示名称:
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];
NSString *str = [locale displayNameForKey:NSLocaleIdentifier value:@"en_US"];
NSLog(@"%@",str);
第一句代码代表以中文来实例化对象,然后得到"en_US"的NSLocaleIdentifier键的显示名称。最后输出的结果是"英文(美国)"