在Swift 3中设置语言

时间:2017-03-15 09:45:01

标签: ios swift swift3

Swift 2包含函数:

NSBundle.setLanguage("...")

但是新课程" Bundle"在Swift 3中不包含方法setLanguage。 在Swift 3中设置语言的最佳方法是什么?

1 个答案:

答案 0 :(得分:5)

setLanguage()似乎已在Swift 3 Bundle中弃用,或者您正在使用NSBundle扩展程序。相反,这是你可以做的:

let path = Bundle.main.path(forResource: lang, ofType: "lproj")

let bundle = Bundle(path: path!)

然后您可以使用bundle来获取本地化字符串。这是我为此写的扩展名:

extension String {
    func localized(lang:String) -> String? {
        if let path = Bundle.main.path(forResource: lang, ofType: "lproj") {
            if let bundle = Bundle(path: path) {
                return NSLocalizedString(self, tableName: nil, bundle: bundle, value: "", comment: "")
            }
        }

        return nil;
    }
}

<强>用法

"any string from the strings file".localized("en")    // or "sv" for Swedish or "fi" for Finnish