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