cocoa - 获取 Mac OS X 中的本地化文件大小

标签 cocoa macos localization

我在 (unsigned long long) 变量中获得了以字节为单位的文件大小。是否有标准方法将其转换为带有本地化单位的字符串?

我知道这些解决方案:

NSString * stringFromFileSize( FileSize theSize )
{
    float floatSize = theSize;
    if (theSize<1023)
        return ([NSString stringWithFormat:@"%i bytes",theSize]);
    floatSize = floatSize / 1024;
    if (floatSize<1023)
        return ([NSString stringWithFormat:@"%1.1f KB",floatSize]);
    floatSize = floatSize / 1024;
    if (floatSize<1023)
        return ([NSString stringWithFormat:@"%1.1f MB",floatSize]);
    floatSize = floatSize / 1024;

    return([NSString stringWithFormat:@"%1.1f GB",floatSize]);
}

但它在法语中不起作用,其中使用“八位字节”而不是字节(并且单位中的所有 B 都必须替换为“o”)。我搜索了 CFLocalGetValue,查看了我所知道的所有格式化方法,但没有成功,那么是否有任何隐藏的方法/函数可以帮助我?我可以设法手动构建一些东西,但我宁愿避免它。

最佳答案

听起来像是 NSLocalizedString 的工作。您可以向法语本地化添加条目(在 Localized.strings 中):

"bytes" = "octets";
"KB" = "Ko";
"MB" = "Mo";
"GB" = "Go";

然后使用:

return [NSString stringWithFormat:@"%i %@", theSize, NSLocalizedString(@"bytes", nil)];

为了更具体地回答这个问题,我不知道有任何 Cocoa 函数可以处理这些转换。

关于cocoa - 获取 Mac OS X 中的本地化文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3806842/

相关文章:

macos - PG::ConnectionBad 升级到 Yosemite 和 postgresql 9.4.4

php - 使用 PHP 在 GeoLite2 中调用国家/地区引用

codeigniter - PyroCMS 语言支持

java - c++ n java 语言环境

cocoa - NSStackView edgeInsets 被忽略

cocoa - Cocoa 中是否有任何方法可以帮助迭代所有 NSColor 值(仅 R、G、B,不触及 alpha)?

macos - 是否有像 iOS 的 UILocalizedIndexedCollat​​ion 一样适用于 mac 的 NSLocalizedIndexedCollat​​ion ?

python - 在 Mac 上将文件复制到 RAM (Python)

macos - 禁用 NSTask 截图声音

cocoa - 如何以编程方式查找 OS X 应用程序包的驻留目录