2014-07-08 2 views
3

iOS에 대한 질문이 있습니다. 내 기기의 언어를 감지하고 언어가 영어 인 경우 내 앱의 텍스트를 변경하고 영어가 아닌 언어는 변경합니다. 그러나 언어를 감지하면 항상 지역을 감지하고 언어를 감지하지 못합니다. 다른 말로하면 언어를 변경하려고 시도하면 변경되지 않습니다. 지역을 변경하면 언어가 변경됩니다.장치 목표 -c의 언어 사용자를 올바르게 감지하는 방법은 무엇입니까?

내 코드는 다음과 같습니다

NSString *userLocale = [[NSLocale currentLocale] localeIdentifier]; 
NSString *userLanguage = [userLocale substringToIndex:2]; 
NSLog(@"%@", userLanguage); // return format "en", "es"... (english or spanish) 

는 [NSLocale currentLocale] 얻을 EN_US이 매개 변수와 함께이 지역의 의존하기 때문에이 문제가 나타나는 수 있을까?

감사합니다.

+0

이 링크는 도움이 될 수도 있습니다. 좋은 링크 : http://stackoverflow.com/questions/3910244/getting-current-device-language-in-ios – Niraj

답변

3

당신이 언어는 사용자의 언어 설정의 배열을 반환하고 가장 선호하는 언어 목록의 첫 번째가 될 것입니다

[NSLocale preferredLanguages]; 

을 시도합니다.

NSLocale은 현재 언어 이상을 캡슐화합니다. 소수점 구분 기호에 사용할 통화 식별자 및 용도는 몇 가지 예입니다. 미국 북서부에 거주하는 스페인어 사용자는 스페인어로 물건을 보길 원하지만 통화로 $를 볼 것으로 예상됩니다.

당신이 정말로 찾고있는 것이 완전한 현지화 지원이라고 의심되는 경우에는 앱을 현지화하는 방법에 대한 많은 정보가 있습니다. 매크로

NSLocalizedString 

및 그 형제를 사용하면 언어 불가지론 코드 (대부분은)를 쓸 수 있습니다.

+0

NSString * language = [[NSLocale preferredLanguages] objectAtIndex : 0]; 그러나 나는 항상 "en"을 얻고있다. 시뮬레이터에서 언어가 항상 영어 일 수 있습니까? 내일 나는 이것을보기 위해 장치를 시험해 볼 수있다. – user3739367

+0

예. 장치 언어를 다른 것으로 변경하면 다른 언어로 변경됩니다. – Brandon