How to use Localizable.strings stored in a CocoaTouch Framework? How to use Localizable.strings stored in a CocoaTouch Framework? swift swift

How to use Localizable.strings stored in a CocoaTouch Framework?


Use:

NSLocalizedString("Good", tableName: nil, bundle: NSBundle(forClass: self), value: "", comment: "")

or you can create public func like this:

class func POLocalized(key: String) -> String{    let s =  NSLocalizedString(key, tableName: nil, bundle: NSBundle(forClass: self.classForCoder()), value: "", comment: "")    return s}

example of use:

let locString = POLocalized("key")


This can be done by specifying the bundle identifier of the framework in the NSLocalizedString constructor.

if let bundle: NSBundle = NSBundle(identifier: "com.mycompany.TheFramework") {    let string = NSLocalizedString("key", tableName: nil, bundle: bundle, value: "", comment: "")    print(string)}


You can add this struct to your codebase:

internal struct InternalConstants {    private class EmptyClass {}    static let bundle = Bundle(for: InternalConstants.EmptyClass.self)}  

And then use optional bundle param to specify the location of your string file:

let yourString = NSLocalizedString("Hello", bundle: InternalConstants.bundle, comment: "")

Bundle.main is the default value if you don't use bundle param in your NSLocalizedString constructor.