2010-08-05 4 views
0

다른 언어를 지원해야하는 iPhone 앱을 개발 중입니다.iphone 다국어 지원

나는 언어가 내 앱 안에서 설정되어야하고 아이폰 설정 내에서 설정되어야한다는 것을 알았다. 그렇다면 언어 대신 현재 언어를 사용해야합니까? 인터넷을 통해 예제를 찾지 못했습니다. 모든 예제에는 응용 프로그램의 현재 언어가 필요합니다. 사용자가 응용 프로그램이 시작될 때 언어를 선택하면 쿠키가 설정되고 다른 언어로 된 .lproj 폴더로 응용 프로그램이 자동으로 참조됩니다.

답변

1

iOS의 기본 현지화 메커니즘을 사용하여 사용할 수 없습니다. 기본적으로 시스템은 사용자의 시스템 언어에 따라 .lproj 폴더를 선택하고 NIB를 현지화하고 NSLocalizedString() 등을 사용하는 경우 자동으로 현지화를 수행합니다.

해당 동작을 변경하고 " 시스템 언어를 사용하려면 원하는 .lproj 폴더의 문자열 파일에 수동으로 액세스하는 NSLocalizedString 버전을 구현해야합니다. NIB는 사용자 정의 NSLocalizedString 함수를 사용하지 않는다는 점을 알아 두십시오. 따라서 NIB를 전혀 사용하지 않거나 다른 NIB를 사용하는 대신 코드에서 NIB를 지역화하지 마십시오.

1

귀하의 질문에 대한 답변이 명확하지 않습니다. "언어는 아이폰 설정이 아니라 내 앱 안에 설정되어야한다"는 말은 아무것도 없다. 사실 그 반대 다.

코코아는 꽤 깔끔한 로컬 리 제이션 시스템을 사용하여 매우 편리합니다. (썩은 지역화 워크 플로에 대해 무엇인가 불평합니다). Here's the full skinny on it - 기본적으로 lproj 폴더에 파일이있는 경우 NSBundle 리소스 API를 사용하여 파일을 찾습니다 (NIB로드 및 기타 하위 시스템에서 자동으로 사용하므로 작업 할 필요가 없습니다).

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

iPhone 언어가 영어로 설정된 경우 내 iPhone 앱은 항상 "it"으로 작동합니다. 배열의 첫 번째.

1

IIRC, NSLocalizedStringFromTable이 필요합니다.

각 언어에 대한 .strings 파일을 만듭니다 등 예 : "EN.strings", "JP.strings을"...

이 파일은 NSLocalizedStringFromTable에 테이블 매개 변수를 사용하여 기본 번들로부터로드 할 수있을 것입니다 .

사용자가 언어를 선택하면 문자열을로드 할 테이블 (.strings 파일)을 전환합니다.

하나의 문제는 iOS 문자열이 여전히 사용자의 설정이나 Info.plist에 현지화 된 앱에 현지화되어 있다는 것입니다. 그래서 언어의 혼합으로 끝날 수도 있습니다.