iphone - UIDatePicker-Localización de problemas
cocoa ipod-touch (4)
Lo que se me ha dado a entender es que UIDatePicker
se muestra automáticamente en la configuración regional en la que está configurado el dispositivo. No estoy seguro de cómo anularlo, pero parece que probablemente no deberías anularlo.
Creé un UIDatePicker en mi aplicación y también tengo soporte para varios idiomas. Mi UIDatePicker se creó en Interface Builder, y he creado un XIB de localización separada para poder personalizar mi UIDatePicker.
Establecer la opción "Configuración regional" en IB parece no hacer nada. Intentar cambiar mi DatePicker programáticamente con Locale y NSCalender tampoco hace nada a través del siguiente código:
NSLocale * locale = [[NSLocale alloc] initWithLocaleIdentifier:@"es_ES"];
datePicker.locale = locale;
datePicker.calender = [locale objectForKey:NSLocaleCalender];
Esto resulta en un selector de inglés.
Aunque aquí está lo realmente extraño. La palabra para "Hoy" está traducida. Como se ve en la captura de pantalla adjunta. (De acuerdo, no tengo permiso para publicar imágenes. Pero imagine un selector de Fecha y hora con "May" en inglés y "Hoy" escrito "Ajourd''hui".
Según lo que he leído, agregar UIDatePicker programáticamente no parece ayudar mucho.
Desde mi experiencia, el "Hoy" sigue las configuraciones que tienes en tu info.plist. Por alguna razón, han olvidado adaptar esto.
Después de una investigación más a fondo, esto no es manejado por la configuración de idioma del iPhone. El UIDatePicker se localiza automáticamente en función de la configuración "Formato de región" y no del idioma. Esto es extraño porque las fechas están localizadas, por lo que podría pensar que la localización del selector estaría vinculada al idioma del dispositivo, no al formato de región.
De todos modos, para simular el DatePicker localizado en el simulador:
- Salga de su aplicación, vaya a Configuración.
- Seleccione General
- Seleccione Internacional
- Seleccione la opción inferior, Formato de región.
- Cambia a la región deseada.
- ¡Reinicia tu aplicación y mira el nuevo selector de UI!
A partir de iOS 6 UIDatePicker ya no mira la configuración del dispositivo para la información de configuración regional. Debe configurar NSLocale
manualmente o usará la configuración regional predeterminada.
Ver esta respuesta: https://.com/a/12975871/1128896
Una solución simple:
datePicker.locale = [NSLocale currentLocale];
Actualizado
Si bien la configuración regional ahora se puede establecer en UIDatePicker, de manera predeterminada está configurada como ''Predeterminada'' en lugar de cualquier idioma en particular. ''Predeterminado'' verificará la configuración regional del dispositivo y se establecerá a eso. (vea el comentario de Dave DeLong a continuación ). Por lo tanto, la mayoría de los proyectos nuevos no deberían verse afectados por este cambio.
Si está trabajando con proyectos más antiguos , migrando a iOS 6, es posible que descubra que los UIDatePickers que se crean en xibs tienen su configuración predeterminada en ''Inglés'' u otro idioma en lugar de ''Predeterminado''. (He encontrado que todos mis proyectos anteriores, anteriores a iOS6, seguían este comportamiento). Para solucionar esto, simplemente cambie la configuración regional a ''Predeterminado'' en IB.