Browse Source

Intègre la langue en cours dans $i18n

Modifie également l'appel de Translation::listLanguages()
Retire la variable globale $language
Christophe HENRY 2 years ago
parent
commit
5dc9e8ca58
3 changed files with 11 additions and 10 deletions
  1. 2 2
      Plugin.class.php
  2. 8 6
      i18n.php
  3. 1 2
      settings.php

+ 2 - 2
Plugin.class.php

@@ -15,12 +15,12 @@ class Plugin{
     }
 
     public static function includeAll(){
-        global $i18n, $i18n_js, $languages, $theme;
+        global $i18n, $i18n_js, $theme;
         $pluginFiles = Plugin::getFiles(true);
         if(is_array($pluginFiles)) {
             foreach($pluginFiles as $pluginFile) {
                 // Chargement du fichier de Langue du plugin
-                $i18n->append(new Translation(dirname($pluginFile),$languages));
+                $i18n->append(new Translation(dirname($pluginFile),$i18n->languages));
                 // Inclusion du coeur de plugin
                 include $pluginFile;
                 // Gestion des css du plugin en fonction du thème actif

+ 8 - 6
i18n.php

@@ -18,15 +18,16 @@ class Translation {
     // tableau associatif des traductions
     var $trans = array();
     var $language = ''; // langue courante
-    var $languages = array(); // langues disponibles
+    var $translatedLanguages = array(); // langues traduites
 
     /** @param location L'endroit où se trouve le dossier 'locale'
      *  @param languages Les langues demandées */
     function __construct($location, $languages=array()) {
         $this->location = $location;
         if (!is_array($languages)) $languages = array($languages);
-        $this->listLanguages();
+        $this->translatedLanguages = $this->listLanguages();
         $languages[]=self::DEFAULT_LANGUAGE;
+        $this->languages = $languages;
         foreach ($languages as $language) {
             if (empty($language)) continue;
             if ($this->load($language)) {
@@ -36,17 +37,18 @@ class Translation {
         }
     }
 
-    /* Peuple la liste des langues avec une traduction */
+    /* @return la liste des langues avec une traduction */
     protected function listLanguages() {
-        $this->languages = array();
+        $translatedLanguages = array();
         $files = glob($this->location.'/'.self::LOCALE_DIR.'/*.json');
         if (is_array($files)) {
             foreach($files as $file){
                 preg_match('/([a-z]{2})\.json$/', $file, $matches);
                 assert('!empty($matches)');
-                $this->languages [] = $matches[1];
+                $translatedLanguages [] = $matches[1];
             }
         }
+        return $translatedLanguages;
     }
 
     /* Charge la traduction
@@ -59,7 +61,7 @@ class Translation {
         }
         $trans = $this->loadFile($language);
         if (empty($trans)) return false;
-        assert('in_array($language, $this->languages)');
+        assert('in_array($language, $this->translatedLanguages)');
         if ($language!=self::DEFAULT_LANGUAGE) {
             $defaultTrans = $this->loadFile(self::DEFAULT_LANGUAGE);
             assert('!empty($defaultTrans)');

+ 1 - 2
settings.php

@@ -14,8 +14,7 @@ $logger = new Logger('settings');
 $tpl->assign('logs',$logger->flushLogs());
 
 // gestion de la langue
-$languageList = $i18n->languages;
-$tpl->assign('languageList',$languageList);
+$tpl->assign('languageList',$i18n->translatedLanguages);
 $tpl->assign('currentLanguage',$configurationManager->get('language'));
 
 $wrongLogin = !empty($wrongLogin);