簡體   English   中英

如何使用存儲在CocoaTouch Framework中的Localizable.strings?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM