美文网首页iOS高级开发iOSiOS菜鸟到大神
【iOS 国际化】如何把国际化时需要3天的工作量缩减到10分钟

【iOS 国际化】如何把国际化时需要3天的工作量缩减到10分钟

作者: Lefe | 来源:发表于2017-08-24 14:39 被阅读2140次

    痛点

    如果 APP 要求国际化,其实添加国际化文字是很头痛的一件事。对于一个大型
    APP 来说,更是麻烦,而且工作量很大。通常替换国际化文字时,产品会给我们一个 Excel 表:

    excel.png

    我们需要做的事,就是把 Excel 表中的文字,添加到下面各个文件中:

    locailzable.png

    如果有 2000 条翻译,有 8 国语言需要添加,可想工作量有多大。

    解决办法

    我们目前手里只有汉语国际化文件,这里称为 source.strings 文件,还有一份全部翻译好的文件,这里称为 language.xlxs

    source.strings 文件中的内容如下:

    "5-6_event" = "您已忽略了该事件";
    "5-6_customer" = "账号已被封停";
    "5-6_version" = "请更新版本后再申请提现";
    "5-6_update" = "您的当前版本过低,请立即升级";
    

    language.xlxs 文件中的内容如下:

    屏幕快照 2017-08-24 下午2.14.14.png

    我们想做的就是把 language.xlxs 文件的内容转换成类似:

    "5-6_event" = "You have missed this event";
    "5-6_customer" = "account stop,please contact Customer Services";
    "5-6_version" = "Please update new version before submitting withdrawal application";
    "5-6_update" = "Please update to new version, your current version is outdated";
    
    "5-6_event" = "귀하께서 해당사항 홀시 ";
    "5-6_customer" = "계좌번호가 사용정지되어, 애프터 서비스와 연락할것. 
    "5-6_version" = "새로운 버전으로 갱신후에 다시 인출 신청할 것. ";
    "5-6_update" = "귀하의 현재 버번이 너무 낮아, 즉시 승급할것. ";
    

    这样的文件,然后把它导入到对应的国际化文件中

    locailzable.png

    这样就算完成了。

    观察发现,这些都有规律可循,我们完全可以使用一个工具来做这些事,而不是手动。

    TCZLocalizableTool

    TCZLocalizableTool 可以帮助我们完成这些事,当然某些地方可能需要手动改一下。 如果觉得能帮到你,给个星星支持一下。它主要原理为:

    process.png

    以汉语为例说明一下 TCZLocalizableTool 工作流程:

    • source.strings 其实是一个 plist 文件,可以把它转换成 key-value 的形式,这样我们可以拿到自己定义的 key 和 value;
    • 解析 Excel 文件 language.xlxs 一般需要把它转换成 language.csv 文件;
    • 读取 language.csv 文件中的每个值的时候,根据 source.strings 转换后的字典,可以找到对应的 key 和 value;
    • 把结果导出为 csv 文件。

    最终结果如图:

    Simulator Screen Shot 2017年8月24日 下午2.49.39.png

    推荐阅读

    搭建微信小程序服务器
    Promise
    微信iOS数据库是什么样的

    ===== 我是有底线的 ======
    喜欢我的文章,欢迎关注我的新浪微博 Lefe_x,我会不定期的分享一些开发技巧

    相关文章

      网友评论

      • 785c52f271d5:自己写个小脚本
      • 君赏:和我做的软件一样
        https://github.com/josercc/LocalizedCSV
        而且提取 CSV 是按照逗号分割的如果自己的值就有逗号 就会分割出现问题
      • Ko_Neko:没看懂啊。。。
        Lefe:@Ko_Neko 再看一遍:smile:
      • sunLefe:终于不用一个一个的替换了,省了很多时间
      • NickLin:可以在 xlxs 寫函數,把文字拼湊起來,然後複製貼上到相對應語言的檔案,這樣應該會更快一點
        dbcb81b33e1f:@NickLin vba程序吧,其实我是直接在语言xls添加几列,然后写上“= 等符号shift一拖到底。。。复制到xcode后,然后全选替换空格。。。
        NickLin:欄位裡面就可以寫 = ...... 然後你依據欄位帶入就可以用得到你要放進相對應語言的檔案的內容,複製貼到檔案裡面就可以了
        Lefe:@NickLin xlxs 中没有 key,xlxs 中是咋么写函数的呢?

      本文标题:【iOS 国际化】如何把国际化时需要3天的工作量缩减到10分钟

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