Pārlūkot izejas kodu

Merge pull request #1213 from PrivateBin/en-lang-selection

ensure English is always added to available languages, fixes #1208
El RIDO 2 gadi atpakaļ
vecāks
revīzija
3b17dfc6ef
3 mainītis faili ar 16 papildinājumiem un 5 dzēšanām
  1. 3 0
      CHANGELOG.md
  2. 2 1
      lib/Data/Filesystem.php
  3. 11 4
      lib/I18n.php

+ 3 - 0
CHANGELOG.md

@@ -1,5 +1,8 @@
 # PrivateBin version history
 
+## 1.6.2 (not yet released)
+* FIXED: English not selectable when languageselection enabled (#1208)
+
 ## 1.6.1 (2023-12-04)
 * ADDED: Right-To-Left (RTL) support for Arabic & Hebrew (#1174)
 * CHANGED: Upgrading libraries to: DOMpurify 3.0.6

+ 2 - 1
lib/Data/Filesystem.php

@@ -13,6 +13,7 @@
 namespace PrivateBin\Data;
 
 use Exception;
+use GlobIterator;
 use PrivateBin\Json;
 
 /**
@@ -394,7 +395,7 @@ class Filesystem extends AbstractData
     public function getAllPastes()
     {
         $pastes = array();
-        foreach (new \GlobIterator($this->_path . self::PASTE_FILE_PATTERN) as $file) {
+        foreach (new GlobIterator($this->_path . self::PASTE_FILE_PATTERN) as $file) {
             if ($file->isFile()) {
                 $pastes[] = $file->getBasename('.php');
             }

+ 11 - 4
lib/I18n.php

@@ -12,6 +12,9 @@
 
 namespace PrivateBin;
 
+use AppendIterator;
+use GlobIterator;
+
 /**
  * I18n
  *
@@ -193,10 +196,14 @@ class I18n
     public static function getAvailableLanguages()
     {
         if (count(self::$_availableLanguages) == 0) {
-            $i18n = dir(self::_getPath());
-            while (false !== ($file = $i18n->read())) {
-                if (preg_match('/^([a-z]{2,3}).json$/', $file, $match) === 1) {
-                    self::$_availableLanguages[] = $match[1];
+            self::$_availableLanguages[] = 'en'; // en.json is not part of the release archive
+            $languageIterator            = new AppendIterator();
+            $languageIterator->append(new GlobIterator(self::_getPath('??.json')));
+            $languageIterator->append(new GlobIterator(self::_getPath('???.json'))); // for jbo
+            foreach ($languageIterator as $file) {
+                $language = $file->getBasename('.json');
+                if ($language != 'en') {
+                    self::$_availableLanguages[] = $language;
                 }
             }
         }