iOS国际化总结

作者: 水之飞亦 | 来源:发表于2019-10-23 13:53 被阅读0次

    相信朋友们都知道关于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一键管理,现在再换回手动管理,一定会有很多问题。。。

    相关文章

      网友评论

        本文标题:iOS国际化总结

        本文链接:https://www.haomeiwen.com/subject/cgzqvctx.html