['name' => 'čeština', 'locale' => 'cs_CZ', 'flag' => '🇨🇿', 'show_in_menu' => true, 'dir' => 'ltr'], 'de' => ['name' => 'Deutsch', 'locale' => 'de_DE', 'flag' => '🇩🇪', 'show_in_menu' => true, 'dir' => 'ltr'], 'en' => ['name' => 'English', 'locale' => 'en_GB', 'flag' => '🇬🇧', 'show_in_menu' => true, 'dir' => 'ltr'], 'pt-BR' => ['name' => 'Brazilian Portuguese', 'locale' => 'pt_BR', 'flag' => '🇧🇷', 'show_in_menu' => true, 'dir' => 'ltr'], 'ru' => ['name' => 'Русский', 'locale' => 'ru_RU', 'flag' => '🇷🇺', 'show_in_menu' => true, 'dir' => 'ltr'], 'tr' => ['name' => 'Türkçe', 'locale' => 'tr_TR', 'flag' => '🇹🇷', 'show_in_menu' => true, 'dir' => 'ltr'], 'zh-Hans' => ['name' => '简体中文', 'locale' => 'zh_CN', 'flag' => '🇨🇳', 'show_in_menu' => true, 'dir' => 'ltr'], ]; $language = 'en'; $locale = 'en_GB'; $dir = 'ltr'; if(isset($_REQUEST['lang']) && isset(LANGUAGES[$_REQUEST['lang']])){ $locale = LANGUAGES[$_REQUEST['lang']]['locale']; $language = $_REQUEST['lang']; $dir = LANGUAGES[$_REQUEST['lang']]['dir']; setcookie('language', $_REQUEST['lang'], ['expires' => 0, 'path' => '/', 'domain' => '', 'secure' => ($_SERVER['HTTPS'] ?? '' === 'on'), 'httponly' => true, 'samesite' => 'Strict']); }elseif(isset($_COOKIE['language']) && isset(LANGUAGES[$_COOKIE['language']])){ $locale = LANGUAGES[$_COOKIE['language']]['locale']; $language = $_COOKIE['language']; $dir = LANGUAGES[$_COOKIE['language']]['dir']; }elseif(!empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])){ $prefLocales = array_reduce( explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']), function (array $res, string $el) { list($l, $q) = array_merge(explode(';q=', $el), [1]); $res[$l] = (float) $q; return $res; }, []); arsort($prefLocales); foreach($prefLocales as $l => $q){ $lang = locale_lookup(array_keys(LANGUAGES), $l); if(!empty($lang)){ $locale = LANGUAGES[$lang]['locale']; $language = $lang; $dir = LANGUAGES[$lang]['dir']; setcookie('language', $lang, ['expires' => 0, 'path' => '/', 'domain' => '', 'secure' => ($_SERVER['HTTPS'] ?? '' === 'on'), 'httponly' => true, 'samesite' => 'Strict']); break; } } } putenv('LC_ALL='.$locale); setlocale(LC_ALL, $locale); bindtextdomain('main-website', __DIR__.'/locale'); bind_textdomain_codeset('main-website', 'UTF-8'); textdomain('main-website'); function menu(string $title = ''): void { global $global_style, $language; echo ""; echo "

$title

"; echo ''; echo '
'; echo ''.LANGUAGES[$language]['flag'].''; foreach(LANGUAGES as $lang => $data) { if($lang === $language || !$data['show_in_menu']){ continue; } echo '
'.$data['flag'].'
'; } echo '
+
'; echo '
'; echo '
'; } function alt_links(): void { global $language; foreach(LANGUAGES as $lang => $data) { if($lang === $language){ continue; } echo ''; echo ''; } }