From 14b7caecd19499de7ba6d82150c5c09e86d03b2e Mon Sep 17 00:00:00 2001 From: Christian Schnegelberger Date: Fri, 22 Sep 2023 17:30:23 +0200 Subject: [PATCH] [ticket/17191] Make sure user_lang from DB is considered, with fallback PHPBB3-17191 --- .../default/container/services_language.yml | 1 + phpBB/phpbb/language/language_file_helper.php | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/phpBB/config/default/container/services_language.yml b/phpBB/config/default/container/services_language.yml index 8201fbf9b6..a7c5359049 100644 --- a/phpBB/config/default/container/services_language.yml +++ b/phpBB/config/default/container/services_language.yml @@ -3,6 +3,7 @@ services: class: phpbb\language\language_file_helper arguments: - '%core.root_path%' + - '@user' language: class: phpbb\language\language diff --git a/phpBB/phpbb/language/language_file_helper.php b/phpBB/phpbb/language/language_file_helper.php index f862754ce4..9bdb082977 100644 --- a/phpBB/phpbb/language/language_file_helper.php +++ b/phpBB/phpbb/language/language_file_helper.php @@ -15,6 +15,7 @@ namespace phpbb\language; use DomainException; use phpbb\json\sanitizer as json_sanitizer; +use phpbb\user; use Symfony\Component\Finder\Finder; /** @@ -27,14 +28,19 @@ class language_file_helper */ protected $phpbb_root_path; + /** @var user */ + protected $user; + /** * Constructor * * @param string $phpbb_root_path Path to phpBB's root + * @param user $user User Object */ - public function __construct(string $phpbb_root_path) + public function __construct(string $phpbb_root_path, \phpbb\user $user) { $this->phpbb_root_path = $phpbb_root_path; + $this->user = $user; } /** @@ -76,7 +82,13 @@ class language_file_helper public function get_lang_key_value($lang_key) : string { $available_languages = $this->get_available_languages(); - return $available_languages[0][$lang_key]; + + foreach ($available_languages as $key => $value) + { + $available_languages[$value['iso']] = $value; + } + $user_lang = $this->user->data['user_lang'] ?? 'en'; + return $available_languages[$user_lang][$lang_key]; } /**