问题 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似乎没有多大帮助。


6636
2018-05-24 00:41


起源



答案:


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

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

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

10
2018-05-27 04:39





从iOS 6开始,UIDatePicker不再查看设备的区域设置信息设置。 你必须设置 NSLocale 手动或它将使用默认语言环境。

看到这个答案: https://stackoverflow.com/a/12975871/1128896

简单的解决方案:

   datePicker.locale = [NSLocale currentLocale];


3
2018-04-19 23:41



默认语言环境 是 设备的区域设置。 (即, +currentLocale) - Dave DeLong
伟大的点戴夫。我看到你关于在xib中设置语言环境的其他评论,如果在那里创建, 1。我看了一下它,似乎任何在较新的Xcode版本中创建的UIDatePicker,默认情况下将Locale设置为'Default'。但是我的所有旧项目(包括iOS 5或4版本)默认情况下将Locale设置为“English”。因此,对于大多数新项目而言,这应该不是问题,但是只有移动到iOS 6的旧项目才能检查其xibs Locale设置。 - Mike
对,那是正确的。 :) - Dave DeLong


答案:


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

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

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

10
2018-05-27 04:39





从iOS 6开始,UIDatePicker不再查看设备的区域设置信息设置。 你必须设置 NSLocale 手动或它将使用默认语言环境。

看到这个答案: https://stackoverflow.com/a/12975871/1128896

简单的解决方案:

   datePicker.locale = [NSLocale currentLocale];


3
2018-04-19 23:41



默认语言环境 是 设备的区域设置。 (即, +currentLocale) - Dave DeLong
伟大的点戴夫。我看到你关于在xib中设置语言环境的其他评论,如果在那里创建, 1。我看了一下它,似乎任何在较新的Xcode版本中创建的UIDatePicker,默认情况下将Locale设置为'Default'。但是我的所有旧项目(包括iOS 5或4版本)默认情况下将Locale设置为“English”。因此,对于大多数新项目而言,这应该不是问题,但是只有移动到iOS 6的旧项目才能检查其xibs Locale设置。 - Mike
对,那是正确的。 :) - Dave DeLong


我要理解的是 UIDatePicker 自动显示设备设置为的语言环境。我不知道如何覆盖它,但似乎你可能 不能 覆盖它。


1
2018-05-24 03:14



有时它只需要重写。即一个语言只应用。 - tt.Kilew


根据我的经验,“今天”遵循您在info.plist中的设置。由于某些原因,他们忘记了这一点。


0
2017-11-09 21:33