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.