iOS13: NumberFormatter отсутствует groupingSeparator при попытке отформатировать 4-значные числа с языковым стандартом es_ES - PullRequest
1 голос
/ 29 октября 2019

Я обновил свой проект до iOS 13 и понял, что средство форматирования цен, которое я использовал для форматирования цен, перестало работать правильно.

groupingSeparator, символ, который группирует тысячи, отсутствует для четырехзначных чисел: от 1000 до 9999 при использовании испанской локали es_ES.

Ниже приведен простой отрывок для проверки. NumberFormatter, кажется, прекрасно работает для en_US языкового стандарта и для чисел, превышающих 9999, но всякий раз, когда используется es_ES языковой стандарт и пытаются отформатировать четырехзначное число, groupingSeparator (разделитель тысяч) отсутствует, поэтому вместо получения1.000, я получаю 1000.


let enFormatter = NumberFormatter()
enFormatter.locale = Locale(identifier: "en_US")
enFormatter.numberStyle = .decimal
enFormatter.string(from: 1000)
enFormatter.string(from: 9999)
enFormatter.string(from: 10000)
enFormatter.string(from: 100000)

let esFormatter = NumberFormatter()
esFormatter.locale = Locale(identifier: "es_ES")
esFormatter.numberStyle = .decimal
esFormatter.string(from: 1000)
esFormatter.string(from: 9999)
esFormatter.string(from: 10000)
esFormatter.string(from: 100000)

Просто вставьте его на игровую площадку и проверьте выходы.

Different outputs for en_US and es_ES NumberFormatter

утраЯ что-то пропустил?

До сих пор я сообщал о проблеме в Apple: FB7416623 https://feedbackassistant.apple.com/feedback/7416623 (не уверен, что ссылка работает)

Я буду держать это в курсе, но я был бы признателен, если бы кто-нибудь имел больше информации об этом.

1 Ответ

0 голосов
/ 30 октября 2019

На основании этой статьи из RAE (Real Academia de la Lengua Española: Королевская академия испанского языка) и этой другой из Fundéu (Fundación del Español Urgente): Urgent Spanish Foundation), прямо сейчас правило состоит в том, чтобы не использовать разделитель группировки для четырехзначного числа, а использовать пробел в качестве разделителя группировки для остальных случаев. Например:

1000  -> 1000
15000 -> 15 000

Однако правила ISO рекомендуют сохранять разделитель группировки даже для 4-значных чисел.

...