]> _ Git - cubist_cms-back.git/commitdiff
wip #4623 @2
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 28 Jul 2021 13:55:15 +0000 (15:55 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 28 Jul 2021 13:55:15 +0000 (15:55 +0200)
src/app/Magic/Models/CubistMagicTranslatableModel.php
src/app/Magic/Models/Translate.php

index 2954ce3034c9dc8e7b9a826eb965cbace718bc5c..1a7b34304441c1ad8b9d4c3d9c3c968a2ac9861d 100644 (file)
@@ -156,10 +156,18 @@ class CubistMagicTranslatableModel extends CubistMagicAbstractModel
     public function getAvailableLocales()
     {
         if ($this->_availableLocales === 'backpack') {
-            return $this->getAvailableLocalesTranslations();
+            $res = $this->getAvailableLocalesTranslations();
         } else if (is_array($this->_availableLocales)) {
-            return $this->_availableLocales;
+            $res = $this->_availableLocales;
         }
+
+        uksort($res, [$this, '_sortLocales']);
+        return $res;
+    }
+
+    protected function _sortLocales($a, $b)
+    {
+        return strcmp($a, $b);
     }
 
 }
index 12e8b7305f8598c8d86bbd9cee2d1a9d701f531e..252e63b5b40bd5e33bc78b071e3b06d144d32e9f 100644 (file)
@@ -95,4 +95,20 @@ class Translate extends CubistMagicTranslatableModel
     {
         return base_path() . '/resources/lang/' . $locale . '.json';
     }
+
+    protected function _sortLocales($a, $b)
+    {
+        $ea = file_exists($this->_getLanguageFile($a)) ? 1 : 0;
+        $eb = file_exists($this->_getLanguageFile($b)) ? 1 : 0;
+        if ($ea !== $eb) {
+            return $eb - $ea;
+        }
+        $sa = mb_strlen($a);
+        $sb = mb_strlen($b);
+        if ($sa !== $sb) {
+            return $sa - $sb;
+        }
+
+        return parent::_sortLocales($a, $b);
+    }
 }