使用附加string本地化Info.plistvariables

我试图本地化应用程序的名称,同时仍然能够附加一个string取决于构buildconfiguration。 所以目前它被设置为:

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

该设置被定义为:

建立设置

通过这种方式,我们可以为应用程序添加不同的testing版本的后缀。 问题是,当我们尝试本地化应用程序显示名称在本地化的InfoPlist.strings像这样

 CFBundleDisplayName = "Localized App Name"; 

我们覆盖存储在Info.plist的值,并丢失后缀字符。 有没有什么好方法呢? 我们想避免有多个Info.plist文件。

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

 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中添加一个前缀到bundle的名字中

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