mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
81 lines
2.1 KiB
PHP
81 lines
2.1 KiB
PHP
<?php
|
|
|
|
namespace SilverStripe\Dev\Tasks;
|
|
|
|
use SilverStripe\Control\HTTPRequest;
|
|
use SilverStripe\Core\Injector\Injector;
|
|
use SilverStripe\Dev\Debug;
|
|
use SilverStripe\Dev\BuildTask;
|
|
use SilverStripe\i18n\i18nTextCollector;
|
|
|
|
/**
|
|
* Collects i18n strings
|
|
*/
|
|
class i18nTextCollectorTask extends BuildTask {
|
|
|
|
private static $segment = 'i18nTextCollectorTask';
|
|
|
|
protected $title = "i18n Textcollector Task";
|
|
|
|
protected $description = "
|
|
Traverses through files in order to collect the 'entity master tables'
|
|
stored in each module.
|
|
|
|
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)
|
|
";
|
|
|
|
/**
|
|
* 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) {
|
|
increase_time_limit_to();
|
|
$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
|
|
return !in_array($merge, array('0', 'false'));
|
|
}
|
|
}
|