【发布时间】:2014-05-08 19:15:30
【问题描述】:
我们的 iOS 项目为“Spanish”(es.lproj) 和“Spanish (Latin America)”(es-419.lproj) 提供了本地化字符串,这些字符串是在 Xcode 中创建的。
但是,在 iPhone(美国,最新的 iOS 7)上,西班牙语的唯一语言选项是“Español”和“Español(墨西哥)”,没有“Latin America”。当您选择“Español (México)”时,它会使用我们应用程序中的“Spanish”字符串,而不是预期的“Spanish (Latin America)”字符串。
在进一步调查中,[[NSBundle mainBundle] preferredLocalizations] 返回@[@"es"]。即使[[NSBundle mainBundle] localizations] 返回一个包含“es”和“es-419”的数组也是如此。
但是,[[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"] 返回一个包含“es-MX”的数组。
然后是下面的表达式:
[NSBundle preferredLocalizationsFromArray:@[@"es-419", @"es"]
forPreferences:@[@"es-MX"]]
返回@[@"es"]。
为什么 Xcode 会为我们提供“西班牙语(拉丁美洲)”本地化,而您实际上在手机上选择了唯一的拉丁美洲西班牙语选项时并没有使用它?
【问题讨论】:
-
你找到答案了吗?我对 es_CL 有类似的问题(它只返回 es)
标签: ios localization localizable.strings