From f47dfe9939f7929f1e3fd1c501539cbd0d12373f Mon Sep 17 00:00:00 2001 From: Santhosh Thottingal Date: Wed, 6 Jun 2012 11:42:12 +0530 Subject: [PATCH] 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 --- .../ResourceLoaderLanguageDataModule.php | 47 +++++++++++++++---- resources/mediawiki.language/languages/ar.js | 14 ------ resources/mediawiki.language/languages/nl.js | 8 ---- .../mediawiki.language/languages/pt-br.js | 8 ---- resources/mediawiki.language/languages/pt.js | 8 ---- .../mediawiki.language/mediawiki.language.js | 8 ++-- 6 files changed, 41 insertions(+), 52 deletions(-) delete mode 100644 resources/mediawiki.language/languages/nl.js delete mode 100644 resources/mediawiki.language/languages/pt-br.js delete mode 100644 resources/mediawiki.language/languages/pt.js diff --git a/includes/resourceloader/ResourceLoaderLanguageDataModule.php b/includes/resourceloader/ResourceLoaderLanguageDataModule.php index b823f1d25b..a36aaec49b 100644 --- a/includes/resourceloader/ResourceLoaderLanguageDataModule.php +++ b/includes/resourceloader/ResourceLoaderLanguageDataModule.php @@ -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 ) { diff --git a/resources/mediawiki.language/languages/ar.js b/resources/mediawiki.language/languages/ar.js index 7d9e114fc4..d21df7e597 100644 --- a/resources/mediawiki.language/languages/ar.js +++ b/resources/mediawiki.language/languages/ar.js @@ -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 ? - ',': 'Ù¬' // ٬ -}; diff --git a/resources/mediawiki.language/languages/nl.js b/resources/mediawiki.language/languages/nl.js deleted file mode 100644 index a2b22f4bb2..0000000000 --- a/resources/mediawiki.language/languages/nl.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Dutch (Nederlands) language functions - */ - -mediaWiki.language.digitTransformTable = { - '.' : ',', - ',' : '.' -}; diff --git a/resources/mediawiki.language/languages/pt-br.js b/resources/mediawiki.language/languages/pt-br.js deleted file mode 100644 index 2457e2476d..0000000000 --- a/resources/mediawiki.language/languages/pt-br.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Brazilian Portugese (Portuguêsi do Brasil) language functions - */ - -mediaWiki.language.digitTransformTable = { - '.' : ',', - ',' : ' ' -}; diff --git a/resources/mediawiki.language/languages/pt.js b/resources/mediawiki.language/languages/pt.js deleted file mode 100644 index 1b8fc72ff8..0000000000 --- a/resources/mediawiki.language/languages/pt.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Portugese language functions - */ - -mediaWiki.language.digitTransformTable = { - '.' : ',', - ',' : ' ' -}; diff --git a/resources/mediawiki.language/mediawiki.language.js b/resources/mediawiki.language/mediawiki.language.js index 87a6a8f3d2..78a63098ee 100644 --- a/resources/mediawiki.language/mediawiki.language.js +++ b/resources/mediawiki.language/mediawiki.language.js @@ -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 ); -- 2.20.1