2012-07-31 14 views
3

현재 날짜가 많이 소요되는 iPhone 용 앱을 작성하고 있습니다. 나는 NSDateFormatter을 사용하여 날짜를 문자열로 변환합니다. 편의상 NSDateFormatter은 지역 형식에 따라 사용자 언어로 문자열을 자동으로 만듭니다. 가능한 모든 언어 및 지역에서 내 앱을 현지화 할 수 없기 때문에이 앱은 영어, 독일어, 스페인어 및 기타 언어로만 현지화되어 있습니다.NSDateFormatter : 언어로 현지화 된 앱만 현지화 된 날짜 표시

예를 들어 앱이 프랑스 사용자 용으로 실행되는 경우 앱의 기본 언어는 영어입니다. 괜찮지 만 날짜는 여전히 프랑스어로 변환됩니다. "Month : July"대신 "Month : Juillet"과 같은 문자열이 생성됩니다.

NSDateFormatter은 앱이 실행되는 언어를 항상 사용하도록하려면 어떻게해야합니까? NSLocalizedString()을 사용하여 NSLocale 개의 식별자를 현지화 할 수는 있지만 잘못된 지역 설정에서 나타납니다.

일반적으로 사용자가 "en_GB"지역을 사용하고 내 앱이 영어로 현지화 된 경우 NSDateFormatter에 "en"또는 "en_US"가 아닌 "en_GB"를 사용하고 싶습니다. 사용자가 프랑스어를 실행하면 로캘을 "en"으로 설정하고 "de_DE"지역에서 앱을 실행하는 경우 앱이 독일어를 지원하기 때문에 날짜 형식을 "de_DE"로 지정합니다.

감사합니다, 파비안

답변

2

당신이 날짜 포매터를 만들 때, 그것은 현재의 로케일 스타일의 초기화한다, 그러나 당신이 이것을 대체 할 수 있습니다.

[테스트하지] 당신은 사용자 목록에서 최고의 로케일과 NSBundle 사용 가능한 로케일 얻을 수 있습니다 :

+ (NSArray *)preferredLocalizationsFromArray:(NSArray *)localizationsArray 

NSFormatter :

+ (NSString *)dateFormatFromTemplate:(NSString *)template options:(NSUInteger)opts locale:(NSLocale *)locale 

당신에게 지역화 된 형식 문자열을 제공해야을 지정된 로케일에 대해.

그런 다음 setDateFormat을 사용하여 포맷터의 초기 날짜 형식을 대체 할 수 있습니다.

+0

네 말이 맞아. '+ [preferredLocalizationsFromArray :'를 내부적으로 사용하는'- [NSBundle preferredLocalizations]'를 사용하면 올바르게 작동하게된다. 고맙습니다! –

+0

'dateFormatFromTemplate :'는 빌트인 날짜와 시간 스타일이 당신의 요구를 만족시키지 않는 경우에만 필요합니다. 그렇지 않으면 날짜 형식 문자열보다 선호해야합니다. –

+0

예, 나는 다른 모든 것에 대해'MMMM YYYY'와'dateStyle'과'timeStyle' 속성과 같은 형식에만 사용합니다. –