在开发多语言的时候时候,每次都需要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,然后写对应的文字。
网友评论