0) { usort($_client_languages, function(array $a, array $b) { if($a[1] == $b[1]) { return 0; } return ($a[1] > $b[1]) ? -1 : 1; }); $user_language = $_client_languages[0][0]; } } // Setting headers header("Content-Language: " . $user_language); // Reading and parsing the strings.json file $lang_json = file_get_contents(realpath($dir_commons . "/strings.json")); $lang_data = json_decode($lang_json, true); // Localization functions function localize_private(string $string_key, array $private_lang_data, bool $fallback_to_common = false, string $fallback_prefix = "fallback.unknown") : string { global $user_language, $default_language, $lang_data; if(array_key_exists($user_language, $private_lang_data)) { if(array_key_exists($string_key, $private_lang_data[$user_language])) { // If found in direct array in user's language. return $private_lang_data[$user_language][$string_key]; } } if(array_key_exists($default_language, $private_lang_data)) { if(array_key_exists($string_key, $private_lang_data[$default_language])) { // If found in direct array in default language. return $private_lang_data[$default_language][$string_key]; } } if($fallback_to_common) { // If we can attempt to fallback on the common lang file. return localize_private($fallback_prefix . $string_key, $lang_data, false); } // If nothing could be done, we simply return the key. return $string_key; } function localize($string_key) : string { global $lang_data; return localize_private($string_key, $lang_data, false); } function l10n_url_abs($url) : string { global $user_uri_language; return $user_uri_language . $url; } function l10n_url_switch($lang) : string { if(is_null($lang)) { return preg_replace("^\/(lb|lu|fr|en)^", "", $_SERVER['REQUEST_URI']); } else { return "/".$lang.preg_replace("^\/(lb|lu|fr|en)^", "", $_SERVER['REQUEST_URI']); } } ?>