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

我正在尝试本地化应用程序的名称,同时仍然能够根据构建配置追加字符串.所以目前它被设置为:
<key>CFBundledisplayName</key>
<string>${PRODUCT_NAME}${BUNDLE_disPLAY_NAME_SUFFIX}</string>

该设置定义为:

通过这种方式,我们可以为应用程序添加后缀以用于不同的beta版本.问题是,当我们尝试本地化本地化的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中为包名称添加前缀,如此

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

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...