我尝试了以下代码:
let units: [ByteCountFormatter.Units] = [.useBytes, .useKB, .useMB, .useGB, .useTB, .usePB, .useEB, .useZB, .useYBOrHigher]
let localizedDescriptions = units.map { (unit) -> String in
let formatter = ByteCountFormatter()
formatter.includesCount = false
formatter.includesUnit = true
formatter.allowedUnits = [unit]
formatter.countStyle = .file
return formatter.string(fromByteCount: .max)
}
并期望根据文档进行本地化。
类
ByteCountFormatter
转换字节计数值的格式化程序转换为本地化的描述,该描述使用适当的字节修饰符(KB、MB、GB等(。
但不幸的是,我只得到了:
["bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"]
我测试过:
- 切换系统区域并重新加载我的mac(在finder中看到不同的文件大小格式:"КБ"、"МБ……而不是"KB"、"MB"(
- Playground/macOS模板项目
- 切换了macOS模板项目中的"应用程序语言">
PS
无论如何,感谢您阅读本文。。。
不能将locale
设置为ByteCountFormatter
,但可以使用MeasurementFormatter
。
下面是一个示例(根据需要修改unitStyle
和其他属性(。
let units: [UnitInformationStorage] = [.bytes, .kilobytes, .megabytes, .gigabytes, .terabytes, .petabytes, .zettabytes, .yottabytes]
let localizedDescriptions = units.map({ unit -> String in
let formatter = MeasurementFormatter()
formatter.unitStyle = .short
formatter.locale = Locale(identifier: "ru_RU") //hard coded here, I guess it takes the current one
return formatter.string(from: unit)
})
输出:
$> ["Б", "кБ", "МБ", "ГБ", "ТБ", "ПБ", "ZB", "YB"]
Zetta&Yotta没有翻译?
来自NSHipster:
ByteCountFormatter
、EnergyFormatter
、MassFormatter
、LengthFormatter
和MKDistanceFormatter
被MeasurementFormatter
取代
旧度量:ByteCountFormatter
度量格式化程序单元:单元信息存储