Since the file InfoPlist.strings is not just 1 single file, but is spread across multiple folders and files like so: en.lproj/InfoPlist.strings, de.lproj/InfoPlist.strings. It is a bit trickier to use it for different schemes.
Here is how I localized the name of the Today Widget shared by 2 flavors / schemes of the same target. For demonstration purposes, I used 2 "flavors": TA and EC. I will refer to them in this answer.
Step 1:
- Create folders for each "flavor" or scheme in the target directory. Name each folder exactly as they are named in your
user-defined scheme. Copy there the InfoPlist.strings file.
This step might be tricky. What I did: I created a new folder in XCode and named it TA. I dragged & dropped there my InfoPlist.strings file, then browsed to that folder in Finder, duplicated that folder, and renamed it to EC. Then, I drag & dropped it into XCode. Don't add it to any target. It is not needed.
Step 2:
- Remove the
InfoPlist.strings from the target's Copy Bundle Resources build phase:
Click on your project name -> Select the widget's target (ex. Today Widget) -> go to Build Phases -> open the Copy Bundle Resources -> find the file InfoPlist.strings, select it and press Delete button
Step 3:
- Add a new Run Script to copy the correct
InfoPlist.strings file
Here is the script I came up with which will copy the correct file, based on the current flavor/scheme your app is running now:
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
This is a for loop, which iterates through all my localization
languages. You need to put there only the languages that you support.
Each language abbreviation should be separated by a space, nothing
else.
The only variable which you need to take care of is APP_FLAVOR,
which in my case is a user-defined setting inside the project's Build Settings, and in my case will be either TA or EC.
Here is the final folder structure in Today Widget's folder:

P.S:
I assume you already have a InfoPlist.strings file in the target's directory. If not, just add a new Strings File and call it InfoPlist.strings and add this value inside:
CFBundleDisplayName = "My Localized Widget";
I hope it helps anyone out there!