我想使用Apple的Swift Package Manager来运送我的图书馆。但是,我的lib包含一个.bundle文件,其中包含多个以不同语言翻译的字符串。使用cocoapods,我可以使用spec.resource包含它。但是在SwiftPM中,我做不到。有什么办法吗?
使用Swift 5.3,最终可以添加本地化的资源🎉
包初始化程序知道一个defaultLocalization参数,该参数可用于本地化资源。
public init( name: String, defaultLocalization: LocalizationTag = nil, // New defaultLocalization parameter. pkgConfig: String? = nil, providers: [SystemPackageProvider]? = nil, products: [Product] = [], dependencies: [Dependency] = [], targets: [Target] = [], swiftLanguageVersions: [Int]? = nil, cLanguageStandard: CLanguageStandard? = nil, cxxLanguageStandard: CXXLanguageStandard? = nil )
假设Icon.png您要针对英语和德语的人进行本地化。
Icon.png
图像应包含在Resources/en.lproj/Icon.png&中Resources/de.lproj/Icon.png。
Resources/en.lproj/Icon.png
Resources/de.lproj/Icon.png
在可以像这样在包中引用它们之后:
let package = Package( name: "BestPackage", defaultLocalization: "en", targets: [ .target(name: "BestTarget", resources: [ .process("Resources/Icon.png"), ]) ] )
请注意LocalizationTag是IETF语言标签的包装。
LocalizationTag
以下提案概述的功劳和贡献,请检查更多细节。