由于该文件InfoPlist.strings
不仅仅是 1 个单个文件,而是分布在多个文件夹和文件中,如下所示:en.lproj/InfoPlist.strings
, de.lproj/InfoPlist.strings
. 将它用于不同的方案有点棘手。以下是我如何本地化由同一目标的 2 个风格/方案共享的 Today Widget 的名称。出于演示目的,我使用了 2 种“口味”:TA
和EC
. 我将在此答案中提及它们。
步骤1:
- 为目标目录中的每个“风味”或方案创建文件夹。完全按照
user-defined
方案中的名称命名每个文件夹。将文件复制到那里InfoPlist.strings
。
这一步可能很棘手。我做了什么:我在 XCode 中创建了一个新文件夹并将其命名为TA
. 我将文件拖放到那里InfoPlist.strings
,然后在 Finder 中浏览到该文件夹,复制该文件夹并将其重命名为EC
. 然后,我将它拖放到 XCode 中。不要将其添加到任何目标。它不是必需的。
第2步:
InfoPlist.strings
从目标的Copy Bundle Resources
构建阶段中删除:
单击您的项目名称 -> 选择小部件的目标(例如今日小部件) -> 转到Build Phases
-> 打开Copy Bundle Resources
-> 找到文件InfoPlist.strings
,选择它并按下Delete
按钮
第 3 步:
- 添加新的运行脚本以复制正确的
InfoPlist.strings
文件
这是我想出的脚本,它将根据您的应用程序现在正在运行的当前风格/方案复制正确的文件:
for lng in en de es fr it nl pt-PT tr
do
INFO_PLIST_FILE="${PROJECT_DIR}/TodayMatchesWidget/${APP_FLAVOR}/${lng}.lproj/InfoPlist.strings"
BUILD_APP_DIR="${BUILT_PRODUCTS_DIR}/${FULL_PRODUCT_NAME}"
FILE_LOCATION="${BUILD_APP_DIR}/${lng}.lproj/InfoPlist.strings"
cp "${INFO_PLIST_FILE}" "${FILE_LOCATION}"
done
这是一个 for 循环,它遍历我所有的本地化语言。你只需要把你支持的语言放在那里。每个语言缩写都应该用空格隔开,没有别的。
您需要注意的唯一变量是APP_FLAVOR
,在我的情况下,它是项目内部的用户定义设置Build Settings
,在我的情况下将是TA
or 或EC
。
这是 Today Widget 文件夹中的最终文件夹结构:
PS:
我假设您已经InfoPlist.strings
在目标目录中有一个文件。如果没有,只需添加一个新的Strings File
并调用它InfoPlist.strings
并在其中添加此值:
CFBundleDisplayName = "My Localized Widget";
我希望它可以帮助那里的任何人!