iOS的国际化来说一直都感觉处理起来非常麻烦,也一直想找找到一个比较完美的解决方案来解决国际化问题。之前分享过一篇过于国际化的文章,现再深入分析一下。
因为文章之前写的。原文章已经被更新啦。会在最后更新出来。
一.存在问题
1.官方没有给出一套关于国际化的完美的处理方式。
2.没有适配这种语言的时候不能指定显示其他语言。它会默认选择上一次的语言。
3.大版本更新后,数据更新不兼容之前的版本。
4.添加特定的语言资源文件和代码返回的语言没有对应起来。
二.国际化框架思想
针对上面的这些问题,我是启用了一个plist来处理国际化问题。plist里的key和value做一个对应,如果获取当前的语言和plist对应起来就显示当前的语言,不然就显示指定的语言。
三.实现方式
在特定的语言基础上添加对应的语言包。用NSLocalizedString来获取对应的语言。
获取当前语言
NSArray * allLanguages = [defaults objectForKey:@"AppleLanguages"];
NSString * CURR_LANG = [allLanguages objectAtIndex:0];
判断当前语言是否是要适配的语言