From e165f152b0e390fd18d83a216853800f2f4bbd69 Mon Sep 17 00:00:00 2001 From: Vincent LAURENT Date: Wed, 27 Sep 2023 11:54:57 +0200 Subject: [PATCH 1/2] Better language detection and take server language otherwise --- app.php | 40 +++++++++++++++++++--------- templates/components/navtab.html.php | 2 +- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/app.php b/app.php index 71a1800..e193960 100644 --- a/app.php +++ b/app.php @@ -1,14 +1,19 @@ set('FALLBACK', null); +$f3->language($f3->get('HEADERS')['Accept-Language']); + session_start(); if(getenv("DEBUG")) { $f3->set('DEBUG', getenv("DEBUG")); } -$f3->set('LANGUAGES', +$f3->set('SUPPORTED_LANGUAGES', ['fr' => 'Français', 'en' => 'English', 'ar' => 'العربية']); @@ -34,12 +39,11 @@ if($f3->get('DISABLE_ORGANIZATION')) { } if ($f3->get('GET.lang')) { - $lang = $f3->get('GET.lang'); - changeLanguage($lang, $f3); -} elseif (isset($_SESSION['LANGUAGE'])) { - changeLanguage($_SESSION['LANGUAGE'], $f3); + selectLanguage($f3->get('GET.lang'), $f3, true); } elseif (isset($_COOKIE['LANGUAGE'])) { - changeLanguage($_COOKIE['LANGUAGE'], $f3); + selectLanguage($_COOKIE['LANGUAGE'], $f3, true); +} else { + selectLanguage($f3->get('LANGUAGE'), $f3); } $domain = basename(glob($f3->get('ROOT')."/locale/application_*.pot")[0], '.pot'); @@ -47,13 +51,6 @@ $domain = basename(glob($f3->get('ROOT')."/locale/application_*.pot")[0], '.pot' bindtextdomain($domain, $f3->get('ROOT')."/locale"); textdomain($domain); -function changeLanguage($lang, $f3) { - $_SESSION['LANGUAGE'] = $lang; - setcookie("LANGUAGE", $lang, strtotime('+1 year')); - putenv("LANGUAGE=$lang"); - $f3->set('LANGUAGE', $lang); -} - $f3->set('TRANSLATION_LANGUAGE', _("en")); $f3->set('DIRECTION_LANGUAGE', 'ltr'); if($f3->get('TRANSLATION_LANGUAGE') == "ar") { @@ -474,6 +471,23 @@ function getCommit() { return substr($commit, 0, 7); } +function selectLanguage($lang, $f3, $putCookie = false) { + $langSupported = null; + foreach(explode(',', $lang) as $l) { + if(array_key_exists($l, $f3->get('SUPPORTED_LANGUAGES'))) { + $langSupported = $l; + break; + } + } + if(!$langSupported) { + return null; + } + if($putCookie) { + setcookie("LANGUAGE", $langSupported, strtotime('+1 year')); + } + putenv("LANGUAGE=$langSupported"); +} + function convertPHPSizeToBytes($sSize) { $sSuffix = strtoupper(substr($sSize, -1)); diff --git a/templates/components/navtab.html.php b/templates/components/navtab.html.php index c55dc80..25caab7 100644 --- a/templates/components/navtab.html.php +++ b/templates/components/navtab.html.php @@ -5,7 +5,7 @@ From 1dc97acc72805397de25bf04eb2b5f9d63c06e7c Mon Sep 17 00:00:00 2001 From: Vincent LAURENT Date: Wed, 27 Sep 2023 11:57:36 +0200 Subject: [PATCH 2/2] =?UTF-8?q?Language=20param=C3=A9trable=20dans=20le=20?= =?UTF-8?q?dockerfile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 6737f4d..885fe14 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,18 +6,18 @@ ENV POST_MAX_SIZE=24M ENV MAX_FILE_UPLOADS=201 ENV PDF_STORAGE_PATH=/data ENV DISABLE_ORGANIZATION=false -ENV PDF_DEMO_LINK=true +ENV DEFAULT_LANGUAGE=fr_FR.UTF-8 RUN apt update && \ apt install -y vim locales gettext-base librsvg2-bin pdftk imagemagick potrace ghostscript && \ docker-php-ext-install gettext && \ rm -rf /var/lib/apt/lists/* -RUN sed -i '/fr_FR.UTF-8/s/^# //g' /etc/locale.gen && \ +RUN sed -i "/$DEFAULT_LANGUAGE/s/^# //g" /etc/locale.gen && \ locale-gen -ENV LANG fr_FR.UTF-8 -ENV LANGUAGE fr_FR:en -ENV LC_ALL fr_FR.UTF-8 +ENV LANG $DEFAULT_LANGUAGE +ENV LANGUAGE $DEFAULT_LANGUAGE +ENV LC_ALL $DEFAULT_LANGUAGE COPY . /usr/local/signaturepdf