Мне известно, что DateFormatter
s использует язык и регион для создания необходимых строк / контента.И особенно при чтении документации кажется, что я правильно понял, как они должны работать.
Локали представляют варианты форматирования для конкретного пользователя, а не его предпочитаемый язык.Они часто одинаковы, но могут быть разными.Например, носитель английского языка, который живет в Германии, может выбрать английский в качестве языка и Германию в качестве региона.Текст отображается на английском языке, но даты, время и цифры соответствуют немецким правилам форматирования.День предшествует месяцу, а 24-часовые часы представляют время, как показано в таблице 4-1
Тогда почему, если я установил свой мобильный телефон с
Предпочтительные языки системы: [испанский, итальянский]
Регион: США
имое приложение поддерживает только немецкий
простой (псевдокод)
let df = DateFormatter()
df.string(from: date)`
возвращает miércoles, 26. sept 2018
? (испанский с форматированием немецкого региона)
Учитывая, что пакет (и, следовательно, все строки, возвращаемые из NSLocalizedString(..)
и относительных ресурсов) правильно выбрали язык (de
, немецкий), почему базовые объекты не используют один и тот же язык (а не регион), поддерживаемый и идентифицируемый комплектом, для получения необходимого результата, а вместо этого они привязываются к системным?
Существуют ли какие-то приложенияКонфигурация, которую я пропустил, или мне действительно нужно переопределить язык, локаль и регион для каждого Календаря, DateFormatter, NumberFormatter, ecc, которые мне нужно использовать?Особенно с учетом того, насколько неэффективны эти классы и их экземпляры.