iOS学习之NSLocale

本地化封装了关于语言,文化以及技术约定和规范的信息。用于提供于用户所处地域相关的定制化信息和首选项信息的设置。通过获取用户的本地化信息设置,我们可以为用户提供更加友好人性化的界面设置,包括更改更改应用程序的界面的语言,货币类型,数字,日期格式的格式化,提供正确的地理位置显示等等。IOS内置为应用程序的开发提供了很好的本地化机制,良好的本地化意味着应用程序可以为更多的用户提供服务。其中NSLocale类的的主要作用便是用来封装本地化相关的各种信息,下面简单列举下NSLocale的一些方法,但NSLocale更多是使用在对数字,时间日期本地化的处理的过程。

1.创建本地化对象

// 根据本地标识符创建本地化对象
NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
// 当前用户设置的本地化对象
[NSLocale currentLocale]

2.获取系统本地化信息

// 获取系统所有本地化标识符数组列表
[NSLocale availableLocaleIdentifiers] ;
// 获取所有已知合法的国家代码数组列表
[NSLocale ISOCountryCodes] ;
// 获取所有已知合法的ISO货币代码数组列表
[NSLocale ISOCurrencyCodes] ;
// 获取所有已知合法的ISO语言代码数组列表
[NSLocale ISOLanguageCodes] ;
 // 通用的货币编码
 NSArray *commonISOCurrencyCodes=[NSLocale commonISOCurrencyCodes];

3.获取当前系统设置语言的标识符

[[NSLocale currentLocale] localeIdentifier];

等价于
[[NSLocale currentLocale] objectForKey:NSLocaleIdentifier];
4.获取本地化对象的具体内容

NSLocale *local = [NSLocale currentLocale];
[local objectForKey:NSLocaleIdentifier];
[local objectForKey: NSLocaleLanguageCode];
key值参见NSLocale Calendar Keys

5.获取当前语言的排版方向和字符方向

[NSLocale lineDirectionForLanguage:[[NSLocale currentLocale] objectForKey:NSLocaleLanguageCode];
[NSLocale characterDirectionForLanguage:[[NSLocale currentLocale] objectForKey:NSLocaleLanguageCode] ;

6.获取用户的语言偏好设置列表,该列表对应于IOS中Setting>General>Language弹出的面板中的语言列表。

[NSLocale preferredLanguages]

第一个元素即为当前用户设置的语言

7.监听用户本地化设置的消息

[[NSNotificationCenter defaultCenter] addObserver:self                                         selector:@selector(localChangedHandler:)                                             name:NSCurrentLocaleDidChangeNotification object:nil];

8.以本地化方式获取国际化信息的显示名称

NSLocale *curLocal = [[NSLocale alloc]initWithLocaleIdentifier:@"zh-Hans"] ;
NSLog(@"%@",[curLocal displayNameForKey:NSLocaleIdentifier value:@"fr_FR"] );// 法文(法国)curLocal = [[NSLocale alloc]initWithLocaleIdentifier:@"zh-Hant"] ;
NSLog(@"%@",[curLocal displayNameForKey:NSLocaleIdentifier value:@"fr_FR"] );//法文(法國)

9.语言方向枚举
NSLocaleLanguageDirection

These constants describe the text direction for a language. Used by the methodslineDirectionForLanguage: and characterDirectionForLanguage:.

enum {

   NSLocaleLanguageDirectionUnknown = kCFLocaleLanguageDirectionUnknown,// 未知

   NSLocaleLanguageDirectionLeftToRight = kCFLocaleLanguageDirectionLeftToRight,

   NSLocaleLanguageDirectionRightToLeft = kCFLocaleLanguageDirectionRightToLeft,

   NSLocaleLanguageDirectionTopToBottom = kCFLocaleLanguageDirectionTopToBottom,

   NSLocaleLanguageDirectionBottomToTop = kCFLocaleLanguageDirectionBottomToTop

};

10.预定义key键
NSLocale Component Keys

NSLocale 的组成key

NSString * const NSLocaleIdentifier;// 标识

NSString * const NSLocaleLanguageCode;// 语言码zh

NSString * const NSLocaleCountryCode;// 区域码

NSString * const NSLocaleScriptCode;// The key for the locale script code.

NSString * const NSLocaleVariantCode;// The key for the locale variant code.

NSString * const NSLocaleExemplarCharacterSet;// 元字符集 NSCharacterSet

NSString * const NSLocaleCalendar;// 当地日历  NSCalendar

NSString * const NSLocaleCollationIdentifier;// The key for the collation associated with the locale.

NSString * const NSLocaleUsesMetricSystem;// 是否使用公制 NSNumber

NSString * const NSLocaleMeasurementSystem;// 当地度量单位

NSString * const NSLocaleDecimalSeparator;// 小数点符号

NSString * const NSLocaleGroupingSeparator;// 分组符号

NSString * const NSLocaleCurrencySymbol;// 货币符号

NSString * const NSLocaleCurrencyCode;// 货币代码

NSString * const NSLocaleCollatorIdentifier;// 具体语言码??zh-Hans

NSString * const NSLocaleQuotationBeginDelimiterKey;// 引号开始符号

NSString * const NSLocaleQuotationEndDelimiterKey;// 引号结束符号

NSString * const NSLocaleAlternateQuotationBeginDelimiterKey;// 单引号开始符号

NSString * const NSLocaleAlternateQuotationEndDelimiterKey;// 单引号结束符号

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;// ISO8601历法,标准还没制定?

上面的可用来创建NSCalendar或者由NSCalendar的标识函数得到.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值