Eti*_*nne 5 locale region swift swiftui
我想生成一个所有区域设置标识符的列表,供用户选择作为默认值。类似于在标准设置中选择区域。
因此,我想生成一个列表,其中包含例如“澳大利亚”、“奥地利”、“阿塞拜疆”、...、“也门”、“赞比亚”、“津巴布韦”。如果用户选择“澳大利亚”,我想返回en_AU.
所以需要确定下Locale可以使用的属性以及如何遍历它。
目前,只是想看看我是否可以返回文本,例如“澳大利亚”:
Text(Locale.localizedString(Locale.init(identifier: Locale.availableIdentifiers[0].description)))
Run Code Online (Sandbox Code Playgroud)
但是返回错误:
Closure containing control flow statement cannot be used with function builder 'ViewBuilder'
Run Code Online (Sandbox Code Playgroud)
谢谢
看起来您正在寻找每个标识符的名称。你可以从NSLocale类似的地方得到这些:
Locale.availableIdentifiers.map {
(id: $0, name: (NSLocale.current as NSLocale).displayName(forKey: .languageCode, value: $0) ?? "-")
}
Run Code Online (Sandbox Code Playgroud)
所以你可以随心所欲地升起它们。例如,将它们显示在列表中:
struct ContentView: View {
let localeSheet: [(id: String, name: String)] = {
Locale.availableIdentifiers.map {
(id: $0, name: (NSLocale.current as NSLocale).displayName(forKey: .languageCode, value: $0) ?? "-")
}.sorted { $0.name < $1.name }
}()
var body: some View {
List(localeSheet, id: \.id) {
Text($0.name)
Spacer()
Text($0.id)
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
139 次 |
| 最近记录: |