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