문제

나는 나는 번역하는 무리의 다른 언어입니다.문제는 것입니다 몇 가지 다른 값 호주에서 보다는 것입니다 뉴질랜드에있는 영어권 국가에 있습니다.

을 만들었 en_AU 및 en_NZ 어 파일이 있지만,그들은 모두를 사용하는 표준 영어 파일입니다.나는 삭제된 영어 파일이 있지만,그것은 계속 일어날...

어떤 아이디어에 내가 어떻게 얻을 수 있는 일이?

감사합니다,

--d

도움이 되었습니까?

해결책

iPhone Linaisations (또는 그 중 10 점)는 사용자 세트 (즉, 영국, AUS, NZ)를 통지하지 마십시오. 기본적으로 사용할 수있는 "영어"언어 번역이 하나만 있습니다. 그러나 다른 번역 설정을 사용하도록 강제로 주위를 해킹 할 수 있습니다. "영어"(영어 "(미국)와"EN_GB "(영국 영어) 사이를 선택하기 위해이를 완료했습니다.

기본 파일의 파일을 변경하여 아래와 같은 것을 변경하십시오 (nz 또는 au에 대한 자신의 테스트에 넣어)

int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

// Set up the locale jiggery pokery
NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0];
NSString *locale = [[NSLocale currentLocale] objectForKey: NSLocaleCountryCode];
if ([language isEqualToString:@"en"] && [locale isEqualToString:@"GB"]) {
    [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"en_GB", @"en", nil] forKey:@"AppleLanguages"];
}

int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
.

}

사용자 언어 (예 : "en")를 언어 NSString, 사용자 로캘 (예 : Nz, GB, AU)을 로캘 NSString으로 팝업합니다. (내 경우에) en과 gb와 일치하면 사용자 기본 언어 환경 설정을 "en_gb", "en"로 설정합니다.

다음 응용 프로그램에서 응용 프로그램을 위임합니다. DidFinishLaunchingWithoptions 메소드를 제거하려는 방법

코드로 설정 한 NSUSERDEFAULTS 설정
    [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"AppleLanguages"];
.

모든 번들 초기화가 완료 되었기 때문에이 시점에서 제거하는 것이 안전합니다. 이제 앱을 사용하여 en_gb.lproj 디렉토리 내에서 localization.strings 파일을 사용해야합니다.

그것은 끔찍한 해피 솔루션의 약간이지만, 그것은 나를 위해 일합니다.

다른 팁

나는 내가 무엇을 생각하는 것은 약간의 개선된 버전 rickerbh 의 허용은 대답.첫번째 것을 깨닫는 사용자 기본값으로 구성됩니다 도메인 @"AppleLanguages" 키 제공하지 않 응용 프로그램에서의 도메인에서,그러나 몇 가지 도메인 계층 위의 도메인에 있습니다.이것은 완전히 안전하게 제거에서 사용자 기본값:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults removeObjectForKey:@"AppleLanguages"];

를 호출한 후 이 코드는,당신은 알 수 있는 통화 [defaults objectForKey:@"AppleLanguages"] 여전히 값을 반환합니다.그래서보다는 삭제 @"AppleLanguages" 어떤 시점에서 나중 될 수 있는 문제가 있는 복잡도에 따라 응용 프로그램의 당신이 원하는: 삭제 @"AppleLanguages" 즉시.기본적으로,이정 그것은 다시 기본값이고 캡처하는 어떠한 변경사항의 시스템을 만들었는 경우,예를 들어,사용자가 변경은 그녀의 기본 설정 언어로 표시됩니다.

여기에 내가 무엇:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults removeObjectForKey:@"AppleLanguages"];

NSMutableArray *appleLanguages = [[defaults objectForKey:@"AppleLanguages"] mutableCopy];
NSString *region = [[NSLocale currentLocale] objectForKey:NSLocaleCountryCode];
NSArray *languages = [appleLanguages filteredArrayUsingPredicateFormat:@"not (self contains '-')"];
for (NSString *language in languages) {
    NSString *languageAndRegion = [NSString stringWithFormat:@"%@-%@", language, region];
    [appleLanguages removeObject:languageAndRegion];
}
for (NSString *language in languages) {
    NSString *languageAndRegion = [NSString stringWithFormat:@"%@-%@", language, region];
    NSInteger index = [appleLanguages indexOfObject:language];
    [appleLanguages insertObject:languageAndRegion atIndex:index];
}
[defaults setObject:appleLanguages forKey:@"AppleLanguages"];

(Note filteredArrayUsingPredicateFormat: 장 방법을 썼다.그것은 로켓 과학 그 밖으로 그것이 무엇이나 어떻게 작동합니다.)

이에 대한 언어 버전이 모든 목록에서 원하는 언어와 결합된 사용자의 영역이다.E.g., 는 경우 원래 목록 es en en-GB 와 사용자의 영역이 AU,리 es-AU es en-AU en en-GB.Note es-AU 이 존재하지 않지만,그것은 차이가 없습니다.응용 프로그램 때문에 발견 없는 관련된 현지화 또는 리소스에,그것은 그냥 무시합니다.

Apple 문서 가이 누락 된 iOS 기능.

중요 : iOS에서 번들 인터페이스는 방언을 취하지 않습니다 스크립트 정보가 언제 계정으로 현지화 된 자원을 찾고 있습니다.뿐 언어 지정자 코드는입니다 깊이 생각한.따라서 귀하의 프로젝트 인 경우 언어 별 프로젝트를 포함합니다 언어와 모두가있는 디렉토리 지역 지정 자, 해당 디렉토리 무시됩니다.번들 인터페이스의 Mac OS X는 지원 지역 지정자를 수행합니다 언어 별 프로젝트에서 디렉토리.

나는 독일인들과 같은 문제를 가지고 있었고 "오른쪽"솔루션을 발견했다고 생각합니다.실수는 원래 내 기본 언어가 "독일어 / 오스트리아 (DE_AT)"현지화를 추가 할 때 파일이 무시되었습니다.기본 언어를 "독일 / 독일 (DE_DE)"으로 변경할 때 오스트리아 번역은 무시되지 않았습니다.

Xcode가 매우 오도 된 것으로 알려졌습니다 - 프로젝트 (대상이 아님), 정보, 현지화가 언어 목록 아래에 나타나는 + 버튼을 누른 다음 언어 목록의 아래쪽으로 스크롤 할 수 있습니다.팝업에 "기타"(옆에있는 오른쪽 화살표 포함)가 될 때까지 팝업에 나타납니다. 이것은 언어의 지역 변형을 포함하는 멋진 큰 목록을 엽니 다.그러나 이러한 지역 변종은 iPhone에서 작동하지 않습니다. - 당신은 아무것도 얻지 못합니다 (Apple이 문서화 된 것처럼 여기에있는 다른 대답으로 참조되는 것처럼).위에 나열된 코드 기반 솔루션 중 하나가 필요합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top