2010-08-18 2 views
5

현지화해야하는 iPhone 앱이 있습니다. 문자열에 문제가 없지만 자원에 문제가 있습니다. 현지화 된 HTML 페이지를로드해야합니다. 파일은 다음과 같습니다 : presentation.htm 파일은 프로젝트에 폴더가있는 곳 (html /)에 추가되고 폴더라는 그룹이 추가됩니다.pathForResource를 사용하여 현지화 된 리소스를 자동으로로드 할 수 없습니다.

이 코드로 HTML 페이지를로드

NSString *pathPresentation = [[NSBundle mainBundle] pathForResource:@"presentation" ofType:@"htm"]; 

if(!pathPresentation) { 
    NSLog(@"Could not find presentation.htm"); 
} 
NSURL *url = [NSURL fileURLWithPath:pathPresentation]; 
NSLog(@"-> path presentation.htm : %@", pathPresentation); 
UIWebView *webViewPresentation = [[UIWebView alloc] init]; 
NSData *htmlData = [NSData dataWithContentsOfFile:pathPresentation]; 
if (htmlData) { 
    [webViewPresentation loadData:htmlData MIMEType:@"text/html" textEncodingName:@"Latin-1" baseURL:url]; 
} 

의 첫 번째 시도 : 아직 응용 프로그램 자원이 지역화 된 이후 나는이 웹 사이트 I Can Localize의 지시를 따랐습니다

합니다. 폴더의 이름은 en.lprojfr.lproj입니다.

나는 시뮬레이터에 그것을 시도하지만 성공하지 못했습니다 :

  • 를 로그 경로가 있음을 나타냅니다 : (...)/myapp.app/presentation.htm
  • 파일 시뮬레이터가 영어로되어있는 동안 시뮬레이터에로드 된 것은 프랑스어로 표시됩니다.

두 번째 시도는 :

다음, 나는 자원을 삭제하고 자신의 그룹 폴더 (자원/HTML /)에서 그들을 다시 추가합니다. 정보 버튼을 누르고 "지역화 파일 만들기"를 선택했습니다. 파일이 영어 (미국) .lproj 폴더에 추가되었습니다. 그런 다음 "지역화 추가"및 "프랑스어"를 선택합니다.

로그 경로가 있음을 나타냅니다
  • : (...)/myapp.app (I 테스트 전에 깨끗하게 빌드를)

    나는 시뮬레이터에 그것을 시도하지만 성공하지 못했습니다 /presentation.htm

  • 시뮬레이터에로드 된 파일은 프랑스어로, 시뮬레이터는 영어로되어 있습니다.

셋째 봅니다 :

아이폰 OS 4.0에 로딩 지역화 된 리소스에 대한 this page을 읽은 후, 나는 (자원을 삭제하고 ko 페이지에서 폴더 이름을 변경 지역화 된 폴더에 자원을 변경했습니다. lprojfr_FR.lproj

시뮬레이터에서 시도해 보았지만 성공하지 못했습니다 (테스트하기 전에 빌드를 정리했습니다) :

  • 로그 경로가 있음을 나타낸다 : (...)/myapp.app/presentation.htm
  • 시뮬레이터에 로딩 된 파일에 프랑스어, 시뮬레이터는 영어로되어있다.

도움말?

아이디어가 있으십니까? 나는 기능이 알고 - (NSString *)pathForResource:(NSString *)name ofType:(NSString *)extension inDirectory:(NSString *)subpath forLocalization:(NSString *)localizationName

는하지만 그것이 가능한 자동으로 원하고, 내 응용 프로그램을 방지 할 수 있습니다 Directory 또는 localizationName 등을 고정하는 것은 자동으로 수행 할 수 있습니다.

+0

를 제거한 후 응용 프로그램을 시뮬레이터에서, 그것은 작동하지 않았지만 경로가 변경되었습니다. 이제 : (...)/myapp.app/fr_FR.lproj/presentation.htm – AlexandreD

답변

16

용액이다 시뮬레이터 (또는 장치)로부터

  1. 제거 응용
  2. 사용 간단한 지역화 폴더로서 : en.lproj
  3. 새로 빌드
+1

이것을하십시오! 모든 솔루션을 아무런 효과없이 시도한 후에도 물론 하드 리셋이 효과적이었습니다. –

+0

2 시간을 보내기 전에이 게시물을 찾았 으면합니다. 나를 위해 "제거 응용 프로그램"트릭했다. 나는 그것이 혼란스러워진다. – Walter

+1

시뮬레이터를 리셋 한 다음 올바른 결과를 얻습니다! – sunkehappy

관련 문제