Author: david
Date: Tue Sep 13 12:21:31 2011
New Revision: 9702
Log:
Track source file for each i18n string in notes field
Modified:
trunk/lib/task/i18nConsolidateTask.class.php
Modified: trunk/lib/task/i18nConsolidateTask.class.php
==============================================================================
--- trunk/lib/task/i18nConsolidateTask.class.php Tue Sep 13 11:17:51
2011 (r9701)
+++ trunk/lib/task/i18nConsolidateTask.class.php Tue Sep 13 12:21:31
2011 (r9702)
@@ -79,6 +79,8 @@
class sfI18nConsolidatedExtract extends sfI18nApplicationExtract
{
+ protected $messageSource = array();
+
public function configure()
{
// Override sfI18nAcpplicationExtract::configure() so we extract from
@@ -107,26 +109,80 @@
// Now save translated strings
foreach ($units as $key => $item)
{
- $consolidated->getMessageSource()->update($key, $item[0], $item[2]);
+ // Track source file in comments
+ $comment = $item[2];
+ if (isset($this->sourceFile[$key]))
+ {
+ $comment = $this->sourceFile[$key];
+ }
+
+ $consolidated->getMessageSource()->update($key, $item[0], $comment);
}
}
public function extract()
{
- parent::extract();
+ // Add global templates
+ $this->extractFromPhpFiles(sfConfig::get('sf_app_template_dir'));
+
+ // Add global librairies
+ $this->extractFromPhpFiles(sfConfig::get('sf_app_lib_dir'));
+
+ // Add forms
+ $this->extractFromPhpFiles(sfConfig::get('sf_lib_dir').'/form');
+
+ // Extract from modules
+ $modules =
sfFinder::type('dir')->maxdepth(0)->in(sfConfig::get('sf_app_module_dir'));
+ foreach ($modules as $module)
+ {
+ $this->extractFromPhpFiles(array(
+ $module.'/actions',
+ $module.'/lib',
+ $module.'/templates',
+ ));
+ }
// Extract plugin strings
- $plugins =
sfFinder::type('dir')->maxdepth(0)->relative()->not_name('.')->in(sfConfig::get('sf_plugins_dir'));
+ $plugins =
sfFinder::type('dir')->maxdepth(0)->not_name('.')->in(sfConfig::get('sf_plugins_dir'));
foreach ($plugins as $plugin)
{
- foreach
(sfFinder::type('dir')->maxdepth(0)->relative()->in(sfConfig::get('sf_plugins_dir').'/'.$plugin.'/modules')
as $piModule)
+ foreach (sfFinder::type('dir')->maxdepth(0)->in($plugin.'/modules') as
$piModule)
{
$this->extractFromPhpFiles(array(
-
sfConfig::get('sf_plugins_dir').'/'.$plugin.'/modules/'.$piModule.'/actions',
-
sfConfig::get('sf_plugins_dir').'/'.$plugin.'/modules/'.$piModule.'/lib',
-
sfConfig::get('sf_plugins_dir').'/'.$plugin.'/modules/'.$piModule.'/templates',
+ $piModule.'/actions',
+ $piModule.'/lib',
+ $piModule.'/templates',
));
}
}
}
+
+ /**
+ * Extracts i18n strings from PHP files.
+ *
+ * @param string $dir The PHP full path name
+ */
+ protected function extractFromPhpFiles($dir)
+ {
+ $phpExtractor = new sfI18nPhpExtractor();
+
+ $files = sfFinder::type('file')->name('*.php');
+ $messages = array();
+ foreach ($files->in($dir) as $file)
+ {
+ $extracted = $phpExtractor->extract(file_get_contents($file));
+ $messages = array_merge($messages, $extracted);
+
+ // Track source file for all messages
+ foreach ($extracted as $message)
+ {
+ if (!isset($this->sourceFile[$message]))
+ {
+ $this->sourceFile[$message] =
str_replace(sfConfig::get('sf_web_dir'), '', $file);
+ }
+ }
+ }
+
+ $this->updateMessages($messages);
+ }
}
--
You received this message because you are subscribed to the Google Groups
"Qubit Toolkit Commits" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/qubit-commits?hl=en.