diff --git a/controllers/admin/AdminTranslationsController.php b/controllers/admin/AdminTranslationsController.php index 3e3fb3cdf..6b7595dae 100644 --- a/controllers/admin/AdminTranslationsController.php +++ b/controllers/admin/AdminTranslationsController.php @@ -285,8 +285,12 @@ class AdminTranslationsControllerCore extends AdminController public function checkAndAddMailsFiles($iso_code, $files_list) { + // 1 - Scan mails files $mails = scandir(_PS_MAIL_DIR_.'en/'); + $mails_new_lang = array(); + + // Get all email files foreach ($files_list as $file) { if (preg_match('#^mails\/([a-z0-9]+)\/#Ui', $file['filename'], $matches)) @@ -295,11 +299,57 @@ class AdminTranslationsControllerCore extends AdminController $mails_new_lang[] = substr($file['filename'], -(strlen($file['filename']) - $slash_pos - 1)); } } + + // Get the difference $arr_mails_needed = array_diff($mails, $mails_new_lang); + + // Add mails files foreach ($arr_mails_needed as $mail_to_add) - { if ($mail_to_add !== '.' && $mail_to_add !== '..' && $mail_to_add !== '.svn') @copy(_PS_MAIL_DIR_.'en/'.$mail_to_add, _PS_MAIL_DIR_.$iso_code.'/'.$mail_to_add); + + + // 2 - Scan modules files + $modules = scandir(_PS_MODULE_DIR_); + + $module_mail_en = array(); + $module_mail_iso_code = array(); + + foreach ($modules as $module) + { + if (!in_array($module, array('.', '..', '.svn', '.htaccess')) && file_exists(_PS_MODULE_DIR_.$module.'/mails/en/')) + { + $arr_files = scandir(_PS_MODULE_DIR_.$module.'/mails/en/'); + + foreach ($arr_files as $file) + { + if (!in_array($file, array('.', '..', '.svn', '.htaccess'))) + { + if (file_exists(_PS_MODULE_DIR_.$module.'/mails/en/'.$file)) + $module_mail_en[] = _PS_MODULE_DIR_.$module.'/mails/ISO_CODE/'.$file; + + if (file_exists(_PS_MODULE_DIR_.$module.'/mails/'.$iso_code.'/'.$file)) + $module_mail_iso_code[] = _PS_MODULE_DIR_.$module.'/mails/ISO_CODE/'.$file; + } + } + } + } + + // Get the difference in this modules + $arr_modules_mails_needed = array_diff($module_mail_en, $module_mail_iso_code); + + // Add mails files for this modules + foreach ($arr_modules_mails_needed as $file) + { + $file_en = str_replace('ISO_CODE', 'en', $file); + $file_iso_code = str_replace('ISO_CODE', $iso_code, $file); + $dir_iso_code = substr($file_iso_code, 0, -(strlen($file_iso_code) - strrpos($file_iso_code, '/') - 1)); + + if (!file_exists($dir_iso_code)) + mkdir($dir_iso_code); + + if (file_exists($file_en)) + copy($file_en, $file_iso_code); } } public function submitImportLang()