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

Ios 使用附加字符串本地化Info.plist变量,ios,xcode,localization,info.plist,Ios,Xcode,Localization,Info.plist,我正在尝试本地化应用程序的名称,同时仍然能够根据构建配置追加字符串。因此,目前其设置为: <key>CFBundleDisplayName</key> <string>${PRODUCT_NAME}${BUNDLE_DISPLAY_NAME_SUFFIX}</string> 我们覆盖存储在Info.plist中的值,并丢失后缀字符。有什么好办法吗?我们希望避免有多个Info.plist文件。您需要一个自定义脚本来执行此操作。这是一个为我工作的 P

我正在尝试本地化应用程序的名称,同时仍然能够根据构建配置追加字符串。因此,目前其设置为:

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

我们覆盖存储在
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中为捆绑包名称添加前缀,如下所示

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

如何覆盖Info.plist中存储的值?您是手动操作的?由于缺乏声誉,无法发表评论,抱歉@罗曼的回答是正确的,但我花了一整天的时间使它工作。事情是在编译源代码阶段和复制包资源阶段之后放置脚本。希望它能帮助别人。回答得好。任何对此进行故障排除的人都要注意,如果目标生成目录中有空格,则需要将
dirname
的输出括在引号中
CFBundleDisplayName = "=com.mycompany.bundlenameprefix=My App";