diff --git a/lib/private/L10N/Factory.php b/lib/private/L10N/Factory.php index eb84f264f5fc8..bc0c30367feb3 100644 --- a/lib/private/L10N/Factory.php +++ b/lib/private/L10N/Factory.php @@ -475,7 +475,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 c29c31bf6503a..927b947edba11 100644 --- a/tests/lib/L10N/FactoryTest.php +++ b/tests/lib/L10N/FactoryTest.php @@ -362,6 +362,12 @@ public 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'],