Код: Выделить всё
struct MyView: View {
@State
var number: Decimal = 1.1
var body: some View {
VStack {
HStack(spacing: 20) {
Text("Locale")
.frame(width: 100)
Text("Text")
.frame(width: 100)
Text("TextField")
.frame(width: 100)
}
HStack(spacing: 20) {
Text("de_DE")
.frame(width: 100)
Text(number, format: .number)
.frame(width: 100)
TextField("", value: $number, format: .number)
.frame(width: 100)
}
.environment(\.locale, Locale(identifier: "de_DE"))
HStack(spacing: 20) {
Text("en_US")
.frame(width: 100)
Text(number, format: .number)
.frame(width: 100)
TextField("", value: $number, format: .number)
.frame(width: 100)
}
.environment(\.locale, Locale(identifier: "en_US"))
}
.textFieldStyle(.roundedBorder)
}
}
#Preview {
MyView()
}

Первая строка с немецкой локалью "de_DE" верна, потому что в Германии в качестве разделителя используется запятая, а вторая строка с английским языковым стандартом США в текстовом поле должна отображаться точка.
Регион моего компьютера — Германия, и я предполагаю, что внутренние настройки TextField не учитывают языковой стандарт среды и вместо этого используют языковой стандарт системы.
Итак, как мне заставить TextField учитывать языковой стандарт среды? Есть ли простой способ не выполнять форматирование самостоятельно?
Подробнее здесь: https://stackoverflow.com/questions/797 ... ent-locale
Мобильная версия