我有一个 Swift 包,它在“Resources”文件夹内的文件夹中有多个翻译,例如“Resources/de.lproj/Localizable.strings”和“Resources/en.lproj/Localizable.strings”。
自从我更新到 Xcode 12.5 以来,实现这个 Swift 包的应用程序总是回退到英语,它只返回英语本地化的字符串。
我的 Package.swift
默认为“de”:
defaultLocalization: "de",
示例: 在设置为德语的设备上运行应用:
print(Locale.preferredLanguages) // ["de"]
print(Bundle.module.localizations) // ["de", "en", "es", "it", "fr"]
print(NSLocalizedString("Yes", tableName: nil, bundle: .module, value: "", comment: "")) // "Yes" (instead of "Ja" from the German file)
在 iOS 模拟器中设置“应用语言”也会导致同样的问题。
答案 0 :(得分:1)
问题是宿主应用程序似乎没有任何本地化,因此 Swift 包也不会本地化。
Swift 论坛上有详尽的解释:https://forums.swift.org/t/swift-package-manager-localization/46685/6
<块引用>听起来真正的问题可能是您希望库使用主应用程序包支持的本地化之外的其他本地化。如果是这样,在应用程序的 Info.plist 中将 CFBundleAllowMixedLocalizations 设置为 YES 是正确的解决方案。