2017-11-05 1 views
0

크로스 플랫폼 (iOS, watchOS 및 macOS) 앱이 있습니다. 그래서 Xcode에서 프레임 워크를 만들고 모든 플랫폼에서 작동하는 소스 코드 인 공유 파일을 프레임 워크에 넣습니다.프레임 워크의 번역 된 문자열 리소스가 Xcode에서 프레임 워크를 가져 오는 앱에서 사용되지 않습니다.

그럼 번역했습니다. 응용 프로그램이 잘 작동합니다. 유일한 문제는 프레임 워크의 번역 된 문자열 리소스가 앱에서 사용되지 않는다는 것입니다.

문자열 리소스의 콘텐츠를 프레임 워크 밖으로 복사하여 응용 프로그램의 문자열 리소스에 삽입하면 작동합니다. 그러나 나는 그런 식으로 일을하는 것이 좋은 생각이라고 생각하지 않습니다.

응용 프로그램을 만드는 방법에 대한 아이디어는 프레임 워크에서 문자열 리소스를 직접 사용합니까?

이것은 의도적입니까? 아니면 Apple에 제출해야하는 버그입니까?

엑스 코드 9.1 (9B55), 맥 OS 높은 시에라 10.13.1 (17B48)는 스위프트 4.0.2

샘플 프로젝트는 여기에서 찾을 수 있습니다. https://www.dropbox.com/s/c6bdp28rmk9rxii/Framework%20Translation%20Issue.zip?dl=0

답변

0

프레임 워크의 NSLocalizedString은 프레임 워크의 번들을 명시 적으로 말해야합니다. 또는 프레임 워크를 호출하는 앱은 메인 번들을 사용하여 현지화 리소스를 찾습니다.

NSLocalizedString("Test", tableName: nil, bundle: bundle, comment: "Test") 

당신은 프레임 워크의 번들을 얻을 수있는 필터를 init(for: AnyClass) 또는 allFrameworks: [Bundle]를 사용할 수 있습니다.

번들의 ID는 하나의 플랫폼에만 고정되어 있으며 앞으로 변경되지 않는다고 확신하지 않는 한 직접 사용하지 마십시오.

관련 문제