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
找到它们,那应该是正确的地方。
我最近将我的库迁移到了 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
找到它们,那应该是正确的地方。