在iOS中即时更改应用程序语言

时间:2015-12-01 16:15:50

标签: swift nsstring swift2 nsuserdefaults swift2.1

我是iOS的新手,我知道这是一个非常常见的问题,但我找不到适合我的查询的答案。

我已将文字添加到应用中的控件上,如此

        let productDescriptionCell = tableView.dequeueReusableCellWithIdentifier("textDescriptionCell") as! TextDescriptionCell
        productDescriptionCell.labelForCell.text = "Description"
        productDescriptionCell.labelForCell.sizeToFit()
        productDescriptionCell.labelForCell.adjustsFontSizeToFitWidth = true

与上面的“描述”文字类似。

我希望在我的应用中有一个按钮,让用户可以动态更改语言。我发现以下代码是最相关的,但这需要重新启动应用程序。

userDefaults.setObject(["\(cc)"], forKey: "AppleLanguages")
userDefaults.synchronize()

另外,我的故事板控制器中有硬编码的文本,我也希望这些也是本地化的。我怎样才能做到这一点?

泰语和英语是我需要本地化的语言

productTitleCell.textFieldForCell.placeholder = SpecProvider.spec.localizedTuv(createLocalizedString("en", tuvEnglish: "Enter Title", tuvThai: "ป้อนชื่อ"))

    func localizedTuv(localizedString: LocalizedString) -> String {
    var locale = LocaleSelectionService.sharedInstance.getCachedLocale()
    if locale.isEmpty {
        locale = ""
    }
    switch(locale) {
        case "en": return localizedString.getTuvEnglish()
        case "th": return localizedString.getTuvThai()
        default: return localizedString.getTuvEnglish()
    }
}

我已经尝试了上面的代码,但这可能会非常繁琐。请帮忙,我真的被卡住了!

1 个答案:

答案 0 :(得分:0)

您必须创建字符串文件,并为要支持的每种语言添加标签。完成此操作后,您可以使用NSLocalizedString作为ViewController中使用的文本。

这是一个教程http://www.raywenderlich.com/64401/internationalization-tutorial-for-ios-2014