/**
* All item keys
*/
- static public $allKeys = [
+ public static $allKeys = [
'fallback', 'namespaceNames', 'bookstoreList',
'magicWords', 'messages', 'rtl', 'capitalizeAllNouns', 'digitTransformTable',
'separatorTransformTable', 'minimumGroupingDigits',
* Keys for items which consist of associative arrays, which may be merged
* by a fallback sequence.
*/
- static public $mergeableMapKeys = [ 'messages', 'namespaceNames',
+ public static $mergeableMapKeys = [ 'messages', 'namespaceNames',
'namespaceAliases', 'dateFormats', 'imageFiles', 'preloadedMessages'
];
/**
* Keys for items which are a numbered array.
*/
- static public $mergeableListKeys = [ 'extraUserToggles' ];
+ public static $mergeableListKeys = [ 'extraUserToggles' ];
/**
* Keys for items which contain an array of arrays of equivalent aliases
* for each subitem. The aliases may be merged by a fallback sequence.
*/
- static public $mergeableAliasListKeys = [ 'specialPageAliases' ];
+ public static $mergeableAliasListKeys = [ 'specialPageAliases' ];
/**
* Keys for items which contain an associative array, and may be merged if
* the primary value contains the special array key "inherit". That array
* key is removed after the first merge.
*/
- static public $optionalMergeKeys = [ 'bookstoreList' ];
+ public static $optionalMergeKeys = [ 'bookstoreList' ];
/**
* Keys for items that are formatted like $magicWords
*/
- static public $magicWordKeys = [ 'magicWords' ];
+ public static $magicWordKeys = [ 'magicWords' ];
/**
* Keys for items where the subitems are stored in the backend separately.
*/
- static public $splitKeys = [ 'messages' ];
+ public static $splitKeys = [ 'messages' ];
/**
* Keys which are loaded automatically by initLanguage()
*/
- static public $preloadedKeys = [ 'dateFormats', 'namespaceNames' ];
+ public static $preloadedKeys = [ 'dateFormats', 'namespaceNames' ];
/**
* Associative array of cached plural rules. The key is the language code,
ini_set( 'apc.cache_by_default', $_apcEnabled );
Wikimedia\restoreWarnings();
+ $data = [];
if ( $_fileType == 'core' || $_fileType == 'extension' ) {
-
- // Lnguage files aren't required to contain all the possible variables, so suppress warnings
- // when variables don't exist in tests
- Wikimedia\suppressWarnings();
- $data = compact( self::$allKeys );
- Wikimedia\restoreWarnings();
+ foreach ( self::$allKeys as $key ) {
+ // Not all keys are set in language files, so
+ // check they exist first
+ if ( isset( $$key ) ) {
+ $data[$key] = $$key;
+ }
+ }
} elseif ( $_fileType == 'aliases' ) {
- $data = compact( 'aliases' );
+ if ( isset( $aliases ) ) {
+ $data['aliases'] = $aliases;
+ }
} else {
throw new MWException( __METHOD__ . ": Invalid file type: $_fileType" );
}
$messagesDirs = $config->get( 'MessagesDirs' );
return [
'core' => "$IP/languages/i18n",
+ 'exif' => "$IP/languages/i18n/exif",
'api' => "$IP/includes/api/i18n",
'oojs-ui' => "$IP/resources/lib/ooui/i18n",
] + $messagesDirs;
# HACK: If using a null (i.e. disabled) storage backend, we
# can't write to the MessageBlobStore either
if ( $purgeBlobs && !$this->store instanceof LCStoreNull ) {
- $blobStore = new MessageBlobStore();
+ $blobStore = MediaWikiServices::getInstance()->getResourceLoader()->getMessageBlobStore();
$blobStore->clear();
}
}