Auto-detect browser language
This commit is contained in:
21
common.php
21
common.php
@ -42,7 +42,7 @@ header("Cross-Origin-Resource-Policy: same-origin");
|
|||||||
const LANGUAGES = [
|
const LANGUAGES = [
|
||||||
'de' => ['name' => 'Deutsch', 'locale' => 'de_DE', 'flag' => '🇩🇪', 'show_in_menu' => true],
|
'de' => ['name' => 'Deutsch', 'locale' => 'de_DE', 'flag' => '🇩🇪', 'show_in_menu' => true],
|
||||||
'en' => ['name' => 'English', 'locale' => 'en_GB', 'flag' => '🇬🇧', 'show_in_menu' => true],
|
'en' => ['name' => 'English', 'locale' => 'en_GB', 'flag' => '🇬🇧', 'show_in_menu' => true],
|
||||||
'ru' => ['name' => 'Русский', 'locale' => 'ru_RU', 'flag' => '🇷🇺', 'show_in_menu' => false],
|
'ru' => ['name' => 'Русский', 'locale' => 'ru_RU', 'flag' => '🇷🇺', 'show_in_menu' => true],
|
||||||
];
|
];
|
||||||
$language = 'en';
|
$language = 'en';
|
||||||
$locale = 'en_GB';
|
$locale = 'en_GB';
|
||||||
@ -54,6 +54,25 @@ if(isset($_REQUEST['lang']) && isset(LANGUAGES[$_REQUEST['lang']])){
|
|||||||
}elseif(isset($_COOKIE['language']) && isset(LANGUAGES[$_COOKIE['language']])){
|
}elseif(isset($_COOKIE['language']) && isset(LANGUAGES[$_COOKIE['language']])){
|
||||||
$locale = LANGUAGES[$_COOKIE['language']]['locale'];
|
$locale = LANGUAGES[$_COOKIE['language']]['locale'];
|
||||||
$language = $_COOKIE['language'];
|
$language = $_COOKIE['language'];
|
||||||
|
}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;
|
||||||
|
setcookie('language', $lang, ['expires' => 0, 'path' => '/', 'domain' => '', 'secure' => ($_SERVER['HTTPS'] ?? '' === 'on'), 'httponly' => true, 'samesite' => 'Strict']);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
putenv('LC_ALL='.$locale);
|
putenv('LC_ALL='.$locale);
|
||||||
setlocale(LC_ALL, $locale);
|
setlocale(LC_ALL, $locale);
|
||||||
|
Binary file not shown.
@ -8,7 +8,7 @@ msgstr ""
|
|||||||
"Project-Id-Version: \n"
|
"Project-Id-Version: \n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2022-12-18 16:02+0100\n"
|
"POT-Creation-Date: 2022-12-18 16:02+0100\n"
|
||||||
"PO-Revision-Date: 2022-12-23 11:13+0100\n"
|
"PO-Revision-Date: 2022-12-23 13:26+0100\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"Language: ru_RU\n"
|
"Language: ru_RU\n"
|
||||||
@ -21,7 +21,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: index.php:6
|
#: index.php:6
|
||||||
msgid "Daniel - Home"
|
msgid "Daniel - Home"
|
||||||
msgstr ""
|
msgstr "Daniel - Домашняя страница"
|
||||||
|
|
||||||
#: index.php:10
|
#: index.php:10
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -31,7 +31,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: index.php:14 common.php:81
|
#: index.php:14 common.php:81
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr ""
|
msgstr "Домашняя страница"
|
||||||
|
|
||||||
#: index.php:15
|
#: index.php:15
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -319,15 +319,15 @@ msgstr ""
|
|||||||
|
|
||||||
#: contact.php:6
|
#: contact.php:6
|
||||||
msgid "Daniel - Contact"
|
msgid "Daniel - Contact"
|
||||||
msgstr ""
|
msgstr "Daniel - Контакт"
|
||||||
|
|
||||||
#: contact.php:10
|
#: contact.php:10
|
||||||
msgid "Contact Daniel Winzen"
|
msgid "Contact Daniel Winzen"
|
||||||
msgstr ""
|
msgstr "Контакт Daniel Winzen"
|
||||||
|
|
||||||
#: contact.php:14 common.php:91
|
#: contact.php:14 common.php:91
|
||||||
msgid "Contact"
|
msgid "Contact"
|
||||||
msgstr ""
|
msgstr "Контакт"
|
||||||
|
|
||||||
#: contact.php:15
|
#: contact.php:15
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -658,7 +658,7 @@ msgstr "Вы можете <a href=\"contact.php\">написать мне</a>."
|
|||||||
|
|
||||||
#: common.php:82
|
#: common.php:82
|
||||||
msgid "Chat"
|
msgid "Chat"
|
||||||
msgstr ""
|
msgstr "Чат"
|
||||||
|
|
||||||
#: common.php:83
|
#: common.php:83
|
||||||
msgid "Online-Test"
|
msgid "Online-Test"
|
||||||
@ -1647,7 +1647,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: chat/index.php:15
|
#: chat/index.php:15
|
||||||
msgid "After 9 years, I'm shutting down the chat for good."
|
msgid "After 9 years, I'm shutting down the chat for good."
|
||||||
msgstr "Спустя девять лет, я вынужден закрыть свой чат навсегда"
|
msgstr "Спустя девять лет, я вынужден закрыть свой чат навсегда."
|
||||||
|
|
||||||
#: chat/index.php:16
|
#: chat/index.php:16
|
||||||
msgid ""
|
msgid ""
|
||||||
|
Reference in New Issue
Block a user