From 689658de3762cc8485891bf8546a35b77dbc8533 Mon Sep 17 00:00:00 2001 From: MatmaRex Date: Tue, 2 Jul 2013 16:46:25 +0200 Subject: [PATCH] Provide month names via mediawiki.language.months RL module * Deliver appropriate messages via ResourceLoader, for nominative-case, genitive-case and abbreviated month names * Define mw.language.months which provides access to the above data in a structured manner This supersedes the old way to of accessing these using wgMonthNames and wgMonthNamesShort mw.config variables. Genitive month names were previously not available at all. Bug: 46496 Change-Id: I9f48b860d1078a31d620f6f95dde1f19c1c31f79 --- resources/Resources.php | 10 ++++ .../mediawiki.language.months.js | 54 +++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 resources/mediawiki.language/mediawiki.language.months.js diff --git a/resources/Resources.php b/resources/Resources.php index 6352843fd8..641c2439c2 100644 --- a/resources/Resources.php +++ b/resources/Resources.php @@ -843,6 +843,16 @@ return array( 'targets' => array( 'desktop', 'mobile' ), ), + 'mediawiki.language.months' => array( + 'scripts' => 'resources/mediawiki.language/mediawiki.language.months.js', + 'dependencies' => 'mediawiki.language', + 'messages' => array_merge( + Language::$mMonthMsgs, + Language::$mMonthGenMsgs, + Language::$mMonthAbbrevMsgs + ) + ), + /* MediaWiki Libs */ 'mediawiki.libs.jpegmeta' => array( diff --git a/resources/mediawiki.language/mediawiki.language.months.js b/resources/mediawiki.language/mediawiki.language.months.js new file mode 100644 index 0000000000..3d4b7ee783 --- /dev/null +++ b/resources/mediawiki.language/mediawiki.language.months.js @@ -0,0 +1,54 @@ +/** + * Transfer of month names from messages into mw.language. + * + * Loading this module also ensures the availability of appropriate messages via mw.msg. + */ +( function ( mw, $ ) { + var + monthMessages = [ + 'january', 'february', 'march', 'april', + 'may_long', 'june', 'july', 'august', + 'september', 'october', 'november', 'december' + ], + monthGenMessages = [ + 'january-gen', 'february-gen', 'march-gen', 'april-gen', + 'may-gen', 'june-gen', 'july-gen', 'august-gen', + 'september-gen', 'october-gen', 'november-gen', 'december-gen' + ], + monthAbbrevMessages = [ + 'jan', 'feb', 'mar', 'apr', + 'may', 'jun', 'jul', 'aug', + 'sep', 'oct', 'nov', 'dec' + ]; + + // Function suitable for passing to jQuery.map + // Can't use mw.msg directly because jQuery.map passes element index as second argument + function mwMsgMapper( key ) { + return mw.msg( key ); + } + + /** + * Information about month names in current UI language. + * + * Object keys: + * - `names`: array of month names (in nominative case in languages which have the distinction), + * zero-indexed + * - `genitive`: array of month names in genitive case, zero-indexed + * - `abbrev`: array of three-letter-long abbreviated month names, zero-indexed + * - `keys`: object with three keys like the above, containing zero-indexed arrays of message keys + * for appropriate messages which can be passed to mw.msg. + * + * @property + */ + mw.language.months = { + keys: { + names: monthMessages, + genitive: monthGenMessages, + abbrev: monthAbbrevMessages + }, + names: $.map( monthMessages, mwMsgMapper ), + genitive: $.map( monthGenMessages, mwMsgMapper ), + abbrev: $.map( monthAbbrevMessages, mwMsgMapper ) + }; + +}( mediaWiki, jQuery ) ); -- 2.20.1