내 응용 프로그램 언어를 변경하려는 응용 프로그램의 옵션이 필요합니다 (응용 프로그램 언어가 전체 시스템이 아님), 제게 몇 가지 힌트를 주시겠습니까?전체 기기가 아닌 iOS에서 응용 프로그램 언어 설정을 변경하십시오
미리 감사드립니다.
현지화에 대해 알고 있습니다!
내 응용 프로그램 언어를 변경하려는 응용 프로그램의 옵션이 필요합니다 (응용 프로그램 언어가 전체 시스템이 아님), 제게 몇 가지 힌트를 주시겠습니까?전체 기기가 아닌 iOS에서 응용 프로그램 언어 설정을 변경하십시오
미리 감사드립니다.
현지화에 대해 알고 있습니다!
Xcode에서 설정 한 사용자 지정 빌드 플래그를 사용하여이 작업을 수행 할 수 있습니다. 이 방법을 사용하면 장치의 모든 설정을 변경하는 대신 현지화로 응용 프로그램을 실행할 수 있습니다.
나는 http://abizern.org/2012/03/18/simple-localisation-testing/에서 그것에 대해 블로그 포스트를 작성했습니다 그리고 당신은 행동에서 볼하는 데 사용할 수있는 Github에서의 예제 프로젝트가 : https://github.com/Abizern/SimpleLocalisationTesting
동일한 질문이 있지만 어떻게 찾을 수 있습니까? AppleLanguages soryy iOS를 처음 사용했습니다. –
런타임시 전달할 수있는 플래그 중 하나 일뿐입니다. – Abizern
문서를 보내 주셔서 감사합니다. 그러나이 문서에서 newbs에 대해 설정하는 방법이 완전히 명확하지 않습니다 – User16119012
사전 배열로 채워진 .plist로 만든 사용자 정의 현지화를 만들었습니다. 이처럼 내 프로젝트에서
kYes
en = @"Yes"
ru = @"Да"
kNo
en = @"No"
ru = @"Нет"
나는이 문자열을 읽기 위해 싱글 톤 클래스를했다. 옵션에서 사용자는 필요한 언어를 선택합니다 (처음에는 현재 시스템 상태에서 언어를 선택하거나 기본 시스템을 설정합니다). 선택한 언어는 다음 시작시 사용할 파일 또는 설정에 저장해야합니다. 싱글 톤에서 나는 +getStringWithKey:
을가집니다. 그래서 거기에 @ "kYes"를 전달하고 응용 프로그램의 현재 지역화를위한 문자열을 얻습니다. 또한 프로젝트에 표준 현지화 파일을 추가해야합니다. 비어있는 경우에도 지원하지 않으면 모든 언어가 iTunes에 표시되지 않으므로 비어있는 경우에도 프로젝트에 추가해야합니다.
실제로하는 방법에 대한 다른 아이디어를 생각했다가 모든 문자열을 수동으로 설정합니다. 2. 언어 설정이 변경되면 모든 요소를 업데이트하는 메서드 (알림)를 제공합니다. 아이디어는 iOS가 지역화 된 버전의 문자열을 찾는 것과 동일한 방법을 기반으로합니다. 따라서 전제 조건으로 폴더 구조 language_id.lproj와 함께 번들 (예 : AppNameStrings.bundle)을 제공해야합니다. 여기서 language_id는 제공하려는 언어의 지정자입니다. 그런 번들은 설정 번들을 만들고 Finder에서 열고 번들을 생성하여 root.plist 파일을 삭제할 수 있습니다. 다음 번들에서 읽을 수있는 함수가 필요합니다. 다음은 지역화 된 문자열을 읽는 데 사용하는 두 가지 방법입니다. 당신은
[yourBundle localizedStringForKey:stringToken value:@"" table:@"Root" language:language]
에 대한 NSBundle의 범주를 만들 필요가 귀하의 GlobalDefinitions.m 파일
NSBundle *yourNameBundle(void) {
static NSBundle* bundle = nil;
if (!bundle) {
NSString* path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"YouNameBundle.bundle"];
bundle = [NSBundle bundleWithPath:path];
}
return bundle;
}
NSString *YourNameLocalized(NSString *stringToken, NSString *language) {
if (yourNameBundle()) {
return [yourBundle localizedStringForKey:stringToken value:@"" table:@"Root" language:language];
} else {
return stringToken;
}
}
를이 코드 당신의 GlobalDefinitions.h 파일
#ifdef __OBJC__
NSBundle *yourNameBundle(void);
NSString *YourNameLocalized(NSString *stringToken, NSString *language);
#endif
에 다음과 같은 방법을 넣고 표준 메소드가 언어 매개 변수를 놓치기 때문입니다. 당신의 방법에서는 해당 language.lproj/Root.strings 파일을 열고 stringToken을 검사합니다. 찾을 수 없으면 토큰을 반환하고 그렇지 않으면 텍스트 문자열을 반환합니다. 일부 텍스트의 현지화 된 버전이 필요할 때마다 예를 들어 label.text = YourNameLocalized (@ "토큰", [self provideLanguageIdentifier]); 너는 끝났어. 지금까지 해본 적이 없지만 제대로 작동합니다.
이 게시물은 좋은 출발점이라고 생각합니다. http : // stackoverflow.com/questions/1669645/how-to-force-nslocalizedstring-to-a-specific-language –
저는 장치가 없어도 응용 프로그램의 언어 만 변경할 수 있다고 생각합니다. –
@VineeshTP 개발하는 동안 장치 및 시뮬레이터의 언어 설정을 변경할 수 있습니다. 내 대답 좀 봐. – Abizern