新浦京81707con > 功能介绍 > Swift多语言版本的创建,已有项目实现本地化

原标题:Swift多语言版本的创建,已有项目实现本地化

浏览次数:168 时间:2020-04-15

1、创建InfoPlist.string文件2、选中文件点击右侧菜单栏3、点击Localize..4、选中Base与English5、在InfoPlist.string中 :CFBundleDisplayName="英文名";

筛选项目中的汉语字符串

既然要替换项目中的中文字符串,那么就需求我们找到那么些中文字符串,然后再将字符串替换来大家定义的宏。提起相称查找首先想到的是正则表明式,大家可以在Xcode中,输入 (@"[^"]*[u4E00-u9FA5] [^"n]*?")s* 就可以,切记find 前面包车型客车选项要筛选 Regular Expression , 暗中认可选中的是Text, 如图

图片 1

14797799365040.png

何以运用收取的华语字符串?

1、选中文件点击右侧菜单栏2、点击Localize..3、选中Base与English

怎么样收取识别到的汉语字符串?

我们早就掌握怎么鉴定识别项目中的字符串了,可是什么抽取来使用啊? 那就须求遍历项目中负有的钦定后缀(e.g: .h、.m等)的文书,然后使用正则表达相称全体应用到的普通话字符串,并写入文件中。为了方便起见,小编将啊神在Github中开源的二个Mac用户端小应用贴在后面,该工具可直接将入选的种类中具备的中文字符串,导出到钦点的路径下;该使用还足以选取对于再一次现身的汉语字符串进行管理,以至仍可以够将中文字符串导出为复杂性; 小应用更值得关心的是它导出的文书,能够一向拿来作为多语言文件中的key=value 使用,特别轻便,钟爱的能够去下载看看小应用运转图如下:

图片 2

14797799805328.jpg

什么利用抽出的中文字符串?

早就得到收取的粤语字符串文件,那个文件是足以平昔拿来用做多语言文件使用的,工具只可以转变来汉语或复杂,如需增加其余语言,就需重新翻译了:

图片 3

14797800039786.png

如需设置任何语言,如英文,那时候能够将导出的文书拷贝一份,纠正图中 = 后面的 value 切记别的格式别乱改,以免keyvalue对不上号。 一切联系伏贴后,等翻译把公文给您后,直接将文件中的内容,复制到多语言文件的印度语印尼语文件中就可以;

哪些将项目中的中文字符串实行调换

多语言文件已经安顿完结,到了此间,那么难点来了,大家只是抽取项目中央银行使的华语字符串,然后将字符串封装成多语言文件,可是
并不曾大功告成替换(记得备份一下),这里我们要求接受Xcode 自带的字符串替换来效,首先还需求利用正则表明式 (@"[^"]*[u4E00-u9FA5] [^"n]*?")s* ,相配出档期的顺序中应用的华语字符串,然后在对其开展轮换处理。

#define PALocalizedString(key) [[PALocalizable bundle] localizedStringForKey:key value:nil table:nil]

以上是宏的概念,大家需求将字符串进行替换到宏的行使,如:
 替换前是这么的_lbl.text = @"多语言";
 替换后_lbl.text = PALocalizedString(@"多语言")

轮流准则如图:

图片 4

Snip20170102_9.png

此番当选的是Replace, 不是Find。按图中所示,选拔结束后,点击ReplaceAll, 会出来一个弹框,不用管它直接接轨,就可以,然后你在看档案的次序中央银行使到的华语字符串是不是业已替换掉了,到此地基本上海大学功告成了;

注意事项
1、替换后,或许会微微地点报错,command b编写翻译下,看看报错的地点,举行对应改善就可以。报错原因:a. 也许是你定义的常量字符串; b. 可能是概念的宏; c. 可能是替换后并未有换行; 基本上报的荒诞很分明,进行更换就可以;

内容源自:啊神的技艺博客

遗留难点

附:神速导出项目中粤语字符

** 某个时候项目已经终止只怕曾经迭代大多少个本子了,假使那时候要兑现本地化,那该怎么管理吧。**

更迭准绳如图:

