summaryrefslogtreecommitdiff
path: root/maintenance/rebuildLocalisationCache.php
diff options
context:
space:
mode:
Diffstat (limited to 'maintenance/rebuildLocalisationCache.php')
-rw-r--r--maintenance/rebuildLocalisationCache.php29
1 files changed, 26 insertions, 3 deletions
diff --git a/maintenance/rebuildLocalisationCache.php b/maintenance/rebuildLocalisationCache.php
index 83849de6..b7f306b1 100644
--- a/maintenance/rebuildLocalisationCache.php
+++ b/maintenance/rebuildLocalisationCache.php
@@ -29,7 +29,7 @@
* @ingroup Maintenance
*/
-require_once( __DIR__ . '/Maintenance.php' );
+require_once __DIR__ . '/Maintenance.php';
/**
* Maintenance script to rebuild the localisation cache.
@@ -44,6 +44,8 @@ class RebuildLocalisationCache extends Maintenance {
$this->addOption( 'threads', 'Fork more than one thread', false, true );
$this->addOption( 'outdir', 'Override the output directory (normally $wgCacheDirectory)',
false, true );
+ $this->addOption( 'lang', 'Only rebuild these languages, comma separated.',
+ false, true );
}
public function memoryLimit() {
@@ -53,6 +55,15 @@ class RebuildLocalisationCache extends Maintenance {
return '1000M';
}
+ public function finalSetup() {
+ # This script needs to be run to build the inital l10n cache. But if
+ # $wgLanguageCode is not 'en', it won't be able to run because there is
+ # no l10n cache. Break the cycle by forcing $wgLanguageCode = 'en'.
+ global $wgLanguageCode;
+ $wgLanguageCode = 'en';
+ parent::finalSetup();
+ }
+
public function execute() {
global $wgLocalisationCacheConf;
@@ -81,7 +92,19 @@ class RebuildLocalisationCache extends Maintenance {
}
$lc = new LocalisationCache_BulkLoad( $conf );
- $codes = array_keys( Language::fetchLanguageNames( null, 'mwfile' ) );
+ $allCodes = array_keys( Language::fetchLanguageNames( null, 'mwfile' ) );
+ if ( $this->hasOption( 'lang' ) ) {
+ # Validate requested languages
+ $codes = array_intersect( $allCodes,
+ explode( ',', $this->getOption( 'lang' ) ) );
+ # Bailed out if nothing is left
+ if ( count( $codes ) == 0 ) {
+ $this->error( 'None of the languages specified exists.', 1 );
+ }
+ } else {
+ # By default get all languages
+ $codes = $allCodes;
+ }
sort( $codes );
// Initialise and split into chunks
@@ -153,4 +176,4 @@ class RebuildLocalisationCache extends Maintenance {
}
$maintClass = "RebuildLocalisationCache";
-require_once( RUN_MAINTENANCE_IF_MAIN );
+require_once RUN_MAINTENANCE_IF_MAIN;