# image-optimization/1.6.6/modules/optimization/assets/js/utils/index.js

Image Optimization – Compress Images and Convert to WebP or AVIF, version 1.6.6. 26 lines.

- Page: https://pluginprobe.com/plugins/image-optimization/1.6.6/code/modules/optimization/assets/js/utils/index.js
- Raw: https://pluginprobe.com/plugins/image-optimization/1.6.6/raw/modules/optimization/assets/js/utils/index.js
- Modified: 2024-02-06T14:05:42+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/image-optimization/1.6.6/code/modules/optimization/assets/js/utils/index.js#L10-L20`.

```javascript
import { __, sprintf } from '@wordpress/i18n';

export const formatFileSize = ( fileSizeInBytes, decimals = 2 ) => {
	const sizes = [
		// translators: %s: file size in bytes
		__( '%s Bytes', 'image-optimization' ),
		// translators: %s: file size in kilobytes
		__( '%s Kb', 'image-optimization' ),
		// translators: %s: file size in megabytes
		__( '%s Mb', 'image-optimization' ),
		// translators: %s: file size in gigabytes
		__( '%s Gb', 'image-optimization' ),
	];

	if ( ! fileSizeInBytes ) {
		// translators: %s: file size in bytes
		return sprintf( __( '%s Bytes', 'image-optimization' ), 0 );
	}

	const currentScale = Math.floor( Math.log( fileSizeInBytes ) / Math.log( 1024 ) );
	const formattedValue = parseFloat( ( fileSizeInBytes / Math.pow( 1024, currentScale ) ).toFixed( decimals ) );

	// eslint-disable-next-line @wordpress/valid-sprintf
	return sprintf( sizes[ currentScale ], formattedValue );
};

```
