在Swift 3中设置语言失败

时间:2017-09-27 03:04:42

标签: ios swift swift3 bundle nslocalizedstring

先生。

我正在尝试创建一个支持多语言的应用。我使用zh-Hant,en,jp等缩写来保存为用户默认值。并更改应用程序的语言。以文本字段的持有者为例,如果单击集合视图项,则文本字段的占位符文本将发生变化。但是,我不能这样做。模拟器语言默认为英语

这是我正在进行的工作:

本地化文件:日本(jp)

"User Email"; = "ユーザーメール";

设置文字方法

   let lcode : String = self.langList[indexPath.item].code
    print("You selected cell #\(indexPath.item) and code : \(lcode)")
    UserDefaults.standard.setValue(lcode, forKey: "lang")
    txtUsername.placeholder  = "User Email".localized(lang: lcode)

字符串扩展

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 "";
    }

1 个答案:

答案 0 :(得分:0)

应用程序的语言取决于设备语言。要测试本地化字符串,请更改设备语言。否则,虽然不推荐,但您可以通过向ViewController添加UserDefaults.standard.set("zh", forKey: "AppleLanguages")来更改运行时的应用语言。但您必须重新启动应用才能看到语言更改。