如何获取我的 iOS 应用程序的本地化语言?

Mat*_*est 0 localization ios swift

我想添加一个功能来更改应用程序内的应用程序语言(独立于 iPhone 语言)。

为了显示可用的语言,我想获取支持的本地化语言列表并使其动态化,而不是对它们进行硬编码。然后,每次我添加新的本地化语言时,它都会自动添加到可用语言列表中。

有什么办法可以做到这一点吗?

rma*_*ddy 6

使用:

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属性和一些其他相关的属性和函数。