From 9e4ac502066db0fac8ed8ba36a2c7a195a15f1fb Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Thu, 16 Oct 2025 11:28:32 +0200 Subject: [PATCH] fix(l10n): Don't fallback from 3-letter languages to 2-letter Signed-off-by: Joas Schilling --- lib/private/L10N/Factory.php | 2 +- tests/lib/L10N/FactoryTest.php | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/private/L10N/Factory.php b/lib/private/L10N/Factory.php index 6a74774482954..5bf710cc03e93 100644 --- a/lib/private/L10N/Factory.php +++ b/lib/private/L10N/Factory.php @@ -496,7 +496,7 @@ private function getLanguageFromRequest(?string $app = null): string { // Fallback from de_De to de foreach ($available as $available_language) { - if (substr($preferred_language, 0, 2) === $available_language) { + if ($preferred_language_parts[0] === $available_language) { return $available_language; } } diff --git a/tests/lib/L10N/FactoryTest.php b/tests/lib/L10N/FactoryTest.php index 8c15baba9f6d5..6723527b140c1 100644 --- a/tests/lib/L10N/FactoryTest.php +++ b/tests/lib/L10N/FactoryTest.php @@ -351,6 +351,12 @@ public static function dataSetLanguageFromRequest(): array { [null, 'de,en', ['ru', 'en'], 'en'], [null, 'de-DE,en-US;q=0.8,en;q=0.6', ['ru', 'en'], 'en'], + // Don't fall back from kab (Kabyle) to ka (Georgian) - Unless specifically requested + [null, 'kab;q=0.8,en;q=0.6', ['ka', 'en'], 'en'], + [null, 'kab;q=0.8,de;q=0.6', ['ka', 'en', 'de'], 'de'], + [null, 'kab;q=0.8,de;q=0.7,ka;q=0.6', ['ka', 'en', 'de'], 'de'], + [null, 'kab;q=0.8,ka;q=0.7,de;q=0.6', ['ka', 'en', 'de'], 'ka'], + // Language for app ['files_pdfviewer', 'de', ['de'], 'de'], ['files_pdfviewer', 'de,en', ['de'], 'de'],