2012-06-08 3 views
5

시스템 기본 언어와 시스템 로케일을 가져오고 싶습니다.코코아에서 시스템 로케일과 시스템 언어를 얻는 방법

올바른 result.Why 시스템 로케일을주고있다 currentlocale 그것이 Identifier.If 나는 다음과 같은

NSLocale *locale; 
locale = [NSLocale systemLocale]; 

NSString * localLanguage = [locale objectForKey:NSLocaleIdentifier]; 
NSLog (@"Language : %@", localLanguage); 

NSLog(@"System locale Identifier %@",[locale localeIdentifier]); 

그러나 아무것도로 시스템의 현재 로케일을 얻기 위해 다음과 같은 코드를 시도

시스템 로케일로 표시됩니다 어떤 가치도 부여하지 않고 사용자가 선호하는 언어가 아닌 시스템 기본 언어를 얻는 방법은 무엇입니까? 도와주세요

답변

4

기본값 인 NSLocaleIdentifier은 현재 선택이 없음을 나타 내기 위해 의도적으로 @""입니다. Apple에 따르면 systemLocale은 사용자가 선택한 로케일 (currentLocale)에 구현되지 않은 키에 대한 대체 기능이며, 항상 설정되어 항상 사용자가 제어 할 수 있기 때문에 의미가 있습니다.

사용자가 선호하는 언어 목록을 따르려면 사용자가 선호하는 순서대로 사용자가 선호하는 언어 목록을 반환하는 + preferredLanguages을 사용하고 싶습니다. 이는 OSX 및 iOS에서 모두 작동하며 언어를 선택할 때 시스템에 적절한 대체 수단을 제공합니다. 시뮬레이션되고 엑스 코드하는 사용자 선호 언어리스트 인 :

테스트 들어 콤마 분리 괄호 둘러싸인 어레이 ((DE,FR,EN) 예)의 값이 커맨드 라인 스위치 -AppleLanguages를 사용할 수있다.

사용자가 선호하는 언어를 설정하므로 (적어도 OSX에서는) 사용자가 지역화 된 데이터를 선택하면 운영 체제가 목록을 따릅니다. 일반적으로 매크로를 사용하는 것 이상을 수행하는 것은이 사실로 인해 불필요한 것으로 간주됩니다. 그러나 지역화해야하는 리소스가 아닌 정보가 있으면 값을 수동으로 볼 수 있습니다.

+0

감사를 당신의 response.Do 당신은 내가 시스템 언어를 얻을 수있는 방법 어떤 생각을 가지고있다. – Akbar

+0

OS X에 대한 것은 실제로 존재하지 않습니다. 모두 사용자가 결정합니다. 당신은 그것을 무엇을 위해 사용하려고합니까? 어쩌면 내가 가리킬 수있는 또 다른 메커니즘이있을 것입니다. – gaige

+0

내 req. 사용자가 선호하는 언어로 텍스트를 표시하는 것입니다, 그것은 백엔드 서비스에서 가져온 것입니다, 사용자가 특정 언어를 선택하지 않은 경우, 나는 기본 시스템 언어로 텍스트를 표시해야합니다. 왜 내가 어떻게 찾을 수 있습니까? 시스템의 기본 언어를 가져와. 다른 도구가 뭔지 말해 줄 수 있니? – Akbar

8

당신은 간단하게 사용할 수 있습니다에 대한 NSString* language = [[NSLocale preferredLanguages] objectAtIndex:0];

+0

이것이 내가 사용할 수있는 최상의 솔루션입니다. 감사합니다! – thibmaek

관련 문제