mediawiki.language: Combine with 'mediawiki.language.data' and 'mediawiki.language.init'
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 4c6c50f206 in 2012.
Also fix an annoying race condition in the unit tests that
often caused tests to fail locally.
Change-Id: Ic61f86b0dcbfac82da230770f66cb72e97bd9a03
This commit is contained in:
parent
c1bbef5b20
commit
11b032f682
5 changed files with 19 additions and 25 deletions
|
|
@ -23,9 +23,9 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* 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' ];
|
||||
|
||||
|
|
@ -54,7 +54,8 @@ class ResourceLoaderLanguageDataModule extends ResourceLoaderModule {
|
|||
* @return string JavaScript code
|
||||
*/
|
||||
public function getScript( ResourceLoaderContext $context ) {
|
||||
return Xml::encodeJsCall(
|
||||
$fileScript = parent::getScript( $context );
|
||||
$langDataScript = Xml::encodeJsCall(
|
||||
'mw.language.setData',
|
||||
[
|
||||
$context->getLanguage(),
|
||||
|
|
@ -62,6 +63,7 @@ class ResourceLoaderLanguageDataModule extends ResourceLoaderModule {
|
|||
],
|
||||
ResourceLoader::inDebugMode()
|
||||
);
|
||||
return $fileScript . $langDataScript;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -72,10 +74,9 @@ class ResourceLoaderLanguageDataModule extends ResourceLoaderModule {
|
|||
}
|
||||
|
||||
/**
|
||||
* @param ResourceLoaderContext|null $context
|
||||
* @return array
|
||||
* @return bool
|
||||
*/
|
||||
public function getDependencies( ResourceLoaderContext $context = null ) {
|
||||
return [ 'mediawiki.language.init' ];
|
||||
public function supportsURLLoading() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@
|
|||
/**
|
||||
* ResourceLoader module for populating language specific data.
|
||||
*/
|
||||
class ResourceLoaderLanguageNamesModule extends ResourceLoaderModule {
|
||||
class ResourceLoaderLanguageNamesModule extends ResourceLoaderFileModule {
|
||||
|
||||
protected $targets = [ 'desktop', 'mobile' ];
|
||||
|
||||
|
|
@ -64,7 +64,7 @@ class ResourceLoaderLanguageNamesModule extends ResourceLoaderModule {
|
|||
* @return array
|
||||
*/
|
||||
public function getDependencies( ResourceLoaderContext $context = null ) {
|
||||
return [ 'mediawiki.language.init' ];
|
||||
return [ 'mediawiki.language' ];
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -58,9 +58,6 @@ return [
|
|||
'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 */
|
||||
|
||||
/**
|
||||
|
|
@ -1560,7 +1557,9 @@ return [
|
|||
/* 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',
|
||||
|
|
@ -1578,10 +1577,8 @@ return [
|
|||
'sl' => 'resources/src/mediawiki.language/languages/sl.js',
|
||||
],
|
||||
'dependencies' => [
|
||||
'mediawiki.language.data',
|
||||
'mediawiki.cldr',
|
||||
],
|
||||
'targets' => [ 'desktop', 'mobile' ],
|
||||
'messages' => [
|
||||
'and',
|
||||
'comma-separator',
|
||||
|
|
@ -1605,11 +1602,6 @@ return [
|
|||
'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,
|
||||
|
|
|
|||
|
|
@ -13,8 +13,8 @@
|
|||
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:
|
||||
*
|
||||
|
|
|
|||
|
|
@ -105,10 +105,7 @@
|
|||
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',
|
||||
|
|
@ -903,6 +900,10 @@
|
|||
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(
|
||||
|
|
|
|||
Loading…
Reference in a new issue