2010-05-24 6 views
11

내 앱에 UIDatePicker를 만들었으며 여러 언어에 대한 지원도하고 있습니다. 내 UIDatePicker는 Interface Builder에서 작성되었으며 UIDatePicker를 사용자 정의 할 수 있도록 별도의 현지화 XIB를 작성했습니다.UIDatePicker - 문제 지역화

IB에서 "로케일"옵션을 설정하는 것은 아무 것도하지 않는 것처럼 보입니다.

NSLocale * locale = [[NSLocale alloc] initWithLocaleIdentifier:@"es_ES"]; 
datePicker.locale = locale; 
datePicker.calender = [locale objectForKey:NSLocaleCalender]; 

이 영어 피커 결과 : 로케일과 NSCalender과 프로그래밍 방식으로 내 DatePicker에서 변경을 시도 또한 다음과 같은 코드를 통해 아무것도하지 않습니다.

정말 이상한 일이 있습니다. "오늘"이라는 단어가 번역되었습니다. 첨부 된 스크린 샷에서 볼 수 있듯이. (OK 나는 이미지를 게시 할 수 없습니다.하지만 상상 날짜는 &입니다. "May"가 영어이고 "Today"가 "Ajourd'hui"로 표시된 시간 선택기

내가 읽은 것을 바탕으로 UIDatePicker 프로그래밍으로 많은 도움이되지 않는 것 같습니다.

답변

10

자세한 조사가 끝나면 실제로 iPhone의 언어 설정에 의해 처리되지 않습니다 .UIDatePicker는 다음과 같습니다. 언어가 아닌 "지역 형식"설정에 따라 자동으로 지역화됩니다. 날짜가 현지화되어있어 이상합니다. 따라서 피커의 현지화가 지역 형식이 아닌 iDevice의 언어와 연결될 것이라고 생각할 수 있습니다. 어쨌든

은 시뮬레이터에서 지역화 된 DatePicker에서 시뮬레이션 :

  1. 종료 귀하의 응용 프로그램을 설정으로 이동합니다.
  2. 일반 선택
  3. 국제 선택
  4. 하단 옵션 인 지역 형식을 선택하십시오.
  5. 원하는 지역으로 변경하십시오.
  6. 앱을 다시 실행하고 새로운 UI 선택기를 확인하십시오!
1

내가 이해할 수있는 것은 UIDatePicker이 장치가 로케일에 자동으로 표시된다는 것입니다.이 방법을 무시하는 방법은 확실하지 않지만, 이 아닙니다.

+4

때로는 재정의해야합니다. 나는. 1 언어 전용 응용 프로그램. –

0

내 경험에 따르면 "오늘"은 info.plist에있는 설정을 따르고 있습니다. 몇 가지 이유로 그들은 이것을 적응하는 것을 잊어 버렸습니다.

3

iOS 6부터 UIDatePicker는 더 이상 장치의 로케일 설정을 확인하지 않습니다. NSLocale을 수동으로 설정해야합니다. 그렇지 않으면 기본 로케일이 사용됩니다.

이 답변을 참조하십시오 : https://stackoverflow.com/a/12975871/1128896

간단한 해결책 : 로케일이 지금 UIDatePicker에 설정 될 수 있지만

datePicker.locale = [NSLocale currentLocale]; 

업데이트가 '로 설정되어 기본적으로 특정 언어 대신 '기본값'으로 설정됩니다. 'Default'는 장치의 로켈을 검사하고 그 자체를 설정합니다. (Dave DeLong의 코멘트 below 참조).따라서 대부분의 새 프로젝트는이 변경의 영향을받지 않습니다.

당신이 아이폰 OS 6로 마이그레이션 오래된 프로젝트, 작업하는 경우, 당신은 xibs에서 생성 된 UIDatePickers 자신의 로케일이 '영어'또는 대신에 '기본'의 다른 언어로 기본값이 찾을 수 있습니다. (필자는 이전의 모든 프로젝트 (pre iOS6)를 발견했습니다. 이 문제를 해결하려면 IB에서 로케일을 'Default'로 변경하십시오.

+1

기본 로켈 *은 장치의 로켈입니다. (즉, '+ currentLocale') –

+0

위대한 포인트 Dave. xib에 로케일을 설정하는 것에 대한 다른 의견을 보았습니다. [1] (http://stackoverflow.com/questions/1151335/can-i-localize-a-uidatepicker/12975871#comment18351115_12975871). 좀 더 자세히 들여다 보니 새로운 Xcode 버전에서 생성 된 UIDatePicker는 기본적으로 Locale을 'Default'로 설정합니다. 그러나 iOS 5 또는 4 빌드가 포함 된 이전 프로젝트는 모두 기본적으로 로켈을 '영어'로 설정합니다. 그래서 대부분의 새로운 프로젝트에 대해서는 문제가되지 않지만 iOS 6으로 이전하는 오래된 프로젝트는 xibs Locale 설정을 확인하는 것이 현명합니다. – Mike

+0

네, 맞습니다. :) –