列出所有 Locale Identifiers 和相应的区域文本 Swiftui

List all Locale Identifiers and corresponding region text Swiftui

我想为用户生成所有语言环境标识符的列表,默认为 select。类似于 select 在标准设置中设置区域。

因此我想生成一个列表,其中包含例如“澳大利亚”、“奥地利”、“阿塞拜疆”、……、“也门”、“赞比亚”、“津巴布韦”。如果用户selects“澳大利亚”我想returnen_AU.

所以需要确定Locale下的属性可以使用,以及如何迭代

目前,我只是想看看我是否可以 return 文本,例如“澳大利亚”:

Text(Locale.localizedString(Locale.init(identifier: Locale.availableIdentifiers[0].description)))

然而 returning 错误:

Closure containing control flow statement cannot be used with function builder 'ViewBuilder'

谢谢

您似乎在寻找每个标识符的名称。您可以从 NSLocale 中获取这些信息,例如:

Locale.availableIdentifiers.map {
    (id: [=10=], name: (NSLocale.current as NSLocale).displayName(forKey: .languageCode, value: [=10=]) ?? "-")
}

所以你可以随心所欲地升起它们。例如,将它们显示在列表中:

struct ContentView: View {
    let localeSheet: [(id: String, name: String)] = {
        Locale.availableIdentifiers.map {
            (id: [=11=], name: (NSLocale.current as NSLocale).displayName(forKey: .languageCode, value: [=11=]) ?? "-")
        }.sorted { [=11=].name < .name }
    }()

    var body: some View {
        List(localeSheet, id: \.id) {
            Text([=11=].name)
            Spacer()
            Text([=11=].id)
        }
    }
}