diff options
author | Simon Rettberg | 2022-11-15 17:20:20 +0100 |
---|---|---|
committer | Simon Rettberg | 2022-11-15 17:20:20 +0100 |
commit | 74f1db5c2670f7247abc8ea8bbb9b171c9e88f6a (patch) | |
tree | d17382ebfcebaa38df34adac61d37eff45913d10 /inc | |
parent | [statistics] Fix potential invalid array access (diff) | |
download | slx-admin-74f1db5c2670f7247abc8ea8bbb9b171c9e88f6a.tar.gz slx-admin-74f1db5c2670f7247abc8ea8bbb9b171c9e88f6a.tar.xz slx-admin-74f1db5c2670f7247abc8ea8bbb9b171c9e88f6a.zip |
[inc/Dictionary] Add locale-aware number formatting method
Diffstat (limited to 'inc')
-rw-r--r-- | inc/dictionary.inc.php | 25 | ||||
-rw-r--r-- | inc/util.inc.php | 6 |
2 files changed, 28 insertions, 3 deletions
diff --git a/inc/dictionary.inc.php b/inc/dictionary.inc.php index e366207f..4c98c63b 100644 --- a/inc/dictionary.inc.php +++ b/inc/dictionary.inc.php @@ -64,6 +64,31 @@ class Dictionary } /** + * Format given number using country-specific decimal point and thousands + * separator. + * @param float $num Number to format + * @param int $decimals How many decimals to display + */ + public static function number(float $num, int $decimals = 0): string + { + static $dec = null, $tho = null; + if ($dec === null) { + if (LANG === 'de') { + $dec = ','; + $tho = '.'; + } elseif (LANG !== 'en' && file_exists("lang/" . LANG . "/format.txt")) { + $tmp = file_get_contents("lang/" . LANG . "/format.txt"); + $dec = $tmp[0]; + $tho = $tmp[1]; + } else { + $dec = '.'; + $tho = ','; + } + } + return number_format($num, $decimals, $dec, $tho); + } + + /** * Get complete key=>value list for given module, file, language * * @param string $module Module name diff --git a/inc/util.inc.php b/inc/util.inc.php index 06f60007..8bd48dd3 100644 --- a/inc/util.inc.php +++ b/inc/util.inc.php @@ -87,13 +87,13 @@ class Util } /** - * Convert given number to human readable file size string. + * Convert given number to human-readable file size string. * Will append Bytes, KiB, etc. depending on magnitude of number. * * @param float|int $bytes numeric value of the filesize to make readable * @param int $decimals number of decimals to show, -1 for automatic * @param int $shift how many units to skip, i.e. if you pass in KiB or MiB - * @return string human readable string representing the given file size + * @return string human-readable string representing the given file size */ public static function readableFileSize(float $bytes, int $decimals = -1, int $shift = 0): string { @@ -113,7 +113,7 @@ class Util $decimals = 2 - floor(strlen((int)$bytes) - 1); } } - return sprintf("%.{$decimals}f", $bytes) . "\xe2\x80\x89" . ($sz[$factor + $shift] ?? '#>PiB#'); + return Dictionary::number($bytes, $decimals) . "\xe2\x80\x89" . ($sz[$factor + $shift] ?? '#>PiB#'); } public static function sanitizeFilename(string $name) |