在开发多语言的时候时候,每次都需要NSLocalizedString(o, nil)显得很麻烦。经过一番搜索发现有大神写了swift版的脚本。地址在这
我依葫芦画瓢写了一下oc版的。使用方法请移步大神博客看一下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| 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,然后写对应的文字。