首页 文章

UIDatePicker - 问题本地化

提问于
浏览
11

我在我的应用程序中创建了一个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 回答

  • 3

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

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

    • 退出您的应用,转到“设置” .

    • 选择常规

    • 选择国际

    • 选择底部选项,区域格式 .

    • 更改为所需的区域 .

    • 重新启动您的应用并查看新的UI Picker!

  • 0

    从iOS 6开始,UIDatePicker不再查看设备的区域设置信息设置 . 您必须手动设置NSLocale,否则它将使用默认的区域设置 .
    请参阅以下答案:https://stackoverflow.com/a/12975871/1128896一个简单的解决方案:datePicker.locale = [NSLocale currentLocale];
    Updated

    虽然现在可以在UIDatePicker上设置区域设置,但默认情况下它设置为'Default'而不是任何特定语言 . 'Default'将检查设备's locale, and set itself to that. (see Dave DeLong'的评论below) . 因此,大多数新项目不应受此变化的影响 .

    如果您正在使用 older projects ,迁移到iOS 6,您可能会发现在xib中创建的UIDatePickers的区域设置默认为'English'或其他语言而不是'Default' . (I 've found all of my old projects, pre iOS6, followed this behavior). To fix this, simply change the locale to '默认'在IB中 .

  • 1

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

  • 10

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

相关问题