]> BookStack Code Mirror - bookstack/blobdiff - app/Util/LanguageManager.php
Fixed permission row permission check
[bookstack] / app / Util / LanguageManager.php
index ff860c83da176c7c2b0fd59d2173810774be8cff..201bbda3d576cba2842b85f18221faae853c9b5c 100644 (file)
@@ -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<string, array{iso: string, windows: string}>
      */
@@ -48,6 +48,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 +114,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
+}