郑州模具设计培训-郑州清新电脑培训学校
郑州ios开发培训ios开发培训项目阶段学习
iOS培训知识点iOS多语言版本开发第二篇中我们实现了如何让用户自己去切换系统语言的功能,郑州ios开发培训ios开发培训还找了Demo以供辅助学习;但是,继以上两篇文章都是建立在项目刚刚启动或启动不久,项目中存在的中文字符串还不是很多,手动改起来也还可以接受; 那么问题来了,如果项目已经竣工或者已经迭代几个版本了,那该如何实现了?手动改起来也不太现实,耗时耗力不讨好的手动,在这里就不用考虑了。 不让考虑,是因为我有更简单快捷高效的方法,让我慢慢与您道来;
如何辨别项目中的中文字符串?
既然要替换项目中使用到的中文字符串,那么前提就必须要先找到这些个字符串,然后将这些字符串,替换成我们定义的宏, 为了替换方便,可将这些字符串自身作为key, 这里不理解的不要紧,下面我还会讲到。 既然是辨别中文字符串,那也就是说在项目文件中进行匹配查找,说到匹配,那就需要正则表达式了,用正则表达式匹配Xcode中的使用的中文字符串,使用(@"[^"]*[u4E00-u9FA5]+[^"
]*?")s* 即可, 打开你的Xcode 试试看,切记find 后面的选项要选择 Regular Ex , 默认选中的是Text, 如图
如何取出识别到的中文字符串?
我们已经知道如何识别项目中的字符串了,但是如何取出来使用呢? 这就需要遍历项目中所有的指定后缀(e.g: .h、.m等)的文件,然后利用正则表达匹配所有使用到的中文字符串,并写入文件中。为了方便起见,我将此过程写了一个Mac客户端小应用,可直接将选中的项目中所有的中文字符串,导出到指定的路径下;该应用还可以选择对于重复出现的中文字符串进行处理,以及还可以将中文字符串导出为繁体; 小应用更值得关注的是它导出的文件,可以直接拿来当做多语言文件中的key=value 使用,非常简单,喜欢的可以去下载看看, 含有源码的哦;小应用运行图如下:
如何使用取出的中文字符串?
已经拿到取出的中文字符串文件,这个文件是可以直接拿来用做多语言文件使用的,小应用导出的文件,只可以用于中文以及繁体多语言文件,而对于其他的语言,就需要你拿着导出的文件,找你们公司的翻译人员,进行翻译; 拿繁体版来举个例子,导出来的繁体文件如下(收留我App导出的文件):
这个繁体文件,可以直接作为繁体多语言使用,如何想要翻译成英文,可以将此文件拷贝一份,交给翻译人员,让其翻译。翻译的时候,你一定要给翻译人员沟通好,让其只翻译value, 也就是图中= 后面双引号中的内容,格式什么的也不要让他乱改,否则容易出现问题,导致key与value对不上号。 一切沟通妥当后,等翻译把文件给你后,直接将文件中的内容,复制到多语言文件的英语文件中即可;
如何将项目中的中文字符串进行替换
多语言文件已经配置完成,到了这里,那么问题来了,我们只是取出项目中使用的中文字符串,然后将字符串封装成多语言文件,但是对于项目中使用的中文字符串依然还是中文字符串,我们还并没有进行替换处理。当然,这一步我们是不能够忘了,由于是替换项目中所有的使用中文字符串,我们还是谨慎为好,首先将你的项目进行备份、备份、备份,非常重要的事情说三篇,切记一定要备份。备份好后,我们就可以开始替换工作了,没有备份的不要往下看了,赶紧备份去;
假设你已经备份好了,你就可以开始替换工作了,前面我们说过让中文字符串自身作为key 进行替换,之所以让其自身作为key, 是因为这样可以大大减轻替换的困难度,而且还有利于代码的可读性,基本上算是保持原有代码;既然要替换项目中的使用中文字符串,就要用到Xcode 自带的字符串替换功能,首先还需要使用正则表达式(@"[^"]*[u4E00-u9FA5]+[^"
]*?")s*,匹配出项目中使用的中文字符串,然后在对其进行替换处理。
由于我们在iOS培训知识点iOS多语言版本开发第二篇中,对取key对应的语言内容,进行了宏的封装, 这里我们可以将匹配到的使用中文字符直接替换成我们定义的宏的使用
#define ASLocalizedString(key) [NSString stringWithFormat:@"%@", [[NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"appLanguage"]] ofType:@"lproj"]] localizedStringForKey:(key) value:nil table:@"ASLocalized"]]
以上是宏的定义,我们需要将字符串进行替换成宏的使用,如:
替换前是这样的_lbl.text = @"我是多语言";
替换后_lbl.text = ASLocalizedString(@"我是多语言")
替换规则如图:
这次选中的是Replace, 不是Find。按图中所示,选择完毕后,点击ReplaceAll, 会出来一个弹框,不用管它直接继续,即可,然后你在看项目中使用到的中文字符串是否已经替换掉了,到这里基本上大功告成了;
遗留问题
1、正则表达式,不懂得可以先照文章里写就行,然后再去学习下,这里有篇《郑州ios开发培训ios开发培训之正则表达式汇总》。
2、ASLocalizedString(key) , 该宏使用面积广,可以将其定义成公共头文件中,然后用时引用头文件即可,也可将文件封装进pch文件中,这样无需使用头文件接口使用
3、替换后,可能会有些地方报错,command + b 编译下,看看报错的地方,进行相应修改即可。报错原因:a. 可能是你定义的常量字符串; b. 可能是定义的宏; c. 可能是替换后没有换行; 基本上报的错误很明显,进行修改即可;
4、在迭代版本中,再次使用中文字符串,就需要使用ASLocalizedString(key), 来代替了,然后再多语言文件中,进行key=value 配置;
相关阅读:iOS培训知识点iOS多语言版本开发第一篇
iOS培训知识点iOS多语言版本开发第二篇
郑州郑州ios开发培训ios开发培训是业界口碑最好iOS培训机构,培训期是四个月左右,四个月脱产班(脱产班顾名思义就是脱离生产,也就是不工作,全身心的学习,也就是全日制的学习),可以免费试听,的老师在行业里有3年以上工作项目经验的。目前iOS开发是非常有前景的职业方向,月薪维持在8k-10k,随着时间及经验的积累薪资待遇也逐渐提升(看个人技术、项目、开发、及管理水平,15k-20k的也大有人在),学生可选择全款学习亦可贷学费方式参加学习,工作之后2-3个月就有能力将学费还清。
郑州清新教育高端IT职业教育品牌,开设有UI总监班、PHP高薪班、WEB前端开发班、HTML5专家班全能班四大精品课程。提供:郑州UI设计培训,郑州PHP培训,郑州web前端开发培训,郑州HTML5培训。一个人一个课程,随到随学,学会为止。以上四门课程周期都是半年。费用郑州最低。欢迎大家前来参观学习。
郑州清新教育培训学校地址:郑州市东风路与文化路交叉口向西200米路北汇宝大厦5楼501(电子大厦对面汇宝大厦)
联 系 人:徐老师 联系固话:0371-632-189-05 联系手机:136-138-415-15
企业Q Q:800-060-586 普通Q Q:859-640-935
郑州清新教育官方网站:http://www.qingxinedu.cn
郑州清新教育论坛:http://www.qingxinedu.org
郑州IOS培训:http://www.iospx.com
郑州JAVA培训:http://www.qxjava.com
郑州JAVA培训班 http://www.zzjava.com
郑州php培训:http://www.qxphp.com
郑州UI培训:http://www.xuexiui.com
郑州SEO培训:http://www.ijingsheng.com
郑州网页设计培训:http://www.0371seo.cn
郑州HTML5培训:http://www.xueweb.cn
郑州Web前端开发培训:http://www.qxwysj.com
QQ咨询
微信咨询