Mat*_*est 0 localization ios swift
我想添加一个功能来更改应用程序内的应用程序语言(独立于 iPhone 语言)。
为了显示可用的语言,我想获取支持的本地化语言列表并使其动态化,而不是对它们进行硬编码。然后,每次我添加新的本地化语言时,它都会自动添加到可用语言列表中。
有什么办法可以做到这一点吗?
使用:
let languageIds = Bundle.main.localizations
Run Code Online (Sandbox Code Playgroud)
获取语言 ID 列表。然后,您可以使用以下命令将每种语言 ID 转换为本地化语言名称:
let loc = Locale(identifier: langId)
let name = loc.localizedString(forLanguageCode: langId) ?? "Unknown"
Run Code Online (Sandbox Code Playgroud)
下面是一些在应用程序包中构建可用语言字典的代码。它以区域设置 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
}
}
Run Code Online (Sandbox Code Playgroud)
该类Bundle还提供了preferredLocalizations属性和一些其他相关的属性和函数。