Skip to content

Commit 1d74d0a

Browse files
authored
file manager languages - hestiacp#4275 (hestiacp#4382)
Allow Filemanager to follow Hestia Language
1 parent 1ce1c90 commit 1d74d0a

File tree

1 file changed

+238
-2
lines changed

1 file changed

+238
-2
lines changed

install/deb/filemanager/filegator/configuration.php

Lines changed: 238 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
<?php
22
use function Hestiacp\quoteshellarg\quoteshellarg;
3-
43
$dist_config = require __DIR__ . "/configuration_sample.php";
5-
4+
session_start();
65
$dist_config["public_path"] = "/fm/";
76
$dist_config["frontend_config"]["app_name"] = "File Manager - Hestia Control Panel";
87
$dist_config["frontend_config"]["logo"] = "../images/logo.svg";
@@ -34,6 +33,106 @@
3433
$dist_config["frontend_config"]["date_format"] = "YY/MM/DD H:mm:ss";
3534
$dist_config["frontend_config"]["guest_redirection"] = "/login/";
3635
$dist_config["frontend_config"]["upload_max_size"] = 1024 * 1024 * 1024;
36+
if (!empty($_SESSION["language"])) {
37+
$lang = $_SESSION["language"];
38+
} elseif (!empty($_SESSION["LANGUAGE"])) {
39+
$lang = $_SESSION["LANGUAGE"];
40+
} else {
41+
$lang = "en";
42+
}
43+
// Update list of languages when new language is added on Hestia or Filegator side
44+
switch ($lang) {
45+
case "es":
46+
$dist_config["frontend_config"]["language"] = "spanish";
47+
break;
48+
case "de":
49+
$dist_config["frontend_config"]["language"] = "german";
50+
break;
51+
case "id":
52+
$dist_config["frontend_config"]["language"] = "indonesian";
53+
break;
54+
case "tr":
55+
$dist_config["frontend_config"]["language"] = "turkish";
56+
break;
57+
case "lt":
58+
$dist_config["frontend_config"]["language"] = "lithuanian";
59+
break;
60+
case "pt":
61+
case "pt-pt":
62+
$dist_config["frontend_config"]["language"] = "portuguese";
63+
break;
64+
case "nl":
65+
$dist_config["frontend_config"]["language"] = "dutch";
66+
break;
67+
case "zh":
68+
case "zh-cn":
69+
case "zh-tw":
70+
$dist_config["frontend_config"]["language"] = "chinese";
71+
break;
72+
case "bg":
73+
$dist_config["frontend_config"]["language"] = "bulgarian";
74+
break;
75+
case "sr":
76+
$dist_config["frontend_config"]["language"] = "serbian";
77+
break;
78+
case "fr":
79+
$dist_config["frontend_config"]["language"] = "french";
80+
break;
81+
case "sk":
82+
$dist_config["frontend_config"]["language"] = "slovak";
83+
break;
84+
case "pl":
85+
$dist_config["frontend_config"]["language"] = "polish";
86+
break;
87+
case "it":
88+
$dist_config["frontend_config"]["language"] = "italian";
89+
break;
90+
case "ko":
91+
$dist_config["frontend_config"]["language"] = "korean";
92+
break;
93+
case "cs":
94+
$dist_config["frontend_config"]["language"] = "czech";
95+
break;
96+
case "gl":
97+
$dist_config["frontend_config"]["language"] = "galician";
98+
break;
99+
case "ru":
100+
$dist_config["frontend_config"]["language"] = "russian";
101+
break;
102+
case "hu":
103+
$dist_config["frontend_config"]["language"] = "hungarian";
104+
break;
105+
case "sv":
106+
$dist_config["frontend_config"]["language"] = "swedish";
107+
break;
108+
case "ja":
109+
$dist_config["frontend_config"]["language"] = "japanese";
110+
break;
111+
case "sl":
112+
$dist_config["frontend_config"]["language"] = "slovenian";
113+
break;
114+
case "he":
115+
$dist_config["frontend_config"]["language"] = "hebrew";
116+
break;
117+
case "ro":
118+
$dist_config["frontend_config"]["language"] = "romanian";
119+
break;
120+
case "ar":
121+
$dist_config["frontend_config"]["language"] = "arabic";
122+
break;
123+
case "pt-br":
124+
$dist_config["frontend_config"]["language"] = "portuguese_br";
125+
break;
126+
case "fa":
127+
$dist_config["frontend_config"]["language"] = "persian";
128+
break;
129+
case "et":
130+
$dist_config["frontend_config"]["language"] = "estonian";
131+
break;
132+
default:
133+
$dist_config["frontend_config"]["language"] = "english";
134+
break;
135+
}
37136

