相信朋友们都知道关于iOS程序的国际化,即使没有做过,那么也总归是知道怎么做。确实,也很简单,但是呢,实际去做的过程还是有很多需要注意的地方。
下面就结合自己的实际情况,简单总结一下,详细步骤就不聊了,教程很多。
语言的国际化分为系统语言切换和程序内切换语言,这两种方式实际在做的时候,第二种相对复杂一些,这里不是要说的重点。
总的来说国际化分为5个部分:
- 1.代码部分,
- 2.stroyboard(xib),
- 3.info.plist,
- 4.资源文件(主要是图片)
- 5.第三方库。
主要工作在1和2,难点在5。然后就每个点说一下:
代码国际化
如下图选中project->Info->Localizations,然后点击"+",添加需要国际化/本地化的语言,如下图(默认需要勾选Use Base Internationalization):
添加国际化语言新建一个Localizable文件(Strings File),然后选中,点击右侧Localize...,勾选多语言。
Localize...
生成如下图左侧的文件,然后在每个中编辑所需要要国际化的文字即可,左边key,右边value,以分号分割。
Localizable.strings (Korean)使用
self.phoneTextField.placeHolder = LocalizedString(key: "Login_phoneTextField_placeHolder")
func LocalizedString(key: String?) -> String {
return NSLocalizedString(key ?? "", comment: "")
}
stroyboard(xib)国际化
现在已经不存在什么纯代码写工程了,或多或少的都会用到stroyboard(xib),或者说,百分之六十以上都是stroyboard(xib)。为了一劳永逸,建议大家还是把带有文字的控件都抽出来,然后通过上文的方式来赋值。当然,如果时间紧迫,或者想要偷懒的话,有些固定不变的字符串,可以通过选中需要国际化的stroyboard(xib),点击右侧Localize...,然后在生成的国际化文件中去设置每一个值。
xib 简体中文xib 韩文
需要注意的是,stroyboard(xib)一旦生成,国际化文件中对应的键值,text等便不在变化。
以后如果修改stroyboard(xib)的话,国际化文件中的值是不会跟着变化的,需要手动去增删改,
其中控件对应的ObjectID可以在stroyboard(xib)中查看。
info.plist国际化
这里主要是app名称,还有一些隐私权限的说明等等
做法与一类似,也是新建一个InfoPlist.strings的文件,然后在生成的国际化文件中写需要的键值对就好了。
info.plist国际化文件- 注意
直接选中info.plist,然后点击右侧的localize...生成文件,在里边修改无效,切记,
还有就是上文提到的Localizable.strings,InfoPlist.strings文件,名称不可乱起!
资源文件国际化
主要就是图片,那么以图片为例,最好是能以共用为好,涉及到文字的,通过代码来写,不要为省事儿,有些特殊效果的文案就切图,这也是我们经常谈的问题。
但是有些特殊图片,程序没法儿写的,那么就必须用图片了。
这时,国际化怎么做呢,我们的第一想法肯定是不同语言显示不同的图片不就好了,确实是,我们可以通过不同的语言去选择所需图片。
其实还有一种方法,但是这种方法不推荐使用。这种方式的图片不是通过assets来管理的,而是直接加入的工程项目中,点击右侧Localize...,然后在生成的国际化文件中去替换对应的图片。
第三方库国际化
一些知名的第三方一般会支持中英,如果不支持国际化,或者想要更多语言支持,那只能自己来动手了。通过GitHub下载资源,加入到自己项目中。然后修改其文字的赋值方式为第一种。
说起来很简单,难点在于,如果第三方库比较多的话,这就是一个大工程,很容易遗漏,或者修改的时候出问题,然后还不知道哪里出来问题。另外就是移动开发到现在都是傻瓜式开发了,通过cocoapods一键管理,现在再换回手动管理,一定会有很多问题。。。
网友评论