使用附加字符串本地化Info.plist变量

时间:2015-01-06 13:12:32

标签: ios xcode localization info.plist

我尝试本地化应用程序的名称,同时仍然可以根据构建配置追加字符串。所以目前它被设置为:

<key>CFBundleDisplayName</key>
<string>${PRODUCT_NAME}${BUNDLE_DISPLAY_NAME_SUFFIX}</string>

该设置定义为:

Build Setting

通过这种方式,我们可以为应用添加后缀以用于不同的Beta版本。问题是,当我们尝试本地化本地化InfoPlist.strings中的应用显示名称时,如此

CFBundleDisplayName = "Localized App Name";

我们覆盖Info.plist中存储的值,并丢失后缀字符。这有什么好办法吗?我们希望避免使用多个Info.plist文件。

1 个答案:

答案 0 :(得分:6)

您需要一个自定义脚本才能执行此操作。这是一个为我工作的

PREFIX_IDENTIFIER="=com.mycompany.bundlenameprefix="
PREFIX=""

if [ $CONFIGURATION == "Debug" ]
then
    PREFIX="α "
fi

if [ $CONFIGURATION == "Enterprise" ]
then
    PREFIX="β "
fi

for i in `dirname "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"`/*.lproj/InfoPlist.strings
do
    plutil -convert json "$i"
    sed -i -e "s/${PREFIX_IDENTIFIER}/${PREFIX}/g" "$i"
    plutil -convert binary1 "$i"
done

然后在您的InfoPlist.strings中为包名添加前缀,如此

CFBundleDisplayName = "=com.mycompany.bundlenameprefix=My App";