在Mac OS X中获取本地化文件大小

时间:2010-09-27 18:52:31

标签: 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周围搜索过,查看了我所知道的所有格式化方法都没有成功,所以有没有隐藏的方法/功能来帮助我?我可以设法手工制作东西,但我会优先避免它。

2 个答案:

答案 0 :(得分:3)

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

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

然后使用:

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

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

答案 1 :(得分:1)

对于任何面临同样问题的人:有一个方便的NSByteCountFormatter课程,它提供本地化。当问到这个问题时,它似乎并没有出现。它自OS X 10.8 Mountain Lion起作用。