You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
hestiacp/web/inc/i18n.php

86 lines
2.2 KiB

1 year ago
<?php
// Functions for internationalization
// I18N support information here
putenv("LANGUAGE=" . detect_user_language());
setlocale(LC_ALL, "C.UTF-8");
$domain = "hestiacp";
$localedir = "/usr/local/hestia/web/locale";
bindtextdomain($domain, $localedir);
textdomain($domain);
/**
* Detects user language from Accept-Language HTTP header.
* @param string Fallback language (default: 'en')
* @return string Language code (such as 'en' and 'ja')
*/
function detect_user_language() {
if (!empty($_SESSION["language"])) {
return $_SESSION["language"];
} elseif (!empty($_SESSION["LANGUAGE"])) {
return $_SESSION["LANGUAGE"];
} else {
return "en";
}
}
/**
* Translate ISO2 to "Language"
* nl = Dutch, de = German
* @param string iso2 code
* @return string Language
*/
function translate_json($string) {
$json = file_get_contents($_SERVER["DOCUMENT_ROOT"] . "/locale/languages.json");
$json_a = json_decode($json, true);
return $json_a[$string][0] . " (" . $json_a[$string . "_locale"][0] . ")";
}
/**
* Support translation strings that contains html
*/
function htmlify_trans($string, $closingTag) {
$arguments = func_get_args();
return preg_replace_callback(
"/{(.*?)}/", // Ungreedy (*?)
function ($matches) use ($arguments, $closingTag) {
static $i = 1;
$i++;
return $arguments[$i] . $matches[1] . $closingTag;
},
$string,
);
}
function get_email_template($file, $language) {
if (
file_exists(
$_SERVER["HESTIA"] . "/data/templates/email/" . $language . "/" . $file . ".html",
)
) {
return file_get_contents(
$_SERVER["HESTIA"] . "/data/templates/email/" . $language . "/" . $file . ".html",
);
}
if (file_exists($_SERVER["HESTIA"] . "/data/templates/email/" . $file . ".html")) {
return file_get_contents($_SERVER["HESTIA"] . "/data/templates/email/" . $file . ".html");
}
return false;
}
function translate_email($string, $replace) {
$array1 = $array2 = [];
foreach ($replace as $key => $value) {
$array1[] = "{{" . $key . "}}";
$array2[] = $value;
}
return str_replace($array1, $array2, $string);
}
/**
* Detects user language .
* @param string Fallback language (default: 'en')
* @return string Language code (such as 'en' and 'ja')
*/
function detect_login_language() {
}