原创:iOS 不需重新加载手机资源文件切换系统语言(switch language without reload all resources in iPhone,just reload your own app’s resource)

By | 2013年11月14日

一些App在iOS中只有一种语言,当有两种甚至更多种语言的时候(这就是所谓的多国语言版,一些公司经常需要制作多国语言App),需要从一个语言切换到另外一种语言时,大部分的App只能通过“设置->通用->多语言环境->语言”中进行更改。

这个更改是需要重新加载手机里所有app的资源文件的,系统开销非常大,而且当你手机中的app数量非常庞大的时候,重新加载的时间几乎无法忍受,这里提供一个非常好用、方便、快捷、无需加载所有app资源文件的方法。具体思路如下:

===============

重写NSLocalizedString等系统宏定义,为什么要重写?你不重写切换语言你试试看。。。

系统的NSUserDefaults中取AppleLanguages这个key,重新setObject后是需要重启滴。。。

所以需要重新定义一个key另作他途。

读取需要设置的语言的各类,然后将需要设置成主语言app的bundle下的资源文件替换成当前语言的资源文件,最后重新刷新界面即可。

以下是部分源代码,仅供参考:

#define ARLocalizedString(key, comment) \

[[ARLocalization shared] localizedStringForKey:(key) value:@"" table:nil]

 

 

// switch languages by this way

ARLocalizationSetLanguage(@"en");     

ARLocalizationSetLanguage(@"zh-Hans");

 

如果您还不清楚可以到苹果渔迷的淘宝店上去看看,对应源代码链接:http://item.taobao.com/item.htm?id=36114974241

 

本文中提到的所有代码,均可以在苹果渔迷淘宝店中找到,而且更加齐全,功能更加完善,自主版权,已支持最新iOS7.0以上版本。

===============

版权声明:

本站所有关于iOS技术的文章皆为原创,如需要转截,请注明出处。如果你有疑惑,可以到苹果渔迷的淘宝店挖挖宝贝,里面或许有你想要的东西。

苹果渔迷淘宝店:http://appfish.taobao.com

主营iOS软件开发服务,代理申请iOS开发者帐号(个人、公司、企业),代理申请邓白氏编码。顺便还卖一些小渔具,有需要的朋友可以进来苹果渔迷的淘宝店看看。