Skip to content

Commit

Permalink
alextselegidis#1620 Improve setting language by GET parameter
Browse files Browse the repository at this point in the history
  • Loading branch information
ammarcoux committed Nov 8, 2024
1 parent 1153d76 commit 2105e72
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 17 deletions.
10 changes: 0 additions & 10 deletions application/config/config.php
Original file line number Diff line number Diff line change
Expand Up @@ -128,16 +128,6 @@

$config['language_codes'] = $languages;

$language_code = isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) : 'en';

$config['language'] =
$_GET['language'] ??
(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'], $languages[$language_code])
? $languages[$language_code]
: Config::LANGUAGE);

$config['language_code'] = array_search($config['language'], $languages) ?: 'en';

/*
|--------------------------------------------------------------------------
| Available Languages
Expand Down
47 changes: 40 additions & 7 deletions application/core/EA_Controller.php
Original file line number Diff line number Diff line change
Expand Up @@ -112,17 +112,50 @@ private function ensure_user_exists()
*/
private function configure_language()
{
$session_language = session('language');
$language_codes = config('language_codes');
// set the language code from the language GET parameter if it's a supported language
if (!empty($_GET['language'])) {
$queryLanguage = strtolower($_GET['language']);
$language_code = array_search($queryLanguage, $language_codes);
if (!$language_code) {
// check if the ISO 639-1 language code was set as the get parameter
$queryLangCode = substr($queryLanguage, 0, 2);
if (isset($language_codes[$queryLangCode])) {
$language_code = $queryLangCode;
}
}
}

if ($session_language) {
$language_codes = config('language_codes');
if (empty($language_code)) {
// set the language code from the language SESSION parameter if it's a supported language
if (session('language')) {
$language_code = array_search(session('language'), $language_codes);
}
// set the language code from the language header if it's a supported language
elseif (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
$headerLangCode = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
if (isset($language_codes[$headerLangCode])) {
$language_code = $headerLangCode;
}
}
}

config([
'language' => $session_language,
'language_code' => array_search($session_language, $language_codes) ?: 'en',
]);
// no language set. set it to the default language defined in the config
if (!$language_code) {
$language = strtolower(Config::LANGUAGE);
$language_code = array_search($language, $language_codes);
}
else {
$language = $language_codes[$language_code];
}

session(['language' => $language]);

config([
'language' => $language,
'language_code' => $language_code,
]);

$this->lang->load('translations');
}

Expand Down

0 comments on commit 2105e72

Please sign in to comment.