我有一个带有本地化字符串文件的应用程序。 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/