X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/9158a66bff8fa50640eef7ac8830d47b7fb72c02..refs/pull/3918/head:/app/Util/LanguageManager.php diff --git a/app/Util/LanguageManager.php b/app/Util/LanguageManager.php index ff860c83d..ed68f647c 100644 --- a/app/Util/LanguageManager.php +++ b/app/Util/LanguageManager.php @@ -7,7 +7,7 @@ use Illuminate\Http\Request; class LanguageManager { /** - * Array of right-to-left language options + * Array of right-to-left language options. */ protected array $rtlLanguages = ['ar', 'fa', 'he']; @@ -15,7 +15,7 @@ class LanguageManager * Map of BookStack language names to best-estimate ISO and windows locale names. * Locales can often be found by running `locale -a` on a linux system. * Windows locales can be found at: - * https://docs.microsoft.com/en-us/cpp/c-runtime-library/language-strings?view=msvc-170 + * https://docs.microsoft.com/en-us/cpp/c-runtime-library/language-strings?view=msvc-170. * * @var array */ @@ -28,6 +28,7 @@ class LanguageManager 'de' => ['iso' => 'de_DE', 'windows' => 'German'], 'de_informal' => ['iso' => 'de_DE', 'windows' => 'German'], 'en' => ['iso' => 'en_GB', 'windows' => 'English'], + 'el' => ['iso' => 'el_GR', 'windows' => 'Greek'], 'es' => ['iso' => 'es_ES', 'windows' => 'Spanish'], 'es_AR' => ['iso' => 'es_AR', 'windows' => 'Spanish'], 'et' => ['iso' => 'et_EE', 'windows' => 'Estonian'], @@ -48,6 +49,7 @@ class LanguageManager 'pl' => ['iso' => 'pl_PL', 'windows' => 'Polish'], 'pt' => ['iso' => 'pt_PT', 'windows' => 'Portuguese'], 'pt_BR' => ['iso' => 'pt_BR', 'windows' => 'Portuguese'], + 'ro' => ['iso' => 'ro_RO', 'windows' => 'Romanian'], 'ru' => ['iso' => 'ru', 'windows' => 'Russian'], 'sk' => ['iso' => 'sk_SK', 'windows' => 'Slovak'], 'sl' => ['iso' => 'sl_SI', 'windows' => 'Slovenian'], @@ -113,18 +115,22 @@ class LanguageManager * Set the system date locale for localized date formatting. * Will try both the standard locale name and the UTF8 variant. */ - public function setPhpDateTimeLocale(string $language) + public function setPhpDateTimeLocale(string $language): void { - $isoLang = $this->localeMap[$language]['iso'] ?? false; + $isoLang = $this->localeMap[$language]['iso'] ?? ''; + $isoLangPrefix = explode('_', $isoLang)[0]; $locales = array_filter([ $isoLang ? $isoLang . '.utf8' : false, $isoLang ?: false, $isoLang ? str_replace('_', '-', $isoLang) : false, - $this->localeMap[$language]['windows'] ?? false, + $isoLang ? $isoLangPrefix . '.UTF-8' : false, + $this->localeMap[$language]['windows'] ?? false, $language, ]); - setlocale(LC_TIME, ...$locales); + if (!empty($locales)) { + setlocale(LC_TIME, ...$locales); + } } -} \ No newline at end of file +}