diff --git a/lib/private/L10N/Factory.php b/lib/private/L10N/Factory.php index ecf7381ba99ca..eb84f264f5fc8 100644 --- a/lib/private/L10N/Factory.php +++ b/lib/private/L10N/Factory.php @@ -98,7 +98,7 @@ public function get($app, $lang = null, $locale = null) { $lang = str_replace(['\0', '/', '\\', '..'], '', $lang); } - $forceLang = $this->config->getSystemValue('force_language', false); + $forceLang = $this->request->getParam('forceLanguage') ?? $this->config->getSystemValue('force_language', false); if (is_string($forceLang)) { $lang = $forceLang; } @@ -139,7 +139,7 @@ public function get($app, $lang = null, $locale = null) { */ public function findLanguage(?string $appId = null): string { // Step 1: Forced language always has precedence over anything else - $forceLang = $this->config->getSystemValue('force_language', false); + $forceLang = $this->request->getParam('forceLanguage') ?? $this->config->getSystemValue('force_language', false); if (is_string($forceLang)) { $this->requestLanguage = $forceLang; } @@ -196,7 +196,7 @@ public function findLanguage(?string $appId = null): string { public function findGenericLanguage(?string $appId = null): string { // Step 1: Forced language always has precedence over anything else - $forcedLanguage = $this->config->getSystemValue('force_language', false); + $forcedLanguage = $this->request->getParam('forceLanguage') ?? $this->config->getSystemValue('force_language', false); if ($forcedLanguage !== false) { return $forcedLanguage; } @@ -411,6 +411,10 @@ public function getUserLanguage(?IUser $user = null): string { return $language; } + if (($forcedLanguage = $this->request->getParam('forceLanguage')) !== null) { + return $forcedLanguage; + } + // Use language from request if ($this->userSession->getUser() instanceof IUser && $user->getUID() === $this->userSession->getUser()->getUID()) { @@ -421,7 +425,7 @@ public function getUserLanguage(?IUser $user = null): string { } } - return $this->config->getSystemValueString('default_language', 'en'); + return $this->request->getParam('forceLanguage') ?? $this->config->getSystemValueString('default_language', 'en'); } /**