1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
<?php
$_lang = [];
function _preload_lang($array, $preKey): void {
global $_lang;
foreach ($array as $key => $item) {
if (is_string($item)) {
$_lang["$preKey.$key"] = $item;
} elseif (is_array($item)) {
_preload_lang($item, "$preKey.$key");
}
}
}
function lp() {
global $realLang;
return $realLang;
}
function l($key) {
global $_lang;
return $_lang[$key] ?? $key;
}
global $realLang;
if (!isset($realLang)) {
$useLang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'] ?? "en", 0, 2) ?? "en";
$realLang = file_exists($_SERVER['DOCUMENT_ROOT'] . "/includes/lang" . $useLang . ".json") ? $useLang : "en";
}
if ($realLang === "package" || $realLang === "package-lock") $realLang = "en";
_preload_lang(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/lang/" . $realLang . ".json"), true), "lang");
function size($n, $precision = 1) {
if ($n < 1024) {
return $n . " " . (lp() === "fr" ? "o" : "B");
} elseif ($n < 1024**2) {
return round($n / 1024, $precision) . " Ki" . (lp() === "fr" ? "o" : "B");
} elseif ($n < 1024**3) {
return round($n / 1024**2, $precision) . " Mi" . (lp() === "fr" ? "o" : "B");
} elseif ($n < 1024**4) {
return round($n / 1024**3, $precision) . " Gi" . (lp() === "fr" ? "o" : "B");
} elseif ($n < 1024**5) {
return round($n / 1024**4, $precision) . " Ti" . (lp() === "fr" ? "o" : "B");
} elseif ($n < 1024**6) {
return round($n / 1024**5, $precision) . " Pi" . (lp() === "fr" ? "o" : "B");
} elseif ($n < 1024**7) {
return round($n / 1024**6, $precision) . " Ei" . (lp() === "fr" ? "o" : "B");
}
return $n . " " . l("lang.storage.b");
}
function timeAgo($time, $showTense = true): string {
if (!is_numeric($time)) {
$time = strtotime($time);
}
$periods = [l("lang.time.second.0"), l("lang.time.minute.0"), l("lang.time.hour.0"), l("lang.time.day.0"), l("lang.time.week.0"), l("lang.time.month.0"), l("lang.time.year.0"), l("lang.time.age.0")];
$periods2 = [l("lang.time.second.1"), l("lang.time.minute.1"), l("lang.time.hour.1"), l("lang.time.day.1"), l("lang.time.week.1"), l("lang.time.month.1"), l("lang.time.year.1"), l("lang.time.age.1")];
$lengths = ["60", "60", "24", "7", "4.35", "12", "100"];
$now = time();
$difference = $now - $time;
if ($difference <= 10 && $difference >= 0) {
return l("lang.time.now");
} elseif ($difference > 0) {
$tense = l("lang.time.ago");
} else {
$tense = l("lang.time.later");
}
for ($j = 0; $difference >= $lengths[$j] && $j < count($lengths)-1; $j++) {
$difference /= $lengths[$j];
}
$difference = round($difference);
$period = $difference > 1 ? $periods2[$j] : $periods[$j];
if ($showTense) {
return "{$difference} {$period} {$tense}";
} else {
return "{$difference} {$period}";
}
}
function month($i) {
return l("lang.months." . ($i - 1));
}
|