2011-05-04 6 views
5

내 응용 프로그램과 함께 html 파일과 이미지가 포함 된 디렉토리를 배포해야합니다.지역화 된 디렉토리 경로를 찾는 방법은 무엇입니까?

앱이 다른 언어를 지원합니다. 나는 각 언어에 대한 디렉토리를 생성 한 후 현재 로케일에 따라 적합한 하나를 선택했습니다 :

NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0]; 
NSString *path = [[NSBundle mainBundle] pathForResource:@"index" 
               ofType:@"html" 
              inDirectory:[language stringByAppendingPathExtension:@"html"];]; 

if (![[NSFileManager defaultManager] fileExistsAtPath:path]) 
{ 
    // Fallback to english 
    path = [[NSBundle mainBundle] pathForResource:@"index" 
              ofType:@"html" 
             inDirectory:@"en.html"]; 
} 

을 어떻게 내가이 대신 (조금 지저분하다) 위의 작업을 수행해야하는 더 나은 거래 ?

나는 아마 어떻게 든이를 위해 xx.lproj 디렉토리를 사용하여 각 xx.lproj 디렉토리에 현지화 된 HTML 디렉토리를 넣고 올바른 파일을 찾을 수 NSBundle pathForResource를 사용하여 생각하고 있어요. 그래도 작동하지 못했습니다.

답변

0

당신은이를 사용할 수 있습니다

NSString *filename = [NSString stringWithFormat:@"html_%@.html", NSLocalizedString(@"abbr", @"")]; 
+0

아니에요. –

4

[NSBundle pathForResource:ofType:]으로 xx.lproj 폴더를 사용하여 직선 앞으로 것입니다.

index.html을 Xcode의 프로젝트 파일에 추가 한 다음 "정보 입수"창에서 지역화 할 수 있습니다. "de"와 같은 다른 언어를 추가하면 Xcode는 새로 생성 된 de.lprojindex.html을 복사합니다. 해당 파일을 제거하면 앱이 영어 버전으로 되돌아갑니다.

당신은 로깅을 테스트 할 수

NSLog([[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"]); 
+0

나는 이것이 투표가 안된다는 것에 놀랐다. NSBundle의 경로 및 URL 메소드를 사용하면 로케일 및 지역 폴더를 알아내는 많은 노력이 자동으로 수행됩니다. – mahboudz

+0

Xcode 6.3.2에서는 작동하지 않으므로. 불행히도 항상 반환하지 않습니다. –

3

내가 너무이 작업을 얻을 수 없습니다입니다 :

NSLog([[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"]); 

을하지만이 수행 (표준 엑스 코드 language.lproj 구조를 사용하여 예를 들면, en.lproj) :

NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0]; 
    NSString *htmlPath = [[NSBundle mainBundle] pathForResource:@"index" 
        ofType:@"html" 
        inDirectory:[language stringByAppendingPathExtension:@"lproj"]]; 

또한 별도로 삭제됩니다. 위의 마틴의 원래 질문에서 ...

3

추가 팁 : 빌드 된 제품에서 파일의 현지화되지 않은 버전을 제거해야합니다. 그렇지 않으면 pathForResource가 현지화 된 파일 대신 해당 파일을 찾습니다.

1

왜하지 forLocalization 방법 :이 엑스 코드 5.1.1 및 iOS 7.1

여기 잘 작동

 htmlFile = [[NSBundle mainBundle] pathForResource:@"myContent" 
               ofType:@"html" 
              inDirectory:@"de.lproj" 
             forLocalization:@"de"]; 

(대체 포함) @Martin Wickman의 일반화를 추가하고 모든 커야한다 .

관련 문제