Fix L10n in case of empty strings array
authorPhilipp <admin@philipp.info>
Sun, 11 Apr 2021 12:58:06 +0000 (14:58 +0200)
committerPhilipp <admin@philipp.info>
Sat, 17 Apr 2021 11:24:37 +0000 (13:24 +0200)
src/Core/L10n.php

index 9561360..138fd87 100644 (file)
@@ -287,6 +287,8 @@ class L10n
         */
        public function tt(string $singular, string $plural, int $count)
        {
+               $s = null;
+
                if (!empty($this->strings[$singular])) {
                        $t = $this->strings[$singular];
                        if (is_array($t)) {
@@ -297,16 +299,20 @@ class L10n
                                        $i = $this->stringPluralSelectDefault($count);
                                }
 
-                               // for some languages there is only a single array item
-                               if (!isset($t[$i])) {
+                               if (isset($t[$i])) {
+                                       $s = $t[$i];
+                               } elseif (count($t) > 0) {
+                                       // for some languages there is only a single array item
                                        $s = $t[0];
                                } else {
-                                       $s = $t[$i];
+                                       $this->logger->warning('Found empty strings array.', ['singular' => $singular, 'plural' => $plural, 'array' => $t]);
                                }
                        } else {
                                $s = $t;
                        }
-               } elseif ($this->stringPluralSelectDefault($count)) {
+               }
+
+               if (is_null($s) && $this->stringPluralSelectDefault($count)) {
                        $s = $plural;
                } else {
                        $s = $singular;