2010-02-25 5 views
10

정적 라이브러리 (SL)를 사용하는 프로젝트가 있습니다. 해당 SL에는 현지화하려는 두 개의 문자열이 있으며이 프로젝트에는 모든 현지화 파일이 포함되어 있습니다. 모든 텍스트 번역을 같은 파일에 저장할 때 지역화가 잘 작동합니다. 문제는 다른 문자열에서 SL 문자열을 분리하고 싶습니다. 관심있는 언어 폴더에 두 개의 다른 * .strings 파일 (Localizable.strings 및 Localizable2.strings)을 넣으려고했으나 작동하지 않았습니다. 또한 같은 이름 (Localizable.strings)을 가진 두 개의 * .strings 파일을 사용하려고했지만 다른 경로를 사용했습니다. 그것도 작동하지 않았다. 하나의 현지화 파일 만 지원되는 것 같습니다. 맞습니까? 누구든지이 일을하는 좋은 방법을 제안 할 수 있습니까? SDK 3.2 베타 2를 사용하고 있습니다.정적 라이브러리에서 문자열 지역화

답변

15

정적 라이브러리에 묶을 수는 없지만 "MyStaticLibraryName.bundle"과 같이 새 번들을 생성하고 모든 언어 버전을 넣은 다음 아래 코드를 대신 사용할 수 있습니다. "NSLocalizedString()". 필요한 모든 작업 : 정적 라이브러리 및 리소스 번들을 추가하십시오.

NSString *MyLocalizedString(NSString* key, NSString* comment) { 
static NSBundle* bundle = nil; 
if (!bundle) { 
    NSString* path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"MyStaticLibraryName.bundle"]; 
    bundle = [[NSBundle bundleWithPath:path] retain]; 
} 

return [bundle localizedStringForKey:key value:key table:nil]; 
} 
+1

genstring이이 설정으로 작동하려면 -s 매개 변수를 사용해야합니다. – hariseldon78

2

정적 라이브러리에 대해 지역화 할 수있는 문자열을 만든 다음 해당 문자열 파일을 "YourLibraryResource"폴더에 배치하십시오. "YourLibraryResource.bundle"폴더의 이름을 바꿉니다.

이제이 번들을 라이브러리와 함께 프로젝트에 포함합니다. 그런 다음 abuharsky가 제공 한 코드를 사용하십시오.

6

동일한 이름의 파일을 프로젝트에 넣는 것은 결과 앱에서 모두 동일한 위치에 있기 때문에 결코 작동하지 않습니다.

(. 엑스 코드가 디렉토리 구조를 보존하지 않습니다)하지만 다음 Localizable2.strings에 로컬라이제이션의 일부를 넣을 수 있습니다 사용 :

NSLocalizedStringFromTable (@ "Localizable2"@ "키", @ "")

+1

네, 그게 정확히 맞는 해결책입니다! – slatvick

관련 문제