2011-06-10 2 views
15

특정 문자열에 대한 지역화 목록을 내 서버에 보내야합니다. 내 애플 러시아어 @ "Фу"@ 영어로 "푸"와 같은 지역화되는 문자열 푸있는 경우iPhone/iOS : 내 앱이 현지화 된 모든 언어로 지역화 된 문자열 목록을 얻으려면 어떻게해야합니까?

의 의미, 나는 이와 같은 서버에게 목록을 보내 싶습니다

  • 문자열 푸 :
    • 영어 : "푸"
    • 러시아어 : "Фу"나는 할 수 있어야 어떻게 생각

수행은 다음과 같습니다

    내 응용 프로그램이 각 언어에 대해 푸의 지역화 된 버전을 가져
  1. 지역화 각 언어에 대한
  2. 열거 지역화 된 문자열

I (1)과 어떻게합니까 어떻게해야합니까 (2)?

+0

'NSLocalizedStringFromTable'을 들여다 보셨나요? http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Functions/Reference/reference.html%23//apple_ref/c/macro/NSLocalizedStringFromTableInBundle – joshpaul

+1

테이블에서 보이는 것 같습니다. 방법은 문자열을 하나의 기본 테이블에 모두 보관하는 것과 달리 문자열을 분류하는 것입니다. 이것은 내가 원하는 것이 아닙니다. 특정 문자열의 모든 다른 지역화를 가져오고 싶습니다. –

답변

31

당신은 그것의 키를 사전으로 English.lproj/Localizable.strings에서 읽고 가져 오는에 의해 문자열 키를 모두 검색 할 수 있습니다

NSString *stringsPath = [[NSBundle mainBundle] pathForResource:@"Localizable" ofType:@"strings"]; 
NSDictionary *dictionary = [NSDictionary dictionaryWithContentsOfFile:stringsPath]; 

각 언어의 번역을 얻으려면, 당신의 언어를 반복 할 수 있습니다 각 영어 키 및 사용 NSLocalizedStringFromTableInBundle :

for (NSString *language in [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"]) { 
    NSBundle *bundle = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:language ofType:@"lproj"]]; 
    NSLog(@"%@: %@", language, NSLocalizedStringFromTableInBundle(@"Testing", @"Localizable", bundle, nil)); 
} 
+0

이것은 합리적으로 들립니다. 내가 본 다른 옵션은 우리가 문자열을 검색하는 방식을 다시 작성해야했지만, 이것은 덜 침략적이며 그것이 필요한 것처럼 보입니다. 나는 오늘 그것을 시험 할 것이다. –

+0

나를 도왔습니다. – Swati

+2

위의 코드 샘플에서 'pathForResource'를 처음 호출하면 영어 *가 아닌 * 현재 * 현지화 경로가 반환됩니다 (예 : 시뮬레이터/장치가 독일어로 설정된 경우 'de.lproj/Localizable.strings' 경로를 얻습니다). – Alessandro