Add function get_user_lang for getting user language based on cookies
This commit is contained in:
parent
919ffdb1b5
commit
56f4fdc88a
@ -334,6 +334,45 @@ final class MD_STD {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets and returns user language based on a session cookie.
|
||||
*
|
||||
* @param array<string> $allowed_langs Allowed languages.
|
||||
* @param string $default_lang Default language.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function get_user_lang(array $allowed_langs, string $default_lang):string {
|
||||
|
||||
$cookie_options = [
|
||||
'expires' => self::strtotime("+1 month"),
|
||||
'path' => '/',
|
||||
'domain' => $_SERVER['SERVER_NAME'],
|
||||
'secure' => true,
|
||||
'httponly' => true,
|
||||
'samesite' => 'Lax' // None || Lax || Strict
|
||||
];
|
||||
|
||||
if (isset($_GET['navlang']) and in_array($_GET['navlang'], $allowed_langs, true)) {
|
||||
if (!(setcookie('lang', $_GET['navlang'], $cookie_options))) {
|
||||
throw new Exception("Failed to set language");
|
||||
}
|
||||
$lang = $_GET['navlang'];
|
||||
}
|
||||
else if (isset($_COOKIE['lang']) and in_array($_COOKIE['lang'], $allowed_langs, true)) {
|
||||
$lang = $_COOKIE['lang'];
|
||||
}
|
||||
else {
|
||||
$lang = self::lang_getfrombrowser($allowed_langs, $default_lang, "", false);
|
||||
if (!(setcookie('lang', $lang, $cookie_options))) {
|
||||
throw new Exception("Failed to set language");
|
||||
}
|
||||
}
|
||||
|
||||
return $lang;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Function lang_getfrombrowser gets the browser language based on HTTP headers.
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user