UIDatePicker - 问题本地化

时间:2010-05-24 00:41:04

标签: iphone cocoa datepicker ipod-touch uidatepicker

我在我的应用中创建了一个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似乎没什么帮助。

4 个答案:

答案 0 :(得分:10)

经过进一步调查,这实际上不是由iPhone的语言设置处理的。 UIDatePicker根据“区域格式”设置自动进行本地化,而不是语言。这很奇怪,因为日期是本地化的,所以你会认为选择器的本地化将链接到iDevice的语言而不是区域格式。

无论如何,要模拟模拟器中的本地化DatePicker:

  1. 退出您的应用,转到“设置”。
  2. 选择常规
  3. 选择国际
  4. 选择底部选项,区域格式。
  5. 更改为所需区域。
  6. 重新启动您的应用并查看新的UI Picker!

答案 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中的设置。由于某些原因,他们忘记了这一点。