From f7cd3d17b8cd41ec8cfb867b1404c0ac452a2c80 Mon Sep 17 00:00:00 2001 From: c39cfbb3 <145777845+c39cfbb3@users.noreply.github.com> Date: Sat, 7 Oct 2023 11:44:46 +0800 Subject: [PATCH 1/2] L10N/Factory: Support "Accept-Language: zh-Hans-CN" and alike Signed-off-by: c39cfbb3 <145777845+c39cfbb3@users.noreply.github.com> --- lib/private/L10N/Factory.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/private/L10N/Factory.php b/lib/private/L10N/Factory.php index f7d3fec4ff67b..7361ab1a9dddc 100644 --- a/lib/private/L10N/Factory.php +++ b/lib/private/L10N/Factory.php @@ -490,10 +490,14 @@ private function getLanguageFromRequest(?string $app = null): string { [$preferred_language] = explode(';', $preference); $preferred_language = str_replace('-', '_', $preferred_language); + $preferred_language_parts = explode('_', $preferred_language); foreach ($available as $available_language) { if ($preferred_language === strtolower($available_language)) { return $this->respectDefaultLanguage($app, $available_language); } + if ($preferred_language_parts[0].'_'.$preferred_language_parts[count($preferred_language_parts) - 1] === strtolower($available_language)) { + return $available_language; + } } // Fallback from de_De to de From 1bf15da86343b8213a8554fcf3cda78a9000b455 Mon Sep 17 00:00:00 2001 From: c39cfbb3 <145777845+c39cfbb3@users.noreply.github.com> Date: Sun, 15 Oct 2023 00:33:42 +0800 Subject: [PATCH 2/2] Update lib/private/L10N/Factory.php Co-authored-by: Ferdinand Thiessen Signed-off-by: c39cfbb3 <145777845+c39cfbb3@users.noreply.github.com> --- lib/private/L10N/Factory.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/private/L10N/Factory.php b/lib/private/L10N/Factory.php index 7361ab1a9dddc..6de620e7ec74b 100644 --- a/lib/private/L10N/Factory.php +++ b/lib/private/L10N/Factory.php @@ -495,7 +495,7 @@ private function getLanguageFromRequest(?string $app = null): string { if ($preferred_language === strtolower($available_language)) { return $this->respectDefaultLanguage($app, $available_language); } - if ($preferred_language_parts[0].'_'.$preferred_language_parts[count($preferred_language_parts) - 1] === strtolower($available_language)) { + if ($preferred_language_parts[0].'_'.end($preferred_language_parts) === strtolower($available_language)) { return $available_language; } }