将 localizable.strings 添加到 Swift 包?

Add localizable.strings to Swift Package?

在我以前的框架中,我有一个 localizable.strings 文件,其中包含一些用于本地化的全局条目。在左侧车道上,Xcode 中有一个“本地化”按钮可以执行此操作。

如何使用 Swift 包管理器执行此操作?

SPM 从 5.3 开始支持资源。如果仍有问题,请检查 , and


(已过时)

这里有一些可能适合某些用例的临时解决方法。

如果您的框架仅随应用程序分发,您可以将本地化资源移动到应用程序并通过其包引用它们。

  1. 在应用程序中添加 Localization.strings 文件,包 ID my.app.bundle

  2. 从您的框架中编写:

    let bundle = Bundle(identifier: "my.app.bundle")!
    NSLocalizedString("SomeKey", tableName: "Localization", bundle: bundle, value: "SomeKey", comment: "")

您可以对图像做类似的事情。

另一种选择是将您的资源作为源代码存储在框架中。这需要编码,例如,Base64,然后解码以访问资源。 Base64 使用更多 space,但这可能不是问题,具体取决于您的情况。

要在 SPM 中添加可本地化的字符串文件,可以从 swift-tools-version: 5.3

Package.swift 的变化, 需要设置 defaultLocalization: "en" 然后在目标中添加资源,如

包结构应该是这样的,

并通过包中的代码访问可本地化的字符串,