ios - Swift:如何更改应用程序内部的语言?

标签 ios swift

我有一个带有本地化字符串文件的应用程序。 Here are what my localized string files look like . 我还有一个 tableView,其中的单元格包含 accessoryType(复选标记)。我想让用户在更改 tableView 中的检查时更改我的应用程序的语言。 以下是我在应用程序设置的 tableView 中的代码:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    self.setValues(value: languageArray[indexPath.row]) // Upload new language settings to the server

    // Here I want to set the language of my app to the selected value: languageArray[indexPath.row]
    // For example, languageArray[indexPath.row] is "en"

    var array = tableView.visibleCells

    for i in 0 ..< array.count {
        let cells: UITableViewCell = array[i]
        cells.accessoryType = .none
    }

    let cell:UITableViewCell! = tableView.cellForRow(at: indexPath)

    cell.accessoryType = .checkmark
}

谢谢!

最佳答案

正如大多数回答说“这是不可能的”但是

这是可能的,并且可以通过简单的事情来完成。

iOS 应用程序中,每种语言都有包,例如英语的 en.lproj。您只需要从所选语言加载该特定包,并从该包中获取可本地化的内容,例如:字符串、图像等。

    var selectedLanguage = "en"
    let path = Bundle.main.path(forResource: selectedLanguage, ofType: "lproj")
    let bundle = Bundle(path: path!)
    let localizedText = bundle!.localizedString(forKey: YOUR_TEXT_KEY, value: YOUR_TEXT_COMMENT, table: nil)

作为引用,我创建了一个 LanguageDemo应用程序,你可以找到所有的实现和完整的源代码。

关于ios - Swift:如何更改应用程序内部的语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55434380/

相关文章:

iphone - iOS 6 - 我可以在解除 segue 时返回数据吗?

ios - iOS触发单个单元格tableView:heightForRowAtIndexPath:

iOS - 检测电影已完成

swift - 将一组 HKWorkouts 添加到 UserDefaults

ios - ViewController 中的顶部栏 ios swift 显示上一个顶部栏

ios - 防止禁用 UISlider 上的模糊效果

ios - 安装失败 'phonegap-plugin-push' : undefined CordovaError

ios - ARKit Swift 中未检测到 SCNNode 之间的碰撞

php - 上传到 PHP 服务器后无法播放录制的 iPhone X 视频

ios - 无法将 NSAttributedString 呈现为 PDF 中的 2 列选项卡式项目符号列表