我在我的应用程序中创建了一个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似乎没有多大帮助。
经过进一步调查,这实际上不是由iPhone的语言设置处理的。 UIDatePicker根据“区域格式”设置自动进行本地化,而不是语言。这很奇怪,因为日期是本地化的,所以你会认为选择器的本地化将链接到iDevice的语言而不是Region Format。
无论如何,要在Simulator中模拟本地化的DatePicker:
- 退出您的应用,转到“设置”。
- 选择常规
- 选择国际
- 选择底部选项,区域格式。
- 切换到所需的区域。
- 重新启动您的应用并查看新的UI Picker!
从iOS 6开始,UIDatePicker不再查看设备的区域设置信息设置。 你必须设置 NSLocale
手动或它将使用默认语言环境。
看到这个答案: https://stackoverflow.com/a/12975871/1128896
简单的解决方案:
datePicker.locale = [NSLocale currentLocale];
经过进一步调查,这实际上不是由iPhone的语言设置处理的。 UIDatePicker根据“区域格式”设置自动进行本地化,而不是语言。这很奇怪,因为日期是本地化的,所以你会认为选择器的本地化将链接到iDevice的语言而不是Region Format。
无论如何,要在Simulator中模拟本地化的DatePicker:
- 退出您的应用,转到“设置”。
- 选择常规
- 选择国际
- 选择底部选项,区域格式。
- 切换到所需的区域。
- 重新启动您的应用并查看新的UI Picker!
从iOS 6开始,UIDatePicker不再查看设备的区域设置信息设置。 你必须设置 NSLocale
手动或它将使用默认语言环境。
看到这个答案: https://stackoverflow.com/a/12975871/1128896
简单的解决方案:
datePicker.locale = [NSLocale currentLocale];
我要理解的是 UIDatePicker
自动显示设备设置为的语言环境。我不知道如何覆盖它,但似乎你可能 不能 覆盖它。
根据我的经验,“今天”遵循您在info.plist中的设置。由于某些原因,他们忘记了这一点。