2012-06-20 2 views
2
내가 (시스템 언어의 독립적 인) 응용 프로그램 언어 변경하려면 다음 문을 사용

: 나는 시스템 언어를 얻으려면 다른 상황에서IOS : 변경 NSUserDefaults없이 장치의 독립적 인 앱 - 언어

[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"de", @"en", nil] forKey:@"AppleLanguages"]; 

을 . 내가

[[NSLocale preferredLanguages] objectAtIndex:0] 

을 사용하면 결과는 항상 "드"입니다. 앱이 다시 시작되고 두 번째 명령문이 먼저 실행되는 경우에도 마찬가지입니다. 위의 코드 줄을 사용하여 구성한 것이기 때문에 이것은 나에게 완벽합니다. 그러나 나는 시스템 전체에 구성된 실제 시스템 언어를 얻고 싶습니다.

이론적 설명 : 응용 프로그램에는 영어, 독일어, 시스템 언어의 세 가지 언어 설정이 있어야합니다. 사용자는 영어로 앱을 실행할 수 있어야하며 나머지 시스템은 독일어로 실행하거나 표준 시스템 언어 설정을 사용하면됩니다.

것은 정말 여기에 몇 가지 도움을 주셔서 감사합니다 것입니다 :) 안부, 조나단


을 드디어 쉽고 강력한 솔루션을 발견했다. 초기 문제는

[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"de", @"en", nil] forKey:@"AppleLanguages"]; 

이 이전에 구성한 값을 반환한다는 것입니다. 그러나 그것은 내가 갖고 싶은 것이 아닙니다. "전역 적으로"구성된 언어를 원합니다 (응용 프로그램과 독립적/메뉴 등에 사용됨). 이것은 NSUserDefaults가 달성 할 수없는 것 같습니다. 그러나 CFPreferences는 트릭을 수행합니다.

이제 appleLanguages는 원래 사용자를 위해 정의 된대로 언어 목록을 포함합니다. 그리고 appleLanguages ​​[0]은 내가 원했던 것입니다.

답변

0

언어를 색인의 개체로 설정합니다 : 0 여기서 [NSArrray arrayWithObjects: @"de", @"en", nil]. 선호 언어가 무엇인지 확인하면 첫 번째 언어 (색인 0의 언어) 만 확인하지만 다른 색인의 언어도 있습니다 ("en"을 색인 1로 설정) : [[NSLocale preferredLanguages]objectAtIndex:0];. 원하는 언어를 배열에 저장하려고한다고 가정 해 봅시다. 당신은 이것을 할 수 있었다 :

NSArray *arrayOfLanguages = [NSArray arrayWithArray:[NSUserDefaults arrayForKey:@"AppleLanguages"]]; 

희망은 이것 도움!

+0

@Jona 언어로 배열을 저장하려고 제안하는 것이 아닙니다. 저는 언어 데이터에 어떻게 올바르게 액세스해야하는지에 대한 예를 보여주고있었습니다. 배열에 저장하고 코드를 App Delegate의'finishedLaunching : WithOptions' 메소드에 넣을 수 있습니다. 이렇게하면 앱이 다시 시작할 때마다 언어를 확인하게됩니다. – pasawaya