Skip to content

Commit

Permalink
Adding a new option to i18n shell to generate .pot files without sent…
Browse files Browse the repository at this point in the history
…ence references
  • Loading branch information
wnasich committed Jul 13, 2015
1 parent 47dd42a commit 44756ea
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 7 deletions.
31 changes: 24 additions & 7 deletions lib/Cake/Console/Command/Task/ExtractTask.php
Expand Up @@ -48,6 +48,13 @@ class ExtractTask extends AppShell {
*/
protected $_merge = false;

/**
* Add headers for each sentence showing references
*
* @var bool
*/
protected $_headers = true;

/**
* Current file being processed
*
Expand Down Expand Up @@ -224,6 +231,10 @@ public function execute() {
$this->_merge = strtolower($response) === 'y';
}

if (isset($this->params['headers'])) {
$this->_headers = !(strtolower($this->params['headers']) === 'no');
}

if (empty($this->_files)) {
$this->_searchFiles();
}
Expand Down Expand Up @@ -316,6 +327,9 @@ public function getOptionParser() {
))->addOption('merge', array(
'help' => __d('cake_console', 'Merge all domain and category strings into the default.po file.'),
'choices' => array('yes', 'no')
))->addOption('headers', array(
'help' => __d('cake_console', 'Add headers for each sentence showing references'),
'choices' => array('yes', 'no')
))->addOption('output', array(
'help' => __d('cake_console', 'Full path to output directory.')
))->addOption('files', array(
Expand Down Expand Up @@ -572,14 +586,17 @@ protected function _buildFiles() {
foreach ($translations as $msgid => $contexts) {
foreach ($contexts as $context => $details) {
$plural = $details['msgid_plural'];
$files = $details['references'];
$occurrences = array();
foreach ($files as $file => $lines) {
$lines = array_unique($lines);
$occurrences[] = $file . ':' . implode(';', $lines);
$header = '';
if ($this->_headers) {
$files = $details['references'];
$occurrences = array();
foreach ($files as $file => $lines) {
$lines = array_unique($lines);
$occurrences[] = $file . ':' . implode(';', $lines);
}
$occurrences = implode("\n#: ", $occurrences);
$header = '#: ' . str_replace(DS, '/', str_replace($paths, '', $occurrences)) . "\n";
}
$occurrences = implode("\n#: ", $occurrences);
$header = '#: ' . str_replace(DS, '/', str_replace($paths, '', $occurrences)) . "\n";

$sentence = '';
if ($context) {
Expand Down
29 changes: 29 additions & 0 deletions lib/Cake/Test/Case/Console/Command/Task/ExtractTaskTest.php
Expand Up @@ -221,6 +221,35 @@ public function testExtractCategory() {
$this->assertNotRegExp($pattern, $result);
}

/**
* testExtractWithoutHeaders method
*
* @return void
*/
public function testExtractWithoutHeaders() {
$this->Task->interactive = false;

$this->Task->params['paths'] = CAKE . 'Test' . DS . 'test_app' . DS . 'View' . DS . 'Pages';
$this->Task->params['output'] = $this->path . DS;
$this->Task->params['extract-core'] = 'no';
$this->Task->params['merge'] = 'no';
$this->Task->params['headers'] = 'no';

$this->Task->expects($this->never())->method('err');
$this->Task->expects($this->any())->method('in')
->will($this->returnValue('y'));
$this->Task->expects($this->never())->method('_stop');

$this->Task->execute();
$this->assertTrue(file_exists($this->path . DS . 'LC_NUMERIC' . DS . 'default.pot'));
$this->assertFalse(file_exists($this->path . DS . 'LC_TIME' . DS . 'default.pot'));

$result = file_get_contents($this->path . DS . 'default.pot');

$pattern = '/\n\#: .*\n/';
$this->assertNotRegExp($pattern, $result);
}

/**
* test exclusions
*
Expand Down

0 comments on commit 44756ea

Please sign in to comment.