【问题标题】:Set Language in Swift 3 failed [duplicate]在 Swift 3 中设置语言失败 [重复]
【发布时间】:2018-03-08 09:48:27
【问题描述】:

先生。

我正在尝试创建一个支持多语言的应用程序。我使用 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 "";
    }

【问题讨论】:

  • 应用程序的语言在设备上会发生变化,而不是在应用程序本身内部。如果您想查看本地化字符串,请在设备设置中更改语言。
  • 那么我应该如何在运行时更改应用程序语言?

标签: ios swift swift3 bundle nslocalizedstring


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-02
    • 1970-01-01
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多