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:
Santhosh Thottingal 2012-06-06 11:42:12 +05:30 committed by Timo Tijhof
parent c31cb08184
commit f47dfe9939
6 changed files with 41 additions and 52 deletions

View file

@ -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 ) {

View file

@ -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 ?
',': '٬' // ٬
};

View file

@ -1,8 +0,0 @@
/**
* Dutch (Nederlands) language functions
*/
mediaWiki.language.digitTransformTable = {
'.' : ',',
',' : '.'
};

View file

@ -1,8 +0,0 @@
/**
* Brazilian Portugese (Portuguêsi do Brasil) language functions
*/
mediaWiki.language.digitTransformTable = {
'.' : ',',
',' : ' '
};

View file

@ -1,8 +0,0 @@
/**
* Portugese language functions
*/
mediaWiki.language.digitTransformTable = {
'.' : ',',
',' : ' '
};

View file

@ -26,7 +26,7 @@ var language = {
}
// Restore the count into a Number ( if it got converted earlier )
var count = mw.language.convertNumber( template.title, true );
// Do convertPlural call
// Do convertPlural call
return mw.language.convertPlural( parseInt( count, 10 ), template.parameters );
}
// Could not process plural return first form or nothing
@ -99,7 +99,7 @@ var language = {
* Provides an alternative text depending on specified gender.
* Usage {{gender:[gender|user object]|masculine|feminine|neutral}}.
* If second or third parameter are not specified, masculine is used.
*
*
* These details may be overriden per language.
*
* @param gender string male, female, or anything else for neutral.
@ -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 );