Swift 包管理器中的可本地化字符串

Localizable strings in Swift Package Manager

我最近将我的库迁移到了 SPM。我的库还包含 UI 内容和预定义的本地化字符串 e.g.:

titleLabel.text = NSLoclaizedString("onboarding.page1.title", comment: "Blah blah blah")

我正在使用 BartyCrouch 自动进行本地化,这会忽略我的库(预期)。对我来说真正的问题是,当我手动将它们放入 Localizable.strings 时,它们也被忽略了

我的问题是:有什么方法可以本地化这些吗?

我尝试过的方法,但没有成功:

在我的 Swift 包裹内:

public class LocalizableBridge {
    public static let shared = LocalizableBridge()
    public var bundle: Bundle = .main
}

final class MyViewController: UIViewController {

   // some code...

   private func setupLayout() {
        loadingLabel.text = NSLocalizedString("plugin.loading-state.title", tableName: "Localizable", bundle: LocalizableBridge.shared.bundle, value: "plugin.loading-state.title", comment: "LOADING")
        loadingLabel.textColor = .lightGray
        activityIndicator.startAnimating()
    }

    // some code...
}

在我的项目中:

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?
    var appCoordinator: AppCoordinator?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

        // some code...

        LocalizableBridge.shared.bundle = Bundle(identifier: "my.projects.bundle.id")!

        // some code...

        return true
    }
}

提前谢谢大家

我相信您在错误的包中查找字符串。尝试 Bundle.module 找到它们,那应该是正确的地方。