我想添加一个功能来更改应用程序内的应用程序语言(独立于iPhone语言)。
要显示可用的语言,而不是对它们进行硬编码,我想获取受支持的本地化语言列表并使其动态化。 然后,每次我添加新的本地化语言时,它将自动添加到可用语言列表中。
有什么办法可以做到这一点?
答案 0 :(得分:2)
使用:
let languageIds = Bundle.main.localizations
以获取语言ID列表。然后,您可以使用以下方法将每种语言ID转换为本地化的语言名称:
let loc = Locale(identifier: langId)
let name = loc.localizedString(forLanguageCode: langId) ?? "Unknown"
以下是一些代码,可在您的应用程序捆绑包中构建可用语言的词典。它键入区域设置ID(语言ID),并且每个值都是每个区域设置ID的本地化语言名称。
let langIds = Bundle.main.localizations
var languages = [String:String]()
for langId in langIds {
let loc = Locale(identifier: langId)
if let name = loc.localizedString(forLanguageCode: langId) {
languages[langId] = name
} else {
// this should never be reached
}
}
Bundle
类还提供了preferredLocalizations
属性以及其他一些相关的属性和功能。