美文网首页
OC/swift图形化撸多语言国际化本地化的key,并且能提示和

OC/swift图形化撸多语言国际化本地化的key,并且能提示和

作者: 逆风启航_ | 来源:发表于2018-12-24 21:18 被阅读0次
    问题:我们开发iOS,在撸多语言国际化代码的时候,为啥获得的心流会更少呢?

    原因是我们在写国际化代码时候,创建key的工作太繁琐了,要频繁来回切换不同的文件,消耗着我们的注意力,根本没法愉快的撸代码,所以很难获得心流快感。

    解决

    其实这些繁琐又机械化的事情就应该交给脚本来着,我们就只要专心写我们代码的逻辑就好了。那好,我们来写一个脚本应用:Localize-Key

    这个脚本在OC项目生成使用的静态字符串,如:

    /// 马上邀请的按钮文案
        static NSString * const LocalizeKey_invite_buttonTitle = @"invite_buttonTitle";
    

    在swift项目会生成enum枚举,还有子枚举,如:

    /**#LocalizeKey*/
    enum LocalizeKey: String {
    
    /*#keys-Localize*/
        /// Invalid key. Never use
        case invalidKey = "invalidKey"
        case buttonTitle = "buttonTitle"
        case toolbarTitle1 = "toolbarTitle1"
        //case toolbarTitle2 = "toolbarTitle2"
        //case toolbarTitle3 = "toolbarTitle3"
        case toolbarTitle4 = "toolbarTitle4"
        case haha = "haha"
    /*#end-keys-Localize*/
    
    
        /**#home*/
        enum home: String {
    
        /*#keys-home*/
                case title = "home_title"
                //case titleLabel = "home_titleLabel"
                case wow = "home_wow"
        /*#end-keys-home*/
    
        /*#end-home*/
        }
    
    
    使用
    //OC中的使用
    NSString * str = NSLocalizedStringFromTable(LocalizeKey_invite_buttonTitle, @"demo", nil);
    
    //在swift中的的使用
    let str = NSLocalizedString(LocalizeKey.home.title.rawValue, tableName: "Home", comment: "")
            
    //这里只是简单的介绍使用而已,当然你们可以自行扩展或使用三方的库
    
    安装

    在项目里https://github.com/CoconutGZ/Localize-Key有个安装包Localize Key.dmg下载回来安装到电脑上。

    打开后界面如下: 20181224-174021.png

    说说这个界面:

    • string file:就是国际化资源.strings文件的路径.
    • output file:是要生成key的路径,是.h或.swift文件。也可不填,不填会自动在项目里生成的,如果项目里没有生成过建议不用填。
    • subset:子集,可以用来对key进行分类,方便管理和使用。
    • language:输出的语言。如果填写了output file这里会自动选上的。
    • key:就是编程时候方便使用的key。不一定是strings文件上的key哦,程序内部可能会转换的,不过我们可以不用管转换的。
    • value:就是strings文件里的要显示的字符串。
    • remark:提示的注释,写代码的时候有提示的。
    • checkout:就是从.strings文件里导出生成.h或.swift文件上的key。当你更改了.strings文件后也可以使用这个功能进行同步。比如你在。string文件上注释掉了某个键值对,同步后输出的文件也会相应的注释掉。
    • insert:新增一个key,同时会添加到.strings文件 和 输出的文件。
    使用

    1、如果项目的.strings文件已经有些键值对也里面了(也就是不是新建的),那我们可以使用checkout导出同步功能,先把已经存在的键值对生成方便我们使用的key。下面的是使用的例子:

    • 打开我们的项目,也打开Localize-Key
    20181224-183751.png
    20181224-184221.png
    20181224-194710.png
    MG15.png
    MG16.png
    20181224-200134.png
    20181224-200802.png
    MG17.png
    20181224-201546.png
    MG19.png

    2、接下来,我们演示一下增加新的key。还是用这个项目。


    20181224-202642.png
    MG20.png
    20181224-203044.png
    MG21.png

    3、subset的分类功能。


    20181224-203757.png
    MG22.png
    20181224-204317.png
    二、在swift里的使用:

    1、在swift里的使用和oc流程的一样的,就是在选择语言上选择swift而已。


    20181224-205155.png
    20181224-205025.png
    20181224-210059.png
    20181224-210712.png
    如果有问题,请给我留言。

    相关文章

      网友评论

          本文标题:OC/swift图形化撸多语言国际化本地化的key,并且能提示和

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