38137
$dist_config["services"]["Filegator\Services\Storage\Filesystem"]["config"][
39138
"adapter"
@@ -173,4 +272,141 @@
173272
</script>',
174273
];
175274

275+
/***********************************************************************/
276+
/**
277+
* Language Chooser
278+
*
279+
* @since 1.8.12
280+
*
281+
* @author Tiago Dias
282+
*
283+
* @see https://github.com/hestiacp/hestiacp/issues/4275
284+
*/
285+
286+
/**
287+
* get_language_from_system()
288+
*
289+
* isolate the hestiacp commands from this file
290+
*
291+
* @return string the language code
292+
*/
293+
function get_language_from_system() {
294+
include $_SERVER["DOCUMENT_ROOT"] . "/inc/main.php";
295+
/**
296+
* get All supported language
297+
*/
298+
exec(HESTIA_CMD . "v-list-sys-languages json", $output, $return_var);
299+
$languages = json_decode(implode("", $output), true);
300+
301+
/**
302+
* - check if the session language exists
303+
* - check if language is supported by hestia,
304+
* - return default if both are false
305+
*/
306+
return isset($_SESSION["language"]) && in_array($_SESSION["language"], $languages)
307+
? $_SESSION["language"]
308+
: "en";
309+
}
310+
311+
/**
312+
* Language Switch for filegator based on session or if not available
313+
* use default 'english'
314+
*
315+
* @see https://docs.filegator.io/translations/default.html#rtl-support
316+
*
317+
* @see https://github.com/hestiacp/hestiacp/issues/4275
318+
*/
319+
switch (get_language_from_system()) {
320+
case "es":
321+
$dist_conf["language"] = "spanish";
322+
break;
323+
case "de":
324+
$dist_conf["language"] = "german";
325+
break;
326+
case "id":
327+
$dist_conf["language"] = "indonesian";
328+
break;
329+
case "tr":
330+
$dist_conf["language"] = "turkish";
331+
break;
332+
case "lt":
333+
$dist_conf["language"] = "lithuanian";
334+
break;
335+
case "pt":
336+
case "pt-pt":
337+
$dist_conf["language"] = "portuguese";
338+
break;
339+
case "nl":
340+
$dist_conf["language"] = "dutch";
341+
break;
342+
case "zh":
343+
case "zh-cn":
344+
case "zh-tw":
345+
$dist_conf["language"] = "chinese";
346+
break;
347+
case "bg":
348+
$dist_conf["language"] = "bulgarian";
349+
break;
350+
case "sr":
351+
$dist_conf["language"] = "serbian";
352+
break;
353+
case "fr":
354+
$dist_conf["language"] = "french";
355+
break;
356+
case "sk":
357+
$dist_conf["language"] = "slovak";
358+
break;
359+
case "pl":
360+
$dist_conf["language"] = "polish";
361+
break;
362+
case "it":
363+
$dist_conf["language"] = "italian";
364+
break;
365+
case "ko":
366+
$dist_conf["language"] = "korean";
367+
break;
368+
case "cs":
369+
$dist_conf["language"] = "czech";
370+
break;
371+
case "gl":
372+
$dist_conf["language"] = "galician";
373+
break;
374+
case "ru":
375+
$dist_conf["language"] = "russian";
376+
break;
377+
case "hu":
378+
$dist_conf["language"] = "hungarian";
379+
break;
380+
case "sv":
381+
$dist_conf["language"] = "swedish";
382+
break;
383+
case "ja":
384+
$dist_conf["language"] = "japanese";
385+
break;
386+
case "sl":
387+
$dist_conf["language"] = "slovenian";
388+
break;
389+
case "he":
390+
$dist_conf["language"] = "hebrew";
391+
break;
392+
case "ro":
393+
$dist_conf["language"] = "romanian";
394+
break;
395+
case "ar":
396+
$dist_conf["language"] = "arabic";
397+
break;
398+
case "pt-br":
399+
$dist_conf["language"] = "portuguese_br";
400+
break;
401+
case "fa":
402+
$dist_conf["language"] = "persian";
403+
break;
404+
case "et":
405+
$dist_conf["language"] = "estonian";
406+
break;
407+
default:
408+
$dist_conf["language"] = "english";
409+
break;
410+
}
411+
176412
return $dist_config;

0 commit comments

Comments
 (0)