The latter two modules are never used separately and have no references
anywhere in Wikimedia Git outside MediaWiki core.
Remove without deprecation as they were introduced only as internal
work-around to be able to call setData after init.js and the rest of
'mediawiki.language'. Which is actually trivially done by concatenating
one after the other, but for some reason I didn't think of that when
reviewing
4c6c50f20661 in 2012.
Also fix an annoying race condition in the unit tests that
often caused tests to fail locally.
Change-Id: Ic61f86b0dcbfac82da230770f66cb72e97bd9a03
*/
/**
- * ResourceLoader module for populating language specific data.
+ * ResourceLoader module for populating language specific data, such as grammar forms.
*/
-class ResourceLoaderLanguageDataModule extends ResourceLoaderModule {
+class ResourceLoaderLanguageDataModule extends ResourceLoaderFileModule {
protected $targets = [ 'desktop', 'mobile' ];
* @return string JavaScript code
*/
public function getScript( ResourceLoaderContext $context ) {
- return Xml::encodeJsCall(
+ $fileScript = parent::getScript( $context );
+ $langDataScript = Xml::encodeJsCall(
'mw.language.setData',
[
$context->getLanguage(),
],
ResourceLoader::inDebugMode()
);
+ return $fileScript . $langDataScript;
}
/**
}
/**
- * @param ResourceLoaderContext|null $context
- * @return array
+ * @return bool
*/
- public function getDependencies( ResourceLoaderContext $context = null ) {
- return [ 'mediawiki.language.init' ];
+ public function supportsURLLoading() {
+ return false;
}
}
/**
* ResourceLoader module for populating language specific data.
*/
-class ResourceLoaderLanguageNamesModule extends ResourceLoaderModule {
+class ResourceLoaderLanguageNamesModule extends ResourceLoaderFileModule {
protected $targets = [ 'desktop', 'mobile' ];
* @return array
*/
public function getDependencies( ResourceLoaderContext $context = null ) {
- return [ 'mediawiki.language.init' ];
+ return [ 'mediawiki.language' ];
}
/**
'user.options' => [ 'class' => ResourceLoaderUserOptionsModule::class ],
'user.tokens' => [ 'class' => ResourceLoaderUserTokensModule::class ],
- // Scripts for the dynamic language specific data, like grammar forms.
- 'mediawiki.language.data' => [ 'class' => ResourceLoaderLanguageDataModule::class ],
-
/* MediaWiki base skinning modules */
/**
/* MediaWiki Language */
'mediawiki.language' => [
+ 'class' => ResourceLoaderLanguageDataModule::class,
'scripts' => [
+ 'resources/src/mediawiki.language/mediawiki.language.init.js',
'resources/src/mediawiki.language/mediawiki.language.js',
'resources/src/mediawiki.language/mediawiki.language.numbers.js',
'resources/src/mediawiki.language/mediawiki.language.fallback.js',
'sl' => 'resources/src/mediawiki.language/languages/sl.js',
],
'dependencies' => [
- 'mediawiki.language.data',
'mediawiki.cldr',
],
- 'targets' => [ 'desktop', 'mobile' ],
'messages' => [
'and',
'comma-separator',
'targets' => [ 'desktop', 'mobile' ],
],
- 'mediawiki.language.init' => [
- 'scripts' => 'resources/src/mediawiki.language/mediawiki.language.init.js',
- 'targets' => [ 'desktop', 'mobile' ],
- ],
-
'mediawiki.jqueryMsg' => [
// Add data for mediawiki.jqueryMsg, such as allowed tags
'class' => ResourceLoaderJqueryMsgModule::class,
mw.language = {
/**
* Language-related data (keyed by language, contains instances of mw.Map).
- * Loaded dynamically (see ResourceLoaderLanguageDataModule class in PHP, registered
- * as mediawiki.language.data on the client).
+ *
+ * Exported dynamically by the ResourceLoaderLanguageDataModule class in PHP.
*
* To set data:
*
skin: mw.config.get( 'skin' ),
lang: langCode,
debug: mw.config.get( 'debug' ),
- modules: [
- 'mediawiki.language.data',
- 'mediawiki.language'
- ].join( '|' ),
+ modules: 'mediawiki.language',
only: 'scripts'
},
dataType: 'script',
getMwLanguage( test.lang )
.then( function ( langClass ) {
var parser;
+ // The unit tests perform hot-reloading of mw.language (in hacky way).
+ // For the languages/*.js script files to work, they need to statically
+ // access mw.language.getData() for the "current" language.
+ mw.language = langClass;
mw.config.set( 'wgUserLanguage', test.lang );
parser = new mw.jqueryMsg.Parser( { language: langClass } );
assert.strictEqual(