2026/04/13 · Technical Article · ~2 min read
When working on multi-target iOS/macOS projects, adding a new target usually means reconfiguring resources and build settings. However, there are two files that are easy to overlook. Forgetting to include them in the new target can lead to missing localizations and broken UI text:
Localizable.xcstringsInfoPlist.xcstrings
1. What These Files Do
Localizable.xcstringsStores the localized strings used throughout the project viaNSLocalizedStringand similar APIs. If this file isn’t included in the new target, runtime localized text will be missing — users will see raw keys or a fallback language.InfoPlist.xcstringsStores localized values for keys inInfo.plist, such as the app name (CFBundleDisplayName) and permission descriptions (NSCameraUsageDescription,NSMicrophoneUsageDescription, etc.). Without it, system-level text won’t change when the device language changes, creating an inconsistent user experience.
2. Why It’s Easy to Forget
When you create a new target in Xcode, it generates a new Info.plist file, but it does not automatically include the .xcstrings files in the target’s resource membership.
Even if your project already has localization resources, the new target won’t inherit them — you have to add them manually.
3. How to Add Them Correctly
- In Xcode’s Project Navigator, locate
Localizable.xcstringsandInfoPlist.xcstrings. - Select each file and open the File Inspector on the right.
- Under Target Membership, check the checkbox for your new target.
- Clean and rebuild the project to confirm the new target can read the localized strings.
💡 Pro tip:
If you manage multiple targets, check the .xcstrings target membership immediately after creating a new target to avoid debugging missing translations later.
4. Common Pitfalls
- App name not localized
Likely because
InfoPlist.xcstringsisn’t included in the target. - Parts of the UI show the wrong language
Usually caused by
Localizable.xcstringsnot being added to the target. - The issue only appears on some devices
Can happen if the target is platform-specific (iOS/macOS) and
.xcstringsmembership is inconsistent.
5. Summary
Whether you’re building a feature for a specific region or packaging for different platforms, manually adding Localizable.xcstrings and InfoPlist.xcstrings to the new target’s membership should be a checklist item every time you create a new target.
It’s a small step that prevents major localization bugs and keeps the user experience consistent.