summaryrefslogtreecommitdiffstats
path: root/inc
diff options
context:
space:
mode:
authorSimon Rettberg2022-11-15 17:20:20 +0100
committerSimon Rettberg2022-11-15 17:20:20 +0100
commit74f1db5c2670f7247abc8ea8bbb9b171c9e88f6a (patch)
treed17382ebfcebaa38df34adac61d37eff45913d10 /inc
parent[statistics] Fix potential invalid array access (diff)
downloadslx-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.php25
-rw-r--r--inc/util.inc.php6
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)