美文网首页
iOS多语言本地化动态修改宏定义脚本(oc版)

iOS多语言本地化动态修改宏定义脚本(oc版)

作者: FateOfKing | 来源:发表于2018-12-27 17:09 被阅读0次

    在开发多语言的时候时候,每次都需要NSLocalizedString(o, nil)显得很麻烦。经过一番搜索发现有大神写了swift版的脚本。地址在这
    我依葫芦画瓢写了一下oc版的。使用方法请移步大神博客看一下。

    Localizable.strings文件路径
    localizableFile="${SRCROOT}/${PROJECT_NAME}/Base.lproj/Localizable.strings"
    touch $localizedFile
    # 生成的文件路径(根据个人习惯修改)
    localizedFile="${SRCROOT}/${PROJECT_NAME}/LocalizedUtils.h"
    # 将localizable.strings中的文本转为变量入一个临时文件
    sed "s/\" = \".*$/;/g" ${localizableFile} | sed "s/.*/& &/" | sed "s/^\"/ #define localized_/g" | sed "s/; \"/ localized(@\"/g" | sed "s/;/\")/g" > "${localizedFile}.tmp"
    
    # 先将localized作为计算属性输出到目标文件
    echo -e "#ifndef LocalizedUtils_h\n#define LocalizedUtils_h\n #define localized(o) NSLocalizedString(o, nil)" > "${localizedFile}"
    # 再将临时文件中的常量增量输出到目标文件
    cat "${localizedFile}.tmp" >> "${localizedFile}"
    # 最后增量输出一个"}"到目标文件,完成输出
    echo -e "\n#endif" >> "${localizedFile}"
    # 删除临时文件
    rm "${localizedFile}.tmp"
    

    我把demo文件放在Github
    LocalizedUtils.h是输出的宏定义文件
    Localizable.strings是多语言文件
    test.sh是脚本


    后来,在一次任务中,需要我在一个工程的不同target中用不同的按钮和label文字。我也用这个方法,每个target一个Localizable.strings,然后写对应的文字。

    相关文章

      网友评论

          本文标题:iOS多语言本地化动态修改宏定义脚本(oc版)

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