Revision: 46247
Author:   nikerabbit
Date:     2009-01-26 09:48:17 +0000 (Mon, 26 Jan 2009)

Log Message:
-----------
* (bug 13040) {{GENDER:}} magic word for interface messages

Modified Paths:
--------------
    trunk/phase3/RELEASE-NOTES
    trunk/phase3/includes/DefaultSettings.php
    trunk/phase3/includes/parser/CoreParserFunctions.php
    trunk/phase3/languages/Language.php

Modified: trunk/phase3/RELEASE-NOTES
===================================================================
--- trunk/phase3/RELEASE-NOTES  2009-01-26 09:41:52 UTC (rev 46246)
+++ trunk/phase3/RELEASE-NOTES  2009-01-26 09:48:17 UTC (rev 46247)
@@ -63,6 +63,7 @@
 * (bug 17145) Specific categories can be excluded from Special:UnusedCategories
   with __IGNOREUNUSED__
 * (bug 13040) Gender switch in user preferences
+* (bug 13040) {{GENDER:}} magic word for interface messages
 
 === Bug fixes in 1.15 ===
 * (bug 16968) Special:Upload no longer throws useless warnings.

Modified: trunk/phase3/includes/DefaultSettings.php
===================================================================
--- trunk/phase3/includes/DefaultSettings.php   2009-01-26 09:41:52 UTC (rev 
46246)
+++ trunk/phase3/includes/DefaultSettings.php   2009-01-26 09:48:17 UTC (rev 
46247)
@@ -2430,6 +2430,7 @@
        'watchmoves'              => 0,
        'watchdeletion'           => 0,
        'noconvertlink'           => 0,
+       'gender'                  => 'unknown',
 );
 
 /** Whether or not to allow and use real name fields. Defaults to true. */

Modified: trunk/phase3/includes/parser/CoreParserFunctions.php
===================================================================
--- trunk/phase3/includes/parser/CoreParserFunctions.php        2009-01-26 
09:41:52 UTC (rev 46246)
+++ trunk/phase3/includes/parser/CoreParserFunctions.php        2009-01-26 
09:48:17 UTC (rev 46247)
@@ -27,6 +27,7 @@
                $parser->setFunctionHook( 'fullurle',         array( __CLASS__, 
'fullurle'         ), SFH_NO_HASH );
                $parser->setFunctionHook( 'formatnum',        array( __CLASS__, 
'formatnum'        ), SFH_NO_HASH );
                $parser->setFunctionHook( 'grammar',          array( __CLASS__, 
'grammar'          ), SFH_NO_HASH );
+               $parser->setFunctionHook( 'gender',           array( __CLASS__, 
'gender'           ), SFH_NO_HASH );
                $parser->setFunctionHook( 'plural',           array( __CLASS__, 
'plural'           ), SFH_NO_HASH );
                $parser->setFunctionHook( 'numberofpages',    array( __CLASS__, 
'numberofpages'    ), SFH_NO_HASH );
                $parser->setFunctionHook( 'numberofusers',    array( __CLASS__, 
'numberofusers'    ), SFH_NO_HASH );
@@ -155,6 +156,22 @@
                return $parser->getFunctionLang()->convertGrammar( $word, $case 
);
        }
 
+       static function gender( $parser, $user ) {
+               $forms = array_slice( func_get_args(), 2);
+
+               // default
+               $gender = User::getDefaultOption( 'gender' );
+
+               // check parameter, or use $wgUser if in interface message
+               $user = User::newFromName( $user );
+               if ( $user ) {
+                       $gender = $user->getOption( 'gender' );
+               } elseif ( $parser->mOptions->getInterfaceMessage() ) {
+                       global $wgUser;
+                       $gender = $wgUser->getOption( 'gender' );
+               }
+               return $parser->getFunctionLang()->gender( $gender, $forms );
+       }
        static function plural( $parser, $text = '') {
                $forms = array_slice( func_get_args(), 2);
                $text = $parser->getFunctionLang()->parseFormattedNumber( $text 
);

Modified: trunk/phase3/languages/Language.php
===================================================================
--- trunk/phase3/languages/Language.php 2009-01-26 09:41:52 UTC (rev 46246)
+++ trunk/phase3/languages/Language.php 2009-01-26 09:48:17 UTC (rev 46247)
@@ -2065,6 +2065,21 @@
        }
 
        /**
+        * Provides an alternative text depending on specified gender.
+        * Usage {{gender:username|masculine|feminine|neutral}}.
+        * username is optional, in which case the gender of current user is 
used,
+        * but only in (some) interface messages; otherwise default gender is 
used.
+        * If second or third parameter are not specified, masculine is used.
+        * These details may be overriden per language.
+        */
+       function gender( $gender, $forms ) {
+               $forms = $this->preConvertPlural( $forms, 2 );
+               if ( $gender === 'male' ) return $forms[0];
+               if ( $gender === 'female' ) return $forms[1];
+               return isset($forms[2]) ? $forms[2] : $forms[0];
+       }
+
+       /**
         * Plural form transformations, needed for some languages.
         * For example, there are 3 form of plural in Russian and Polish,
         * depending on "count mod 10". See [[w:Plural]]



_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to