*/
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()
+ );
}
/**
* @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()
) );
}
* @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 ) {
}
// 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
* 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.
* @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;
}
},
// Digit Transform Table, populated by language classes where applicable
- 'digitTransformTable': null
+ 'digitTransformTable': mw.language.getData( mw.config.get( 'wgUserLanguage' ), 'digitTransformTable' )
};
$.extend( mw.language, language );