2017-09-27 86 views
-1

先生。Swift 3中的设置语言失败

我想创建一个多语言支持的应用程序。我使用像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) 

字符串exntension

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

该应用的语言是在设备上改变的,而不是在应用本身内。如果您想查看本地化的字符串,请在设备的设置中更改语言。 – matt

+0

那么我应该如何在运行时更改应用程序语言? –

回答

0

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