: 나는 시스템 언어를 얻으려면 다른 상황에서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]은 내가 원했던 것입니다.
@Jona 언어로 배열을 저장하려고 제안하는 것이 아닙니다. 저는 언어 데이터에 어떻게 올바르게 액세스해야하는지에 대한 예를 보여주고있었습니다. 배열에 저장하고 코드를 App Delegate의'finishedLaunching : WithOptions' 메소드에 넣을 수 있습니다. 이렇게하면 앱이 다시 시작할 때마다 언어를 확인하게됩니다. – pasawaya