Provide month names via mediawiki.language.months RL module
authorMatmaRex <matma.rex@gmail.com>
Tue, 2 Jul 2013 14:46:25 +0000 (16:46 +0200)
committerMatmarex <matma.rex@gmail.com>
Mon, 29 Jul 2013 13:02:03 +0000 (13:02 +0000)
* 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
resources/mediawiki.language/mediawiki.language.months.js [new file with mode: 0644]

index 6352843..641c243 100644 (file)
@@ -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 (file)
index 0000000..3d4b7ee
--- /dev/null
@@ -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 ) );