iOS开发-功能篇-国际化|NSUserDefaults

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

/*=========================================软件国际化================================================*/

1.简介:

软件国际化主要是在软件中添加多种语言,以实现不同国家的人群需求。

主要的应用方式有两种:1.根据系统的语言环境自动进行切换;2.人为的添加按钮等进行主动切换。

目前实现的主要方法有两种:1.Xcode可视化界面添加Localizations的操作。2.利用NSLocalizedString配合genstrings进行实现。这里主要介绍第二种方法。

2.实现:

2.1 NSUserDefaults:适合存储轻量级的本地数据,比如要保存一个登陆用户名、密码、语言环境之类的,使用NSUserDefaults是首选。

NSDictionary* defaultsee = [[NSUserDefaults standardUserDefaults] dictionaryRePResentation];

NSLog(@"Defaults: %@", defaultsee);//利用字典查看一下所有NSUserDefaults的设置

2.2 NSLocalizedString:基础的国际化函数,查看一下定义

#defineNSLocalizedString(key, comment) \[[NSBundle mainBundle] localizedStringForKey:(key) value:@""table:nil]//key-value,comment:注释

对上述函数进行拓展自定义,语言包存放在en.lproj(英),zh-Hans.lproj(汉)等,以key-value方式进行获取。

#defineCustomLocalizedString(key, comment) \[[NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"appLanguage"]] ofType:@"lproj"]] localizedStringForKey:(key) value:@""table:nil]//利用key取出相应地object

2.3 利用genstrings生成相应语言的.lproj语言文件Localizable.strings

genstrings -o ~/.../zh-Hans.lproj *.m//-o 生成的目标文件夹,扫描当前目录下的所有.m文件

genstrings -o ~/.../en.lproj *.m

2.4 然后在相应地Localizable.strings文件中添加"登陆" = "login";等

[[NSUserDefaults standardUserDefaults] setObject:@"zh-Hans"forKey:appLanguage];//添加语言文件NSArray *array = [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"];//获取系统当前的语言NSString *currentLanguage = [array objectAtIndex:0];

注意:1.生成的Localizable.strings文件名没有标识,所以在生成文件处可以加文件夹或者添加注释区分

2.一定要扫描所有需要国际化的.m文件

3.NSUserDefaults只是起到存储属性值和路径作用,利用类似字典方式获取数据

/*===========================================NSUserDefaults详解==========================================*/

1.简介:NSUserDefaults对象是用来保存应用程序相关的偏好设置,配置数据等等,主要用来恢复基础设置,记录密码和系统的一些语言和键盘等默认信息。数据则存放在<UUID for your App>\Library\Preferences\<your App"s bundle ID>.plist的文件中

2.功能:

2.1 NSUserDefaults只能存放5种数据格式:NSString, NSNumber, NSDate, NSArray, NSDictionary.

2.2 查看当前所有的配置数据:

NSDictionary* defaultsee =[[NSUserDefaults standardUserDefaults] dictionaryRepresentation];

NSLog(@"Defaults: %@", defaultsee);

2.3 单例模式: +(NSUserDefaults *)standardUserDefaults//获取当前类的实例

2.4 key-value模式:

-(void)setObject:(id)value forKey:(NSString *)defaultName;//设置数据- (id)objectForKey:(NSString *)defaultName;//取数据

2.5 因为NSUserDefaults是持久化数据存储方法,重启设备并不能将设置在里面的数据进行更改,只能通过两种方式进行删除:

1.删除沙盒(重装)

2.-(void)removeObjectForKey:(NSString *)defaultName;//函数方法

2.6 其他:- (NSDictionary *)dictionaryRepresentation;//利用字典进行配置查看

- (BOOL)synchronize;//数据同步

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航