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 ) ) {
+ /** @suppress PhanUndeclaredVariable */
+ $data['aliases'] = $aliases;
+ }
} else {
throw new MWException( __METHOD__ . ": Invalid file type: $_fileType" );
}
}
# Fill in the fallback if it's not there already
- if ( is_null( $coreData['fallback'] ) ) {
- $coreData['fallback'] = $code === 'en' ? false : 'en';
- }
- if ( $coreData['fallback'] === false ) {
- $coreData['fallbackSequence'] = [];
+ if ( ( is_null( $coreData['fallback'] ) || $coreData['fallback'] === false ) && $code === 'en' ) {
+ $coreData['fallback'] = false;
+ $coreData['originalFallbackSequence'] = $coreData['fallbackSequence'] = [];
} else {
- $coreData['fallbackSequence'] = array_map( 'trim', explode( ',', $coreData['fallback'] ) );
+ if ( !is_null( $coreData['fallback'] ) ) {
+ $coreData['fallbackSequence'] = array_map( 'trim', explode( ',', $coreData['fallback'] ) );
+ } else {
+ $coreData['fallbackSequence'] = [];
+ }
$len = count( $coreData['fallbackSequence'] );
- # Ensure that the sequence ends at en
- if ( $coreData['fallbackSequence'][$len - 1] !== 'en' ) {
+ # Before we add the 'en' fallback for messages, keep a copy of
+ # the original fallback sequence
+ $coreData['originalFallbackSequence'] = $coreData['fallbackSequence'];
+
+ # Ensure that the sequence ends at 'en' for messages
+ if ( !$len || $coreData['fallbackSequence'][$len - 1] !== 'en' ) {
$coreData['fallbackSequence'][] = 'en';
}
}