iOS应用内部切换语言,不跟随系统3.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
iOS应用内部切换语言,不跟随系统3

网络上关于iOS国际化的文章很多,但基本上都是基于跟随系统语言的国际化,笔者就不赘述了-0 – 今天要讲的是不跟随系统的切换语言版本方案,即程序内部的切换语言版本方案。 一、总则: 应用内部语言不跟随系统语言,由应用自己进行控制,通过配置多个语言文件,根据用户的选择动态获取不同文件夹下的语言文件,显示在界面上。 最后把用户选择的语言持久化到本地,下次运行时读取。 二、应用内的国际化 1、新建工程 新建Single View Application工程,取名为MyInternational。 2、添加多语言文件 我们选择使用自己的语言文件,而不是系统的localizable.string,因为在项目开发使用svn时,多人操作同一文件可能会造成冲突。 在Resource中添加新的Strings File: 取名为hello(记得Targets要勾选项目) 新建完成之后会生成hello.string文件,把它拖进Supporting Files里。 3、配置hello.string国际化 首先配置刚才的hello.string文件。 点击hello.strings文件,点击圈中的Make localized(本地化)。 只有English,没关系点击确定。 4、配置项目国际化 网络上很多配置方法不靠谱,因为新版的Xcode位置“+”号的位置换了。 这里教大家正确的方法,点击项目—选择Project—选择Info—点击“+”号。 点击“+”号后,添加中文,当然也可以添加其他的语言。 弹出对话框,infoPlist是配置系统的国际化文件,可以配置图标之类的多语言环境,不属于本文范围。 nib文件看需要配,这里选择不配。 配置完成之后,再看hello.string便分成了两个文件。 完成上面的四步便完成了项目内的多语言环境配置,下面来看看代码怎么写。 5、添加需要的字符串 分别在hello.strings(English)与hello.strings(Chinese)里面添加对应语言的字符串。 字符串的格式为“key”=“value”;键值对(别忘记分号!) 接下来配置项目需要的字符串,一个用于lable的显示,一个用于button的显示。 hello.strings(English) invite = hello atany,come to join in us!; buttonInfo = change Language; hello.strings(Chinese) invite = 你好 atany,快来加入我们吧!; buttonInfo = 切换语言; 6、看看流程 实现思路: 在初始化首个Controller的时候,进行应用语言的加载。首次加载因为userLanguage(应用内语言)不存在,则使用系统当前的语言,保存到userlanguage,下次直接读。读出来之后,获取到对应文件路径,得到文件的索引,储存到工具类InternationalControl的静态变量bundle中。 其他地方需要用字符串时,用工具类获得bundle即可读取相应文件中的字符串。 7、新建工具类InternationalControl InternationalControl.h #import Foundation/Foundation.h #import UIKit/UIKit.h @interface InternationalControl : NSObject +(NSBundle *)bundle;//获取当前资源文件 +(void)initUserLanguage;//初始化语言文件 +(NSString *)userLanguage;//获取应用当前语言 +(void)setUserlanguage:(NSString *)language;//设置当前语言 @end InternationalControl.m 1)创建静态变量bundle,以及获取方法bundle(注:此处不要使用getBundle)。 static NSBundle *bundle = nil; +(NSBundle *)bundle{ return bundle; } 2)初始化方法: userLanguage储存在NSUserDefaults中,首次加载时要检测是否存在,如果不存在的话读AppleLanguages,并赋值给userLanguage。 +(void)initUserLanguage{ NSUserDefaults *def = [NSUserDefaults standardUserDefaults]; NSString *string = [def valueForKey:@userLanguage

文档评论(0)

155****8706 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档