/* MDHomeViewController.swift */"今日"="Today";"明日"="Tomorrow";"本周"="Weak";"本月"="Month";"本年"="Year";

 "[^"]*[u4E00-u9FA5] [^"n]*?"(OC 中为@"[^"]*[u4E00-u9FA5] [^"n]*?")调用 NSLocalizedString 方法 比如:NSLocalizedStringfunc NSLocalizedString(str:String) -> String{ return NSLocalizedString(str, comment: str)}记得以前是可以直接一键替换的 ,现在不知道是Xcode版本的问题还是什么 一直不成功,有知道的可以评论。我会及时更新,谢谢大家!

早就取得取出的中文字符串文件,这么些文件是能够直接拿来用做多语言文件使用的,小应用导出的文本,只好够用于汉语以至犬牙交错多语言文件,而对此任何的语言,就需求你拿着导出的文书,找你们集团的翻译人士,进行翻译; 拿繁体版来譬喻,导出来的复杂性文件如下(收留笔者App导出的文件):

图片 5图1图片 6图2图片 7图3

iOS 多语言版本的费用(二)中大家兑现了何等让顾客本人去切换系统语言的法力,我们还写了Demo以供帮助学习;但是,继以上两篇文章都是创立在品种刚刚运维或运转不久,项目中设有的汉语字符串还不是过多,手动改起来也还足以承当; 那么难题来了,若是项目早已落成或然曾经迭代多少个本子了,那该怎么落到实处了?手动改起来也不太现实,耗费时间耗力不讨好的手动,在那就不用思虑了。 不让构思,是因为自个儿有更简便快捷高效的主意,让自己慢慢与您道来;

图片 8BEC8C7B8-FF73-4A1F-AA3D-9E967E16556F.png

此次当选的是Replace, 不是Find。按图中所示,选取截止后,点击ReplaceAll, 会出来二个弹框,不用管它一直接轨,就可以,然后你在看档案的次序中行使到的华语字符串是或不是曾经替换掉了,到此地基本上旗开马到了;

Localizable.strings内容格式如下:

#defineASLocalizedString(key)[NSStringstringWithFormat:@"%@",[[NSBundlebundleWithPath:[[NSBundlemainBundle]pathForResource:[NSStringstringWithFormat:@"%@",[[NSUserDefaultsstandardUserDefaults]objectForKey:@"appLanguage"]]ofType:@"lproj"]]localizedStringForKey:(key)value:niltable:@"ASLocalized"]]

图片 91610415-af673e2626489737.jpg

图片 10

Localizable.strings内容格式如下:

如上是宏的定义,大家须要将字符串实行交流成宏的应用,如:

大家曾经知道什么样识别项目中的字符串了,不过怎么抽出来使用啊? 那就须求遍历项目中有所的钦定后缀(e.g: .h、.m等)的文书,然后使用正则表明相称全数应用到的国语字符串,并写入文件中。为了有助于起见,小编将此进度写了一个Mac顾客端小应用,可间接将入选的体系中具有的国语字符串,导出到内定的路子下;该应用还是能够筛选对于再一次现身的华语字符串实行拍卖,以至还是能将中文字符串导出为复杂性; 小应用更值得关怀的是它导出的文件,能够一向拿来作为多语言文件中的key=value 使用,特简单,合意的能够去下载看看, 含有源码的哦;小应用运维图如下:

既然要替换项目中接纳到的中文字符串,那么前提就务须求先找到那一个个字符串,然后将那几个字符串,替换来大家定义的, 为了替换方便,可将这一个字符串本身作为key, 这里不晓得的没什么,上面笔者还有大概会讲到。 既然是识别汉语字符串,那也正是说在档案的次序文件中开展相配查找,谈到卓越,那就要求正则表明式了,用正则表明式相配Xcode中的使用的华语字符串,使用(@"[^"]*[u4E00-u9FA5] [^"n]*?")s*就可以, 张开你的Xcode 试试看,切记find 前面包车型客车选项要选用Regular Expression, 默许选中的是Text, 如图

本文由新浦京81707con发布于功能介绍,转载请注明出处:Swift多语言版本的创建,已有项目实现本地化

关键词: 新浦京81707con 版本 多语言 Swift iOS杂记

上一篇:个人整理,ios基本控件

下一篇:没有了