language->getGrammarForms(); } /** * Get the plural forms for the site content language. * * @return array */ protected function getPluralRules() { return $this->language->getPluralRules(); } /** * Get the digit groupin Pattern for the site content language. * * @return array */ protected function getDigitGroupingPattern() { return $this->language->digitGroupingPattern(); } /** * Get the digit transform table for the content language * * @return array */ protected function getDigitTransformTable() { return $this->language->digitTransformTable(); } /** * Get seperator transform table required for converting * the . and , sign to appropriate forms in site content language. * * @return array */ protected function getSeparatorTransformTable() { return $this->language->separatorTransformTable(); } /** * Get all the dynamic data for the content language to an array. * * NOTE: Before calling this you HAVE to make sure $this->language is set. * * @return array */ protected function getData() { return array( 'digitTransformTable' => $this->getDigitTransformTable(), 'separatorTransformTable' => $this->getSeparatorTransformTable(), 'grammarForms' => $this->getSiteLangGrammarForms(), 'pluralRules' => $this->getPluralRules(), 'digitGroupingPattern' => $this->getDigitGroupingPattern(), ); } /** * @param $context ResourceLoaderContext * @return string: JavaScript code */ public function getScript( ResourceLoaderContext $context ) { $this->language = Language::factory( $context->getLanguage() ); return Xml::encodeJsCall( 'mw.language.setData', array( $this->language->getCode(), $this->getData() ) ); } /** * @param $context ResourceLoaderContext * @return int: UNIX timestamp */ public function getModifiedTime( ResourceLoaderContext $context ) { return max( 1, $this->getHashMtime( $context ) ); } /** * @param $context ResourceLoaderContext * @return string: Hash */ public function getModifiedHash( ResourceLoaderContext $context ) { $this->language = Language::factory( $context->getLanguage() ); return md5( serialize( $this->getData() ) ); } /** * @return array */ public function getDependencies() { return array( 'mediawiki.language.init' ); } }