Remove duplication of Langauge digitTransformTable in javascript.
Use the new ResourceLoaderLanguageDataModule for passing the digit transform table and digit separators (comma or dot) from the PHP classes. And remove the duplicative javascript files so we no longer have to maintain changes to MessagesXYZ.php and languages/xyz.js. Change-Id: Icf63ebf927f993fe04518c4afe3a0b6959f5b1bd
This commit is contained in:
parent
c31cb08184
commit
f47dfe9939
6 changed files with 41 additions and 52 deletions
|
|
@ -27,14 +27,43 @@
|
|||
*/
|
||||
class ResourceLoaderLanguageDataModule extends ResourceLoaderModule {
|
||||
|
||||
protected $language;
|
||||
/**
|
||||
* Get the grammer forms for the site content language.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function getSiteLangGrammarForms() {
|
||||
global $wgContLang;
|
||||
return $wgContLang->getGrammarForms();
|
||||
return $this->language->getGrammarForms();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the digit transform table for the content language
|
||||
* Seperator transform table also required here to convert
|
||||
* the . and , sign to appropriate forms in content language.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function getDigitTransformTable() {
|
||||
$digitTransformTable = $this->language->digitTransformTable();
|
||||
$separatorTransformTable = $this->language->separatorTransformTable();
|
||||
if ( $digitTransformTable ) {
|
||||
array_merge( $digitTransformTable, (array)$separatorTransformTable );
|
||||
} else {
|
||||
return $separatorTransformTable;
|
||||
}
|
||||
return $digitTransformTable;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all the dynamic data for the content language to an array
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function getData() {
|
||||
return array( 'grammarForms' => $this->getSiteLangGrammarForms(),
|
||||
'digitTransformTable' => $this->getDigitTransformTable()
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -42,13 +71,10 @@ class ResourceLoaderLanguageDataModule extends ResourceLoaderModule {
|
|||
* @return string: Javascript code
|
||||
*/
|
||||
public function getScript( ResourceLoaderContext $context ) {
|
||||
global $wgContLang;
|
||||
|
||||
$this->language = Language::factory( $context ->getLanguage() );
|
||||
return Xml::encodeJsCall( 'mw.language.setData', array(
|
||||
$wgContLang->getCode(),
|
||||
array(
|
||||
'grammarForms' => $this->getSiteLangGrammarForms()
|
||||
)
|
||||
$this->language->getCode(),
|
||||
$this->getData()
|
||||
) );
|
||||
}
|
||||
|
||||
|
|
@ -57,11 +83,12 @@ class ResourceLoaderLanguageDataModule extends ResourceLoaderModule {
|
|||
* @return array|int|Mixed
|
||||
*/
|
||||
public function getModifiedTime( ResourceLoaderContext $context ) {
|
||||
$this->language = Language::factory( $context ->getLanguage() );
|
||||
$cache = wfGetCache( CACHE_ANYTHING );
|
||||
$key = wfMemcKey( 'resourceloader', 'langdatamodule', 'changeinfo' );
|
||||
|
||||
$forms = $this->getSiteLangGrammarForms();
|
||||
$hash = md5( serialize( $forms ) );
|
||||
$data = $this->getData();
|
||||
$hash = md5( serialize( $data ) );
|
||||
|
||||
$result = $cache->get( $key );
|
||||
if ( is_array( $result ) && $result['hash'] === $hash ) {
|
||||
|
|
|
|||
|
|
@ -22,17 +22,3 @@ mediaWiki.language.convertPlural = function( count, forms ) {
|
|||
return forms[5];
|
||||
};
|
||||
|
||||
mediaWiki.language.digitTransformTable = {
|
||||
'0': '٠', // ٠
|
||||
'1': '١', // ١
|
||||
'2': '٢', // ٢
|
||||
'3': '٣', // ٣
|
||||
'4': '٤', // ٤
|
||||
'5': '٥', // ٥
|
||||
'6': '٦', // ٦
|
||||
'7': '٧', // ٧
|
||||
'8': '٨', // ٨
|
||||
'9': '٩', // ٩
|
||||
'.': '٫', // ٫ wrong table ?
|
||||
',': '٬' // ٬
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,8 +0,0 @@
|
|||
/**
|
||||
* Dutch (Nederlands) language functions
|
||||
*/
|
||||
|
||||
mediaWiki.language.digitTransformTable = {
|
||||
'.' : ',',
|
||||
',' : '.'
|
||||
};
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
/**
|
||||
* Brazilian Portugese (Portuguêsi do Brasil) language functions
|
||||
*/
|
||||
|
||||
mediaWiki.language.digitTransformTable = {
|
||||
'.' : ',',
|
||||
',' : ' '
|
||||
};
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
/**
|
||||
* Portugese language functions
|
||||
*/
|
||||
|
||||
mediaWiki.language.digitTransformTable = {
|
||||
'.' : ',',
|
||||
',' : ' '
|
||||
};
|
||||
|
|
@ -132,7 +132,7 @@ var language = {
|
|||
* @return {String}
|
||||
*/
|
||||
convertGrammar: function ( word, form ) {
|
||||
var grammarForms = mw.language.getData( mw.config.get( 'wgContentLanguage' ), 'grammarForms' );
|
||||
var grammarForms = mw.language.getData( mw.config.get( 'wgUserLanguage' ), 'grammarForms' );
|
||||
if ( grammarForms && grammarForms[form] ) {
|
||||
return grammarForms[form][word] || word;
|
||||
}
|
||||
|
|
@ -140,7 +140,7 @@ var language = {
|
|||
},
|
||||
|
||||
// Digit Transform Table, populated by language classes where applicable
|
||||
'digitTransformTable': null
|
||||
'digitTransformTable': mw.language.getData( mw.config.get( 'wgUserLanguage' ), 'digitTransformTable' )
|
||||
};
|
||||
|
||||
$.extend( mw.language, language );
|
||||
|
|
|
|||
Loading…
Reference in a new issue