2011-12-05 6 views
1

나는 선호하는 언어를 선택하기를 원하는 다중 언어 iPad 앱을 만들 예정입니다. 그래서 내 질문은, 어떻게 런타임에 내 응용 프로그램 언어를 변경할 수 있습니까? iPad 언어를 변경하고 싶지 않습니다.iOS 앱 사용자 정의 현지화 설정

답변

1

몇 번 물어 왔습니다. 이것에 대한 훌륭한 해결책은 없으며, 사소한 일입니다. 예를 들어, 언어를 변경할 때 iOS가 다시 시작됩니다. 어떤 사람들은 NSLocalizedString 호출을 대체하고 NIB로드를 변경하여 사용할 현지화 버전을 지정함으로써이 작업을 수행했습니다. 예를 들어 this other SO question을 참조하십시오.

+0

감사합니다. – Krrish

3

사과 지침서에 따라을 권장하지 않습니다.

내 솔루션 (수동으로 응용 프로그램을 다시 시작해야합니다 사용자; "즉시"언어 스위치를 처리 할 수있는 당신이 XIBs을 포함한 모든 자원을 다시해야합니다)입니다 : 답장을

// Use "nil" to fallback to system settings 
void loadCustomLocalization(NSString * locCode) { 
    NSString * appleLanguages = @"AppleLanguages"; 
    if (locCode) { 
    [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:locCode] forKey:appleLanguages]; 
    } else { 
    [[NSUserDefaults standardUserDefaults] removeObjectForKey:appleLanguages]; 
    } 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
} 

void loadLocalization() { 
    const int result = [[[NSUserDefaults standardUserDefaults] stringForKey:@"language"] intValue]; 
    NSString * language = 0; 
    switch (result) { 
    case 1: language = @"ru"; break; 
    case 2: language = @"en"; break; 
    } 
    loadCustomLocalization(language); 
} 

int main(int argc, char *argv[]) { 
    loadLocalization(); 
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 
    int retVal = UIApplicationMain(argc, argv, nil, nil); 
    [pool release]; 
    return retVal; 
}