2012-02-01 4 views
0

내 응용 프로그램에서 사용자가 언어를 선택할 수 있으므로 그에 따라 응용 프로그램이 언어를 변경하지만 작동하지 않습니다. 이 코드는 온라인에서 찾았습니다.iPhone - 사용자 정의 언어 설정

// Force languages 
NSString * lang=[[NSUserDefaults standardUserDefaults] stringForKey:@"idioma"]; 
NSLog(@"language %@",[[NSUserDefaults standardUserDefaults] stringForKey:@"AppleLanguages"]); 
if ([lang isEqualToString:@"castella"]) { 

    [[NSUserDefaults standardUserDefaults] 
    setObject:[NSArray arrayWithObject:@"es"] 
    forKey:@"AppleLanguages"]; 
} //else just default user lang 

이 코드는 작동하지 않습니다. 나는 다른 환경 설정을 설정하고 있다고 생각합니다. 정말 로케일을 수정하고 싶습니다. 로컬 화 된 일부 문자열과 NIB 파일 중 일부가 있으므로 처음 위치에 선호하는 로케일 목록에 스페인어를 추가하고 싶습니다. 그러나 실제로 그렇게하는 방법을 이해하지 못합니다.

응용 프로그램의 설정에서 언어를 선택할 수있는 옵션이 있습니다. 그것은 저의 완강함에서 나온 것이 아닙니다. 여기 지역의 laguages가 중요하고 때로는 iPhone이 지원을 제공하지 않지만 번역을 발음합니다. 내가 로케일 덤비는 포기하기로 결정 답변에서


하지만 다른 NIB 파일을 보여줄 수있을 것이다 (en.proj에서 또는 es.proj)? 이미 첫 번째 부분이 있습니다.

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
     NSString * lang=[[NSUserDefaults standardUserDefaults] stringForKey:@"idioma"]; 

     if ([lang isEqualToString:@"castella"]) { 
      //Load NIB filer from "es.proj". 
     } 
    } 
    return self; 
} 

그게 가능합니까?

답변

0

로케일은 iPhone 설정에서 사용자가 설정해야합니다. 앱에서이 매개 변수를 강제로 설정하면 샌드 박스를 벗어나 앱이 거부 될 수 있다고 생각합니다.

대신 NIB 파일에 localizations 및/또는 Localizable.strings을 추가하십시오. 앱이 자동으로 사용자에게 가장 적합한 언어를 보여줍니다.

여전히 앱 내에서 언어를 변경하려면 로캘 설정을 변경하지 말고 앱의 화면에 표시 할 내용을 변경하십시오.

당신은 당신이 [NSUserDefaults standardUserDefaults]에서 원하는 언어를 저장하고이 매개 변수에 따라 라벨을 표시 할 수 있습니다 : 그것은 다음 거부 할 수있는 경우

if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"language"] isEqualToString:@"English"]) { 
    aLabel.text = @"This is English."; 
} else if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"language"] isEqualToString:@"Italian"]) { 
    aLabel.text = @"Questo e' italiano."; 
} else if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"language"] isEqualToString:@"Japanese"]) { 
    aLabel.text = @"これは日本語です。"; 
} 
+0

thnks, 나는 그것을하고 싶지 않아하지만 난 어떻게 보여줄 수를 es.proj의 nib 또는 en.proj의 nib가 일부 사용자 기본 설정을 나타냄 – vallllll

+0

iOS는 사용자 설정에 따라 자동으로 최상의 선택을 보여줍니다. 즉, 사용자가 "es"언어를 선택하면 앱에 NIB 파일의 "es"버전이 표시됩니다. – Beppe

+0

나는 es에 대해 알고 있지만 그것은 단지 예일 뿐이다. 몇몇 희귀 한 언어들에 대해서는 그것을 둘러 볼 방법이 없다. – vallllll

0

사용자가 두 번째로 언어를 선택하게하는 것은 좋지 않습니다 (처음 iPhone을 설정할 때). 현재 로케일을 사용하고 언어 설정을 가져 오는 것이 좋습니다.