Xcode 中导入框架的应用不使用框架中的已翻译字符串资源
Translated string resources in a framework are not used by the app that imports the framework in Xcode
我有一个跨平台(iOS、watchOS 和 macOS)应用程序。所以我在 Xcode 中创建了一个框架,并将共享文件,即适用于所有平台的源代码放入框架中。
然后我翻译了它们。该应用程序运行良好。唯一的问题是框架中翻译的字符串资源从未被应用程序使用。
如果我从框架中复制字符串资源的内容并将它们插入到应用程序的字符串资源中,它就可以工作。但我不认为那样做是个好主意。
知道如何让应用程序直接使用框架中的字符串资源吗?
这是故意的还是我应该向 Apple 提交错误?
Xcode 9.1 (9B55),macOS High Sierra 10.13.1 (17B48)
Swift4.0.2
可以在此处找到示例项目。 https://www.dropbox.com/s/c6bdp28rmk9rxii/Framework%20Translation%20Issue.zip?dl=0
原来框架中的NSLocalizedString
必须明确告诉框架的bundle。或者调用框架的应用程序将使用主包来查找本地化资源。
NSLocalizedString("Test", tableName: nil, bundle: bundle, comment: "Test")
您可以使用 init(for: AnyClass)
或 allFrameworks: [Bundle]
和过滤器来获取框架的包。
你不能直接使用bundle的id,除非你确定它只固定在一个平台上,以后不会改变。
我有一个跨平台(iOS、watchOS 和 macOS)应用程序。所以我在 Xcode 中创建了一个框架,并将共享文件,即适用于所有平台的源代码放入框架中。
然后我翻译了它们。该应用程序运行良好。唯一的问题是框架中翻译的字符串资源从未被应用程序使用。
如果我从框架中复制字符串资源的内容并将它们插入到应用程序的字符串资源中,它就可以工作。但我不认为那样做是个好主意。
知道如何让应用程序直接使用框架中的字符串资源吗?
这是故意的还是我应该向 Apple 提交错误?
Xcode 9.1 (9B55),macOS High Sierra 10.13.1 (17B48) Swift4.0.2
可以在此处找到示例项目。 https://www.dropbox.com/s/c6bdp28rmk9rxii/Framework%20Translation%20Issue.zip?dl=0
原来框架中的NSLocalizedString
必须明确告诉框架的bundle。或者调用框架的应用程序将使用主包来查找本地化资源。
NSLocalizedString("Test", tableName: nil, bundle: bundle, comment: "Test")
您可以使用 init(for: AnyClass)
或 allFrameworks: [Bundle]
和过滤器来获取框架的包。
你不能直接使用bundle的id,除非你确定它只固定在一个平台上,以后不会改变。