您如何为没有语言环境属性的 NSFormatter 指定语言环境/语言?

Dun*_*n C 6 macos nsformatter ios

NSFormatter 有很多专门的子类:

CNContactFormatter
CNPostalAddressFormatter
DRMSFFormatter
MKDistanceFormatter
NSByteCountFormatter
NSDateComponentsFormatter
NSDateFormatter
NSDateIntervalFormatter
NSEnergyFormatter
NSLengthFormatter
NSMassFormatter
NSNumberFormatter
NSPersonNameComponentsFormatter
Run Code Online (Sandbox Code Playgroud)

我们大多数人都使用过NSNumberFormatterNSDateFormatter。它们具有 locale 属性,可让您指定在将字符串转换为/从格式化程序支持的“本机”格式时要使用的语言环境。其他一些喜欢NSDateComponentsFormatter从他们的属性之一继承他们的语言环境(NSDateComponentsFormatter使用指定日历的语言环境,如果有的话。)

大多数其他人似乎没有任何方法来指定语言环境。我能想到的让它们以特定语言/区域设置生成输出的唯一方法是设置系统区域设置,获取输出/将字符串转换为数字格式,然后将其设置回来。

有没有办法为格式化程序设置语言环境NSByteCountFormatter,但似乎不提供任何类型的语言环境设置?

Rob*_*ier 1

这似乎不太可能。如果您详细了解实现(在 Hopper 中),NSByteCountFormatter 使用内部函数_NSLocalizedFileSizeDescription,该函数严重依赖于-[NSBundle localizedStringForKey:value:table:](调用 Foundation 的捆绑包)。没有地方可以将语言环境传递到其中。我会打开一个雷达,请求 NSByteCountFormatter 的 numberFormatter 属性以匹配 NSEnergyFormatter。