diff --git a/core/config.class.inc.php b/core/config.class.inc.php index cd9b48747..cc169d141 100644 --- a/core/config.class.inc.php +++ b/core/config.class.inc.php @@ -553,29 +553,8 @@ class Config // Default AddOn, always present can be moved to an official iTop Module later if needed 'user rights' => 'addons/userrights/userrightsprofile.class.inc.php', ); - $this->m_aDictionaries = array( - // Default dictionaries, always present can be moved to an official iTop Module later if needed - 'dictionaries/dictionary.itop.core.php', - 'dictionaries/dictionary.itop.ui.php', // Support for English - 'dictionaries/fr.dictionary.itop.ui.php', // Support for French - 'dictionaries/fr.dictionary.itop.core.php', // Support for French - 'dictionaries/es_cr.dictionary.itop.ui.php', // Support for Spanish (from Costa Rica) - 'dictionaries/es_cr.dictionary.itop.core.php', // Support for Spanish (from Costa Rica) - 'dictionaries/de.dictionary.itop.ui.php', // Support for German - 'dictionaries/de.dictionary.itop.core.php', // Support for German - 'dictionaries/pt_br.dictionary.itop.ui.php', // Support for Brazilian Portuguese - 'dictionaries/pt_br.dictionary.itop.core.php', // Support for Brazilian Portuguese - 'dictionaries/ru.dictionary.itop.ui.php', // Support for Russian - 'dictionaries/ru.dictionary.itop.core.php', // Support for Russian - 'dictionaries/tr.dictionary.itop.ui.php', // Support for Turkish - 'dictionaries/tr.dictionary.itop.core.php', // Support for Turkish - 'dictionaries/zh.dictionary.itop.ui.php', // Support for Chinese - 'dictionaries/zh.dictionary.itop.core.php', // Support for Chinese - 'dictionaries/it.dictionary.itop.ui.php', // Support for Italian - 'dictionaries/it.dictionary.itop.core.php', // Support for Italian - 'dictionaries/hu.dictionary.itop.ui.php', // Support for Hungarian - 'dictionaries/hu.dictionary.itop.core.php', // Support for Hungarian - ); + $this->m_aDictionaries = self::ScanDictionariesDir(); + foreach($this->m_aSettings as $sPropCode => $aSettingInfo) { $this->m_aSettings[$sPropCode]['value'] = $aSettingInfo['default']; @@ -1242,5 +1221,25 @@ class Config throw new ConfigException("Could not write to configuration file", array('file' => $sFileName)); } } + + protected static function ScanDictionariesDir() + { + $aResult = array(); + // Populate automatically the list of dictionary files + $sDir = APPROOT.'/dictionaries'; + if ($hDir = @opendir($sDir)) + { + while (($sFile = readdir($hDir)) !== false) + { + $aMatches = array(); + if (preg_match("/^([^\.]+\.)?dictionary\.itop\.(ui|core)\.php$/i", $sFile, $aMatches)) // Dictionary files named like [.]dictionary.[core|ui].php are loaded automatically + { + $aResult[] = 'dictionaries/'.$sFile; + } + } + closedir($hDir); + } + return $aResult; + } } ?>