diff --git a/admin-dev/themes/default/template/controllers/translations/helpers/view/translation_errors.tpl b/admin-dev/themes/default/template/controllers/translations/helpers/view/translation_errors.tpl
index 8f86ec249..245b40dfb 100644
--- a/admin-dev/themes/default/template/controllers/translations/helpers/view/translation_errors.tpl
+++ b/admin-dev/themes/default/template/controllers/translations/helpers/view/translation_errors.tpl
@@ -29,7 +29,8 @@
{block name="override_tpl"}
{l s='Language'} : {$lang} - {$translation_type}
- {l s='Errors to translate'} : {$count}
+ {l s='Expressions to translate'} : {$count}.
+ {l s='Total missing expresssions:'} {$count_empty}
{if $post_limit_exceeded}
{if $limit_warning['error_type'] == 'suhosin'}
diff --git a/controllers/admin/AdminTranslationsController.php b/controllers/admin/AdminTranslationsController.php
index ce27440d0..be6ce41cd 100644
--- a/controllers/admin/AdminTranslationsController.php
+++ b/controllers/admin/AdminTranslationsController.php
@@ -844,7 +844,7 @@ class AdminTranslationsControllerCore extends AdminController
public function initFormFront($lang)
{
- $missing_translations = array();
+ $missing_translations_front = array();
$_LANG = $this->fileExists(_PS_THEME_DIR_.'lang', Tools::strtolower($lang).'.php', '_LANG');
$str_output = '';
@@ -880,14 +880,18 @@ class AdminTranslationsControllerCore extends AdminController
$new_lang[$key] = stripslashes(html_entity_decode($_LANG[$prefix_key.'_'.md5($key)], ENT_COMPAT, 'UTF-8'));
else
{
- $new_lang[$key] = '';
- if (!isset($missing_translations[$prefix_key]))
- $missing_translations[$prefix_key] = 1;
- else
- $missing_translations[$prefix_key]++;
+ if (!isset($new_lang[$key]))
+ {
+ $new_lang[$key] = '';
+ if (!isset($missing_translations_front[$prefix_key]))
+ $missing_translations_front[$prefix_key] = 1;
+ else
+ $missing_translations_front[$prefix_key]++;
+ }
}
}
}
+
$tabs_array[$prefix_key] = $new_lang;
$count += count($new_lang);
}
@@ -895,7 +899,7 @@ class AdminTranslationsControllerCore extends AdminController
$this->tpl_view_vars = array(
'lang' => Tools::strtoupper($lang),
'translation_type' => $this->l('Front Office translations'),
- 'missing_translations' => $missing_translations,
+ 'missing_translations' => $missing_translations_front,
'count' => $count,
'limit_warning' => $this->displayLimitPostWarning($count),
'post_limit_exceeded' => $this->post_limit_exceed,
@@ -919,7 +923,7 @@ class AdminTranslationsControllerCore extends AdminController
$_LANGADM = $this->fileExists(_PS_TRANSLATIONS_DIR_.$lang, 'admin.php', '_LANGADM');
// count will contain the number of expressions of the page
$count = 0;
- $missing_translations = array();
+ $missing_translations_back = array();
// Parse BO php files for translations
// Add Controllers
@@ -956,17 +960,23 @@ class AdminTranslationsControllerCore extends AdminController
{
// Caution ! front has underscore between prefix key and md5, back has not
if (isset($_LANGADM[$prefix_key.md5($key)]))
+ {
$tabs_array[$prefix_key][$key] = stripslashes(html_entity_decode($_LANGADM[$prefix_key.md5($key)], ENT_COMPAT, 'UTF-8'));
+ $count++;
+ }
else
{
- $tabs_array[$prefix_key][$key] = '';
- if (!isset($missing_translations[$prefix_key]))
- $missing_translations[$prefix_key] = 1;
- else
- $missing_translations[$prefix_key]++;
+ if (!isset($tabs_array[$prefix_key][$key]))
+ {
+ $tabs_array[$prefix_key][$key] = '';
+ if (!isset($missing_translations_back[$prefix_key]))
+ $missing_translations_back[$prefix_key] = 1;
+ else
+ $missing_translations_back[$prefix_key]++;
+ $count++;
+ }
}
}
- $count += isset($tabs_array[$prefix_key]) ? count($tabs_array[$prefix_key]) : 0;
}
foreach (array('header.inc', 'footer.inc', 'index', 'login', 'password', 'functions') as $tab)
@@ -982,17 +992,23 @@ class AdminTranslationsControllerCore extends AdminController
{
// Caution ! front has underscore between prefix key and md5, back has not
if (isset($_LANGADM[$prefix_key.md5($key)]))
+ {
$tabs_array[$prefix_key][$key] = stripslashes(html_entity_decode($_LANGADM[$prefix_key.md5($key)], ENT_COMPAT, 'UTF-8'));
+ $count++;
+ }
else
{
- $tabs_array[$prefix_key][$key] = '';
- if (!isset($missing_translations[$prefix_key]))
- $missing_translations[$prefix_key] = 1;
- else
- $missing_translations[$prefix_key]++;
+ if (!isset($tabs_array[$prefix_key][$key]))
+ {
+ $tabs_array[$prefix_key][$key] = '';
+ if (!isset($missing_translations_back[$prefix_key]))
+ $missing_translations_back[$prefix_key] = 1;
+ else
+ $missing_translations_back[$prefix_key]++;
+ $count++;
+ }
}
}
- $count += isset($tabs_array['index']) ? count($tabs_array['index']) : 0;
}
/* List templates to parse */
@@ -1050,14 +1066,21 @@ class AdminTranslationsControllerCore extends AdminController
$trans_key = $prefix_key.md5($english_string);
if (isset($_LANGADM[$trans_key]))
+ {
$new_lang[$english_string] = html_entity_decode($_LANGADM[$trans_key], ENT_COMPAT, 'UTF-8');
+ $count++;
+ }
else
{
- $new_lang[$english_string] = '';
- if (!isset($missing_translations[$prefix_key]))
- $missing_translations[$prefix_key] = 1;
- else
- $missing_translations[$prefix_key]++;
+ if (!isset($new_lang[$english_string]))
+ {
+ $new_lang[$english_string] = '';
+ if (!isset($missing_translations_back[$prefix_key]))
+ $missing_translations_back[$prefix_key] = 1;
+ else
+ $missing_translations_back[$prefix_key]++;
+ $count++;
+ }
}
}
}
@@ -1065,7 +1088,6 @@ class AdminTranslationsControllerCore extends AdminController
$tabs_array[$prefix_key] = array_merge($tabs_array[$prefix_key], $new_lang);
else
$tabs_array[$prefix_key] = $new_lang;
- $count += count($new_lang);
}
// with php then tpl files, order can be a mess
@@ -1080,7 +1102,7 @@ class AdminTranslationsControllerCore extends AdminController
'url_submit' => self::$currentIndex.'&submitTranslationsBack=1&token='.$this->token,
'toggle_button' => $this->displayToggleButton(),
'tabsArray' => $tabs_array,
- 'missing_translations' => $missing_translations,
+ 'missing_translations' => $missing_translations_back,
'textarea_sized' => TEXTAREA_SIZED,
'type' => 'back'
);
@@ -1096,6 +1118,7 @@ class AdminTranslationsControllerCore extends AdminController
public function initFormErrors($lang)
{
$_ERRORS = $this->fileExists(_PS_TRANSLATIONS_DIR_.$lang, 'errors.php', '_ERRORS');
+ $count_empty = 0;
/* List files to parse */
$stringToTranslate = array();
@@ -1132,6 +1155,9 @@ class AdminTranslationsControllerCore extends AdminController
{
$stringToTranslate[$key] = (key_exists(md5($key), $_ERRORS)) ? html_entity_decode($_ERRORS[md5($key)], ENT_COMPAT, 'UTF-8') : '';
$this->total_expression++;
+
+ if (empty($stringToTranslate[$key]))
+ $count_empty++;
}
}
@@ -1144,7 +1170,8 @@ class AdminTranslationsControllerCore extends AdminController
'url_submit' => self::$currentIndex.'&submitTranslationsErrors=1&token='.$this->token,
'auto_translate' => '',
'type' => 'errors',
- 'errorsArray' => $stringToTranslate
+ 'errorsArray' => $stringToTranslate,
+ 'count_empty' => $count_empty
);
$this->initToolbar();
@@ -1155,7 +1182,7 @@ class AdminTranslationsControllerCore extends AdminController
public function initFormFields($lang)
{
$_FIELDS = $this->fileExists(_PS_TRANSLATIONS_DIR_.$lang, 'fields.php', '_FIELDS');
- $missing_translations = array();
+ $missing_translations_fields = array();
$str_output = '';
$classArray = array();
$tabs_array = array();
@@ -1179,34 +1206,44 @@ class AdminTranslationsControllerCore extends AdminController
if (isset($rules['validate']))
foreach ($rules['validate'] as $key => $value)
if (isset($_FIELDS[$prefix_key.'_'.md5($key)]))
+ {
// @todo check key : md5($key) was initially md5(addslashes($key))
$tabs_array[$prefix_key][$key] = html_entity_decode($_FIELDS[$prefix_key.'_'.md5($key)], ENT_COMPAT, 'UTF-8');
+ $count++;
+ }
else
{
- $tabs_array[$prefix_key][$key] = '';
- if (!isset($missing_translations[$prefix_key]))
- $missing_translations[$prefix_key] = 1;
- else
- $missing_translations[$prefix_key]++;
+ if (!isset($tabs_array[$prefix_key][$key]))
+ {
+ $tabs_array[$prefix_key][$key] = '';
+ if (!isset($missing_translations_fields[$prefix_key]))
+ $missing_translations_fields[$prefix_key] = 1;
+ else
+ $missing_translations_fields[$prefix_key]++;
+ $count++;
+ }
}
if (isset($rules['validateLang']))
foreach ($rules['validateLang'] as $key => $value)
if (isset($_FIELDS[$prefix_key.'_'.md5($key)]))
+ {
$tabs_array[$prefix_key][$key] = array_key_exists($prefix_key.'_'.md5(addslashes($key)), $_FIELDS) ? html_entity_decode($_FIELDS[$prefix_key.'_'.md5(addslashes($key))], ENT_COMPAT, 'UTF-8') : '';
+ $count++;
+ }
else
{
- $tabs_array[$prefix_key][$key] = '';
- if (!isset($missing_translations[$prefix_key]))
- $missing_translations[$prefix_key] = 1;
- else
- $missing_translations[$prefix_key]++;
+ if (!isset($tabs_array[$prefix_key][$key]))
+ {
+ $tabs_array[$prefix_key][$key] = '';
+ if (!isset($missing_translations_fields[$prefix_key]))
+ $missing_translations_fields[$prefix_key] = 1;
+ else
+ $missing_translations_fields[$prefix_key]++;
+ $count++;
+ }
}
}
- if (isset($classArray[$prefix_key]['validate']))
- $count += count($classArray[$prefix_key]['validate']);
- if (isset($classArray[$prefix_key]['validateLang']))
- $count += count($classArray[$prefix_key]['validateLang']);
$this->tpl_view_vars = array(
'lang' => Tools::strtoupper($lang),
'translation_type' => $this->l('Field name translations'),
@@ -1217,7 +1254,7 @@ class AdminTranslationsControllerCore extends AdminController
'toggle_button' => $this->displayToggleButton(),
'auto_translate' => '',
'tabsArray' => $tabs_array,
- 'missing_translations' => $missing_translations,
+ 'missing_translations' => $missing_translations_fields,
'textarea_sized' => TEXTAREA_SIZED,
'type' => 'fields'
);
@@ -1803,8 +1840,7 @@ class AdminTranslationsControllerCore extends AdminController
{
$lang = Tools::strtolower(Tools::getValue('lang'));
$_LANG = array();
- $missing_translations = array();
- $str_output = '';
+ $missing_translations_pdf = array();
if (!Validate::isLangIsoCode($lang))
die('Invalid iso lang ('.Tools::safeOutput($lang).')');
@@ -1817,7 +1853,7 @@ class AdminTranslationsControllerCore extends AdminController
die('Please create a "'.Tools::strtolower($lang).'.php" file in '.realpath(_PS_ADMIN_DIR_.'/'));
unset($_LANGPDF);
@include($i18n_file);
- $files = array();
+
$count = 0;
$prefix_key = 'PDF';
$tabs_array = array($prefix_key=>array());
@@ -1841,21 +1877,26 @@ class AdminTranslationsControllerCore extends AdminController
{
// Caution ! front has underscore between prefix key and md5, back has not
if (isset($_LANGPDF[$prefix_key.md5($key)]))
+ {
// @todo check key : md5($key) was initially md5(addslashes($key))
$tabs_array[$prefix_key][$key] = (html_entity_decode($_LANGPDF[$prefix_key.md5($key)], ENT_COMPAT, 'UTF-8'));
+ $count++;
+ }
else
{
- $tabs_array[$prefix_key][$key] = '';
- if (!isset($missing_translations[$prefix_key]))
- $missing_translations[$prefix_key] = 1;
- else
- $missing_translations[$prefix_key]++;
+ if (!isset($tabs_array[$prefix_key][$key]))
+ {
+ $tabs_array[$prefix_key][$key] = '';
+ if (!isset($missing_translations_pdf[$prefix_key]))
+ $missing_translations_pdf[$prefix_key] = 1;
+ else
+ $missing_translations_pdf[$prefix_key]++;
+ $count++;
+ }
}
}
}
- $count += isset($tabs_array[$prefix_key]) ? count($tabs_array[$prefix_key]) : 0;
-
$this->tpl_view_vars = array(
'lang' => Tools::strtoupper($lang),
'translation_type' => $this->l('PDF translations'),
@@ -1868,7 +1909,7 @@ class AdminTranslationsControllerCore extends AdminController
'textarea_sized' => TEXTAREA_SIZED,
'type' => 'pdf',
'tabsArray' => $tabs_array,
- 'missing_translations' => $missing_translations
+ 'missing_translations' => $missing_translations_pdf
);
$this->initToolbar();