[英]How to use Localizable.strings stored in a CocoaTouch Framework?
我想為CocoaTouch框架添加多語言支持。
問題:我創建的Localizable.strings文件只有當它是主應用程序及其目標的一部分時才被NSLocalizedString使用。 我想將它存儲在Framework中以保持分離。
放置在CocoaTouch框架內時,如何使用Localizable.strings ?
采用:
NSLocalizedString("Good", tableName: nil, bundle: NSBundle(forClass: self), value: "", comment: "")
或者您可以像這樣創建公共函數:
class func POLocalized(key: String) -> String{
let s = NSLocalizedString(key, tableName: nil, bundle: NSBundle(forClass: self.classForCoder()), value: "", comment: "")
return s
}
使用示例:
let locString = POLocalized("key")
這可以通過在NSLocalizedString
構造函數中指定框架的包標識符來完成。
if let bundle: NSBundle = NSBundle(identifier: "com.mycompany.TheFramework") {
let string = NSLocalizedString("key", tableName: nil, bundle: bundle, value: "", comment: "")
print(string)
}
您可以將此結構添加到您的代碼庫:
internal struct InternalConstants {
private class EmptyClass {}
static let bundle = Bundle(for: InternalConstants.EmptyClass.self)
}
然后使用可選的bundle param指定字符串文件的位置:
let yourString = NSLocalizedString("Hello", bundle: InternalConstants.bundle, comment: "")
如果在NSLocalizedString
構造函數中不使用bundle
param,則Bundle.main
是默認值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.