我在 (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/