MediaWiki r46247 - Code Review

Jump to: navigation, search
Repository:MediaWiki
Revision:r46246‎ | r46247 (on ViewVC)‎ | r46248 >
Date:09:48, 26 January 2009
Author:nikerabbit
Status:ok (Comments)
Tags:
Comment:
* (bug 13040) {{GENDER:}} magic word for interface messages
Modified paths:

Diff [purge]

Index: trunk/phase3/includes/parser/CoreParserFunctions.php
===================================================================
--- trunk/phase3/includes/parser/CoreParserFunctions.php	(revision 46246)
+++ trunk/phase3/includes/parser/CoreParserFunctions.php	(revision 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 );
Index: trunk/phase3/includes/DefaultSettings.php
===================================================================
--- trunk/phase3/includes/DefaultSettings.php	(revision 46246)
+++ trunk/phase3/includes/DefaultSettings.php	(revision 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. */
Index: trunk/phase3/languages/Language.php
===================================================================
--- trunk/phase3/languages/Language.php	(revision 46246)
+++ trunk/phase3/languages/Language.php	(revision 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]]
Index: trunk/phase3/RELEASE-NOTES
===================================================================
--- trunk/phase3/RELEASE-NOTES	(revision 46246)
+++ trunk/phase3/RELEASE-NOTES	(revision 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.

Follow-up revisions

Rev.Commit summaryAuthorDate
r47196* (bug 13040) Gender-aware user namespace aliases...nikerabbit19:54, 12 February 2009
r47391Revert r47196, r47219 "* (bug 13040) Gender-aware user namespace aliases" and...brion23:00, 17 February 2009

Comments

#Comment by Siebrand (Talk | contribs)   00:01, 27 January 2009

Notice in gender() fixed in r46249

Status & tagging log

Personal tools
Namespaces
Variants
Views
Actions
Site
Support
Download
Development
Communication
Toolbox