2012-12-03 1 views
1

를 반환 :아이폰 OS - LocalizedStringForKey : 값 : 테이블 : 나는 지역화 된 문자열을 반환하려면 다음 코드를 사용하고 잘못 현지화

[self.languageBundle localizedStringForKey:key value:key table:nil]; 

영어의 경우, 아무런 문제가 없습니다. 그러나 네덜란드어의 경우 기본값은 영어입니다. 모든 것을 명확히하기 위해 self.languageBundle은 첫 번째 실행에서 복사 된 빈 번들입니다. 그런 다음 두 개의 현지화 디렉토리가 생성되고 (en.lproj 및 nl.lproj) Localizable.strings 파일이 두 디렉토리에 만들어지고 올바른 현지화 문자열로 채워집니다 (내가 확인 했음).

내가 사용하는 언어 변경 : 당신이 다음 삭제를 프로젝트에 localized.string 파일을 추가 한 경우 그러나

[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:@"nl"] 
                forKey:@"AppleLanguages"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

을 여전히 대신 nl.lproj

+0

설정에서 언어를 nl로 변경하여 확인하십시오. –

+0

영어 로켈을 아직로드 중입니다! –

+0

동일한 문제로 고통 받고 있습니다.이 문제에 대한 해결책을 찾았습니까? –

답변

0

의 en.lproj 내부 현지화를로드 프로젝트에서 자동으로 생성되는 다른 모든 현지화 된 파일 link

+0

아무도 없습니다. 번들에 사용 가능한 localizable.strings 파일이 없습니다. 런타임에 생성 된 것만 –

0

런타임 중에 언어를 변경하려는 것으로 보이며 Apple에서 공식적으로 지원하지 않습니다. "AppleLanguages"키를 변경하면 응용 프로그램을 닫고 다시 시작해야 적용됩니다.

그러나 런타임에 앱의 현지화를 변경할 수 있습니다 (answer of this question 참조).

the aggressive-mediocrity solution에서 NSLocalizableString 대신 사용자 지정 언어 코드 변수를 유지하고 사용자 지정 LocalizedString 함수 (예 : "AMLocalizedString"원본)를 만듭니다. 그것은 내 프로젝트 중 하나에서 사용했던 좋은 솔루션이고 애플은 문제없이 애플에 의해 승인되었습니다.

또한이 방법을 사용하면 평소처럼 기본 Localizable.strings 파일을 사용할 수 있으므로 첫 번째 앱 실행시 디렉토리를 만들고 Localizable.strings을 복사 할 필요가 없습니다.

+0

런타임에 현지화 문자열을 추가해야합니다. 웹 서비스 (JSON을 NSDictionary로 파싱하여 Localizable.strings 파일에 기록)를 사용하고 있습니다. 따라서 두 번째 부분은 실현 가능하지 않습니다. 첫 번째 부분은 다시 시작한 후에도 작동하지 않습니다. 또한 설정에서 언어를 변경할 때도 작동하지 않습니다. 항상 영어로 기본값 설정. –

관련 문제