我在我的应用中创建了一个UIDatePicker,我也支持多种语言。我的UIDatePicker是在Interface Builder中创建的,我创建了一个单独的本地化XIB,因此我可以自定义我的UIDatePicker。
在IB中设置“区域设置”选项似乎什么都不做。尝试使用Locale和NSCalender以编程方式更改我的DatePicker也不会通过以下代码执行任何操作:
NSLocale * locale = [[NSLocale alloc] initWithLocaleIdentifier:@"es_ES"];
datePicker.locale = locale;
datePicker.calender = [locale objectForKey:NSLocaleCalender];
这会导致英语选择器。
这是非常奇怪的事情。 “今天”这个词被翻译出来。如附带的屏幕截图所示。 (好的,我不允许发布图片。但想象一下日期和时间选择器,英文为“May”,“今日”写成“Ajourd'hui”。
根据我所读到的内容,以编程方式添加UIDatePicker似乎没什么帮助。
答案 0 :(得分:10)
经过进一步调查,这实际上不是由iPhone的语言设置处理的。 UIDatePicker根据“区域格式”设置自动进行本地化,而不是语言。这很奇怪,因为日期是本地化的,所以你会认为选择器的本地化将链接到iDevice的语言而不是区域格式。
无论如何,要模拟模拟器中的本地化DatePicker:
答案 1 :(得分:3)
从iOS 6开始,UIDatePicker不再查看设备的区域设置信息设置。您必须手动设置 NSLocale
,否则它将使用默认区域设置。
请参阅此答案:https://stackoverflow.com/a/12975871/1128896
一个简单的解决方案:
datePicker.locale = [NSLocale currentLocale];
击> <击> 撞击> 的更新强>
虽然现在可以在UIDatePicker上设置区域设置,但默认情况下它设置为“默认”而不是任何特定语言。 “默认”将检查设备的区域设置,并将其自身设置为该区域设置。 (见Dave DeLong的评论below)。因此,大多数新项目不应受此变化的影响。
如果您正在使用旧项目,迁移到iOS 6,您可能会发现在xib中创建的UIDatePickers的区域设置默认为“英语”或其他语言而不是“默认” 。 (我发现我的所有旧项目,在iOS6之前,都遵循这种行为)。要解决此问题,只需在IB中将语言环境更改为“默认”。
答案 2 :(得分:1)
我要了解的是UIDatePicker
会自动在设备设置的区域设置中显示。我不知道如何覆盖它,但似乎你不应该覆盖它。
答案 3 :(得分:0)
根据我的经验,“今天”遵循您在info.plist中的设置。由于某些原因,他们忘记了这一点。