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

时间:2019-03-16 14:21:44

标签: ios swift localization

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

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

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

1 个答案:

答案 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属性以及其他一些相关的属性和功能。