Ios Bundle.preferredLocalizations混淆
Ios Bundle.preferredLocalizations混淆,ios,localization,nsbundle,Ios,Localization,Nsbundle,Bundle的3个preferredLocalization非常混乱,我有很多问题: 为什么2preferredLocalizations方法是类方法,但却一直在谈论一些未指定的特定捆绑包,就好像它们是在某个单独的捆绑包实例上调用的一样 :什么是捆绑对象和捆绑对象 从指定列表中返回一个或多个本地化,捆绑对象将使用这些本地化来定位当前用户的资源 NSString对象的数组,每个对象指定捆绑包支持的本地化的语言ID :指定的捆绑包和接收方的捆绑包具体是什么 返回绑定对象希望使用的本地化
Bundle
的3个preferredLocalization
非常混乱,我有很多问题:
preferredLocalizations
方法是类方法,但却一直在谈论一些未指定的特定捆绑包,就好像它们是在某个单独的捆绑包
实例上调用的一样
- :什么是
和捆绑对象
捆绑对象
- 从指定列表中返回一个或多个本地化,捆绑对象将使用这些本地化来定位当前用户的资源
- NSString对象的数组,每个对象指定捆绑包支持的本地化的语言ID
preferredLocalizations(from:localizations)
不返回与preferred相同的结果本地化(来源:本地化,对于偏好: 无)
?如上所述,阅读他们的文档并没有真正的帮助。当然,它们看起来是这样设计的,但实际上不是:
// Locale.preferredLanguages: ["es-CN", "ja-CN", "zh-Hans-CN", "en-CN", "he-IL"].
let localizations = ["de", "en", "es", "fr", "it"]
print(Bundle.preferredLocalizations(from: localizations)) // ["en"]
print(Bundle.preferredLocalizations(from: localizations, forPreferences: nil)) // ["es"]
参考文档不是很好;更好地解释它 具体来说,它说 请注意,Bundle.preferredLocalizations(from:)将结果限制为Bundle.mainBundle()支持的本地化,或Bundle.mainBundle().localizations()的返回值。如果要匹配不同的语言标识符集,请使用Bundle.preferredLocalizations(from:forPreferences:),它不依赖于mainBundle的本地化,而只依赖于传入的两个参数 所以
- 如果使用
,则首先根据为主Bundle定义的本地化(Bundle.preferredLocalizations(from:)
)过滤您提供的本地化列表Bundle.main.localizations
- 如果使用
,它将与您提供的列表一起工作李>Bundle.preferredLocalizations(from:forPreferences:)
Bundle.preferredLocalizations(from:localizations)
返回[“en”]
。这可能是因为您的应用程序没有定义任何西班牙语(“es”)版本。如果在项目中添加西班牙语本地化,它应该返回[“es”]
,因为“es CN”列在“en CN”之前