1/* 2 * Copyright 2010 Haiku Inc. All rights reserved. 3 * Distributed under the terms of the MIT License. 4 */ 5 6#include "StringForSize.h" 7 8#include <stdio.h> 9 10#include <SystemCatalog.h> 11 12using BPrivate::gSystemCatalog; 13 14 15#undef B_TRANSLATION_CONTEXT 16#define B_TRANSLATION_CONTEXT "StringForSize" 17 18 19namespace BPrivate { 20 21 22const char* 23string_for_size(double size, char* string, size_t stringSize) 24{ 25 double kib = size / 1024.0; 26 if (kib < 1.0) { 27 const char* trKey = B_TRANSLATE_MARK("%d bytes"); 28 snprintf(string, stringSize, gSystemCatalog.GetString(trKey, 29 B_TRANSLATION_CONTEXT), (int)size); 30 return string; 31 } 32 double mib = kib / 1024.0; 33 if (mib < 1.0) { 34 const char* trKey = B_TRANSLATE_MARK("%3.2f KiB"); 35 snprintf(string, stringSize, gSystemCatalog.GetString(trKey, 36 B_TRANSLATION_CONTEXT), kib); 37 return string; 38 } 39 double gib = mib / 1024.0; 40 if (gib < 1.0) { 41 const char* trKey = B_TRANSLATE_MARK("%3.2f MiB"); 42 snprintf(string, stringSize, gSystemCatalog.GetString(trKey, 43 B_TRANSLATION_CONTEXT), mib); 44 return string; 45 } 46 double tib = gib / 1024.0; 47 if (tib < 1.0) { 48 const char* trKey = B_TRANSLATE_MARK("%3.2f GiB"); 49 snprintf(string, stringSize, gSystemCatalog.GetString(trKey, 50 B_TRANSLATION_CONTEXT), gib); 51 return string; 52 } 53 const char* trKey = B_TRANSLATE_MARK("%.2f TiB"); 54 snprintf(string, stringSize, gSystemCatalog.GetString(trKey, 55 B_TRANSLATION_CONTEXT), tib); 56 return string; 57} 58 59 60} // namespace BPrivate 61 62