2011-10-22 5 views
4

InAppSettingsKit을 사용하여 설정을 관리하려고합니다. 이 작업은 .plist 파일과 함께 Settings.bundle을 사용하고 번역되는 각 언어에 대해 .strings 파일을 사용합니다.InAppSettingsKit을 사용하여 Settings.bundle에서 문자열 지역화

설정 응용 프로그램을 사용하여 내 문자열의 번역이 응용 프로그램 외부에서 올바르게 작동하는지 확인할 수 있습니다. 그러나 제 신청서에있을 때 번역은 일어나지 않습니다. 내가 생각

내가 생각 몇 로깅 문장과 함께 InAppSettingsKit 클래스 IASKSettingsReader에서이 같은 코드에 내려 오는 내 도움이 될 :

- (NSString*)titleForStringId:(NSString*)stringId { 
    NSLog(@"%@",[_bundle localizedStringForKey:stringId value:stringId table:self.localizationTable]); 
    NSLog(@"%@",[_bundle localizedInfoDictionary]); 
    return [_bundle localizedStringForKey:stringId value:stringId table:self.localizationTable]; 
} 

만약 내가 제대로 이해하고

는이 테이블을 사용한다 self.localizationTable이라는 이름을 번역 원본으로 사용하십시오. 이 값은 단순히 "루트"입니다. 선택한 언어로 된 Root.strings 파일 경로가 아니므로 localizedStringForKey:value:table: 메서드가 올바른 경로를 가리키는 일부 전역 시스템 참조를 사용해야합니다.

문자열 파일 이름이 Root.plist 파일을 포함하여 대문자 R 인 "Root.strings"임을 확인했습니다.

[_bundle localizedInfoDictionary] return (null); 그것은 영어와 프랑스어의 두 가지 언어 설정을 위해 이것을하고 있습니다.

디버깅 방법을 잘 모르겠습니다. 당신이 줄 수있는 도움을 주셔서 감사합니다.

답변

1

문제가없는 현지화 된 텍스트로 InAppSettingsKit을 사용하고 있습니다. 당신의 Root.strings 파일이 Settings.bundle (en.lproj와 fr.lproj는 영어와 프랑스어)의 올바른 서브 디렉토리에 있습니다.

"Strings Filename" "Root"라는 문자열을 포함해야합니다.

0

이 문제를 해결 한 이후로 꽤 오랜 시간이 걸렸습니다. 그 당시에는 완전히 이해하지 못했습니다.

NSBundle Class Reference

:이 질문을 폐쇄의 관심은, 내가 나중에 참조 할 수 있도록 다음과 같은 문서를 가리키는 것이다 다음을 참조: 두 번째 문서에서

Resource Programming Guide

, 절을 참조하십시오 "문자열 리소스 -> 코드에 문자열 리소스를로드"솔루션이 제대로 구성 Root.strings을 포함

파일은 다음과 같은 파일 목록에 표시됩니다.

enter image description here

관련 문제