diff --git a/app/Util/LanguageManager.php b/app/Util/LanguageManager.php index 0cbf3f397..93c992fcc 100644 --- a/app/Util/LanguageManager.php +++ b/app/Util/LanguageManager.php @@ -24,6 +24,7 @@ class LanguageManager 'bg' => ['iso' => 'bg_BG', 'windows' => 'Bulgarian'], 'bs' => ['iso' => 'bs_BA', 'windows' => 'Bosnian (Latin)'], 'ca' => ['iso' => 'ca', 'windows' => 'Catalan'], + 'cs' => ['iso' => 'cs_CZ', 'windows' => 'Czech'], 'da' => ['iso' => 'da_DK', 'windows' => 'Danish'], 'de' => ['iso' => 'de_DE', 'windows' => 'German'], 'de_informal' => ['iso' => 'de_DE', 'windows' => 'German'], @@ -120,14 +121,14 @@ class LanguageManager $isoLang = $this->localeMap[$language]['iso'] ?? ''; $isoLangPrefix = explode('_', $isoLang)[0]; - $locales = array_filter([ + $locales = array_values(array_filter([ $isoLang ? $isoLang . '.utf8' : false, $isoLang ?: false, $isoLang ? str_replace('_', '-', $isoLang) : false, $isoLang ? $isoLangPrefix . '.UTF-8' : false, $this->localeMap[$language]['windows'] ?? false, $language, - ]); + ])); if (!empty($locales)) { setlocale(LC_TIME, $locales[0], ...array_slice($locales, 1)); diff --git a/tests/LanguageTest.php b/tests/LanguageTest.php index e5c3c0bff..b65227dd8 100644 --- a/tests/LanguageTest.php +++ b/tests/LanguageTest.php @@ -4,7 +4,7 @@ namespace Tests; class LanguageTest extends TestCase { - protected $langs; + protected array $langs; /** * LanguageTest constructor. @@ -81,4 +81,13 @@ class LanguageTest extends TestCase $this->get('/'); $this->assertTrue(config('app.rtl'), 'App RTL config should have been set to true by middleware'); } + + public function test_unknown_lang_does_not_break_app() + { + config()->set('app.locale', 'zz'); + + $loginReq = $this->get('/login', ['Accept-Language' => 'zz']); + $loginReq->assertOk(); + $loginReq->assertSee('Log In'); + } }