Когда вы разрабатываете SDK. Вам нужна дополнительная операция.
1) Создайте Localizable.strings как обычно в YourLocalizeDemoSDK.
2) создайте такие же Localizable.strings в YourLocalizeDemo.
3) Найдите свой путь к пакету YourLocalizeDemoSDK.
Swift4:
// if you use NSLocalizeString in NSObject, you can use it like this
let value = NSLocalizedString("key", tableName: nil, bundle: Bundle(for: type(of: self)), value: "", comment: "")
Bundle(for: type(of: self))
поможет вам найти пакет в YourLocalizeDemoSDK. Если вы вместо этого используете Bundle.main
, вы получите неправильное значение (фактически это будет та же строка, что и ключ).
Но если вы хотите использовать расширение String, упомянутое dr OX. Вам нужно сделать еще кое-что. Расширение origin выглядит так.
extension String {
var localized: String {
return NSLocalizedString(self, tableName: nil, bundle: Bundle.main, value: "", comment: "")
}
}
Как мы знаем, мы разрабатываем SDK, Bundle.main
получит пакет пакета YourLocalizeDemo. Это не то, что мы хотим. Нам нужен комплект в YourLocalizeDemoSDK. Это уловка, позволяющая быстро его найти.
Запустите приведенный ниже код в экземпляре NSObject в YourLocalizeDemoSDK. И вы получите URL-адрес YourLocalizeDemoSDK.
let bundleURLOfSDK = Bundle(for: type(of: self)).bundleURL
let mainBundleURL = Bundle.main.bundleURL
Распечатайте оба из двух URL-адресов, и вы обнаружите, что мы можем построить базу bundleURLofSDK на mainBundleURL. В этом случае это будут:
let bundle = Bundle(url: Bundle.main.bundleURL.appendingPathComponent("Frameworks").appendingPathComponent("YourLocalizeDemoSDK.framework")) ?? Bundle.main
И расширение String будет:
extension String {
var localized: String {
let bundle = Bundle(url: Bundle.main.bundleURL.appendingPathComponent("Frameworks").appendingPathComponent("YourLocalizeDemoSDK.framework")) ?? Bundle.main
return NSLocalizedString(self, tableName: nil, bundle: bundle, value: "", comment: "")
}
}
Надеюсь, поможет.
person
Liam
schedule
05.07.2018
NSLocalizedString()
возвращает ключ, если не удается найти пару ключ / значение. - person Costique   schedule 12.02.2012