function format_size
Same name in other branches
- 7.x includes/common.inc \format_size()
- 8.9.x core/includes/common.inc \format_size()
- 10 core/includes/common.inc \format_size()
Generates a string representation for the given byte count.
Parameters
$size: A size in bytes.
$langcode: Optional language code to translate to a language other than what is used to display the page.
Return value
\Drupal\Core\StringTranslation\TranslatableMarkup A translated string representation of the size.
Related topics
25 calls to format_size()
- bartik_preprocess_image_widget in core/
themes/ bartik/ bartik.theme - Implements hook_preprocess_image_widget().
- color_scheme_form_submit in core/
modules/ color/ color.module - Form submission handler for color_scheme_form().
- editor_image_upload_settings_form in core/
modules/ editor/ editor.admin.inc - Subform constructor to configure the text editor's image upload settings.
- FileFieldValidateTest::testFileMaxSize in core/
modules/ file/ tests/ src/ Functional/ FileFieldValidateTest.php - Tests the max file size validator.
- FileItem::fieldSettingsForm in core/
modules/ file/ src/ Plugin/ Field/ FieldType/ FileItem.php - Returns a form for the field-level settings.
File
-
core/
includes/ common.inc, line 137
Code
function format_size($size, $langcode = NULL) {
$absolute_size = abs($size);
if ($absolute_size < Bytes::KILOBYTE) {
return \Drupal::translation()->formatPlural($size, '1 byte', '@count bytes', [], [
'langcode' => $langcode,
]);
}
// Create a multiplier to preserve the sign of $size.
$sign = $absolute_size / $size;
foreach ([
'KB',
'MB',
'GB',
'TB',
'PB',
'EB',
'ZB',
'YB',
] as $unit) {
$absolute_size /= Bytes::KILOBYTE;
$rounded_size = round($absolute_size, 2);
if ($rounded_size < Bytes::KILOBYTE) {
break;
}
}
$args = [
'@size' => $rounded_size * $sign,
];
$options = [
'langcode' => $langcode,
];
switch ($unit) {
case 'KB':
return new TranslatableMarkup('@size KB', $args, $options);
case 'MB':
return new TranslatableMarkup('@size MB', $args, $options);
case 'GB':
return new TranslatableMarkup('@size GB', $args, $options);
case 'TB':
return new TranslatableMarkup('@size TB', $args, $options);
case 'PB':
return new TranslatableMarkup('@size PB', $args, $options);
case 'EB':
return new TranslatableMarkup('@size EB', $args, $options);
case 'ZB':
return new TranslatableMarkup('@size ZB', $args, $options);
case 'YB':
return new TranslatableMarkup('@size YB', $args, $options);
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.