2008-10-16 22:42:41 +02:00
|
|
|
<?php
|
2016-06-23 01:37:22 +02:00
|
|
|
|
2016-08-19 00:51:35 +02:00
|
|
|
namespace SilverStripe\Dev\Tasks;
|
|
|
|
|
2016-09-09 08:43:05 +02:00
|
|
|
use SilverStripe\Control\HTTPRequest;
|
2017-06-22 12:50:45 +02:00
|
|
|
use SilverStripe\Core\Environment;
|
2016-08-19 00:51:35 +02:00
|
|
|
use SilverStripe\Core\Injector\Injector;
|
|
|
|
use SilverStripe\Dev\Debug;
|
|
|
|
use SilverStripe\Dev\BuildTask;
|
2017-01-18 04:58:48 +01:00
|
|
|
use SilverStripe\i18n\TextCollection\i18nTextCollector;
|
2016-08-19 00:51:35 +02:00
|
|
|
|
2008-10-16 22:42:41 +02:00
|
|
|
/**
|
2016-08-19 00:51:35 +02:00
|
|
|
* Collects i18n strings
|
2008-10-16 22:42:41 +02:00
|
|
|
*/
|
2016-11-29 00:31:16 +01:00
|
|
|
class i18nTextCollectorTask extends BuildTask
|
|
|
|
{
|
2015-08-06 01:49:10 +02:00
|
|
|
|
2016-11-29 00:31:16 +01:00
|
|
|
private static $segment = 'i18nTextCollectorTask';
|
2016-08-19 00:51:35 +02:00
|
|
|
|
2016-11-29 00:31:16 +01:00
|
|
|
protected $title = "i18n Textcollector Task";
|
2015-08-06 01:49:10 +02:00
|
|
|
|
2016-11-29 00:31:16 +01:00
|
|
|
protected $description = "
|
2008-10-16 22:42:41 +02:00
|
|
|
Traverses through files in order to collect the 'entity master tables'
|
|
|
|
stored in each module.
|
2013-06-02 20:17:28 +02:00
|
|
|
|
|
|
|
Parameters:
|
|
|
|
- locale: Sets default locale
|
|
|
|
- writer: Custom writer class (defaults to i18nTextCollector_Writer_RailsYaml)
|
|
|
|
- module: One or more modules to limit collection (comma-separated)
|
|
|
|
- merge: Merge new strings with existing ones already defined in language files (default: FALSE)
|
2008-10-16 22:42:41 +02:00
|
|
|
";
|
2015-08-06 01:49:10 +02:00
|
|
|
|
2016-11-29 00:31:16 +01:00
|
|
|
/**
|
|
|
|
* This is the main method to build the master string tables with the original strings.
|
|
|
|
* It will search for existent modules that use the i18n feature, parse the _t() calls
|
|
|
|
* and write the resultant files in the lang folder of each module.
|
|
|
|
*
|
|
|
|
* @uses DataObject->collectI18nStatics()
|
|
|
|
*
|
|
|
|
* @param HTTPRequest $request
|
|
|
|
*/
|
|
|
|
public function run($request)
|
|
|
|
{
|
2017-06-22 12:50:45 +02:00
|
|
|
Environment::increaseTimeLimitTo();
|
2016-11-29 00:31:16 +01:00
|
|
|
$collector = i18nTextCollector::create($request->getVar('locale'));
|
|
|
|
|
|
|
|
$merge = $this->getIsMerge($request);
|
|
|
|
|
|
|
|
// Custom writer
|
|
|
|
$writerName = $request->getVar('writer');
|
|
|
|
if ($writerName) {
|
|
|
|
$writer = Injector::inst()->get($writerName);
|
|
|
|
$collector->setWriter($writer);
|
|
|
|
}
|
|
|
|
|
|
|
|
// Get restrictions
|
|
|
|
$restrictModules = ($request->getVar('module'))
|
|
|
|
? explode(',', $request->getVar('module'))
|
|
|
|
: null;
|
|
|
|
|
|
|
|
$collector->run($restrictModules, $merge);
|
|
|
|
|
|
|
|
Debug::message(__CLASS__ . " completed!", false);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Check if we should merge
|
|
|
|
*
|
|
|
|
* @param HTTPRequest $request
|
|
|
|
* @return bool
|
|
|
|
*/
|
|
|
|
protected function getIsMerge($request)
|
|
|
|
{
|
|
|
|
$merge = $request->getVar('merge');
|
|
|
|
|
|
|
|
// Default to true if not given
|
|
|
|
if (!isset($merge)) {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
// merge=0 or merge=false will disable merge
|
2020-04-20 19:58:09 +02:00
|
|
|
return !in_array($merge, ['0', 'false']);
|
2016-11-29 00:31:16 +01:00
|
|
|
}
|
2008-10-16 22:42:41 +02:00
|
|
|
}
|