class LanguageManager
{
/**
- * Array of right-to-left language options
+ * Array of right-to-left language options.
*/
protected array $rtlLanguages = ['ar', 'fa', 'he'];
* 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<string, array{iso: string, windows: string}>
*/
'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'],
'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'],
* 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
+}