我有一个跨平台(iOS,watchOS和macOS)应用程序。因此,我在Xcode中创建了一个框架,并将共享文件(在所有平台上工作的源代码)放入框架中。
然后我翻译了它们。这个应用程序运行良好。唯一的问题是,框架中转换的字符串资源从未被应用程序使用过。
如果我将字符串资源的内容从框架中复制出来并插入到应用程序的字符串资源中,它就能工作。但我不认为这样做是个好主意。
对于如何使应用程序直接使用框架中的字符串资源,有什么想法吗?
这是故意的,还是我应该向苹果提交的一个bug?
Xcode 9.1 (9B55),macOS High塞拉利昂10.13.1 (17B48) Swift 4.0.2
这里可以找到一个示例项目。https://www.dropbox.com/s/c6bdp28rmk9rxii/Framework%20Translation%20Issue.zip?dl=0
发布于 2017-11-06 02:23:11
事实证明,框架中的NSLocalizedString必须显式地告诉框架的包。或者调用框架的应用程序将使用主包查找本地化资源。
NSLocalizedString("Test", tableName: nil, bundle: bundle, comment: "Test")您可以使用init(for: AnyClass)或allFrameworks: [Bundle]和过滤器来获取框架的包。
您不能直接使用包的id,除非您确信它只固定在一个平台上,以后不会更改。
https://stackoverflow.com/questions/47123551
复制相似问题