30 private const USE_NON_PRIORITIZED_JOBS =
true;
32 public function __construct() {
33 parent::__construct();
34 $this->addDescription(
'Ensure all translation pages are up to date.' );
35 $this->setBatchSize( 300 );
36 $this->addOption(
'jobqueue',
'Use JobQueue (asynchronous)' );
37 $this->requireExtension(
'Translate' );
40 public function execute() {
41 $groups = MessageGroups::singleton()->getGroups();
42 $mwInstance = MediaWikiServices::getInstance();
43 $lbFactory = $mwInstance->getDBLoadBalancerFactory();
44 $jobQueueGroup = $mwInstance->getJobQueueGroup();
48 $useJobQueue = $this->hasOption(
'jobqueue' );
50 foreach ( $groups as $group ) {
56 if ( ( $counter % $this->mBatchSize ) === 0 ) {
57 $lbFactory->waitForReplication();
60 $page = TranslatablePage::newFromTitle( $group->getTitle() );
61 $jobs = UpdateTranslatablePageJob::getRenderJobs( $page, self::USE_NON_PRIORITIZED_JOBS );
63 $jobCounter += count( $jobs );
64 $jobQueueGroup->push( $jobs );
66 foreach ( $jobs as $job ) {
73 $this->output(
"Queued $jobCounter refresh job(s) for $counter translatable pages.\n" );
75 $this->output(
"Refreshed $counter translatable pages.\n" );
Script to ensure all translation pages are up to date.
Wraps the translatable page sections into a message group.