diff --git a/core/lib/Thelia/Controller/Admin/TranslationsController.php b/core/lib/Thelia/Controller/Admin/TranslationsController.php index 1e6ba421c..d13f29423 100644 --- a/core/lib/Thelia/Controller/Admin/TranslationsController.php +++ b/core/lib/Thelia/Controller/Admin/TranslationsController.php @@ -54,10 +54,12 @@ class TranslationsController extends BaseAdminController $item_id = $this->getRequest()->get('item_id', ''); - $all_strings = $translated_strings = array(); + $all_strings = array(); $template = $directory = $i18n_directory = false; + $mode = 'template'; + if (! empty($item_id)) { switch($item_to_translate) { @@ -66,7 +68,14 @@ class TranslationsController extends BaseAdminController if (null !== $module = ModuleQuery::create()->findPk($item_id)) { $directory = THELIA_MODULE_DIR . $module->getBaseDir(); $i18n_directory = THELIA_TEMPLATE_DIR . $template->getI18nPath(); + $mode = 'php'; } + break; + + case 'co' : + $directory = THELIA_ROOT . 'core/lib/Thelia'; + $i18n_directory = THELIA_ROOT . 'core/lib/Thelia/Config/I18n'; + $mode = 'php'; break; case 'fo' : @@ -90,7 +99,7 @@ class TranslationsController extends BaseAdminController if ($directory) { // Load strings - $this->walkDir($directory, $all_strings); + $this->walkDir($directory, $mode, $all_strings); // Load translated strings if ($i18n_directory) { @@ -103,7 +112,6 @@ class TranslationsController extends BaseAdminController 'item_to_translate' => $item_to_translate, 'item_id' => $item_id, 'all_strings' => $all_strings, - 'translated_strings' => $translated_strings, 'view_missing_traductions_only' => $this->getRequest()->get('view_missing_traductions_only', 0) )); } @@ -136,7 +144,18 @@ class TranslationsController extends BaseAdminController return $path; } - protected function walkDir($directory, &$strings) { + protected function walkDir($directory, $mode, &$strings) { + + if ($mode == 'php') { + $prefix = '\-\>[\s]*trans[\s]*\('; + + $allowed_exts = array('php'); + } else { + $prefix = '\{intl[\s]l='; + + $allowed_exts = array('html', 'tpl', 'xml'); + } + try { //echo "walking in $directory
"; @@ -144,13 +163,13 @@ class TranslationsController extends BaseAdminController if ($fileInfo->isDot()) continue; - if ($fileInfo->isDir()) $this->walkDir($fileInfo->getPathName(), $strings); + if ($fileInfo->isDir()) $this->walkDir($fileInfo->getPathName(), $mode, $strings); if ($fileInfo->isFile()) { $ext = $fileInfo->getExtension(); - if ($ext == 'html' || $ext == 'tpl' || $ext == 'xml') { + if (in_array($ext, $allowed_exts)) { if ($content = file_get_contents($fileInfo->getPathName())) { @@ -160,7 +179,7 @@ class TranslationsController extends BaseAdminController $matches = array(); - if (preg_match_all('/{intl[\s]l=((? array($short_path), 'chaine' => $match, - 'dollar' => strstr($match, '$') !== false); + 'translation' => $this->getTranslator()->trans($match, array(), 'messages', $this->getCurrentEditionLocale(), false), + 'dollar' => strstr($match, '$') !== false + ); } } } @@ -190,5 +211,4 @@ class TranslationsController extends BaseAdminController echo $ex; } } - } diff --git a/core/lib/Thelia/Core/Translation/Translator.php b/core/lib/Thelia/Core/Translation/Translator.php index 397a7e095..775ef7ad8 100755 --- a/core/lib/Thelia/Core/Translation/Translator.php +++ b/core/lib/Thelia/Core/Translation/Translator.php @@ -52,7 +52,7 @@ class Translator extends BaseTranslator * * @api */ - public function trans($id, array $parameters = array(), $domain = 'messages', $locale = null) + public function trans($id, array $parameters = array(), $domain = 'messages', $locale = null, $return_default_if_not_available = true) { if (null === $locale) { $locale = $this->getLocale(); @@ -64,7 +64,9 @@ class Translator extends BaseTranslator if ($this->catalogues[$locale]->has((string) $id, $domain)) return parent::trans($id, $parameters, $domain, $locale); - else + else if ($return_default_if_not_available) return strtr($id, $parameters); + else + return ''; } } diff --git a/templates/admin/default/admin-logs.html b/templates/admin/default/admin-logs.html index 74273a6c9..80eadbbe5 100755 --- a/templates/admin/default/admin-logs.html +++ b/templates/admin/default/admin-logs.html @@ -26,7 +26,7 @@
- +
diff --git a/templates/admin/default/includes/inner-form-toolbar.html b/templates/admin/default/includes/inner-form-toolbar.html index 1b2be1ff7..0fbed51a4 100755 --- a/templates/admin/default/includes/inner-form-toolbar.html +++ b/templates/admin/default/includes/inner-form-toolbar.html @@ -16,7 +16,7 @@ Parameters: