Как вы указываете локаль / язык для NSFormatter, который не имеет свойства локали?

Есть много специализированных подклассов NSFormatter:

CNContactFormatter
CNPostalAddressFormatter
DRMSFFormatter
MKDistanceFormatter
NSByteCountFormatter
NSDateComponentsFormatter
NSDateFormatter
NSDateIntervalFormatter
NSEnergyFormatter
NSLengthFormatter
NSMassFormatter
NSNumberFormatter
NSPersonNameComponentsFormatter

Большинство из нас использовали NSNumberFormatter а также NSDateFormatter, У них есть свойство locale, которое позволяет вам указать, какую локаль использовать при преобразовании строк в / из "родного" формата, поддерживаемого форматтером. Некоторые другие, как NSDateComponentsFormatter наследовать их локаль от одного из своих свойств (NSDateComponentsFormatter использует локаль указанного календаря, если есть.)

Большинство других, кажется, не имеют никакого способа указать локаль. Единственный способ заставить их генерировать выходные данные на определенном языке / локали - это установить языковой стандарт системы, получить вывод / преобразовать строку в числовой формат, а затем снова установить ее.

Есть ли способ установить локаль для форматеров, таких как NSByteCountFormatter которые, кажется, не предлагают каких-либо региональных настроек?

1 ответ

Это кажется очень маловероятным. Если вы пройдете через реализацию (в Hopper), NSByteCountFormatter использует внутреннюю функцию _NSLocalizedFileSizeDescription, который сильно зависит от -[NSBundle localizedStringForKey:value:table:](звонит в связку Фонда). В этом некуда передать локаль. Я бы открыл радар, запросив свойство numberFormatter для NSByteCountFormatter, чтобы оно соответствовало NSEnergyFormatter.

Другие вопросы по тегам