2012-06-26 3 views
0

영어로 내용을 표시하는 언어와 상관없이 모든 콘텐츠가있는 앱이 있습니다. 앱의 제품 섹션에는 콘텐츠가 plist를 기반으로 표시됩니다. 구입 가능한 제품은 위치에 따라 다르며 모든 제품이 모든 시장에서 사용 가능한 것은 아닙니다. 내 시뮬레이터의 설정에서지역 용 iPhone 앱 현지화

내 언어가 영어로 설정하고 내 지역 포맷이 싱가포르로 설정 있어요.

현지화 된 plist를로드하는 중에 먼저 SG (싱가포르)를 내 지역으로보고 있는지 확인하기위한 로그를 작성합니다.

NSString *locale = [[NSLocale currentLocale] objectForKey: NSLocaleCountryCode]; 
NSLog(@"LOCALE: %@", locale); 
if([locale isEqualToString:@"SG"]){ 
    NSLog(@"singapore do something?"); 
    productCategory = [[NSArray alloc] initWithContentsOfFile:[[NSBundle mainBundle] 
            pathForResource:@"Products" ofType:@"plist"]]; 
} 

현재 로그 기록에 내 로그 기록이 표시됩니다. LOCALE : SG는 예상되지만 싱가포르 특정 콘텐츠는로드되지 않습니다.

나는 프로젝트를 청소하고 시뮬레이터에서 앱을 삭제하려고 시도했다.

이 내 PLIST 파일 내 프로젝트 탐색기에 표시되는 방식입니다 Products.plist image

내가 그 표시되지 내 지역화 PLIST를 방해하는 잘못 뭐하는 거지?

+0

내 InfoPlist.strings 파일에만/* Info.plist 키의 한글 버전 */- 영어 및 영어 - 영국 용 현지화 파일이 정상적으로 작동하지만 메모가 다를 수 있습니다. 언어 설정에서 지역 설정이 아닙니다. – propstm

답변

4

현지화 (해당 언어 폴더에서 로딩 번역 자원의 과정 응용 프로그램 번들에 있음)은 독점적으로 언어 설정을 기반으로합니다. 따라서 pathForResource는 언어 설정에만 신경을 쓰고 영역 형식 설정은 무시합니다.

지역 서식 설정은 문자열과 로캘 별 데이터 형식 (양방향 입력 : 구문 분석 입력 및 형식 출력) 간의 변환에 영향을줍니다. 예를 들어 NSDate를 표시 할 문자열로 변환하는 경우 지역 형식 설정에 따라 하루 전 (미국) 또는 그 반대 (영국)와 같은 달을 얻을 수 있습니다.

[NSLocale currentLocale]은 영역 형식을 나타내므로 디버깅에서 단순히 잘못된 것을보고있었습니다. https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPInternational/BPInternational.html#//apple_ref/doc/uid/10000171i

편집 아래의 주석을 참조하십시오이 더 복잡 할 나타납니다

여기에 많은 더 많은 정보가있다. 언어가 중립 언어 (예 : "en"이지만 "en-US"가 아님)로 설정된 경우 지역은 현지화에 영향을 미칩니다.

+0

"로컬라이제이션은 언어 설정에만 기반을 둡니다."그 진술은 사실입니까? "es"및 "es-PY"파일에 문자열 리소스를 현지화하고 언어를 es 및 해당 지역을 PY로 설정하면 내 iPad 응용 프로그램이 es의 일반 언어 현지화보다 PY를 선택합니다. 페루와 같이 다른 지역으로 설정하면 앱이 올바르게 언어 문자열로 되돌아갑니다. – stonedauwg

+0

es-PY는 파라과이에서 사용되는 스페인어를 의미합니다. 언어로 es-PY로 앱을 실행하고 지역 형식을 다른 것으로 설정할 수 있습니다. 언어는 지역화 된 문자열에 영향을 미칩니다 (설명대로). 그러나 지역 형식은 그렇지 않습니다 (대신 날짜, 숫자, 통화 수를 읽고 쓰는 방법에 영향을줍니다). – Clafou

+0

필자는 iOS10에서 이것을 테스트했습니다 - 번들에 es-PY 및 일반 es 현지화가있는 경우 iPad 언어 설정을 스페인어 (일반, 비 지역 특정 = "es") 및 es- PY (Espanol-Paraguay)를 사용하면 일반 es 문자열 대신 es-PY 지역 문자열을 선택하여 해당 지역이 문자열에 영향을 미친다는 것을 증명합니다 (묶음에 해당 로케일이있는 경우). 그런 다음 지역을 다른 지역 (예 : 페루)으로 전환하면 해당 지역 문자열 현지화가 없기 때문에 번들에서 일반 es 문자열로 되돌아갑니다. AppleBundleGuide-> Search Order 섹션을 참조하십시오. – stonedauwg

0

한 번 동일한 문제가 발생했습니다. 어떻게 든 현지화되지 않은 파일이 발견되었습니다. 무엇 나를 위해 일한 것은 사용하는 것이 었습니다 : 사용자의 설정에 따라 올바른 일을

[[NSBundle mainBundle] pathForResource:@"Products" ofType:@"plist" inDirectory:nil] 

이 항상 모든 현지화 된 파일을 검색하고 돌아