列出所有 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)
}
}
}
我想为用户生成所有语言环境标识符的列表,默认为 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)
}
}
}