[*] BO: The translation of modules are now made in the theme if modules are overrided or directly in the module folder

This commit is contained in:
Rémi Gaillard
2013-04-08 17:50:43 +02:00
parent a720b19854
commit 3ffe339a76
@@ -586,7 +586,6 @@ class AdminTranslationsControllerCore extends AdminController
{ {
// Get instance of this tab by class name // Get instance of this tab by class name
$tab = Tab::getInstanceFromClassName($class_name); $tab = Tab::getInstanceFromClassName($class_name);
//Check if class name exists //Check if class name exists
if (isset($tab->class_name) && !empty($tab->class_name)) if (isset($tab->class_name) && !empty($tab->class_name))
{ {
@@ -1331,17 +1330,11 @@ class AdminTranslationsControllerCore extends AdminController
{ {
if ($this->tabAccess['edit'] === '1') if ($this->tabAccess['edit'] === '1')
{ {
// Get a good path for module directory
if ($this->theme_selected == self::DEFAULT_THEME_NAME && _PS_MODE_DEV_)
$i18n_dir = $this->translations_informations[$this->type_selected]['dir'];
else
$i18n_dir = $this->translations_informations[$this->type_selected]['override']['dir'];
// Get list of modules // Get list of modules
if ($modules = $this->getListModules()) if ($modules = $this->getListModules())
{ {
// Get files of all modules // Get files of all modules
$arr_files = $this->getAllModuleFiles($modules, $i18n_dir, $this->lang_selected->iso_code, true); $arr_files = $this->getAllModuleFiles($modules, null, $this->lang_selected->iso_code, true);
// Find and write all translation modules files // Find and write all translation modules files
foreach ($arr_files as $value) foreach ($arr_files as $value)
@@ -1890,11 +1883,13 @@ class AdminTranslationsControllerCore extends AdminController
foreach ($modules as &$module) foreach ($modules as &$module)
$module = $module['name']; $module = $module['name'];
} }
else if ($this->theme_selected == self::DEFAULT_THEME_NAME) elseif ($this->theme_selected == self::DEFAULT_THEME_NAME)
{
if (Tools::file_exists_cache($this->translations_informations['modules']['dir'])) if (Tools::file_exists_cache($this->translations_informations['modules']['dir']))
$modules = scandir($this->translations_informations['modules']['dir']); $modules = scandir($this->translations_informations['modules']['dir']);
else else
$this->displayWarning(Tools::displayError('There are no active modules in this copy of PrestaShop. Please use the Modules page to activate, or visit the PrestaShop Addons Store to download them.')); $this->displayWarning(Tools::displayError('There are no active modules in this copy of PrestaShop. Please use the Modules page to activate, or visit the PrestaShop Addons Store to download them.'));
}
else else
if (Tools::file_exists_cache($this->translations_informations['modules']['override']['dir'])) if (Tools::file_exists_cache($this->translations_informations['modules']['override']['dir']))
$modules = scandir($this->translations_informations['modules']['override']['dir']); $modules = scandir($this->translations_informations['modules']['override']['dir']);
@@ -2539,12 +2534,30 @@ class AdminTranslationsControllerCore extends AdminController
* @param boolean $is_default set it if modules are located in root/prestashop/modules folder * @param boolean $is_default set it if modules are located in root/prestashop/modules folder
* This allow to distinguish overrided prestashop theme and original module * This allow to distinguish overrided prestashop theme and original module
*/ */
protected function getAllModuleFiles($modules, $root_dir, $lang, $is_default = false) protected function getAllModuleFiles($modules, $root_dir = null, $lang, $is_default = false)
{ {
$array_files = array(); $array_files = array();
$initial_root_dir = $root_dir;
foreach ($modules as $module) foreach ($modules as $module)
{ {
if ($module{0} != '.' && is_dir($root_dir.$module)) $root_dir = $initial_root_dir;
if ($module{0} == '.')
continue;
// Get path of directory for find a good path of translation file
if ($root_dir == null)
{
$i18n_dir = $this->translations_informations[$this->type_selected]['override']['dir'];
if (is_dir($i18n_dir.$module))
$root_dir = $i18n_dir;
}
if ($root_dir == null)
{
$i18n_dir = $this->translations_informations[$this->type_selected]['dir'];
if (is_dir($i18n_dir.$module))
$root_dir = $i18n_dir;
}
if (is_dir($root_dir.$module))
{ {
if (Tools::file_exists_cache($root_dir.$module.'/translations/'.$lang.'.php')) if (Tools::file_exists_cache($root_dir.$module.'/translations/'.$lang.'.php'))
$lang_file = $root_dir.$module.'/translations/'.$lang.'.php'; $lang_file = $root_dir.$module.'/translations/'.$lang.'.php';
@@ -2564,20 +2577,13 @@ class AdminTranslationsControllerCore extends AdminController
*/ */
public function initFormModules() public function initFormModules()
{ {
// Get path of directory for find a good path of translation file
if ($this->theme_selected != self::DEFAULT_THEME_NAME || !_PS_MODE_DEV_)
$i18n_dir = $this->translations_informations[$this->type_selected]['override']['dir'];
else
$i18n_dir = $this->translations_informations[$this->type_selected]['dir'];
// Get list of modules // Get list of modules
$modules = $this->getListModules(); $modules = $this->getListModules();
if (!empty($modules)) if (!empty($modules))
{ {
// Get all modules files and include all translation files // Get all modules files and include all translation files
$arr_files = $this->getAllModuleFiles($modules, $i18n_dir, $this->lang_selected->iso_code, true); $arr_files = $this->getAllModuleFiles($modules, null, $this->lang_selected->iso_code, true);
foreach ($arr_files as $value) foreach ($arr_files as $value)
$this->findAndFillTranslations($value['files'], $value['theme'], $value['module'], $value['dir']); $this->findAndFillTranslations($value['files'], $value['theme'], $value['module'], $value['dir']);