mirror of
https://github.com/BookStackApp/BookStack.git
synced 2025-04-13 00:18:08 +00:00
Fixed language locale setting issue
Attempted to access an array that had been filtered and therefore could have holes within, including as position 0 which would then be accessed. Also added cs language to internal map Related to #4068
This commit is contained in:
parent
c7e33d1981
commit
7c27d26161
2 changed files with 13 additions and 3 deletions
|
@ -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));
|
||||
|
|
|
@ -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');
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue