From 25020bef28412d999fc9fde52dd713c2eb455e1b Mon Sep 17 00:00:00 2001 From: Daniel Winzen Date: Fri, 23 Dec 2022 15:37:44 +0100 Subject: [PATCH] Auto-detect browser language --- common.php | 21 ++++++++++++++++++++- locale/ru_RU/LC_MESSAGES/main-website.mo | Bin 14486 -> 14830 bytes locale/ru_RU/LC_MESSAGES/main-website.po | 16 ++++++++-------- 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/common.php b/common.php index 61888bb..6c5ac28 100644 --- a/common.php +++ b/common.php @@ -42,7 +42,7 @@ header("Cross-Origin-Resource-Policy: same-origin"); const LANGUAGES = [ 'de' => ['name' => 'Deutsch', 'locale' => 'de_DE', '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'; $locale = 'en_GB'; @@ -54,6 +54,25 @@ if(isset($_REQUEST['lang']) && isset(LANGUAGES[$_REQUEST['lang']])){ }elseif(isset($_COOKIE['language']) && isset(LANGUAGES[$_COOKIE['language']])){ $locale = LANGUAGES[$_COOKIE['language']]['locale']; $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); setlocale(LC_ALL, $locale); diff --git a/locale/ru_RU/LC_MESSAGES/main-website.mo b/locale/ru_RU/LC_MESSAGES/main-website.mo index 9ec32b0a421b1bb645a460868aee297f34397295..3fb36096ca7f68f11e7bd8794b314fb89464fea3 100644 GIT binary patch delta 1054 zcmaKq&r4KM6vw~w!*tZl#?10puO^}rEp*Zd1oH<3*)J$8Xwg)Ll8r5?EvrhP7yM-ye`fi=d6PZ&9E7v{@8&;J(j0_nv#sx#ygFSC_9Pmcqd? zArV$NE9#T>z;-_$Bqtzsz!0p1F}Mbf!61A9v*9ExhSRVRzJY6@f%e`KOyfJuC3|ln zOKOr5`oK>c8zH=IgvVejyaa9FXYeEp5M>&khF#E~BhBFOGOUG_xzZQ*Pvns_jOI%< z>^H(Z*h4noc+~X*sRI4{dMTgy8VIjsI1KM_@hv<9j~7W(@F}d~!qE-98oi%q#?cGO zb`(8PLb9-ElSB^chvck5NG#okwz3ltQ_aEM(7;yW>jyuJWY)A<+KQfy^<%gT4#AJG z3ZANv#$ggJ!1794Kj|}UCZTg%q)+Hmj^v}_BLRT;|) z`FWKn^)zYSDyc?7v`Zu|s_d1?4wDr-Od-}bt03g*2}SY-$SStXc4q9r*n`Jf*^g5FX3h=VGU?fOB?STJzh>6TlrC2M E0?Kd9O#lD@ delta 709 zcmYL{J!n%=6vzMhGR;TZG-?}@rWX8wG*L)m2{?(3gE|QXQz&*SI2A-)4Rq>Mn}jGT zIG7;_3etx|bWs{VK#*kX(hNd|Vk|B$g@V8Pp40>P{oXnEymRmQpSO4S(VcQH>a7b) zvL;zxmz077Xl%nR-GmjGhr93yOnMyuG<-vD30@)|@JUzTH8>78U=cQEPR0sX)Ru zOt2rB;VWdzWTY?Toy$7X{>f2{tuS->4NLGDym~?Mlh=nW_-j_$Bi<}OAkRb~Zb2yQ|iIY{X;DOtzDM0S!o0 AS^xk5 diff --git a/locale/ru_RU/LC_MESSAGES/main-website.po b/locale/ru_RU/LC_MESSAGES/main-website.po index 0e47a87..f34958b 100644 --- a/locale/ru_RU/LC_MESSAGES/main-website.po +++ b/locale/ru_RU/LC_MESSAGES/main-website.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \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" "Language-Team: \n" "Language: ru_RU\n" @@ -21,7 +21,7 @@ msgstr "" #: index.php:6 msgid "Daniel - Home" -msgstr "" +msgstr "Daniel - Домашняя страница" #: index.php:10 msgid "" @@ -31,7 +31,7 @@ msgstr "" #: index.php:14 common.php:81 msgid "Home" -msgstr "" +msgstr "Домашняя страница" #: index.php:15 msgid "" @@ -319,15 +319,15 @@ msgstr "" #: contact.php:6 msgid "Daniel - Contact" -msgstr "" +msgstr "Daniel - Контакт" #: contact.php:10 msgid "Contact Daniel Winzen" -msgstr "" +msgstr "Контакт Daniel Winzen" #: contact.php:14 common.php:91 msgid "Contact" -msgstr "" +msgstr "Контакт" #: contact.php:15 msgid "" @@ -658,7 +658,7 @@ msgstr "Вы можете написать мне." #: common.php:82 msgid "Chat" -msgstr "" +msgstr "Чат" #: common.php:83 msgid "Online-Test" @@ -1647,7 +1647,7 @@ msgstr "" #: chat/index.php:15 msgid "After 9 years, I'm shutting down the chat for good." -msgstr "Спустя девять лет, я вынужден закрыть свой чат навсегда" +msgstr "Спустя девять лет, я вынужден закрыть свой чат навсегда." #: chat/index.php:16 msgid ""