Merge "MWException: Don't send headers multiple times"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Tue, 13 May 2014 22:28:43 +0000 (22:28 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Tue, 13 May 2014 22:28:43 +0000 (22:28 +0000)
104 files changed:
includes/Block.php
includes/Categoryfinder.php
includes/Collation.php
includes/DefaultSettings.php
includes/ImagePage.php
includes/Linker.php
includes/MWTimestamp.php
includes/MagicWord.php
includes/MimeMagic.php
includes/ProtectionForm.php
includes/QueryPage.php
includes/RevisionList.php
includes/SkinTemplate.php
includes/User.php
includes/api/ApiMain.php
includes/filerepo/file/LocalFile.php
includes/installer/WebInstaller.php
includes/installer/i18n/en.json
includes/installer/i18n/es.json
includes/installer/i18n/qqq.json
includes/specials/SpecialAllpages.php
languages/i18n/af.json
languages/i18n/ar.json
languages/i18n/as.json
languages/i18n/ast.json
languages/i18n/azb.json
languages/i18n/be-tarask.json
languages/i18n/bn.json
languages/i18n/br.json
languages/i18n/ca.json
languages/i18n/ce.json
languages/i18n/ckb.json
languages/i18n/cs.json
languages/i18n/cy.json
languages/i18n/de.json
languages/i18n/diq.json
languages/i18n/dsb.json
languages/i18n/egl.json
languages/i18n/es.json
languages/i18n/eu.json
languages/i18n/fa.json
languages/i18n/fi.json
languages/i18n/fr.json
languages/i18n/he.json
languages/i18n/hr.json
languages/i18n/hrx.json
languages/i18n/hsb.json
languages/i18n/hu.json
languages/i18n/id.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/ka.json
languages/i18n/kiu.json
languages/i18n/kk-cyrl.json
languages/i18n/ko.json
languages/i18n/krc.json
languages/i18n/ksh.json
languages/i18n/lb.json
languages/i18n/lez.json
languages/i18n/mhr.json
languages/i18n/mk.json
languages/i18n/ml.json
languages/i18n/ms.json
languages/i18n/mt.json
languages/i18n/nb.json
languages/i18n/nds-nl.json
languages/i18n/ne.json
languages/i18n/or.json
languages/i18n/pl.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/qu.json
languages/i18n/ro.json
languages/i18n/ru.json
languages/i18n/sa.json
languages/i18n/sah.json
languages/i18n/sco.json
languages/i18n/sgs.json
languages/i18n/si.json
languages/i18n/sk.json
languages/i18n/sl.json
languages/i18n/so.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/sv.json
languages/i18n/sw.json
languages/i18n/te.json
languages/i18n/th.json
languages/i18n/tl.json
languages/i18n/tr.json
languages/i18n/vi.json
languages/i18n/yi.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
maintenance/runJobs.php
resources/Resources.php
resources/src/jquery/jquery.accessKeyLabel.js
skins/common/commonContent.css
skins/common/config.css
skins/vector/components/thumbnails.less [deleted file]
skins/vector/screen.less
tests/qunit/suites/resources/jquery/jquery.accessKeyLabel.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.util.test.js

index d9fa54d..b6976b0 100644 (file)
  * @file
  */
 class Block {
-       /* public*/ var $mReason, $mTimestamp, $mAuto, $mExpiry, $mHideName;
+       /** @var string */
+       public $mReason;
 
-       protected
-               $mId,
-               $mFromMaster,
+       /** @var bool|string */
+       public $mTimestamp;
 
-               $mBlockEmail,
-               $mDisableUsertalk,
-               $mCreateAccount,
-               $mParentBlockId;
+       /** @var int */
+       public $mAuto;
+
+       /** @var bool|string */
+       public $mExpiry;
+
+       public $mHideName;
+
+       /** @var int */
+       public $mParentBlockId;
+
+       /** @var int */
+       protected $mId;
+
+       /** @var bool */
+       protected $mFromMaster;
+
+       /** @var bool */
+       protected $mBlockEmail;
+
+       /** @var bool */
+       protected $mDisableUsertalk;
+
+       /** @var bool */
+       protected $mCreateAccount;
 
        /** @var User|string */
        protected $target;
@@ -57,9 +78,8 @@ class Block {
        const TYPE_ID = 5;
 
        /**
-        * Constructor
-        * @todo FIXME: Don't know what the best format to have for this constructor is, but fourteen
-        * optional parameters certainly isn't it.
+        * @todo FIXME: Don't know what the best format to have for this constructor
+        *   is, but fourteen optional parameters certainly isn't it.
         */
        function __construct( $address = '', $user = 0, $by = 0, $reason = '',
                $timestamp = 0, $auto = 0, $expiry = '', $anonOnly = 0, $createAccount = 0, $enableAutoblock = 0,
index 720f6f8..b9cbc9a 100644 (file)
  *
  */
 class Categoryfinder {
-       var $articles = array(); # The original article IDs passed to the seed function
-       var $deadend = array(); # Array of DBKEY category names for categories that don't have a page
-       var $parents = array(); # Array of [ID => array()]
-       var $next = array(); # Array of article/category IDs
-       var $targets = array(); # Array of DBKEY category names
-       var $name2id = array();
-       var $mode; # "AND" or "OR"
+       /** @var int[] The original article IDs passed to the seed function */
+       protected $articles = array();
 
-       /**
-        * @var DatabaseBase
-        */
-       var $dbr; # Read-DB slave
+       /** @var array Array of DBKEY category names for categories that don't have a page */
+       protected $deadend = array();
+
+       /** @var array Array of [ID => array()] */
+       protected $parents = array();
+
+       /** @var array Array of article/category IDs */
+       protected $next = array();
+
+       /** @var array Array of DBKEY category names */
+       protected $targets = array();
+
+       /** @var array */
+       protected $name2id = array();
+
+       /** @var  "AND" or "OR" */
+       protected $mode;
+
+       /** @var DatabaseBase Read-DB slave */
+       protected $dbr;
 
-       /**
-        * Constructor (currently empty).
-        */
        function __construct() {
        }
 
index 4c85e52..4e0c6a4 100644 (file)
@@ -21,7 +21,7 @@
  */
 
 abstract class Collation {
-       static $instance;
+       private static $instance;
 
        /**
         * @return Collation
@@ -108,7 +108,8 @@ abstract class Collation {
 }
 
 class UppercaseCollation extends Collation {
-       var $lang;
+       private $lang;
+
        function __construct() {
                // Get a language object so that we can use the generic UTF-8 uppercase
                // function there
@@ -153,8 +154,20 @@ class IdentityCollation extends Collation {
 class IcuCollation extends Collation {
        const FIRST_LETTER_VERSION = 2;
 
-       var $primaryCollator, $mainCollator, $locale, $digitTransformLanguage;
-       var $firstLetterData;
+       /** @var Collator */
+       private $primaryCollator;
+
+       /** @var Collator */
+       private $mainCollator;
+
+       /** @var  */
+       private $locale;
+
+       /** @var Language */
+       protected $digitTransformLanguage;
+
+       /** @var array */
+       private $firstLetterData;
 
        /**
         * Unified CJK blocks.
@@ -165,7 +178,7 @@ class IcuCollation extends Collation {
         * is pretty useless for sorting Chinese text anyway. Japanese and Korean
         * blocks are not included here, because they are smaller and more useful.
         */
-       static $cjkBlocks = array(
+       private static $cjkBlocks = array(
                array( 0x2E80, 0x2EFF ), // CJK Radicals Supplement
                array( 0x2F00, 0x2FDF ), // Kangxi Radicals
                array( 0x2FF0, 0x2FFF ), // Ideographic Description Characters
@@ -204,7 +217,7 @@ class IcuCollation extends Collation {
         * Empty arrays are intended; this signifies that the data for the language is
         * available and that there are, in fact, no additional letters to consider.
         */
-       static $tailoringFirstLetters = array(
+       private static $tailoringFirstLetters = array(
                // Verified by native speakers
                'be' => array( "Ё" ),
                'be-tarask' => array( "Ё" ),
index 64512c8..e011d4a 100644 (file)
@@ -6186,6 +6186,7 @@ $wgJobTypesExcludedFromDefaultQueue = array( 'AssembleUploadChunks', 'PublishSta
  * may have a variable number of work items, as is the case with batch jobs.
  * This is used by runJobs.php and not jobs run via $wgJobRunRate.
  * These settings should be global to all wikis.
+ * @var float[]
  */
 $wgJobBackoffThrottling = array();
 
index 8444223..a38b195 100644 (file)
  * @ingroup Media
  */
 class ImagePage extends Article {
-
-       /**
-        * @var File
-        */
+       /** @var File */
        private $displayImg;
-       /**
-        * @var FileRepo
-        */
+
+       /** @var FileRepo */
        private $repo;
+
+       /** @var bool */
        private $fileLoaded;
 
-       var $mExtraDescription = false;
+       /** @var bool */
+       protected $mExtraDescription = false;
 
        /**
         * @param Title $title
@@ -106,7 +105,10 @@ class ImagePage extends Article {
                $out = $this->getContext()->getOutput();
                $request = $this->getContext()->getRequest();
                $diff = $request->getVal( 'diff' );
-               $diffOnly = $request->getBool( 'diffonly', $this->getContext()->getUser()->getOption( 'diffonly' ) );
+               $diffOnly = $request->getBool(
+                       'diffonly',
+                       $this->getContext()->getUser()->getOption( 'diffonly' )
+               );
 
                if ( $this->getTitle()->getNamespace() != NS_FILE || ( $diff !== null && $diffOnly ) ) {
                        parent::view();
@@ -126,8 +128,11 @@ class ImagePage extends Article {
                                // mTitle is not the same as the redirect target so it is
                                // probably the redirect page itself. Fake the redirect symbol
                                $out->setPageTitle( $this->getTitle()->getPrefixedText() );
-                               $out->addHTML( $this->viewRedirect( Title::makeTitle( NS_FILE, $this->mPage->getFile()->getName() ),
-                                       /* $appendSubtitle */ true, /* $forceKnown */ true ) );
+                               $out->addHTML( $this->viewRedirect(
+                                       Title::makeTitle( NS_FILE, $this->mPage->getFile()->getName() ),
+                                       /* $appendSubtitle */ true,
+                                       /* $forceKnown */ true )
+                               );
                                $this->mPage->doViewUpdates( $this->getContext()->getUser(), $this->getOldID() );
                                return;
                        }
@@ -338,18 +343,23 @@ class ImagePage extends Article {
                                # image
 
                                # "Download high res version" link below the image
-                               # $msgsize = wfMessage( 'file-info-size', $width_orig, $height_orig, Linker::formatSize( $this->displayImg->getSize() ), $mime )->escaped();
+                               # $msgsize = wfMessage( 'file-info-size', $width_orig, $height_orig,
+                               #   Linker::formatSize( $this->displayImg->getSize() ), $mime )->escaped();
                                # We'll show a thumbnail of this image
                                if ( $width > $maxWidth || $height > $maxHeight ) {
                                        # Calculate the thumbnail size.
                                        # First case, the limiting factor is the width, not the height.
-                                       if ( $width / $height >= $maxWidth / $maxHeight ) { // FIXME: Possible division by 0. bug 36911
-                                               $height = round( $height * $maxWidth / $width ); // FIXME: Possible division by 0. bug 36911
+                                       /** @todo // FIXME: Possible division by 0. bug 36911 */
+                                       if ( $width / $height >= $maxWidth / $maxHeight ) {
+                                               /** @todo // FIXME: Possible division by 0. bug 36911 */
+                                               $height = round( $height * $maxWidth / $width );
                                                $width = $maxWidth;
                                                # Note that $height <= $maxHeight now.
                                        } else {
-                                               $newwidth = floor( $width * $maxHeight / $height ); // FIXME: Possible division by 0. bug 36911
-                                               $height = round( $height * $newwidth / $width ); // FIXME: Possible division by 0. bug 36911
+                                               /** @todo // FIXME: Possible division by 0. bug 36911 */
+                                               $newwidth = floor( $width * $maxHeight / $height );
+                                               /** @todo // FIXME: Possible division by 0. bug 36911 */
+                                               $height = round( $height * $newwidth / $width );
                                                $width = $newwidth;
                                                # Note that $height <= $maxHeight now, but might not be identical
                                                # because of rounding.
@@ -424,7 +434,11 @@ class ImagePage extends Article {
                                $thumbnail = $this->displayImg->transform( $params );
                                Linker::processResponsiveImages( $this->displayImg, $thumbnail, $params );
 
-                               $anchorclose = Html::rawElement( 'div', array( 'class' => 'mw-filepage-resolutioninfo' ), $msgsmall );
+                               $anchorclose = Html::rawElement(
+                                       'div',
+                                       array( 'class' => 'mw-filepage-resolutioninfo' ),
+                                       $msgsmall
+                               );
 
                                $isMulti = $this->displayImg->isMultipage() && $this->displayImg->pageCount() > 1;
                                if ( $isMulti ) {
@@ -453,8 +467,14 @@ class ImagePage extends Article {
                                                        array(),
                                                        array( 'page' => $page - 1 )
                                                );
-                                               $thumb1 = Linker::makeThumbLinkObj( $this->getTitle(), $this->displayImg, $link, $label, 'none',
-                                                       array( 'page' => $page - 1 ) );
+                                               $thumb1 = Linker::makeThumbLinkObj(
+                                                       $this->getTitle(),
+                                                       $this->displayImg,
+                                                       $link,
+                                                       $label,
+                                                       'none',
+                                                       array( 'page' => $page - 1 )
+                                               );
                                        } else {
                                                $thumb1 = '';
                                        }
@@ -467,8 +487,14 @@ class ImagePage extends Article {
                                                        array(),
                                                        array( 'page' => $page + 1 )
                                                );
-                                               $thumb2 = Linker::makeThumbLinkObj( $this->getTitle(), $this->displayImg, $link, $label, 'none',
-                                                       array( 'page' => $page + 1 ) );
+                                               $thumb2 = Linker::makeThumbLinkObj(
+                                                       $this->getTitle(),
+                                                       $this->displayImg,
+                                                       $link,
+                                                       $label,
+                                                       'none',
+                                                       array( 'page' => $page + 1 )
+                                               );
                                        } else {
                                                $thumb2 = '';
                                        }
@@ -519,11 +545,13 @@ class ImagePage extends Article {
                                // The dirmark, however, must not be immediately adjacent
                                // to the filename, because it can get copied with it.
                                // See bug 25277.
+                               // @codingStandardsIgnoreStart Ignore long line
                                $out->addWikiText( <<<EOT
 <div class="fullMedia"><span class="dangerousLink">{$medialink}</span> $dirmark<span class="fileInfo">$longDesc</span></div>
 <div class="mediaWarning">$warning</div>
 EOT
-                                       );
+                               );
+                               // @codingStandardsIgnoreEnd
                        } else {
                                $out->addWikiText( <<<EOT
 <div class="fullMedia">{$medialink} {$dirmark}<span class="fileInfo">$longDesc</span>
@@ -690,17 +718,29 @@ EOT
 
                # "Upload a new version of this file" link
                $canUpload = $this->getTitle()->userCan( 'upload', $this->getContext()->getUser() );
-               if ( $canUpload && UploadBase::userCanReUpload( $this->getContext()->getUser(), $this->mPage->getFile()->name ) ) {
-                       $ulink = Linker::makeExternalLink( $this->getUploadUrl(), wfMessage( 'uploadnewversion-linktext' )->text() );
-                       $out->addHTML( "<li id=\"mw-imagepage-reupload-link\"><div class=\"plainlinks\">{$ulink}</div></li>\n" );
+               if ( $canUpload && UploadBase::userCanReUpload(
+                               $this->getContext()->getUser(),
+                               $this->mPage->getFile()->name )
+               ) {
+                       $ulink = Linker::makeExternalLink(
+                               $this->getUploadUrl(),
+                               wfMessage( 'uploadnewversion-linktext' )->text()
+                       );
+                       $out->addHTML( "<li id=\"mw-imagepage-reupload-link\">"
+                               . "<div class=\"plainlinks\">{$ulink}</div></li>\n" );
                } else {
-                       $out->addHTML( "<li id=\"mw-imagepage-upload-disallowed\">" . $this->getContext()->msg( 'upload-disallowed-here' )->escaped() . "</li>\n" );
+                       $out->addHTML( "<li id=\"mw-imagepage-upload-disallowed\">"
+                               . $this->getContext()->msg( 'upload-disallowed-here' )->escaped() . "</li>\n" );
                }
 
                $out->addHTML( "</ul>\n" );
        }
 
-       protected function closeShowImage() { } # For overloading
+       /**
+        * For overloading
+        */
+       protected function closeShowImage() {
+       }
 
        /**
         * If the page we've just displayed is in the "Image" namespace,
@@ -1013,7 +1053,11 @@ EOT
                if ( !$haveDefaultLang ) {
                        // Its hard to know if the content is really in the default language, or
                        // if its just unmarked content that could be in any language.
-                       $opts = Xml::option( wfMessage( 'img-lang-default' )->text(), $defaultLang, $defaultLang === $curLang ) . $opts;
+                       $opts = Xml::option(
+                               wfMessage( 'img-lang-default' )->text(),
+                               $defaultLang,
+                               $defaultLang === $curLang
+                       ) . $opts;
                }
                if ( !$haveCurrentLang && $defaultLang !== $curLang ) {
                        $name = Language::fetchLanguageName( $curLang, $this->getContext()->getLanguage()->getCode() );
@@ -1025,7 +1069,11 @@ EOT
                        $opts = Xml::option( $display, $curLang, true ) . $opts;
                }
 
-               $select = Html::rawElement( 'select', array( 'id' => 'mw-imglangselector', 'name' => 'lang' ), $opts );
+               $select = Html::rawElement(
+                       'select',
+                       array( 'id' => 'mw-imglangselector', 'name' => 'lang' ),
+                       $opts
+               );
                $submit = Xml::submitButton( wfMessage( 'img-lang-go' )->text() );
 
                $formContents = wfMessage( 'img-lang-info' )->rawParams( $select, $submit )->parse()
@@ -1100,13 +1148,15 @@ class ImageHistoryList extends ContextSource {
         * @return string
         */
        public function beginImageHistoryList( $navLinks = '' ) {
-               return Xml::element( 'h2', array( 'id' => 'filehistory' ), $this->msg( 'filehist' )->text() ) . "\n"
+               return Xml::element( 'h2', array( 'id' => 'filehistory' ), $this->msg( 'filehist' )->text() )
+                       . "\n"
                        . "<div id=\"mw-imagepage-section-filehistory\">\n"
                        . $this->msg( 'filehist-help' )->parseAsBlock()
                        . $navLinks . "\n"
                        . Xml::openElement( 'table', array( 'class' => 'wikitable filehistory' ) ) . "\n"
                        . '<tr><td></td>'
-                       . ( $this->current->isLocal() && ( $this->getUser()->isAllowedAny( 'delete', 'deletedhistory' ) ) ? '<td></td>' : '' )
+                       . ( $this->current->isLocal()
+                               && ( $this->getUser()->isAllowedAny( 'delete', 'deletedhistory' ) ) ? '<td></td>' : '' )
                        . '<th>' . $this->msg( 'filehist-datetime' )->escaped() . '</th>'
                        . ( $this->showThumb ? '<th>' . $this->msg( 'filehist-thumb' )->escaped() . '</th>' : '' )
                        . '<th>' . $this->msg( 'filehist-dimensions' )->escaped() . '</th>'
@@ -1212,7 +1262,8 @@ class ImageHistoryList extends ContextSource {
                $row .= "<td $selected style='white-space: nowrap;'>";
                if ( !$file->userCan( File::DELETED_FILE, $user ) ) {
                        # Don't link to unviewable files
-                       $row .= '<span class="history-deleted">' . $lang->userTimeAndDate( $timestamp, $user ) . '</span>';
+                       $row .= '<span class="history-deleted">'
+                               . $lang->userTimeAndDate( $timestamp, $user ) . '</span>';
                } elseif ( $file->isDeleted( File::DELETED_FILE ) ) {
                        if ( $local ) {
                                $this->preventClickjacking();
@@ -1234,7 +1285,11 @@ class ImageHistoryList extends ContextSource {
                        $row .= '<span class="history-deleted">' . $url . '</span>';
                } else {
                        $url = $iscur ? $this->current->getUrl() : $this->current->getArchiveUrl( $img );
-                       $row .= Xml::element( 'a', array( 'href' => $url ), $lang->userTimeAndDate( $timestamp, $user ) );
+                       $row .= Xml::element(
+                               'a',
+                               array( 'href' => $url ),
+                               $lang->userTimeAndDate( $timestamp, $user )
+                       );
                }
                $row .= "</td>";
 
@@ -1256,7 +1311,8 @@ class ImageHistoryList extends ContextSource {
                $row .= '<td>';
                // Hide deleted usernames
                if ( $file->isDeleted( File::DELETED_USER ) ) {
-                       $row .= '<span class="history-deleted">' . $this->msg( 'rev-deleted-user' )->escaped() . '</span>';
+                       $row .= '<span class="history-deleted">'
+                               . $this->msg( 'rev-deleted-user' )->escaped() . '</span>';
                } else {
                        if ( $local ) {
                                $row .= Linker::userLink( $userId, $userText );
@@ -1272,9 +1328,11 @@ class ImageHistoryList extends ContextSource {
 
                // Don't show deleted descriptions
                if ( $file->isDeleted( File::DELETED_COMMENT ) ) {
-                       $row .= '<td><span class="history-deleted">' . $this->msg( 'rev-deleted-comment' )->escaped() . '</span></td>';
+                       $row .= '<td><span class="history-deleted">' .
+                               $this->msg( 'rev-deleted-comment' )->escaped() . '</span></td>';
                } else {
-                       $row .= '<td dir="' . $wgContLang->getDir() . '">' . Linker::formatComment( $description, $this->title ) . '</td>';
+                       $row .= '<td dir="' . $wgContLang->getDir() . '">' .
+                               Linker::formatComment( $description, $this->title ) . '</td>';
                }
 
                $rowClass = null;
index a912fde..14821cf 100644 (file)
@@ -2114,6 +2114,7 @@ class Linker {
                if ( $options == 'withaccess' ) {
                        $accesskey = self::accesskey( $name );
                        if ( $accesskey !== false ) {
+                               // Should be build the same as in jquery.accessKeyLabel.js
                                if ( $tooltip === false || $tooltip === '' ) {
                                        $tooltip = wfMessage( 'brackets', $accesskey )->escaped();
                                } else {
index c745164..447dde3 100644 (file)
@@ -77,7 +77,8 @@ class MWTimestamp {
                $da = array();
                $strtime = '';
 
-               if ( !$ts || $ts === "\0\0\0\0\0\0\0\0\0\0\0\0\0\0" ) { // We want to catch 0, '', null... but not date strings starting with a letter.
+               // We want to catch 0, '', null... but not date strings starting with a letter.
+               if ( !$ts || $ts === "\0\0\0\0\0\0\0\0\0\0\0\0\0\0" ) {
                        $uts = time();
                        $strtime = "@$uts";
                } elseif ( preg_match( '/^(\d{4})\-(\d\d)\-(\d\d) (\d\d):(\d\d):(\d\d)$/D', $ts, $da ) ) {
@@ -93,18 +94,41 @@ class MWTimestamp {
                        # TS_ORACLE // session altered to DD-MM-YYYY HH24:MI:SS.FF6
                        $strtime = preg_replace( '/(\d\d)\.(\d\d)\.(\d\d)(\.(\d+))?/', "$1:$2:$3",
                                        str_replace( '+00:00', 'UTC', $ts ) );
-               } elseif ( preg_match( '/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.*\d*)?Z?$/', $ts, $da ) ) {
+               } elseif ( preg_match(
+                       '/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.*\d*)?Z?$/',
+                       $ts,
+                       $da
+               ) ) {
                        # TS_ISO_8601
-               } elseif ( preg_match( '/^(\d{4})(\d{2})(\d{2})T(\d{2})(\d{2})(\d{2})(?:\.*\d*)?Z?$/', $ts, $da ) ) {
+               } elseif ( preg_match(
+                       '/^(\d{4})(\d{2})(\d{2})T(\d{2})(\d{2})(\d{2})(?:\.*\d*)?Z?$/',
+                       $ts,
+                       $da
+               ) ) {
                        #TS_ISO_8601_BASIC
-               } elseif ( preg_match( '/^(\d{4})\-(\d\d)\-(\d\d) (\d\d):(\d\d):(\d\d)\.*\d*[\+\- ](\d\d)$/', $ts, $da ) ) {
+               } elseif ( preg_match(
+                       '/^(\d{4})\-(\d\d)\-(\d\d) (\d\d):(\d\d):(\d\d)\.*\d*[\+\- ](\d\d)$/',
+                       $ts,
+                       $da
+               ) ) {
                        # TS_POSTGRES
-               } elseif ( preg_match( '/^(\d{4})\-(\d\d)\-(\d\d) (\d\d):(\d\d):(\d\d)\.*\d* GMT$/', $ts, $da ) ) {
+               } elseif ( preg_match(
+                       '/^(\d{4})\-(\d\d)\-(\d\d) (\d\d):(\d\d):(\d\d)\.*\d* GMT$/',
+                       $ts,
+                       $da
+               ) ) {
                        # TS_POSTGRES
-               } elseif ( preg_match( '/^[ \t\r\n]*([A-Z][a-z]{2},[ \t\r\n]*)?' . # Day of week
-                                                               '\d\d?[ \t\r\n]*[A-Z][a-z]{2}[ \t\r\n]*\d{2}(?:\d{2})?' .  # dd Mon yyyy
-                                                               '[ \t\r\n]*\d\d[ \t\r\n]*:[ \t\r\n]*\d\d[ \t\r\n]*:[ \t\r\n]*\d\d/S', $ts ) ) { # hh:mm:ss
-                       # TS_RFC2822, accepting a trailing comment. See http://www.squid-cache.org/mail-archive/squid-users/200307/0122.html / r77171
+               } elseif ( preg_match(
+                       # Day of week
+                       '/^[ \t\r\n]*([A-Z][a-z]{2},[ \t\r\n]*)?' .
+                       # dd Mon yyyy
+                       '\d\d?[ \t\r\n]*[A-Z][a-z]{2}[ \t\r\n]*\d{2}(?:\d{2})?' .
+                       # hh:mm:ss
+                       '[ \t\r\n]*\d\d[ \t\r\n]*:[ \t\r\n]*\d\d[ \t\r\n]*:[ \t\r\n]*\d\d/S',
+                       $ts
+               ) ) {
+                       # TS_RFC2822, accepting a trailing comment.
+                       # See http://www.squid-cache.org/mail-archive/squid-users/200307/0122.html / r77171
                        # The regex is a superset of rfc2822 for readability
                        $strtime = strtok( $ts, ';' );
                } elseif ( preg_match( '/^[A-Z][a-z]{5,8}, \d\d-[A-Z][a-z]{2}-\d{2} \d\d:\d\d:\d\d/', $ts ) ) {
@@ -171,12 +195,17 @@ class MWTimestamp {
         * @since 1.20
         * @since 1.22 Uses Language::getHumanTimestamp to produce the timestamp
         *
-        * @param MWTimestamp|null $relativeTo The base timestamp to compare to (defaults to now)
-        * @param User|null $user User the timestamp is being generated for (or null to use main context's user)
-        * @param Language|null $lang Language to use to make the human timestamp (or null to use main context's language)
+        * @param MWTimestamp|null $relativeTo The base timestamp to compare to
+        *   (defaults to now).
+        * @param User|null $user User the timestamp is being generated for (or null
+        *   to use main context's user).
+        * @param Language|null $lang Language to use to make the human timestamp
+        *   (or null to use main context's language).
         * @return string Formatted timestamp
         */
-       public function getHumanTimestamp( MWTimestamp $relativeTo = null, User $user = null, Language $lang = null ) {
+       public function getHumanTimestamp( MWTimestamp $relativeTo = null,
+               User $user = null, Language $lang = null
+       ) {
                if ( $relativeTo === null ) {
                        $relativeTo = new self();
                }
@@ -298,11 +327,13 @@ class MWTimestamp {
 
                $ts = '';
                $diff = $this->diff( $relativeTo );
-               if ( wfRunHooks( 'GetRelativeTimestamp', array( &$ts, &$diff, $this, $relativeTo, $user, $lang ) ) ) {
+               if ( wfRunHooks(
+                       'GetRelativeTimestamp',
+                       array( &$ts, &$diff, $this, $relativeTo, $user, $lang )
+               ) ) {
                        $seconds = ( ( ( $diff->days * 24 + $diff->h ) * 60 + $diff->i ) * 60 + $diff->s );
                        $ts = wfMessage( 'ago', $lang->formatDuration( $seconds, $chosenIntervals ) )
-                               ->inLanguage( $lang )
-                               ->text();
+                               ->inLanguage( $lang )->text();
                }
 
                return $ts;
@@ -322,7 +353,8 @@ class MWTimestamp {
         *
         * @since 1.22
         * @param MWTimestamp $relativeTo Base time to calculate difference from
-        * @return DateInterval|bool The DateInterval object representing the difference between the two dates or false on failure
+        * @return DateInterval|bool The DateInterval object representing the
+        *   difference between the two dates or false on failure
         */
        public function diff( MWTimestamp $relativeTo ) {
                return $this->timestamp->diff( $relativeTo->timestamp );
index 4781667..cd75f0b 100644 (file)
  * @ingroup Parser
  */
 class MagicWord {
-       /**#@+
-        * @private
-        */
-       var $mId, $mSynonyms, $mCaseSensitive;
-       var $mRegex = '';
-       var $mRegexStart = '';
-       var $mRegexStartToEnd = '';
-       var $mBaseRegex = '';
-       var $mVariableRegex = '';
-       var $mVariableStartToEndRegex = '';
-       var $mModified = false;
-       var $mFound = false;
+       /**#@-*/
+
+       /** @var int */
+       public $mId;
+
+       /** @var array */
+       public $mSynonyms;
+
+       /** @var bool */
+       public $mCaseSensitive;
+
+       /** @var string */
+       private $mRegex = '';
+
+       /** @var string */
+       private $mRegexStart = '';
+
+       /** @var string */
+       private $mRegexStartToEnd = '';
+
+       /** @var string */
+       private $mBaseRegex = '';
+
+       /** @var string */
+       private $mVariableRegex = '';
+
+       /** @var string */
+       private $mVariableStartToEndRegex = '';
+
+       /** @var bool */
+       private $mModified = false;
+
+       /** @var bool */
+       private $mFound = false;
 
        static public $mVariableIDsInitialised = false;
        static public $mVariableIDs = array(
@@ -507,7 +529,12 @@ class MagicWord {
         */
        function matchAndRemove( &$text ) {
                $this->mFound = false;
-               $text = preg_replace_callback( $this->getRegex(), array( &$this, 'pregRemoveAndRecord' ), $text );
+               $text = preg_replace_callback(
+                       $this->getRegex(),
+                       array( &$this, 'pregRemoveAndRecord' ),
+                       $text
+               );
+
                return $this->mFound;
        }
 
@@ -517,7 +544,12 @@ class MagicWord {
         */
        function matchStartAndRemove( &$text ) {
                $this->mFound = false;
-               $text = preg_replace_callback( $this->getRegexStart(), array( &$this, 'pregRemoveAndRecord' ), $text );
+               $text = preg_replace_callback(
+                       $this->getRegexStart(),
+                       array( &$this, 'pregRemoveAndRecord' ),
+                       $text
+               );
+
                return $this->mFound;
        }
 
@@ -541,7 +573,12 @@ class MagicWord {
         * @return string
         */
        function replace( $replacement, $subject, $limit = -1 ) {
-               $res = preg_replace( $this->getRegex(), StringUtils::escapeRegexReplacement( $replacement ), $subject, $limit );
+               $res = preg_replace(
+                       $this->getRegex(),
+                       StringUtils::escapeRegexReplacement( $replacement ),
+                       $subject,
+                       $limit
+               );
                $this->mModified = $res !== $subject;
                return $res;
        }
@@ -674,10 +711,18 @@ class MagicWord {
  * @ingroup Parser
  */
 class MagicWordArray {
-       var $names = array();
-       var $hash;
-       var $baseRegex, $regex;
-       var $matches;
+       /** @var array */
+       public $names = array();
+
+       /** @var array */
+       private $hash;
+
+       private $baseRegex;
+
+       private $regex;
+
+       /** @todo Unused? */
+       private $matches;
 
        /**
         * @param array $names
index 3448c6a..582ba60 100644 (file)
@@ -142,30 +142,29 @@ END_STRING
  * of MimeMagic. Please use MimeMagic::singleton() to get that instance.
  */
 class MimeMagic {
-
        /**
-        * Mapping of media types to arrays of mime types.
+        * @var array Mapping of media types to arrays of mime types.
         * This is used by findMediaType and getMediaType, respectively
         */
-       var $mMediaTypes = null;
+       protected $mMediaTypes = null;
 
-       /** Map of mime type aliases
+       /** @var array Map of mime type aliases
         */
-       var $mMimeTypeAliases = null;
+       protected $mMimeTypeAliases = null;
 
-       /** map of mime types to file extensions (as a space separated list)
+       /** @var array Map of mime types to file extensions (as a space separated list)
         */
-       var $mMimeToExt = null;
+       protected $mMimeToExt = null;
 
-       /** map of file extensions types to mime types (as a space separated list)
+       /** @var array Map of file extensions types to mime types (as a space separated list)
         */
-       var $mExtToMime = null;
+       public $mExtToMime = null;
 
-       /** IEContentAnalyzer instance
+       /** @var IEContentAnalyzer
         */
-       var $mIEAnalyzer;
+       protected $mIEAnalyzer;
 
-       /** The singleton instance
+       /** @var MimeMagic The singleton instance
         */
        private static $instance = null;
 
@@ -323,13 +322,13 @@ class MimeMagic {
 
                        if ( count( $m ) > 1 ) {
                                $main = $m[0];
-                               for ( $i = 1; $i < count( $m ); $i += 1 ) {
+                               $mCount = count( $m );
+                               for ( $i = 1; $i < $mCount; $i += 1 ) {
                                        $mime = $m[$i];
                                        $this->mMimeTypeAliases[$mime] = $main;
                                }
                        }
                }
-
        }
 
        /**
@@ -861,8 +860,10 @@ class MimeMagic {
        private function detectMimeType( $file, $ext = true ) {
                global $wgMimeDetectorCommand;
 
-               if ( $ext ) { # TODO:  make $ext default to false. Or better, remove it.
-                       wfDebug( __METHOD__ . ": WARNING: use of the \$ext parameter is deprecated. Use improveTypeFromExtension(\$mime, \$ext) instead.\n" );
+               /** @todo Make $ext default to false. Or better, remove it. */
+               if ( $ext ) {
+                       wfDebug( __METHOD__ . ": WARNING: use of the \$ext parameter is deprecated. "
+                               . "Use improveTypeFromExtension(\$mime, \$ext) instead.\n" );
                }
 
                $m = null;
@@ -892,13 +893,16 @@ class MimeMagic {
                } elseif ( function_exists( "mime_content_type" ) ) {
 
                        # NOTE: this function is available since PHP 4.3.0, but only if
-                       # PHP was compiled with --with-mime-magic or, before 4.3.2, with --enable-mime-magic.
+                       # PHP was compiled with --with-mime-magic or, before 4.3.2, with
+                       # --enable-mime-magic.
                        #
-                       # On Windows, you must set mime_magic.magicfile in php.ini to point to the mime.magic file bundled with PHP;
-                       # sometimes, this may even be needed under linus/unix.
+                       # On Windows, you must set mime_magic.magicfile in php.ini to point
+                       # to the mime.magic file bundled with PHP; sometimes, this may even
+                       # be needed under *nix.
                        #
-                       # Also note that this has been DEPRECATED in favor of the fileinfo extension by PECL, see above.
-                       # see http://www.php.net/manual/en/ref.mime-magic.php for details.
+                       # Also note that this has been DEPRECATED in favor of the fileinfo
+                       # extension by PECL, see above.
+                       # See http://www.php.net/manual/en/ref.mime-magic.php for details.
 
                        $m = mime_content_type( $file );
                } else {
@@ -926,7 +930,8 @@ class MimeMagic {
                }
                if ( $ext ) {
                        if ( $this->isRecognizableExtension( $ext ) ) {
-                               wfDebug( __METHOD__ . ": refusing to guess mime type for .$ext file, we should have recognized it\n" );
+                               wfDebug( __METHOD__ . ": refusing to guess mime type for .$ext file, "
+                                       . "we should have recognized it\n" );
                        } else {
                                $m = $this->guessTypesForExtension( $ext );
                                if ( $m ) {
index ea359aa..d34ee03 100644 (file)
  * Handles the page protection UI and backend
  */
 class ProtectionForm {
-       /** A map of action to restriction level, from request or default */
-       var $mRestrictions = array();
+       /** @var array A map of action to restriction level, from request or default */
+       protected $mRestrictions = array();
 
-       /** The custom/additional protection reason */
-       var $mReason = '';
+       /** @var string The custom/additional protection reason */
+       protected $mReason = '';
 
-       /** The reason selected from the list, blank for other/additional */
-       var $mReasonSelection = '';
+       /** @var string The reason selected from the list, blank for other/additional */
+       protected $mReasonSelection = '';
 
-       /** True if the restrictions are cascading, from request or existing protection */
-       var $mCascade = false;
+       /** @var bool True if the restrictions are cascading, from request or existing protection */
+       protected $mCascade = false;
 
-       /** Map of action to "other" expiry time. Used in preference to mExpirySelection. */
-       var $mExpiry = array();
+       /** @var array Map of action to "other" expiry time. Used in preference to mExpirySelection. */
+       protected $mExpiry = array();
 
        /**
-        * Map of action to value selected in expiry drop-down list.
+        * @var array Map of action to value selected in expiry drop-down list.
         * Will be set to 'othertime' whenever mExpiry is set.
         */
-       var $mExpirySelection = array();
+       protected $mExpirySelection = array();
 
-       /** Permissions errors for the protect action */
-       var $mPermErrors = array();
+       /** @var array Permissions errors for the protect action */
+       protected $mPermErrors = array();
 
-       /** Types (i.e. actions) for which levels can be selected */
-       var $mApplicableTypes = array();
+       /** @var array Types (i.e. actions) for which levels can be selected */
+       protected $mApplicableTypes = array();
 
-       /** Map of action to the expiry time of the existing protection */
-       var $mExistingExpiry = array();
+       /** @var array Map of action to the expiry time of the existing protection */
+       protected $mExistingExpiry = array();
 
        function __construct( Page $article ) {
                global $wgUser;
@@ -209,7 +209,10 @@ class ProtectionForm {
                if ( $this->mTitle->getRestrictionTypes() === array() ) {
                        // No restriction types available for the current title
                        // this might happen if an extension alters the available types
-                       $wgOut->setPageTitle( wfMessage( 'protect-norestrictiontypes-title', $this->mTitle->getPrefixedText() ) );
+                       $wgOut->setPageTitle( wfMessage(
+                               'protect-norestrictiontypes-title',
+                               $this->mTitle->getPrefixedText()
+                       ) );
                        $wgOut->addWikiText( wfMessage( 'protect-norestrictiontypes-text' )->text() );
 
                        // Show the log in case protection was possible once
@@ -226,13 +229,20 @@ class ProtectionForm {
                                $titles .= '* [[:' . $title->getPrefixedText() . "]]\n";
                        }
 
-                       $wgOut->wrapWikiMsg( "<div id=\"mw-protect-cascadeon\">\n$1\n" . $titles . "</div>", array( 'protect-cascadeon', count( $cascadeSources ) ) );
+                       /** @todo FIXME: i18n issue, should use formatted number. */
+                       $wgOut->wrapWikiMsg(
+                               "<div id=\"mw-protect-cascadeon\">\n$1\n" . $titles . "</div>",
+                               array( 'protect-cascadeon', count( $cascadeSources ) )
+                       );
                }
 
                # Show an appropriate message if the user isn't allowed or able to change
                # the protection settings at this time
                if ( $this->disabled ) {
-                       $wgOut->setPageTitle( wfMessage( 'protect-title-notallowed', $this->mTitle->getPrefixedText() ) );
+                       $wgOut->setPageTitle(
+                               wfMessage( 'protect-title-notallowed',
+                                       $this->mTitle->getPrefixedText() )
+                       );
                        $wgOut->addWikiText( $wgOut->formatPermissionsErrorMessage( $this->mPermErrors, 'protect' ) );
                } else {
                        $wgOut->setPageTitle( wfMessage( 'protect-title', $this->mTitle->getPrefixedText() ) );
@@ -290,7 +300,13 @@ class ProtectionForm {
 
                $this->mCascade = $wgRequest->getBool( 'mwProtect-cascade' );
 
-               $status = $this->mArticle->doUpdateRestrictions( $this->mRestrictions, $expiry, $this->mCascade, $reasonstr, $wgUser );
+               $status = $this->mArticle->doUpdateRestrictions(
+                       $this->mRestrictions,
+                       $expiry,
+                       $this->mCascade,
+                       $reasonstr,
+                       $wgUser
+               );
 
                if ( !$status->isOK() ) {
                        $this->show( $wgOut->parseInline( $status->getWikiText() ) );
@@ -403,7 +419,11 @@ class ProtectionForm {
                                }
                                $show = htmlspecialchars( $show );
                                $value = htmlspecialchars( $value );
-                               $expiryFormOptions .= Xml::option( $show, $value, $this->mExpirySelection[$action] === $value ) . "\n";
+                               $expiryFormOptions .= Xml::option(
+                                       $show,
+                                       $value,
+                                       $this->mExpirySelection[$action] === $value
+                               ) . "\n";
                        }
                        # Add expiry dropdown
                        if ( $showProtectOptions && !$this->disabled ) {
@@ -526,7 +546,10 @@ class ProtectionForm {
                }
 
                if ( !$this->disabled ) {
-                       $out .= Html::hidden( 'wpEditToken', $wgUser->getEditToken( array( 'protect', $this->mTitle->getPrefixedDBkey() ) ) );
+                       $out .= Html::hidden(
+                               'wpEditToken',
+                               $wgUser->getEditToken( array( 'protect', $this->mTitle->getPrefixedDBkey() ) )
+                       );
                        $out .= Xml::closeElement( 'form' );
                        $wgOut->addScript( $this->buildCleanupScript() );
                }
index cf0a644..82dea0d 100644 (file)
  * @ingroup SpecialPage
  */
 abstract class QueryPage extends SpecialPage {
-       /**
-        * Whether or not we want plain listoutput rather than an ordered list
-        *
-        * @var bool
-        */
-       var $listoutput = false;
+       /** @var bool Whether or not we want plain listoutput rather than an ordered list */
+       protected $listoutput = false;
 
-       /**
-        * The offset and limit in use, as passed to the query() function
-        *
-        * @var int
-        */
-       var $offset = 0;
-       var $limit = 0;
+       /** @var int The offset and limit in use, as passed to the query() function */
+       protected $offset = 0;
+
+       /** @var int */
+       protected $limit = 0;
 
        /**
         * The number of rows returned by the query. Reading this variable
@@ -503,7 +497,7 @@ abstract class QueryPage extends SpecialPage {
                        list( $this->limit, $this->offset ) = $this->getRequest()->getLimitOffset();
                }
 
-               // TODO: Use doQuery()
+               // @todo Use doQuery()
                if ( !$this->isCached() ) {
                        # select one extra row for navigation
                        $res = $this->reallyDoQuery( $this->limit + 1, $this->offset );
@@ -595,7 +589,7 @@ abstract class QueryPage extends SpecialPage {
         * @param OutputPage $out OutputPage to print to
         * @param Skin $skin User skin to use
         * @param DatabaseBase $dbr Database (read) connection to use
-        * @param int $res Result pointer
+        * @param ResultWrapper $res Result pointer
         * @param int $num Number of available result rows
         * @param int $offset Paging offset
         */
@@ -610,7 +604,9 @@ abstract class QueryPage extends SpecialPage {
 
                        # $res might contain the whole 1,000 rows, so we read up to
                        # $num [should update this to use a Pager]
+                       // @codingStandardsIgnoreStart Generic.CodeAnalysis.ForLoopWithTestFunctionCall.NotAllowed
                        for ( $i = 0; $i < $num && $row = $res->fetchObject(); $i++ ) {
+                               // @codingStandardsIgnoreEnd
                                $line = $this->formatResult( $skin, $row );
                                if ( $line ) {
                                        $attr = ( isset( $row->usepatrol ) && $row->usepatrol && $row->patrolled == 0 )
@@ -668,7 +664,8 @@ abstract class QueryPage extends SpecialPage {
         * @param DatabaseBase $db
         * @param ResultWrapper $res
         */
-       function preprocessResults( $db, $res ) {}
+       function preprocessResults( $db, $res ) {
+       }
 
        /**
         * Similar to above, but packaging in a syndicated feed instead of a web page
@@ -687,6 +684,7 @@ abstract class QueryPage extends SpecialPage {
                $limit = min( $limit, $wgFeedLimit );
 
                if ( isset( $wgFeedClasses[$class] ) ) {
+                       /** @var RSSFeed|AtomFeed $feed */
                        $feed = new $wgFeedClasses[$class](
                                $this->feedTitle(),
                                $this->feedDesc(),
index 7c39617..d10b541 100644 (file)
  * List for revision table items for a single page
  */
 abstract class RevisionListBase extends ContextSource {
-       /**
-        * @var Title
-        */
-       var $title;
+       /** @var Title */
+       public $title;
+
+       /** @var array */
+       protected $ids;
 
-       var $ids, $res, $current;
+       protected $res;
+
+       /** @var bool|object */
+       protected $current;
 
        /**
         * Construct a revision list for a given title
@@ -131,11 +135,11 @@ abstract class RevisionListBase extends ContextSource {
  * Abstract base class for revision items
  */
 abstract class RevisionItemBase {
-       /** The parent RevisionListBase */
-       var $list;
+       /** @var RevisionListBase The parent */
+       protected $list;
 
-       /** The DB result row */
-       var $row;
+       /** The database result row */
+       protected $row;
 
        /**
         * @param RevisionListBase $list
@@ -288,7 +292,11 @@ class RevisionList extends RevisionListBase {
  * Item class for a live revision table row
  */
 class RevisionItem extends RevisionItemBase {
-       var $revision, $context;
+       /** @var Revision */
+       protected $revision;
+
+       /** @var RequestContext */
+       protected $context;
 
        public function __construct( $list, $row ) {
                parent::__construct( $list, $row );
index e8fa944..08816ad 100644 (file)
@@ -111,8 +111,8 @@ class SkinTemplate extends Skin {
         * roughly equivalent to PHPTAL 0.7.
         *
         * @param string $classname
-        * @param string $repository Subdirectory where we keep template files
-        * @param string $cache_dir
+        * @param bool|string $repository Subdirectory where we keep template files
+        * @param bool|string $cache_dir
         * @return QuickTemplate
         * @private
         */
@@ -1212,10 +1212,10 @@ class SkinTemplate extends Skin {
 
        /**
         * an array of edit links by default used for the tabs
+        * @param $content_navigation
         * @return array
-        * @private
         */
-       function buildContentActionUrls( $content_navigation ) {
+       private function buildContentActionUrls( $content_navigation ) {
 
                wfProfileIn( __METHOD__ );
 
@@ -1226,9 +1226,7 @@ class SkinTemplate extends Skin {
                $content_actions = array();
 
                foreach ( $content_navigation as $links ) {
-
                        foreach ( $links as $key => $value ) {
-
                                if ( isset( $value['redundant'] ) && $value['redundant'] ) {
                                        // Redundant tabs are dropped from content_actions
                                        continue;
@@ -1249,9 +1247,7 @@ class SkinTemplate extends Skin {
                                }
 
                                $content_actions[$key] = $value;
-
                        }
-
                }
 
                wfProfileOut( __METHOD__ );
@@ -1262,7 +1258,6 @@ class SkinTemplate extends Skin {
        /**
         * build array of common navigation links
         * @return array
-        * @private
         */
        protected function buildNavUrls() {
                global $wgUploadNavigationUrl;
@@ -1379,9 +1374,8 @@ class SkinTemplate extends Skin {
        /**
         * Generate strings used for xml 'id' names
         * @return string
-        * @private
         */
-       function getNameSpaceKey() {
+       protected function getNameSpaceKey() {
                return $this->getTitle()->getNamespaceKey();
        }
 }
@@ -2048,6 +2042,7 @@ abstract class BaseTemplate extends QuickTemplate {
         * If you pass "flat" as an option then the returned array will be a flat array
         * of footer icons instead of a key/value array of footerlinks arrays broken
         * up into categories.
+        * @param string $option
         * @return array|mixed
         */
        function getFooterLinks( $option = null ) {
@@ -2087,6 +2082,7 @@ abstract class BaseTemplate extends QuickTemplate {
         * in the list of footer icons. This is mostly useful for skins which only
         * display the text from footericons instead of the images and don't want a
         * duplicate copyright statement because footerlinks already rendered one.
+        * @param string $option
         * @return string
         */
        function getFooterIcons( $option = null ) {
@@ -2129,5 +2125,4 @@ abstract class BaseTemplate extends QuickTemplate {
 <?php $this->html( 'reporttime' ) ?>
 <?php
        }
-
 }
index 8198282..6578341 100644 (file)
@@ -1759,7 +1759,8 @@ class User {
                        // Already pinged?
                        if ( $count ) {
                                if ( $count >= $max ) {
-                                       wfDebugLog( 'ratelimit', $this->getName() . " tripped! $key at $count $summary" );
+                                       wfDebugLog( 'ratelimit', "User '{$this->getName()}' " .
+                                               "(IP {$this->getRequest()->getIP()}) tripped $key at $count $summary" );
                                        $triggered = true;
                                } else {
                                        wfDebug( __METHOD__ . ": ok. $key at $count $summary\n" );
index 554bfa6..ccf91dd 100644 (file)
@@ -1234,7 +1234,8 @@ class ApiMain extends ApiBase {
                        '    Victor Vasiliev',
                        '    Bryan Tong Minh',
                        '    Sam Reed',
-                       '    Yuri Astrakhan (creator, lead developer Sep 2006-Sep 2007, 2012-present)',
+                       '    Yuri Astrakhan (creator, lead developer Sep 2006-Sep 2007, 2012-2013)',
+                       '    Brad Jorsch (lead developer 2013-now)',
                        '',
                        'Please send your comments, suggestions and questions to mediawiki-api@lists.wikimedia.org',
                        'or file a bug report at https://bugzilla.wikimedia.org/'
index 73ab04d..e8f70fc 100644 (file)
@@ -1249,7 +1249,17 @@ class LocalFile extends File {
                }
 
                if ( $timestamp === false ) {
-                       $timestamp = $dbw->timestamp();
+                       $ltimestamp = $dbw->selectField( 'image', 'img_timestamp',
+                               array( 'img_name' => $this->getName() ), __METHOD__ );
+                       $ltime = $ltimestamp ? wfTimestamp( TS_UNIX, $ltimestamp ) : false;
+                       $ctime = time();
+                       // Avoid a timestamp that is not newer than the last version
+                       if ( $ctime > $ltime ) {
+                               $timestamp = $dbw->timestamp( $ctime );
+                       } else {
+                               sleep( 1 ); // fast enough uploads will go in to the future otherwise
+                               $timestamp = $dbw->timestamp( $ltime + 1 );
+                       }
                }
 
                $props['description'] = $comment;
index d897507..304508c 100644 (file)
@@ -702,8 +702,8 @@ class WebInstaller extends Installer {
                $html = $this->parse( $text, true );
 
                return "<div class=\"mw-help-field-container\">\n" .
-                       "<span class=\"mw-help-field-hint\">" . wfMessage( 'config-help' )->escaped() .
-                       "</span>\n" .
+                       "<span class=\"mw-help-field-hint\" title=\"" .  wfMessage( 'config-help-tooltip' )->escaped() . "\">" .
+                       wfMessage( 'config-help' )->escaped() . "</span>\n" .
                        "<span class=\"mw-help-field-data\">" . $html . "</span>\n" .
                        "</div>\n";
        }
@@ -1117,14 +1117,10 @@ class WebInstaller extends Installer {
         * @return string Html for download link
         */
        public function downloadLinkHook( $text, $attribs, $parser ) {
-               $img = Html::element( 'img', array(
-                       'src' => '../skins/common/images/download-32.png',
-                       'width' => '32',
-                       'height' => '32',
-               ) );
                $anchor = Html::rawElement( 'a',
                        array( 'href' => $this->getURL( array( 'localsettings' => 1 ) ) ),
-                       $img . ' ' . wfMessage( 'config-download-localsettings' )->parse() );
+                       wfMessage( 'config-download-localsettings' )->parse()
+               );
 
                return Html::rawElement( 'div', array( 'class' => 'config-download-link' ), $anchor );
        }
@@ -1161,4 +1157,4 @@ class WebInstaller extends Installer {
                return WebRequest::detectServer();
        }
 
-}
+}
\ No newline at end of file
index 8cd06ed..b19bdc0 100644 (file)
        "config-db-schema-help": "This schema will usually be fine.\nOnly change it if you know you need to.",
        "config-pg-test-error": "Cannot connect to database <strong>$1</strong>: $2",
        "config-sqlite-dir": "SQLite data directory:",
-       "config-sqlite-dir-help": "SQLite stores all data in a single file.\n\nThe directory you provide must be writable by the webserver during installation.\n\nIt should <strong>not</strong> be accessible via the web, this is why we're not putting it where your PHP files are.\n\nThe installer will write a <code>.htaccess</code> file along with it, but if that fails someone can gain access to your raw database.\nThat includes raw user data (email addresses, hashed passwords) as well as deleted revisions and other restricted data on the wiki.\n\nConsider putting the database somewhere else altogether, for example in <code>/var/lib/mediawiki/yourwiki</code>.",
+       "config-sqlite-dir-help": "SQLite stores all data in a single file.\n\nThe directory you provide must be writable by the webserver during installation.\n\nIt should <strong>not</strong> be accessible via the web; this is why we're not putting it where your PHP files are.\n\nThe installer will write a <code>.htaccess</code> file along with it, but if that fails someone can gain access to your raw database.\nThat includes raw user data (email addresses, hashed passwords) as well as deleted revisions and other restricted data on the wiki.\n\nConsider putting the database somewhere else altogether, for example in <code>/var/lib/mediawiki/yourwiki</code>.",
        "config-oracle-def-ts": "Default tablespace:",
        "config-oracle-temp-ts": "Temporary tablespace:",
        "config-type-mysql": "MySQL (or compatible)",
        "config-install-done": "<strong>Congratulations!</strong>\nYou have successfully installed MediaWiki.\n\nThe installer has generated a <code>LocalSettings.php</code> file.\nIt contains all your configuration.\n\nYou will need to download it and put it in the base of your wiki installation (the same directory as index.php). The download should have started automatically.\n\nIf the download was not offered, or if you cancelled it, you can restart the download by clicking the link below:\n\n$3\n\n<strong>Note:</strong> If you do not do this now, this generated configuration file will not be available to you later if you exit the installation without downloading it.\n\nWhen that has been done, you can <strong>[$2 enter your wiki]</strong>.",
        "config-download-localsettings": "Download <code>LocalSettings.php</code>",
        "config-help": "help",
+       "config-help-tooltip": "click to expand",
        "config-nofile": "File \"$1\" could not be found. Has it been deleted?",
        "config-extension-link": "Did you know that your wiki supports [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions extensions]?\n\nYou can browse [//www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category extensions by category] or the [//www.mediawiki.org/wiki/Extension_Matrix Extension Matrix] to see the full list of extensions.",
        "mainpagetext": "<strong>MediaWiki has been successfully installed.</strong>",
index 518f7aa..034987b 100644 (file)
        "config-download-localsettings": "Descargar archivo <code>LocalSettings.php</code>",
        "config-help": "Ayuda",
        "config-nofile": "El archivo \"$1\" no se pudo encontrar. ¿Se ha eliminado?",
-       "config-extension-link": "¿Sabías que tu wiki admite [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions extensiones]?\n\nPuedes navegar por las [//www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category categorías] o visitar la [//www.mediawiki.org/wiki/Extension_Matrix matriz de extensiones] para ver una lista completa.",
+       "config-extension-link": "¿Sabías que tu wiki admite [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions extensiones]?\n\nPuedes navegar por las [//www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category categorías] o visitar el [//www.mediawiki.org/wiki/Extension_Matrix centro de extensiones] para ver una lista completa.",
        "mainpagetext": "'''MediaWiki ha sido instalado con éxito.'''",
        "mainpagedocfooter": "Consulta la [//meta.wikimedia.org/wiki/Ayuda:Guía del usuario de contenidos] para obtener información sobre el uso del software wiki.\n\n== Empezando ==\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista de ajustes de configuración]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ/es FAQ de MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de correo de anuncios de distribución de MediaWiki]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Regionalizar MediaWiki para tu idioma]"
 }
index 67bc5af..3a16079 100644 (file)
        "config-install-done": "Parameters:\n* $1 is the URL to LocalSettings download\n* $2 is a link to the wiki.\n* $3 is a download link with attached download icon. The config-download-localsettings message will be used as the link text.",
        "config-download-localsettings": "The link text used in the download link in config-install-done.",
        "config-help": "This is used in help boxes.\n{{Identical|Help}}",
+       "config-help-tooltip": "Tooltip for the 'help' links ({{msg-mw|config-help}}), to make it clear they'll expand in place rather than open a new page",
        "config-nofile": "Used as failure message. Parameters:\n* $1 - filename",
        "config-extension-link": "Shown on last page of installation to inform about possible extensions.",
        "mainpagetext": "Along with {{msg-mw|mainpagedocfooter}}, the text you will see on the Main Page when your wiki is installed.",
index 11425e9..e4fc54b 100644 (file)
@@ -267,118 +267,117 @@ class SpecialAllpages extends IncludableSpecialPage {
                }
 
                if ( $this->including() ) {
-                       $out2 = '';
+                       $output->addHTML( $out );
+                       return;
+               }
+
+               if ( $from == '' ) {
+                       // First chunk; no previous link.
+                       $prevTitle = null;
                } else {
-                       if ( $from == '' ) {
-                               // First chunk; no previous link.
-                               $prevTitle = null;
-                       } else {
-                               # Get the last title from previous chunk
-                               $dbr = wfGetDB( DB_SLAVE );
-                               $res_prev = $dbr->select(
-                                       'page',
-                                       'page_title',
-                                       array( 'page_namespace' => $namespace, 'page_title < ' . $dbr->addQuotes( $from ) ),
-                                       __METHOD__,
-                                       array( 'ORDER BY' => 'page_title DESC',
-                                               'LIMIT' => $this->maxPerPage, 'OFFSET' => ( $this->maxPerPage - 1 )
-                                       )
-                               );
+                       # Get the last title from previous chunk
+                       $dbr = wfGetDB( DB_SLAVE );
+                       $res_prev = $dbr->select(
+                               'page',
+                               'page_title',
+                               array( 'page_namespace' => $namespace, 'page_title < ' . $dbr->addQuotes( $from ) ),
+                               __METHOD__,
+                               array( 'ORDER BY' => 'page_title DESC',
+                                       'LIMIT' => $this->maxPerPage, 'OFFSET' => ( $this->maxPerPage - 1 )
+                               )
+                       );
 
-                               # Get first title of previous complete chunk
-                               if ( $dbr->numrows( $res_prev ) >= $this->maxPerPage ) {
-                                       $pt = $dbr->fetchObject( $res_prev );
-                                       $prevTitle = Title::makeTitle( $namespace, $pt->page_title );
+                       # Get first title of previous complete chunk
+                       if ( $dbr->numrows( $res_prev ) >= $this->maxPerPage ) {
+                               $pt = $dbr->fetchObject( $res_prev );
+                               $prevTitle = Title::makeTitle( $namespace, $pt->page_title );
+                       } else {
+                               # The previous chunk is not complete, need to link to the very first title
+                               # available in the database
+                               $options = array( 'LIMIT' => 1 );
+                               if ( !$dbr->implicitOrderby() ) {
+                                       $options['ORDER BY'] = 'page_title';
+                               }
+                               $reallyFirstPage_title = $dbr->selectField( 'page', 'page_title',
+                                       array( 'page_namespace' => $namespace ), __METHOD__, $options );
+                               # Show the previous link if it s not the current requested chunk
+                               if ( $from != $reallyFirstPage_title ) {
+                                       $prevTitle = Title::makeTitle( $namespace, $reallyFirstPage_title );
                                } else {
-                                       # The previous chunk is not complete, need to link to the very first title
-                                       # available in the database
-                                       $options = array( 'LIMIT' => 1 );
-                                       if ( !$dbr->implicitOrderby() ) {
-                                               $options['ORDER BY'] = 'page_title';
-                                       }
-                                       $reallyFirstPage_title = $dbr->selectField( 'page', 'page_title',
-                                               array( 'page_namespace' => $namespace ), __METHOD__, $options );
-                                       # Show the previous link if it s not the current requested chunk
-                                       if ( $from != $reallyFirstPage_title ) {
-                                               $prevTitle = Title::makeTitle( $namespace, $reallyFirstPage_title );
-                                       } else {
-                                               $prevTitle = null;
-                                       }
+                                       $prevTitle = null;
                                }
                        }
+               }
 
-                       $self = $this->getPageTitle();
-
-                       $nsForm = $this->namespaceForm( $namespace, $from, $to, $hideredirects );
-                       $out2 = Xml::openElement( 'table', array( 'class' => 'mw-allpages-table-form' ) ) .
-                               '<tr>
-                                                       <td>' .
-                               $nsForm .
-                               '</td>
-                                                       <td class="mw-allpages-nav">' .
-                               Linker::link( $self, $this->msg( 'allpages' )->escaped() );
-
-                       # Do we put a previous link ?
-                       if ( isset( $prevTitle ) && $pt = $prevTitle->getText() ) {
-                               $query = array( 'from' => $prevTitle->getText() );
+               $self = $this->getPageTitle();
 
-                               if ( $namespace ) {
-                                       $query['namespace'] = $namespace;
-                               }
+               $topLinks = array(
+                       Linker::link( $self, $this->msg( 'allpages' )->escaped() )
+               );
+               $bottomLinks = array();
 
-                               if ( $hideredirects ) {
-                                       $query['hideredirects'] = $hideredirects;
-                               }
+               # Do we put a previous link ?
+               if ( isset( $prevTitle ) && $pt = $prevTitle->getText() ) {
+                       $query = array( 'from' => $prevTitle->getText() );
 
-                               $prevLink = Linker::linkKnown(
-                                       $self,
-                                       $this->msg( 'prevpage', $pt )->escaped(),
-                                       array(),
-                                       $query
-                               );
-                               $out2 = $this->getLanguage()->pipeList( array( $out2, $prevLink ) );
+                       if ( $namespace ) {
+                               $query['namespace'] = $namespace;
                        }
 
-                       if ( $n == $this->maxPerPage && $s = $res->fetchObject() ) {
-                               # $s is the first link of the next chunk
-                               $t = Title::makeTitle( $namespace, $s->page_title );
-                               $query = array( 'from' => $t->getText() );
+                       if ( $hideredirects ) {
+                               $query['hideredirects'] = $hideredirects;
+                       }
 
-                               if ( $namespace ) {
-                                       $query['namespace'] = $namespace;
-                               }
+                       $prevLink = Linker::linkKnown(
+                               $self,
+                               $this->msg( 'prevpage', $pt )->escaped(),
+                               array(),
+                               $query
+                       );
+                       $topLinks[] = $prevLink;
+                       $bottomLinks[] = $prevLink;
+               }
 
-                               if ( $hideredirects ) {
-                                       $query['hideredirects'] = $hideredirects;
-                               }
+               if ( $n == $this->maxPerPage && $s = $res->fetchObject() ) {
+                       # $s is the first link of the next chunk
+                       $t = Title::makeTitle( $namespace, $s->page_title );
+                       $query = array( 'from' => $t->getText() );
 
-                               $nextLink = Linker::linkKnown(
-                                       $self,
-                                       $this->msg( 'nextpage', $t->getText() )->escaped(),
-                                       array(),
-                                       $query
-                               );
-                               $out2 = $this->getLanguage()->pipeList( array( $out2, $nextLink ) );
+                       if ( $namespace ) {
+                               $query['namespace'] = $namespace;
                        }
-                       $out2 .= "</td></tr></table>";
-               }
 
-               $output->addHTML( $out2 . $out );
+                       if ( $hideredirects ) {
+                               $query['hideredirects'] = $hideredirects;
+                       }
 
-               $links = array();
-               if ( isset( $prevLink ) ) {
-                       $links[] = $prevLink;
+                       $nextLink = Linker::linkKnown(
+                               $self,
+                               $this->msg( 'nextpage', $t->getText() )->escaped(),
+                               array(),
+                               $query
+                       );
+                       $topLinks[] = $nextLink;
+                       $bottomLinks[] = $nextLink;
                }
 
-               if ( isset( $nextLink ) ) {
-                       $links[] = $nextLink;
-               }
+               $nsForm = $this->namespaceForm( $namespace, $from, $to, $hideredirects );
+               $out2 = Xml::openElement( 'table', array( 'class' => 'mw-allpages-table-form' ) ) .
+                       '<tr>
+                                               <td>' .
+                       $nsForm .
+                       '</td>
+                                               <td class="mw-allpages-nav">' .
+                       $this->getLanguage()->pipeList( $topLinks ) .
+                       '</td></tr></table>';
+
+               $output->addHTML( $out2 . $out );
 
-               if ( count( $links ) ) {
+               if ( count( $bottomLinks ) ) {
                        $output->addHTML(
                                Html::element( 'hr' ) .
                                        Html::rawElement( 'div', array( 'class' => 'mw-allpages-nav' ),
-                                               $this->getLanguage()->pipeList( $links )
+                                               $this->getLanguage()->pipeList( $bottomLinks )
                                        )
                        );
                }
index b2ba785..68d3d11 100644 (file)
        "prefs-emailconfirm-label": "E-posbevestiging:",
        "youremail": "E-posadres:",
        "username": "{{GENDER:$1|Gebruikersnaam}}:",
-       "uid": "{{GENDER:$1|Gebruiker-ID}}:",
        "prefs-memberingroups": "{{GENDER:$2|Lid}} van {{PLURAL:$1|groep|groepe}}:",
        "prefs-registration": "Registrasiedatum:",
        "yourrealname": "Regte naam:",
index 2f93057..4649132 100644 (file)
        "prefs-emailconfirm-label": "تأكيد البريد الإلكتروني:",
        "youremail": "البريد:",
        "username": "{{GENDER:$1|اسم المستخدم|اسم المستخدمة}}:",
-       "uid": "رقم {{GENDER:$1|المستخدم|المستخدمة}}:",
        "prefs-memberingroups": "{{GENDER:$2|عضو|عضوة}} في {{PLURAL:$1|مجموعة|مجموعة|مجموعتي|مجموعات}}:",
        "prefs-registration": "وقت التسجيل:",
        "yourrealname": "الاسم الحقيقي:",
index b4bcaf5..c4f45d0 100644 (file)
        "prefs-emailconfirm-label": "ইমেইল নিশ্চিতকৰণ:",
        "youremail": "আপোনাৰ ই-মেইল *",
        "username": "{{GENDER:$1|সদস্যনাম}}:",
-       "uid": "{{GENDER:$1|User}} চিহ্ন:",
        "prefs-memberingroups": "{{PLURAL:$1|গোট|গোটসমূহৰ}} {{GENDER:$2|সদস্য}} :",
        "prefs-registration": "পঞ্জীয়ন কৰাৰ সময়:",
        "yourrealname": "প্ৰকৃত নাম:",
index 6b1b0cc..bb61034 100644 (file)
        "prefs-emailconfirm-label": "Confirmación del corréu:",
        "youremail": "Corréu electrónicu:",
        "username": "Nome d'{{GENDER:$1|usuariu|usuaria}}:",
-       "uid": "ID {{GENDER:$1|del usuariu|de la usuaria}}:",
        "prefs-memberingroups": "{{GENDER:$2|Miembru}} {{PLURAL:$1|del grupu|de los grupos}}:",
        "prefs-registration": "Hora del rexistru:",
        "yourrealname": "Nome real:",
index d86190a..b51d2b2 100644 (file)
        "prefs-emailconfirm-label": "ایمیل دوغرولاماسی:",
        "youremail": "ایمیل:",
        "username": "{{GENDER:$1|ایستیفاده‌چی آدی}}:",
-       "uid": "{{GENDER:$1|ایستیفاده‌چی}} ID:",
        "prefs-memberingroups": "{{PLURAL:$1|بیر|$1}} قروپ {{GENDER:$2|عوضو}}و:",
        "prefs-registration": "یازیلماق واختی:",
        "yourrealname": "دوغرو آد:",
index 7fd07b4..701b014 100644 (file)
        "parser-template-recursion-depth-warning": "Перавышана мяжа глыбіні рэкурсіі шаблёнаў ($1)",
        "language-converter-depth-warning": "Перавышанае абмежаваньне глыбіні канвэртару варыянтаў мовы ($1)",
        "node-count-exceeded-category": "Старонкі зь перавышанай колькасьцю вузлоў",
+       "node-count-exceeded-category-desc": "Катэгорыя для старонак, на якіх перавышаная колькасьць вузлоў.",
        "node-count-exceeded-warning": "Старонка перавысіла дазволеную колькасьць вузлоў",
        "expansion-depth-exceeded-category": "Старонкі зь перавышанай глыбінёй уключэньня",
        "expansion-depth-exceeded-warning": "Старонка перавысіла дазволеную глыбіню ўключэньняў",
        "prefs-emailconfirm-label": "Пацьверджаньне адрасу электроннай пошты:",
        "youremail": "Адрас электроннай пошты:",
        "username": "Імя {{GENDER:$1|ўдзельніка|ўдзельніцы}}:",
-       "uid": "ID {{GENDER:$1|удзельніка|удзельніцы}}:",
        "prefs-memberingroups": "{{GENDER:$2|Удзельнік|Удзельніца}} {{PLURAL:$1|1=групы|групаў}}:",
        "prefs-registration": "Час рэгістрацыі:",
        "yourrealname": "Сапраўднае імя:",
index b615b1f..24510b8 100644 (file)
        "prefs-emailconfirm-label": "ই-মেইল নিশ্চিতকরণ:",
        "youremail": "ইমেইল *",
        "username": "{{GENDER:$1|ব্যবহারকারী নাম}}:",
-       "uid": "{{GENDER:$1|ব্যবহারকারী}} নং (ID):",
        "prefs-memberingroups": "{{PLURAL:$1|দলের|দলসমূহের}} {{GENDER:$2|সদস্য}}:",
        "prefs-registration": "নিবন্ধের সময়:",
        "yourrealname": "আসল নাম *",
index c8fc14a..4a6d6ce 100644 (file)
        "prefs-emailconfirm-label": "Kadarnaat ar postel :",
        "youremail": "Postel :",
        "username": "{{GENDER:$1|Anv implijer|Anv implijerez}}:",
-       "uid": "{{GENDER:$1|Niv. identelezh an implijer|Niv. identelezh an implijerez}}:",
        "prefs-memberingroups": "{{GENDER:$2|Ezel}} eus {{PLURAL:$1|ar strollad|ar strolladoù}} :",
        "prefs-registration": "Deiziad enskrivañ :",
        "yourrealname": "Anv gwir*",
index aab937e..48922ec 100644 (file)
        "prefs-emailconfirm-label": "Confirmació de correu electrònic:",
        "youremail": "Correu electrònic:",
        "username": "{{GENDER:$1|Nom d'usuari}}:",
-       "uid": "{{GENDER:$1|Usuari}} Identificador d'usuari:",
        "prefs-memberingroups": "{{GENDER:$2|Membre}} {{PLURAL:$1|del grup|dels grups}}:",
        "prefs-registration": "Hora de registre:",
        "yourrealname": "Nom real *",
index 11dac8d..96bd1ff 100644 (file)
        "prefs-emailconfirm-label": "Бакъ яр электрони почт:",
        "youremail": "Электронан почта:",
        "username": "{{GENDER:$1|Декъашхочун цӀе}}:",
-       "uid": "Декъашхочун {{GENDER:$1|код}}:",
        "prefs-memberingroups": "{{GENDER:$1|Тобана|Тобаншан}} {{PLURAL:$2|декъашхо|декъашхой}}:",
        "prefs-registration": "ДӀаяздар кхолийна хан:",
        "yourrealname": "Хьан бакъ цӀе:",
index 782d910..87822ac 100644 (file)
        "prefs-emailconfirm-label": "پشتڕاستکردنەوەی ئیمەیل:",
        "youremail": "ئیمەیل:",
        "username": "{{GENDER:$1|ناوی به‌کارھێنەر}}:",
-       "uid": "پێناسەی {{GENDER:$1|به‌کارھێنەر}}:",
        "prefs-memberingroups": "{{GENDER:$2|ئەندامی}} {{PLURAL:$1|گرووپی|گرووپەکانی}}:",
        "prefs-registration": "کاتی خۆتۆمارکردن:",
        "yourrealname": "ناوی ڕاستی:",
index 91e2f67..bff169d 100644 (file)
        "parser-template-recursion-depth-warning": "Překročen limit hloubky rekurzivního vkládání šablon ($1)",
        "language-converter-depth-warning": "Překročen limit vnoření u jazykové konverze ($1)",
        "node-count-exceeded-category": "Stránky překračující počet uzlů",
+       "node-count-exceeded-category-desc": "Kategorie pro stránky, kde je překročen počet uzlů.",
        "node-count-exceeded-warning": "Stránka překročila počet uzlů",
        "expansion-depth-exceeded-category": "Stránky překračující hloubku expanze",
+       "expansion-depth-exceeded-category-desc": "Toto je kategorie pro stránky, ve kterých je překročena hloubka expanze.",
        "expansion-depth-exceeded-warning": "Stránka překročila hloubku expanze",
        "parser-unstrip-loop-warning": "Detekováno zacyklení unstrip",
        "parser-unstrip-recursion-limit": "Překročen limit rekurze unstrip ($1)",
        "prefs-emailconfirm-label": "Ověření e-mailu:",
        "youremail": "E-mail:",
        "username": "{{GENDER:$1|Uživatelské jméno}}:",
-       "uid": "{{GENDER:$1|Uživatelské}} ID:",
        "prefs-memberingroups": "{{GENDER:$2|Člen|Členka}} {{PLURAL:$1|skupiny|skupin}}:",
        "prefs-registration": "Čas registrace:",
        "yourrealname": "Vaše skutečné jméno:",
        "right-move": "Přesouvání stránek",
        "right-move-subpages": "Přesouvání stránek i s jejich podstránkami",
        "right-move-rootuserpages": "Přesouvání kořenových uživatelských stránek",
+       "right-move-categorypages": "Přesouvání stránek kategorií",
        "right-movefile": "Přesouvání souborů",
        "right-suppressredirect": "Nevytváření přesměrování po přesunu stránky",
        "right-upload": "Nahrávání souborů",
        "action-move": "přesunout tuto stránku",
        "action-move-subpages": "přesunout tuto stránku a její podstránky",
        "action-move-rootuserpages": "přesouvat kořenové uživatelské stránky",
+       "action-move-categorypages": "přesouvat stránky kategorií",
        "action-movefile": "přesunout tento soubor",
        "action-upload": "nahrát tento soubor",
        "action-reupload": "přepsat tento existující soubor",
        "movepagetalktext": "Přidružená diskusní stránka, existuje-li, bude automaticky přesunuta společně se stránkou, '''pokud:'''\n* dosud neexistuje neprázdná diskusní stránka pod novým jménem a\n* nezrušíte křížek ve formuláři.\n\nV těchto případech musíte přesunout nebo sloučit stránky manuálně, přejete-li si to.",
        "movearticle": "Přesunout stránku:",
        "moveuserpage-warning": "'''Upozornění:''' Chystáte se přesunout uživatelskou stránku. Uvědomte si prosím, že bude přesunuta pouze tato stránka, ale uživatel ''nebude'' přejmenován.",
+       "movecategorypage-warning": "<strong>Upozornění:</strong> Chystáte se přesunout stránku kategorie. Uvědomte si, že bude přesunuta pouze tato stránka a že žádné stránky v původní kategorii <em>nebudou</em> do nové překategorizovány.",
        "movenologintext": "Pro přesouvání stránek se musíte [[Special:UserLogin|přihlásit]].",
        "movenotallowed": "Nemáte oprávnění k přesunu stránek.",
        "movenotallowedfile": "Nemáte právo přesouvat soubory.",
        "cant-move-user-page": "Nemáte oprávnění přesouvat uživatelské stránky.",
        "cant-move-to-user-page": "Nemáte oprávnění přesouvat na uživatelskou stránku (pouze na podstránku uživatelské stránky).",
+       "cant-move-category-page": "Nemáte oprávnění přesouvat stránky kategorií.",
+       "cant-move-to-category-page": "Nemáte oprávnění přesunout stránku na stránku kategorie.",
        "newtitle": "Na nový název:",
        "move-watch": "Sledovat tuto stránku",
        "movepagebtn": "Přesunout stránku",
        "newimages-summary": "Na této speciální stránce se zobrazují poslední načtené soubory.",
        "newimages-legend": "Filtr",
        "newimages-label": "Název souboru (nebo jeho část):",
+       "newimages-showbots": "Zobrazit soubory načtené boty",
        "noimages": "Není co zobrazit.",
        "ilsubmit": "Hledat",
        "bydate": "podle data",
        "watchlistedit-raw-done": "Seznam vašich sledovaných stránek byl aktualizován.",
        "watchlistedit-raw-added": "{{PLURAL:$1|Byla přidána 1 položka|Byly přidány $1 položky|Bylo přidáno $1 položek}}:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|Byla odstraněna položka|Byly odstraněny $1 položky|Bylo odstraněno $1 položek}}:",
+       "watchlistedit-clear-title": "Vyprázdnění seznamu sledovaných stránek",
+       "watchlistedit-clear-legend": "Vyprázdnit seznam sledovaných stránek",
+       "watchlistedit-clear-explain": "Z vašeho seznamu sledovaných stránek budou odstraněny všechny názvy",
+       "watchlistedit-clear-titles": "Názvy:",
+       "watchlistedit-clear-submit": "Vyprázdnit seznam sledovaných stránek (natrvalo!)",
+       "watchlistedit-clear-done": "Váš seznam sledovaných stránek byl vyprázdněn.",
+       "watchlistedit-clear-removed": "{{PLURAL:$1|Byl odstraněn 1 název|Byly odstraněny $1 názvy|Bylo odstraněno $1 názvů}}:",
+       "watchlistedit-too-many": "Seznam obsahuje příliš mnoho stránek, než aby se zde daly zobrazit.",
+       "watchlisttools-clear": "Vyprázdnit seznam sledovaných stránek",
        "watchlisttools-view": "Zobrazit změny sledovaných stránek",
        "watchlisttools-edit": "Zobrazit a editovat seznam sledovaných stránek",
        "watchlisttools-raw": "Editovat textový soubor sledovaných stránek",
        "limitreport-expansiondepth": "Největší hloubka expanze",
        "limitreport-expensivefunctioncount": "Počet náročných funkcí syntaktického analyzátoru",
        "expandtemplates": "Substituce šablon",
-       "expand_templates_intro": "Tato speciální stránka zpracuje text a rekurzivně rozbalí všechny použité šablony.\nTaké rozbalí podporované funkce syntaktického analyzátoru jako\n<code><nowiki>{{</nowiki>#language:…}}</code> a proměnné jako\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.\nV podstatě rozbalí všechno v dvojitých složených závorkách.",
+       "expand_templates_intro": "Tato speciální stránka zpracuje text a rekurzivně rozbalí všechny použité šablony.\nTaké rozbalí podporované funkce syntaktického analyzátoru jako\n<code><nowiki>{{</nowiki>#language:…}}</code> a proměnné jako\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.\nV podstatě rozbalí téměř všechno v dvojitých složených závorkách.",
        "expand_templates_title": "Název stránky kvůli kontextu pro {{FULLPAGENAME}} apod.:",
        "expand_templates_input": "Vstupní text:",
        "expand_templates_output": "Výstup",
index 92da2fb..9094b9c 100644 (file)
        "prefs-emailconfirm-label": "Cadarnhau'r e-bost:",
        "youremail": "Eich cyfeiriad e-bost",
        "username": "{{GENDER:$1|Enw defnyddiwr}}:",
-       "uid": "{{GENDER:$1|ID y defnyddiwr}}:",
        "prefs-memberingroups": "Yn {{GENDER:$2|aelod}} o'r {{PLURAL:$1|grŵp|grŵp|grwpiau}} canlynol:",
        "prefs-registration": "Amser dechrau'r cyfrif:",
        "yourrealname": "Eich enw cywir*",
index 811cb9d..4c89c45 100644 (file)
@@ -81,7 +81,7 @@
        "tog-hidepatrolled": "Kontrollierte Änderungen in den „Letzten Änderungen“ ausblenden",
        "tog-newpageshidepatrolled": "Kontrollierte Seiten bei den „Neuen Seiten“ ausblenden",
        "tog-extendwatchlist": "Beobachtungsliste erweitern, um statt nur der letzten Änderung alle Änderungen anzuzeigen.",
-       "tog-usenewrc": "Änderungen auf „Letzte Änderungen“ und Beobachtungsliste nach Seite gruppieren",
+       "tog-usenewrc": "Änderungen auf „Letzte Änderungen“ und der Beobachtungsliste nach Seite gruppieren",
        "tog-numberheadings": "Überschriften automatisch nummerieren",
        "tog-showtoolbar": "Bearbeiten-Werkzeugleiste anzeigen",
        "tog-editondblclick": "Seiten mit Doppelklick bearbeiten",
        "recentchangesdays-max": "Maximal $1 {{PLURAL:$1|Tag|Tage}}",
        "recentchangescount": "Anzahl der standardmäßig angezeigten Bearbeitungen:",
        "prefs-help-recentchangescount": "Dies umfasst die Liste der letzten Änderungen, die Versionsgeschichte und die Logbücher.",
-       "prefs-help-watchlist-token2": "Dies ist der geheime Schlüssel zum Webfeed deiner Beobachtungsliste.\nJeder, der ihn kennt, kann deine Beobachtungsliste lesen. Teile ihn deshalb nicht.\n[[Special:ResetTokens|Klicke hier, wenn du ihn zurücksetzen musst]].",
+       "prefs-help-watchlist-token2": "Dies ist der geheime Schlüssel zum Webfeed deiner Beobachtungsliste.\nJeder, der ihn kennt, kann deine Beobachtungsliste lesen. Teile ihn deshalb nicht Anderen mit.\nSofern notwendig, [[Special:ResetTokens|kannst du ihn zurücksetzen]].",
        "savedprefs": "Deine Einstellungen wurden gespeichert.",
        "timezonelegend": "Zeitzone:",
        "localtime": "Ortszeit:",
        "prefs-emailconfirm-label": "E-Mail-Bestätigung:",
        "youremail": "E-Mail-Adresse:",
        "username": "{{GENDER:$1|Benutzername}}:",
-       "uid": "{{GENDER:$1|Benutzerkennung}}:",
        "prefs-memberingroups": "{{GENDER:$2|Mitglied}} der {{PLURAL:$1|Benutzergruppe|Benutzergruppen}}:",
        "prefs-memberingroups-type": "$2",
        "prefs-registration": "Anmeldezeitpunkt:",
index bee85c3..46842f9 100644 (file)
        "page-atom-feed": "\"$1\" Cıresnayışê atomi",
        "feed-atom": "Atom",
        "feed-rss": "RSS",
-       "red-link-title": "$1 (çınya)",
+       "red-link-title": "$1 (pele çıniya)",
        "sort-descending": "Rêzkerdışo kêmbiyaye",
        "sort-ascending": "Rêzkerdışo zêdiyaye",
        "nstab-main": "Wesiqe",
        "mergehistory-empty": "Revizyonî yew nibenê.",
        "mergehistory-success": "$3 {{PLURAL:$3|revizyonê|revizyonê}} [[:$1]] u [[:$2]] yew biyê.",
        "mergehistory-fail": "Tarixê pele yew nibeno, ma rica kenê ke pel u wext control bike.",
-       "mergehistory-no-source": "Pela çime $1 çini yo.",
+       "mergehistory-no-source": "Pela çımeyê $1 çıniya.",
        "mergehistory-no-destination": "Pela destinasyoni $1 çini yo.",
        "mergehistory-invalid-source": "Pela çime gani yew seroğê raşt biy.",
        "mergehistory-invalid-destination": "Pela destinasyonî gani yew seroğê raşt biy.",
        "prefs-emailconfirm-label": "Tesdiqiya E-posta:",
        "youremail": "E-Mail (mecbur niyo) *:",
        "username": "{{GENDER:$1|Nameyê karberi}}:",
-       "uid": "Kamiya {{GENDER:$1|karberi}}:",
        "prefs-memberingroups": "{{GENDER:$2|Ezayê}} {{PLURAL:$1|grube|gruban}}:",
        "prefs-memberingroups-type": "$1",
        "prefs-registration": "Wextê qeydbiyayışi",
        "filename-toolong": "Nameyê dosyayan 240 bayt ra derg do nêbo.",
        "badfilename": "Nameyanê dosyayî ''$1'' rê vurneyî biye.",
        "filetype-mime-mismatch": "Derg kerdıştê Dosyada \".$1\" u ($2) MIME tipiya cıya pêro nina.",
-       "filetype-badmime": "Dosyaya ke tipê MIME \"$1\"i de bar nêbena.",
+       "filetype-badmime": "Dosyeyê ke tipê MIME \"$1\" derê nêşenê bar bıbê.",
        "filetype-bad-ie-mime": "na dosya bar nebena çunke Internet Explorer na dosya \"$1\" zerarın vinena.",
        "filetype-unwanted-type": "'''\".$1\"''' na tewırê dosyayi nêwazyena. pêşniyaz biyaye {{PLURAL:$3|tewırê dosyayi|tewırê dosyayi}} $2.",
        "filetype-banned-type": "'''\".$1\"''' {{PLURAL:$4|Ena babeta dosya qebul ne vinena|Ena babeta dosya qebul ne vinena|Ena babeta dosya qebul ne vinena}}. Eke cırê izin deyayo $2. {{PLURAL:$3|Babatan dosyayan|babeta dosyayan}}",
        "upload-copy-upload-invalid-domain": "Na domain ra kopyayê barkerdışanê nêbenê.",
        "backend-fail-stream": "$1 nê vırazeyê",
        "backend-fail-backup": "$1 nê wendeyê",
-       "backend-fail-notexists": "$1 name dı dosya çına.",
+       "backend-fail-notexists": "Dosyaya $1 çıniya.",
        "backend-fail-hashes": "Şınasiya dosyaya gırotışê cı nêgêriya.",
        "backend-fail-notsame": "Zey $1 ju dosya xora  esta.",
        "backend-fail-invalidpath": "$1 rayê da depo kerdışa raştay niya.",
        "filerevert-comment": "Sebeb:",
        "filerevert-defaultcomment": "Versiyonê $2, $1 rê reyna ard",
        "filerevert-submit": "Reyna biyere",
-       "filerevert-success": "'''[[Media:$1|$1]]''', [$4 versiyonê $3, $2]i peyser açarna.",
+       "filerevert-success": "'''[[Media:$1|$1]]''' peyser çarna ra [versiyonanê $4, $3, $2].",
        "filerevert-badversion": "Vesiyonê lokalê verniyê eno dosya pê ena pulêwext de çin o.",
        "filedelete": "$1 bestere",
        "filedelete-legend": "Dosya bestere",
index 8dc4ee3..0756701 100644 (file)
        "prefs-emailconfirm-label": "E-mailowe wobkšuśenje:",
        "youremail": "E-mail:",
        "username": "Mě {{GENDER:$1|wužywarja|wužywarki}}:",
-       "uid": "ID {{GENDER:$1|wužywarja|wužywarki}}:",
        "prefs-memberingroups": "{{GENDER:$2|Cłon|Cłonka}} {{PLURAL:$1|wužywarskeje kupki|wužiwarskeju kupkowu|wužywarskich kupkow}}:",
        "prefs-registration": "Cas registracije:",
        "yourrealname": "Realne mě *:",
index 36558a9..ad2e359 100644 (file)
        "timezoneregion-pacific": "Ocèan Pacéfich",
        "youremail": "E-mail:",
        "username": "{{GENDER:$1|Nòm utèint}}",
-       "uid": "{{GENDER:$1|utèint}}",
        "prefs-memberingroups": "{{GENDER:$2|Elemèint}}{{PLURAL:$1|dal gróp|di gróp}}:",
        "yourrealname": "Nòm vèira:",
        "yourlanguage": "Léngua",
index 041ad94..39346b0 100644 (file)
        "parser-template-recursion-depth-warning": "Se ha excedido el límite de recursión de plantillas ($1)",
        "language-converter-depth-warning": "El límite de profundidad del convertidor de idioma ha excedido ($1)",
        "node-count-exceeded-category": "Páginas donde se supera el número de nodos",
+       "node-count-exceeded-category-desc": "Una categoría para las páginas donde se supera el número de nodos.",
        "node-count-exceeded-warning": "Página que ha superado el número de nodos",
        "expansion-depth-exceeded-category": "Páginas donde se supera la profundidad de expansión",
+       "expansion-depth-exceeded-category-desc": "Esta es una categoría para las páginas donde se supera la profundidad de expansión.",
        "expansion-depth-exceeded-warning": "Página que ha superado la profundidad de expansión",
        "parser-unstrip-loop-warning": "Se ha detectado un bucle \"unstrip\"",
        "parser-unstrip-recursion-limit": "Se ha superado el límite de recursión de \"unstrip\" ($1)",
        "prefs-emailconfirm-label": "Confirmación de correo electrónico:",
        "youremail": "Correo electrónico:",
        "username": "{{GENDER:$1|Nombre de usuario|Nombre de usuaria}}:",
-       "uid": "ID de {{GENDER:$1|usuario|usuaria}}:",
        "prefs-memberingroups": "{{GENDER:$2|Miembro}} {{PLURAL:$1|del grupo|de los grupos}}:",
        "prefs-registration": "Fecha y hora de registro:",
        "yourrealname": "Nombre real:",
        "newimages-summary": "Esta página especial muestra una galería de los últimos archivos subidos.",
        "newimages-legend": "Nombre del fichero",
        "newimages-label": "Nombre del fichero (o una parte):",
-       "newimages-showbots": "Mostrar subidas por los bots",
+       "newimages-showbots": "Mostrar cargas de bots",
        "noimages": "No hay nada que ver.",
        "ilsubmit": "Buscar",
        "bydate": "por fecha",
        "watchlistedit-clear-legend": "Limpiar lista de seguimiento",
        "watchlistedit-clear-explain": "Todos los títulos serán removidos de tu lista de seguimiento",
        "watchlistedit-clear-titles": "Títulos:",
-       "watchlistedit-clear-submit": "Limpiar la lista de seguimiento (Esto es permanente!)",
-       "watchlistedit-clear-done": "Tu lista de seguimiento ha sido limpiada.",
+       "watchlistedit-clear-submit": "Vaciar la lista de seguimiento (¡permanente!)",
+       "watchlistedit-clear-done": "Se ha vaciado tu lista de seguimiento.",
        "watchlistedit-clear-removed": "{{PLURAL:$1|un título fue removido|Los títulos $1 fueron removidos}}:",
        "watchlistedit-too-many": "Hay demasiadas páginas para mostrar aquí.",
        "watchlisttools-clear": "Limpiar la lista de seguimiento",
index ef07966..20f9f95 100644 (file)
        "prefs-emailconfirm-label": "E-posta baieztapena:",
        "youremail": "E-posta:",
        "username": "{{GENDER:$1|Erabiltzaile izena}}:",
-       "uid": "{{GENDER:$1|Erabiltzaile}} zenbakia:",
        "prefs-memberingroups": "{{PLURAL:$1|Taldeko|taldeetako}} {{GENDER:$2|kidea}}:",
        "prefs-registration": "Erregistratzeko unea:",
        "yourrealname": "Benetako izena:",
index a5437d0..e5cf027 100644 (file)
        "prefs-emailconfirm-label": "تأیید رایانامه:",
        "youremail": "رایانامه:",
        "username": "{{GENDER:$1|نام کاربری}}:",
-       "uid": "شناسهٔ {{GENDER:$1|کاربری}}:",
        "prefs-memberingroups": "{{GENDER:$2|عضو}} {{PLURAL:$1|گروه|گروه}}:",
        "prefs-registration": "زمان ثبت‌نام:",
        "yourrealname": "نام واقعی:",
index 7154e86..0fd8501 100644 (file)
        "prefs-emailconfirm-label": "Sähköpostin varmistus",
        "youremail": "Sähköpostiosoite",
        "username": "{{GENDER:$1|Käyttäjätunnus}}",
-       "uid": "{{GENDER:$1|Tunniste}}",
        "prefs-memberingroups": "{{GENDER:$2|Jäsenenä}} {{PLURAL:$1|ryhmässä|ryhmissä}}",
        "prefs-registration": "Rekisteröintiaika",
        "yourrealname": "Oikea nimi",
index f5dcfb4..0b1aef8 100644 (file)
        "parser-template-recursion-depth-warning": "Limite de profondeur des appels de modèles dépassée ($1)",
        "language-converter-depth-warning": "Limite de profondeur du convertisseur de langue dépassée ($1)",
        "node-count-exceeded-category": "Pages où nombre de nœuds est dépassé",
+       "node-count-exceeded-category-desc": "Une catégorie pour les pages où le nombre de nœuds est dépassé.",
        "node-count-exceeded-warning": "Page dépassant le nombre de nœuds",
        "expansion-depth-exceeded-category": "Pages où la profondeur d'expansion est dépassée",
+       "expansion-depth-exceeded-category-desc": "Ceci est une catégorie pour les pages où la profondeur d’expansion est dépassée.",
        "expansion-depth-exceeded-warning": "Page dépassant la profondeur d'expansion",
        "parser-unstrip-loop-warning": "Boucle non démontable détectée",
        "parser-unstrip-recursion-limit": "Limite de récursion non démontable dépassée ($1)",
        "prefs-emailconfirm-label": "Confirmation du courriel :",
        "youremail": "Courriel :",
        "username": "{{GENDER:$1|Nom d'utilisateur|Nom d'utilisatrice}} :",
-       "uid": "Numéro d’{{GENDER:$1|utilisateur|utilisatrice}} :",
        "prefs-memberingroups": "{{GENDER:$2|Membre}} {{PLURAL:$1|du groupe|des groupes}}:",
        "prefs-registration": "Date d'inscription :",
        "yourrealname": "Nom réel :",
index 7bedfad..a2f4238 100644 (file)
        "parser-template-recursion-depth-warning": "עומק התבניות המוכללות זו בזו עבר את המגבלה ($1)",
        "language-converter-depth-warning": "עומק ממיר השפה עבר את המגבלה ($1)",
        "node-count-exceeded-category": "דפים שבהם מספר הצמתים גדול מדי",
+       "node-count-exceeded-category-desc": "קטגוריה לדפים שמספר הצמתים בהם גדול מדי.",
        "node-count-exceeded-warning": "מספר הצמתים בדף גדול מדי",
        "expansion-depth-exceeded-category": "דפים שבהם עומק ההרחבה גדול מדי",
+       "expansion-depth-exceeded-category-desc": "זוהי קטגוריה לדפים שבהם עומק ההרחבה גדול מדי.",
        "expansion-depth-exceeded-warning": "עומק ההרחבה בדף גדול מדי",
        "parser-unstrip-loop-warning": "נמצאה לולאה בפריסה",
        "parser-unstrip-recursion-limit": "עומק הרקורסיה של הפריסה עבר את המגבלה ($1)",
        "prefs-emailconfirm-label": "אימות כתובת דוא\"ל:",
        "youremail": "דואר אלקטרוני:",
        "username": "שם {{GENDER:$1|המשתמש|המשתמשת}}:",
-       "uid": "המספר הסידורי של {{GENDER:$1|המשתמש|המשתמשת}}:",
        "prefs-memberingroups": "{{GENDER:$2|חבר|חברה}} {{PLURAL:$1|בקבוצה|בקבוצות}}:",
        "prefs-registration": "זמן ההרשמה:",
        "yourrealname": "שם אמיתי:",
index 63140de..0828510 100644 (file)
        "prefs-emailconfirm-label": "Potvrda e-mail adrese:",
        "youremail": "Vaša elektronska pošta *",
        "username": "Ime {{GENDER:$1|suradnika|suradnice}}:",
-       "uid": "ID-broj {{GENDER:$1|suradnika|suradnice}}:",
        "prefs-memberingroups": "{{GENDER:$2|Suradnik|Suradnica}} je član {{PLURAL:$1|sljedeće skupine|sljedećih skupina}}:",
        "prefs-registration": "Vrijeme prijave:",
        "yourrealname": "Pravo ime (nije obvezno)*",
index 93680c3..b9bec71 100644 (file)
        "prefs-emailconfirm-label": "E-Mail-Bestätichung:",
        "youremail": "E-Mail-Adress:",
        "username": "{{GENDER:$1|Benutzernoome}}:",
-       "uid": "{{GENDER:$1|Benutzerkennung}}:",
        "prefs-memberingroups": "{{GENDER:$2|Mitglied}} von der {{PLURAL:$1|Benutzergrupp|Benutzergruppe}}:",
        "prefs-registration": "Oonmeldezeitpunkt:",
        "yourrealname": "Dein Noome wie registriert:",
index d980bb2..336c9c1 100644 (file)
        "prefs-emailconfirm-label": "E-mejlowe wobkrućenje:",
        "youremail": "E-mejl:",
        "username": "Mjeno {{GENDER:$1|wužiwarja|wužiwarki}}:",
-       "uid": "ID {{GENDER:$1|wužiwarja|wužiwarki}}:",
        "prefs-memberingroups": "{{GENDER:$2|Čłon|Čłonka}} {{PLURAL:$1|wužiwarskeje skupiny|wužiwarskeju skupinow|wužiwarskich skupinow}}:",
        "prefs-registration": "Čas registracije:",
        "yourrealname": "Woprawdźite mjeno:",
index e29db8e..ce75fb2 100644 (file)
        "prefs-emailconfirm-label": "E-mail cím megerősítése:",
        "youremail": "Az e-mail címed:",
        "username": "{{GENDER:$1|Szerkesztőnév}}:",
-       "uid": "{{GENDER:$1|Azonosító}}:",
        "prefs-memberingroups": "{{GENDER:$2|{{PLURAL:$1|Csoporttagság|Csoporttagságok}}}}:",
        "prefs-registration": "Regisztráció ideje:",
        "yourrealname": "Valódi neved:",
index 545f719..b258bea 100644 (file)
        "prefs-emailconfirm-label": "Konfirmasi surel:",
        "youremail": "Surel:",
        "username": "{{GENDER:$1|Nama pengguna}}:",
-       "uid": "ID {{GENDER:$1|pengguna}}:",
        "prefs-memberingroups": "{{GENDER:$2|Anggota}} {{PLURAL:$1|kelompok|kelompok}}:",
        "prefs-memberingroups-type": "$1",
        "prefs-registration": "Waktu pendaftaran:",
index 78daf74..450eb53 100644 (file)
        "parser-template-recursion-depth-warning": "È stato raggiunto il limite di ricorsione nel template ($1)",
        "language-converter-depth-warning": "Limite di profondità del convertitore di lingua superato ($1)",
        "node-count-exceeded-category": "Pagine dove viene superato il numero di nodi",
+       "node-count-exceeded-category-desc": "Una categoria per pagine dove viene superato il numero di nodi.",
        "node-count-exceeded-warning": "Questa pagina ha superato il numero di nodi",
        "expansion-depth-exceeded-category": "Pagine dove viene superata la profondità di espansione",
+       "expansion-depth-exceeded-category-desc": "Questa è una categoria per pagine dove viene superata la profondità di espansione.",
        "expansion-depth-exceeded-warning": "Questa pagina ha superato la profondità di espansione",
        "parser-unstrip-loop-warning": "Rilevato ciclo di Unstrip",
        "parser-unstrip-recursion-limit": "Superati i limiti di ricorsione di Unstrip ($1)",
        "prefs-emailconfirm-label": "Conferma dell'e-mail:",
        "youremail": "Indirizzo email:",
        "username": "{{GENDER:$1|Nome utente}}:",
-       "uid": "{{GENDER:$1|ID utente}}:",
        "prefs-memberingroups": "{{GENDER:$2|Membro}} {{PLURAL:$1|del gruppo|dei gruppi}}:",
        "prefs-registration": "Data di registrazione:",
        "yourrealname": "Nome vero:",
index 7c29cf8..65c9ee9 100644 (file)
        "nonunicodebrowser": "<strong>警告: ご使用中のブラウザーは Unicode に未対応です。</strong>\n安全にページを編集する回避策を表示しています: 編集ボックス内の非 ASCII 文字を 16 進数コードで表現しています。",
        "editingold": "<strong>警告: このページの古い版を編集しています。</strong>\n保存すると、この版以降になされた変更がすべて失われます。",
        "yourdiff": "差分",
-       "copyrightwarning": "{{SITENAME}}ã\81¸ã\81®æ\8a\95稿ã\81¯ã\80\81ã\81\99ã\81¹ã\81¦$2 (詳細ã\81¯$1ã\82\92å\8f\82ç\85§) ã\81®ã\82\82ã\81¨ã\81§å\85¬é\96\8bã\81\97ã\81\9fã\81¨è¦\8bã\81ªã\81\95ã\82\8cã\82\8bã\81\93ã\81¨ã\81«ã\81\94注æ\84\8fã\81\8fã\81 ã\81\95ã\81\84ã\80\82\nã\81\82ã\81ªã\81\9fã\81\8cæ\8a\95稿ã\81\97ã\81\9fã\82\82ã\81®ã\82\92ã\80\81ä»\96人ã\81\8cよって遠慮なく編集し、それを自由に配布するのを望まない場合は、ここには投稿しないでください。<br />\nまた、投稿するのは、あなたが書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください。\n<strong>著作権保護されている作品を、許諾なしに投稿しないでください!</strong>",
+       "copyrightwarning": "{{SITENAME}}ã\81¸ã\81®æ\8a\95稿ã\81¯ã\80\81ã\81\99ã\81¹ã\81¦$2 (詳細ã\81¯$1ã\82\92å\8f\82ç\85§) ã\81®ã\82\82ã\81¨ã\81§å\85¬é\96\8bã\81\97ã\81\9fã\81¨è¦\8bã\81ªã\81\95ã\82\8cã\82\8bã\81\93ã\81¨ã\81«ã\81\94注æ\84\8fã\81\8fã\81 ã\81\95ã\81\84ã\80\82\nã\81\82ã\81ªã\81\9fã\81\8cæ\8a\95稿ã\81\97ã\81\9fã\82\82ã\81®ã\82\92ã\80\81ä»\96人ã\81«よって遠慮なく編集し、それを自由に配布するのを望まない場合は、ここには投稿しないでください。<br />\nまた、投稿するのは、あなたが書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください。\n<strong>著作権保護されている作品を、許諾なしに投稿しないでください!</strong>",
        "copyrightwarning2": "{{SITENAME}}へのすべての投稿は、他の利用者によって編集、変更、除去される場合があります。\nあなたの投稿を、他人が遠慮なく編集するのを望まない場合は、ここには投稿しないでください。<br />\nまた、投稿するのは、あなたが書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください (詳細は$1を参照)。\n<strong>著作権保護されている作品を、許諾なしに投稿してはいけません!</strong>",
        "longpageerror": "<strong>エラー: 投稿された文章は {{PLURAL:$1|$1 KB}} の長さがあります。これは投稿できる最大の長さ {{PLURAL:$2|$2 KB}} を超えています。</strong>\nこの編集内容は保存できません。",
        "readonlywarning": "<strong>警告: データベースがメンテナンスのためロックされており、現在は編集内容を保存できません。</strong>\n必要であれば文章をコピー&amp;ペーストしてテキストファイルとして保存し、後ほど保存をやり直してください。\n\nデータベースをロックした管理者による説明は以下の通りです: $1",
        "parser-template-recursion-depth-warning": "テンプレートの再帰の深さ ($1) が上限を超えました",
        "language-converter-depth-warning": "言語変換機能の深さ ($1) が制限を超えました",
        "node-count-exceeded-category": "ノード数が制限を超えたページ",
+       "node-count-exceeded-category-desc": "ノード数が制限を超えたページを列挙するカテゴリです。",
        "node-count-exceeded-warning": "ページがノード数の制限を超えました",
        "expansion-depth-exceeded-category": "展開の深さ制限を超えたページ",
+       "expansion-depth-exceeded-category-desc": "このカテゴリでは、展開の深さが制限を超えたページを列挙します。",
        "expansion-depth-exceeded-warning": "ページが展開の深さ制限を超えました",
        "parser-unstrip-loop-warning": "unstrip のループを検出しました",
        "parser-unstrip-recursion-limit": "unstrip の再帰 ($1) が上限を超えました",
        "prefs-emailconfirm-label": "メールアドレスの確認:",
        "youremail": "メールアドレス:",
        "username": "{{GENDER:$1|利用者名}}:",
-       "uid": "{{GENDER:$1|利用者}} ID:",
        "prefs-memberingroups": "{{GENDER:$2|所属}}{{PLURAL:$1|グループ}}:",
        "prefs-memberingroups-type": "$1",
        "prefs-registration": "登録日時:",
        "blocklogpage": "ブロック記録",
        "blocklog-showlog": "この利用者は以前にブロックされたことがあります。\n参考のため、ブロック記録を以下に示します:",
        "blocklog-showsuppresslog": "この利用者は以前にブロックされ、隠されたことがあります。\n参考のため、秘匿記録を以下に示します:",
-       "blocklogentry": "が [[$1]] を$2ブロックしました。追加事項: $3",
-       "reblock-logentry": "が [[$1]] のブロック設定を$2に変更しました。ブロックの詳細: $3",
+       "blocklogentry": "が [[$1]] を$2ブロックしました $3",
+       "reblock-logentry": "が [[$1]] のブロック設定を$2に変更しました $3",
        "blocklogtext": "このページは利用者のブロックと解除の記録です。\n自動的にブロックされたIPアドレスは表示されていません。\n現時点で有効なブロックは[[Special:BlockList|ブロックの一覧]]をご覧ください。",
        "unblocklogentry": "$1のブロックを解除しました",
        "block-log-flags-anononly": "対象は匿名利用者のみ",
        "block-log-flags-nocreate": "アカウント作成も禁止",
-       "block-log-flags-noautoblock": "自動ブロック無効",
-       "block-log-flags-noemail": "メール送信禁止",
+       "block-log-flags-noautoblock": "自動ブロック無効",
+       "block-log-flags-noemail": "メール送信禁止",
        "block-log-flags-nousertalk": "自分のトークページも編集禁止",
        "block-log-flags-angry-autoblock": "拡張自動ブロック有効",
        "block-log-flags-hiddenname": "利用者名の秘匿",
index d52e783..0712260 100644 (file)
        "prefs-emailconfirm-label": "ელ-ფოსტის დადასტურება:",
        "youremail": "ელექტრონული ფოსტა:",
        "username": "{{GENDER:$1|მომხმარებლის სახელი}}:",
-       "uid": "{{GENDER:$1|მომხმარებლის}} იდენტიფიკატორი:",
        "prefs-memberingroups": "{{PLURAL:$1|ჯგუფის|ჯგუფების}} {{GENDER:$2|წევრი}}:",
        "prefs-memberingroups-type": "$1",
        "prefs-registration": "რეგისტრაციის თარიღი",
index 7d03a8c..68ef22a 100644 (file)
        "prefs-files": "Dosyey",
        "youremail": "E-poste:",
        "username": "Namê karberi:",
-       "uid": "Kamiya {{GENDER:$1|karberi}}:",
        "prefs-memberingroups": "{{GENDER:$2|Ezayê}} {{PLURAL:$1|grube|grubu}}:",
        "yourrealname": "Namo rastıkên:",
        "yourlanguage": "Zon:",
index a2a890e..d5cb2a1 100644 (file)
        "prefs-emailconfirm-label": "Е-поштаның расталуы:",
        "youremail": "Е-поштаңыз:",
        "username": "{{GENDER:$1|Қатысушы атыңыз}}:",
-       "uid": "{{GENDER:$1|Қатысушы}} теңдестіргішіңіз (ID):",
        "prefs-memberingroups": "{{GENDER:$2|Мүше}}  {{PLURAL:$1|тобыңыз|топтарыңыз}}:",
        "prefs-registration": "Тіркелген уақытыңыз:",
        "yourrealname": "Нақты атыңыз:",
index f11ab2d..47d4840 100644 (file)
        "prefs-emailconfirm-label": "이메일 인증:",
        "youremail": "이메일:",
        "username": "{{GENDER:$1|사용자 이름}}:",
-       "uid": "{{GENDER:$1|사용자}} ID:",
        "prefs-memberingroups": "{{GENDER:$2|소속}} {{PLURAL:$1|그룹}}:",
        "prefs-registration": "등록 시간:",
        "yourrealname": "실명:",
index 69d9f9c..4a94dfd 100644 (file)
        "prefs-emailconfirm-label": "Электрон почтаны бегитиу:",
        "youremail": "Электрон почта:",
        "username": "{{GENDER:$1|Къошулуучу ат}}:",
-       "uid": "{{GENDER:$1|Къошулуучуну}} коду:",
        "prefs-memberingroups": "{{PLURAL:$1|1=Группаны|Группаланы}} {{GENDER:$2|члени}}:",
        "prefs-memberingroups-type": "$1",
        "prefs-registration": "Регистрацияны этилген заманы:",
index 7a74c8e..2b2e49e 100644 (file)
        "prefs-emailconfirm-label": "Beshtätejung övver <i lang=\"en\">e-mail</i>:",
        "youremail": "E-Mail *",
        "username": "{{GENDER:$1|Metmaacher|Metmaacherėnne|Metmaacher|Metmaacherėnne|Metmaacher}} Name:",
-       "uid": "{{GENDER:$1|Metmaacher|Metmaacherėnne|Metmaacher|Metmaacherėnne|Metmaacher}} Nommer:",
        "prefs-memberingroups": "{{GENDER:$2|Bes}} en {{PLURAL:$1|de Metmaacherjrupp:|$1 Metmaacherjruppe:|keijn Metmaacherjruppe.}}",
        "prefs-registration": "Aanjemeldt zick",
        "prefs-registration-date-time": "dem $2 öm $3 Uhr",
index 92fb614..504005b 100644 (file)
        "prefs-emailconfirm-label": "E-Mail Confirmatioun:",
        "youremail": "E-Mail-Adress:",
        "username": "{{GENDER:$1|Benotzernumm}}:",
-       "uid": "{{GENDER:$1|Benotzer}} ID:",
        "prefs-memberingroups": "{{GENDER:$2|Member}} vun {{PLURAL:$1|der Benotzergrupp|de Benotzergruppen}}:",
        "prefs-registration": "Zäitpunkt vum Opmaache vum Benotzerkont:",
        "yourrealname": "Richtegen Numm:",
        "watchlistedit-clear-titles": "Säiten:",
        "watchlistedit-clear-removed": "{{PLURAL:$1|1 Säit gouf|$1 Säite goufen}} erausgeholl:",
        "watchlistedit-too-many": "Et sinn ze vill Säite fir se hei ze weisen.",
+       "watchlisttools-clear": "D'Iwwerwaachungslëscht eidelmaachen",
        "watchlisttools-view": "Iwwerwaachungslëscht: Ännerungen",
        "watchlisttools-edit": "Iwwerwaachungslëscht weisen an änneren",
        "watchlisttools-raw": "Net-formatéiert Iwwerwaachungslëscht änneren",
index 4e72533..365b76f 100644 (file)
        "prefs-files": "Шикил",
        "youremail": "Электрон почта:",
        "username": "Уртахдин тӀвар",
-       "uid": "Уртах тайин ийидайди:",
        "yourrealname": "Xалис тIвар:",
        "yourlanguage": "ЧIалар",
        "yournick": "ЦӀийи къул:",
index e991760..bcffc2a 100644 (file)
        "recreate-moveddeleted-warn": "'''Йолташ, тиде лаштыкым тиддеч ончыч шӧреныт.''' Тудым илаҥдарыме деч ончыч, тыгай лаштык кӱлешак мо - тергыман. Ӱлнырак шӧрымаш да лӱм вашталтымаш журнал-влакым шергал лекташ лиеш.",
        "moveddeleted-notice": "Тиде лаштык шӧралтын.\nЛаштыклан шӧрымӧ да кусарыме нерген журнал ӱлнӧ ончыктымо.",
        "viewpagelogs": "Тиде лаштыклан журнал-влакым ончыкташ",
-       "currentrev": "Кызытсе тӱрлык",
+       "currentrev": "Кызытсе версий",
        "currentrev-asof": "$1 кечын кызытсе тӱрлык",
        "revisionasof": "$1 тӱрлык",
        "revision-info": "$1; $2 деч версий",
        "revdelete-reasonotherlist": "Вес амал",
        "mergehistory-reason": "Амал:",
        "revertmerge": "Ойыраш",
-       "history-title": "$1лан тӱрлык эртымгорно",
+       "history-title": "$1 — вашталтылме эртымгорно",
        "lineno": "$1 корно:",
        "compareselectedversions": "Ойырымо версий-влакым таҥастараш",
        "editundo": "чараш",
        "prefs-emailconfirm-label": "Электрон почто пеҥгыдемдыме:",
        "youremail": "Электрон почто:",
        "username": "{{GENDER:$1|Пайдаланышын лӱмжӧ|Пайдаланышын лӱмжӧ}}:",
-       "uid": "{{GENDER:$1|Пайдаланышын}} ID-же:",
        "prefs-memberingroups": "{{PLURAL:$1|1=Тӱшкаште шогышо|Тӱшка-влакыште шогышо}}:",
        "yourrealname": "Чын лӱмжӧ:",
        "yourlanguage": "Йылме:",
        "linkstoimage": "Тиде {{PLURAL:$1|1=$1 лаштык саде файл дене кылдалтын|$1 лаштык-влак саде файл дене кылдалтыныт}}:",
        "nolinkstoimage": "Тиде файл дене кылдалтше ик лаштыкат уке.",
        "sharedupload": "Тиде файлын верже: $1, туге гынат, тудым моло веренат кучылташ лиеш.",
-       "uploadnewversion-linktext": "Тиде файлын у тӱрлыкшым пурташ",
+       "uploadnewversion-linktext": "Тиде файлын у версийжым пурташ",
        "filedelete-comment": "Амал:",
        "filedelete-submit": "Шӧраш",
        "filedelete-otherreason": "Вес/ешартыш амал:",
        "specialloguserlabel": "Пайдаланыше:",
        "log": "Журнал-влак",
        "allpages": "Чыла лаштык-влак",
-       "alphaindexline": "$1 $2 марте",
        "prevpage": "Ончычсо лаштык ($1)",
        "allpagesfrom": "Лукташ тыгай лӱман лаштык-влакым, кудыжо тӱҥалыт:",
        "allpagesto": "кудыжо пытат:",
        "svg-long-desc": "SVG файл, шкенжын кугытшо: $1 × $2 пиксел, файлын кугытшо: $3",
        "show-big-image": "Шкенжын чаплыкше",
        "newimages-legend": "Фильтр",
-       "showhidebots": "(Бот-влакым $1 )",
        "ilsubmit": "Кычал",
        "bad_image_list": "Формат тыгай лийшаш:\n\nЛӱмерын ужашыже-влак гына шотыш налалташ тӱналалтыт (* дене туҥалше корно-влак).\nКорнышто икымше кылвер шӱкшӧ файлыш кылвер семын лийшаш.\nТиде корнышто вара лийше кылвер-влак лийын кертдыме семын ончалтыт: файлыш кылверан лаштык-влак.",
        "metadata": "Метаданный-влак",
index eab1836..c0b054c 100644 (file)
        "parser-template-recursion-depth-warning": "Пречекорена е границата на длабочината на рекурзијата во шаблонот ($1)",
        "language-converter-depth-warning": "Пречекорена е границата на длабочината на јазичниот претворач ($1)",
        "node-count-exceeded-category": "Страници каде е надминат бројот на јазли",
+       "node-count-exceeded-category-desc": "Категорија за страници каде е надминат бројот на јазли.",
        "node-count-exceeded-warning": "Страницата го надмина бројот на јазли",
        "expansion-depth-exceeded-category": "Страници каде е пречекорена длабочината на проширувањето",
+       "expansion-depth-exceeded-category-desc": "Ова е категорија наменета за страници со надмината длабочина на проширување.",
        "expansion-depth-exceeded-warning": "Страницата ја надмина длабочината на проширувањето",
        "parser-unstrip-loop-warning": "Утврдена е јамка",
        "parser-unstrip-recursion-limit": "Пречекорена е границата на рекурзија ($1)",
        "prefs-emailconfirm-label": "Потврда на е-пошта:",
        "youremail": "Е-пошта:",
        "username": "{{GENDER:$1|Корисничко име}}:",
-       "uid": "{{GENDER:$1|Кориснички бр.}}:",
        "prefs-memberingroups": "{{GENDER:$2|Член}} на {{PLURAL:$1|групата|групите}}:",
        "prefs-registration": "Време на регистрација:",
        "yourrealname": "Вистинско име:",
index d52550e..8ee8c40 100644 (file)
        "prefs-emailconfirm-label": "ഇമെയിൽ സ്ഥിരീകരണം:",
        "youremail": "ഇമെയിൽ:",
        "username": "{{GENDER:$1|ഉപയോക്തൃനാമം}}:",
-       "uid": "{{GENDER:$1|ഉപയോക്തൃ}} ഐ.ഡി.:",
        "prefs-memberingroups": "{{GENDER:$2|അംഗത്വമുള്ള}} {{PLURAL:$1|സംഘം|സംഘങ്ങൾ}}:",
        "prefs-registration": "അംഗത്വം എടുത്തത്:",
        "yourrealname": "യഥാർത്ഥ പേര്‌:",
index fd9193d..4eee9bc 100644 (file)
        "prefs-emailconfirm-label": "Pengesahan e-mel:",
        "youremail": "E-mel:",
        "username": "{{GENDER:$1|Nama pengguna}}:",
-       "uid": "ID {{GENDER:$1|Pengguna}}:",
        "prefs-memberingroups": "{{GENDER:$2|Ahli}} {{PLURAL:$1|kumpulan|kumpulan-kumpulan}}:",
        "prefs-memberingroups-type": "$1",
        "prefs-registration": "Waktu pendaftaran:",
index 0eecd8a..768c85d 100644 (file)
        "prefs-emailconfirm-label": "Konferma tal-ittra-e:",
        "youremail": "E-mail:",
        "username": "{{GENDER:$1|Isem tal-utent}}:",
-       "uid": "{{GENDER:$1|ID tal-utent}}:",
        "prefs-memberingroups": "{{GENDER:$2|Membru}} tal-{{PLURAL:$1|grupp|gruppi}}:",
        "prefs-memberingroups-type": "$1",
        "prefs-registration": "Ħin ta' reġistrazzjoni:",
index 4e6c076..fe08230 100644 (file)
        "prefs-emailconfirm-label": "E-postbekreftelse:",
        "youremail": "E-post:",
        "username": "{{GENDER:$1|Brukernavn}}:",
-       "uid": "{{GENDER:$1|Bruker-ID}}:",
        "prefs-memberingroups": "{{GENDER:$2|Medlem}} i følgende {{PLURAL:$1|gruppe|grupper}}:",
        "prefs-registration": "Registreringstid:",
        "yourrealname": "Virkelig navn:",
index a6847b4..1fc788b 100644 (file)
        "prefs-emailconfirm-label": "Netpostbevestiging:",
        "youremail": "Netpostadres (niet verplicht) *",
        "username": "{{GENDER:$1|Gebrukersnaam}}:",
-       "uid": "{{GENDER:$1|Gebrukersnummer}}:",
        "prefs-memberingroups": "{{GENDER:$2|Lid}} van {{PLURAL:$1|groep|groepen}}:",
        "prefs-registration": "Registrasiedaotum:",
        "yourrealname": "Echte naam (niet verplicht)",
index 0f9b881..2d94702 100644 (file)
@@ -22,7 +22,7 @@
        "tog-hidepatrolled": "गस्ती(patrolled)सम्पादनहरु हालका परिवर्तनहरुमा लुकाउने",
        "tog-newpageshidepatrolled": "गस्ती गरिएका पृष्ठहरू नयाँ पृष्ठ सूचीबाट लुकाउने",
        "tog-extendwatchlist": "निगरानी सूचीलाई सबै परिवर्तनहरू देखाउने गरी बढाउने , हालैको  बाहेक",
-       "tog-usenewrc": "पृष्ठका भर्खरका परिवर्तन र अवलोकन सूचीको आधारमा सामूहिक परिवर्तनहरु ( जाभास्क्रिप्ट चाहिन्छ)",
+       "tog-usenewrc": "पृष्ठका भर्खरका परिवर्तन र अवलोकन सूचीको आधारमा सामूहिक परिवर्तनहरु",
        "tog-numberheadings": "शीर्षकहरुलाई स्वत:अङ्कित गर्नुहोस्",
        "tog-showtoolbar": "सम्पादन औजारबट्टा देखाउने",
        "tog-editondblclick": "दोहोरो क्लिकमा पृष्ठ सम्पादन गर्ने",
        "prefs-emailconfirm-label": "इ-मेल एकिन प्रक्रिया :",
        "youremail": "ईमेल",
        "username": "{{GENDER:$1|प्रयोगकर्ता नाम}}:",
-       "uid": "{{GENDER:$1|प्रयोगकर्ता}} ID:",
        "prefs-memberingroups": "निम्न {{PLURAL:$1|समूह | समूहहरू}}को {{GENDER:$2|सदस्य}} :",
        "prefs-memberingroups-type": "$1",
        "prefs-registration": "दर्ता समय:",
        "feedback-submit": "प्रतिकृया बुझाउनुहोस्",
        "feedback-error2": "त्रुटि: सम्पादन असफल",
        "feedback-close": "गरियो",
+       "searchsuggest-search": "खोज",
        "api-error-badaccess-groups": "यस विकिमा तपाईंलाई फाइल अपलोड गर्ने अनुमति छैन।",
        "api-error-copyuploaddisabled": "यस सर्वरमा URL द्वारा अपलोड गर्ने व्यवस्था निस्क्रिय गरिएकोछ।",
        "api-error-duplicate": "यस साइटमा पहिलेबाट यस्तै सामग्री {{PLURAL:$1|भएको [$2 अर्को फाइल छ]|भएका  [$2 केहि अरु फाइलहरु छन्]}} ।",
        "api-error-unknownerror": "अज्ञात त्रुटि: \"$1\".",
        "api-error-uploaddisabled": "यस विकिमा अपलोड निस्क्रिय गरिएकोछ।",
        "expand_templates_output": "परिणाम",
+       "expand_templates_ok": "ठीक",
        "expand_templates_generate_rawhtml": "सुद्ध HTML देखाउने",
        "expand_templates_preview": "पूर्वावलोकन"
 }
index 00eb42b..b89682a 100644 (file)
        "prefs-emailconfirm-label": "ଇ-ମେଲ ସଜାଣି:",
        "youremail": "ଇ-ମେଲ:",
        "username": "{{GENDER:$1|Username}}:",
-       "uid": "{{GENDER:$1|User}} ID:",
        "prefs-memberingroups": "{{PLURAL:$1|group|groups}}:ର {{GENDER:$2|Member}}",
        "prefs-registration": "ନାମଲେଖା ବେଳା:",
        "yourrealname": "ପ୍ରକୃତ ନାମ:",
index f71ff3b..2e94a1c 100644 (file)
        "prefs-emailconfirm-label": "Potwierdzenie adresu e‐mail:",
        "youremail": "Twój adres e‐mail:",
        "username": "{{GENDER:$1|Nazwa użytkownika}}:",
-       "uid": "{{GENDER:$1|Identyfikator użytkownika}}:",
        "prefs-memberingroups": "{{GENDER:$2|Członek}} {{PLURAL:$1|grupy|grup}}:",
        "prefs-registration": "Data rejestracji:",
        "yourrealname": "Imię i nazwisko:",
index 82db03b..e49d587 100644 (file)
        "prefs-emailconfirm-label": "Confirmação do e-mail:",
        "youremail": "Seu e-mail:",
        "username": "Nome de {{GENDER:$1|usuário|usuária}}:",
-       "uid": "ID de {{GENDER:$1|usuário|usuária}}:",
        "prefs-memberingroups": "{{GENDER:$2|Membro}} {{PLURAL:$1|do grupo|dos grupos}}:",
        "prefs-registration": "Hora de registro:",
        "yourrealname": "Nome verdadeiro:",
index 24dfaf4..d0d0f66 100644 (file)
        "welcomecreation-msg": "A sua conta foi criada.\nNão se esqueça de personalizar as suas [[Special:Preferences|preferências]].",
        "yourname": "Nome de utilizador:",
        "userlogin-yourname": "Nome de utilizador(a):",
-       "userlogin-yourname-ph": "Digite seu nome de utilizador(a)",
-       "createacct-another-username-ph": "Digite o nome de utilizador",
+       "userlogin-yourname-ph": "Digite seu nome de utilizador(a)",
+       "createacct-another-username-ph": "Digite o nome de utilizador(a)",
        "yourpassword": "Palavra-chave:",
        "userlogin-yourpassword": "Palavra-chave",
-       "userlogin-yourpassword-ph": "Digite sua palavra-chave",
+       "userlogin-yourpassword-ph": "Digite sua palavra-chave",
        "createacct-yourpassword-ph": "Digite uma palavra-chave",
        "yourpasswordagain": "Repita a palavra-chave:",
        "createacct-yourpasswordagain": "Confirme a palavra-chave",
        "userlogin-createanother": "Criar outra conta",
        "createacct-emailrequired": "Endereço de email",
        "createacct-emailoptional": "Endereço de email (opcional)",
-       "createacct-email-ph": "Digite seu endereço de email",
-       "createacct-another-email-ph": "Digite o endereço de e-mail",
+       "createacct-email-ph": "Digite o seu endereço de correio electrónico",
+       "createacct-another-email-ph": "Digite o endereço de correio electrónico",
        "createaccountmail": "Usar uma palavra passe aleatória e temporária e enviar para o endereço de correio eletrónico especificado",
        "createacct-realname": "Nome verdadeiro (opcional)",
        "createaccountreason": "Motivo:",
        "prefs-emailconfirm-label": "Confirmação do endereço:",
        "youremail": "Correio eletrónico:",
        "username": "Nome de {{GENDER:$1|utilizador|utilizadora}}:",
-       "uid": "Identificação de {{GENDER:$1|utilizador|utilizadora}}:",
        "prefs-memberingroups": "{{GENDER:$2|Membro}} {{PLURAL:$1|do grupo|dos grupos}}:",
        "prefs-registration": "Hora de registo:",
        "yourrealname": "Nome verdadeiro:",
        "tooltip-pt-watchlist": "Lista de mudanças nas páginas que está a vigiar",
        "tooltip-pt-mycontris": "Lista das suas contribuições",
        "tooltip-pt-login": "É encorajado a autenticar-se, apesar de não ser obrigatório.",
-       "tooltip-pt-logout": "Terminar esta sessão na wiki",
+       "tooltip-pt-logout": "Sair da conta",
        "tooltip-ca-talk": "Discussão sobre o conteúdo da página",
        "tooltip-ca-edit": "Pode editar esta página.\nUtilize o botão \"Antever resultado\" antes de gravar, por favor.",
        "tooltip-ca-addsection": "Iniciar uma nova seção",
index a19a71e..8f46025 100644 (file)
        "prefs-emailconfirm-label": "Sub-heading in [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}.",
        "youremail": "Label of the e-mail text box of the \"E-mail options\" section of [[Special:Preferences]].\nAlso used on create account form.\n\n{{Identical|E-mail}}",
        "username": "Username field in [[Special:Preferences]]. $1 is the current user name for GENDER distinction (depends on sex setting).\n\n{{Identical|Username}}",
-       "uid": "User ID field in [[Special:Preferences]]. $1 is the current user name for GENDER distinction (depends on sex setting).\n\n{{Identical|User ID}}",
        "prefs-memberingroups": "This message is shown on [[Special:Preferences]], first tab.\n\nParameters:\n* $1 - number of user groups\n* $2 - the username for GENDER\nSee also:\n* {{msg-mw|Prefs-memberingroups-type}}",
        "prefs-memberingroups-type": "{{optional}}\nParameters:\n* $1 - list of group names\n* $2 - list of group member names. Label for these is {{msg-mw|Prefs-memberingroups}}",
        "prefs-registration": "Used in [[Special:Preferences]].",
index e15433a..4cb40b3 100644 (file)
        "prefs-emailconfirm-label": "E-chaskita takyachiy:",
        "youremail": "E-chaski imamaytayki",
        "username": "{{GENDER:$1|Ruraqpa sutin}}:",
-       "uid": "{{GENDER:$1|Ruraqpa}} ID-nin:",
        "prefs-memberingroups": "Kay {{PLURAL:$1|huñuman|huñukunaman}} {{GENDER:$2|kapuq}}:",
        "prefs-registration": "Hallch'ay pacha:",
        "yourrealname": "Chiqap sutiyki*",
index c60b2b6..8ed6f24 100644 (file)
        "prefs-emailconfirm-label": "Confirmare e-mail:",
        "youremail": "Adresă de e-mail:",
        "username": "{{GENDER:$1|Nume de utilizator}}:",
-       "uid": "ID {{GENDER:$1|utilizator|utilizatoare}}:",
        "prefs-memberingroups": "{{GENDER:$2|Membru|Membră}} în {{PLURAL:$1|grupul|grupurile}}:",
        "prefs-registration": "Data înregistrării:",
        "yourrealname": "Nume real:",
index 2019562..68bf9fd 100644 (file)
        "parser-template-recursion-depth-warning": "Превышен предел глубины рекурсии шаблона ($1)",
        "language-converter-depth-warning": "Превышен предел глубины преобразователя языков ($1)",
        "node-count-exceeded-category": "Странице, на которых превышено число узлов",
+       "node-count-exceeded-category-desc": "Категория для страниц, на которых превышено число узлов.",
        "node-count-exceeded-warning": "На странице превышено число узлов",
        "expansion-depth-exceeded-category": "Страницы с превышением глубины раскрытия",
+       "expansion-depth-exceeded-category-desc": "Это категория для страниц с превышением глубины раскрытия.",
        "expansion-depth-exceeded-warning": "На странице превышен предел вложенности",
        "parser-unstrip-loop-warning": "Обнаружен незакрытый pre",
        "parser-unstrip-recursion-limit": "Превышен предел рекурсии ($1)",
        "prefs-emailconfirm-label": "Подтверждение электронной почты:",
        "youremail": "Электронная почта:",
        "username": "{{GENDER:$1|Имя участника|Имя участницы}}:",
-       "uid": "Код {{GENDER:$1|участника|участницы}}:",
        "prefs-memberingroups": "{{GENDER:$2|Член|Член}} {{PLURAL:$1|1=группы|групп}}:",
        "prefs-registration": "Время регистрации:",
        "yourrealname": "Настоящее имя:",
index 6c3eb9a..f8c8daa 100644 (file)
        "prefs-emailconfirm-label": "ई-पत्रं दृढीक्रियताम् :",
        "youremail": "ई-पत्रसङ्केतः :",
        "username": "{{GENDER:$1|योजकनाम}} :",
-       "uid": "{{GENDER:$1|प्रयोकतृनाम}} :",
        "prefs-memberingroups": "{{PLURAL:$1|समूहस्य|समूहानां}} {{GENDER:$2|सदस्यः/सदस्याः}} :",
        "prefs-registration": "पञ्जीकरणस्य कालः :",
        "yourrealname": "वास्तविकनाम :",
index 8276865..7b89944 100644 (file)
        "prefs-emailconfirm-label": "Эл. почтаны бигэргэтии:",
        "youremail": "E-mail-ыҥ:",
        "username": "{{GENDER:$1|Бэлиэтэммит аатыҥ}}:",
-       "uid": "{{GENDER:$1|Кыттааччы}} ID-та:",
        "prefs-memberingroups": "Бу {{PLURAL:$1|бөлөххө|бөлөхтөргө}} {{GENDER:$2|киирэр}}:",
        "prefs-registration": "Бэлиэтэнии кэмэ:",
        "prefs-registration-date-time": "$1",
index 9ee5020..1fa5fa8 100644 (file)
        "prefs-emailconfirm-label": "Wab-mail confirmation:",
        "youremail": "Yer email:",
        "username": "{{GENDER:$1|Uisername}}:",
-       "uid": "{{GENDER:$1|Uiser}} ID:",
        "prefs-memberingroups": "{{GENDER:$2|Memmer}} o {{PLURAL:$1|groop|groops}}:",
        "prefs-registration": "Regeestration time:",
        "yourrealname": "Yer real name:",
index fd23386..389e4dd 100644 (file)
        "prefs-files": "Failā",
        "youremail": "El. pašts:",
        "username": "Nauduotuojė vards:",
-       "uid": "Nauduotuojė ID:",
        "prefs-memberingroups": "{{PLURAL:$1|Gropės|Gropiu}} narīs:",
        "prefs-registration": "Ožsėregėstravėma čiesos:",
        "yourrealname": "Tėkros vards:",
index ad24932..5ff85ce 100644 (file)
        "prefs-emailconfirm-label": "විද්‍යුත්-ලිපිනය තහවුරුකිරීම:",
        "youremail": "විද්‍යුත් තැපෑල:",
        "username": "{{GENDER:$1|පරිශීලක නාමය}}:",
-       "uid": "{{GENDER:$1|පරිශීලක}} අනන්‍යාංකය:",
        "prefs-memberingroups": "ඉදිරියේ දැක්වෙන {{PLURAL:$1|කණ්ඩායමෙහි|කණ්ඩායම් වල}} {{GENDER:$2|සාමාජිකයෙකි}}:",
        "prefs-registration": "ලියාපදිංචිවූ වේලාව:",
        "yourrealname": "සැබෑ නාමය:",
index f53d289..f9e4885 100644 (file)
        "prefs-emailconfirm-label": "Potvrdenie emailu:",
        "youremail": "Váš e-mail²",
        "username": "{{GENDER:$1|Používateľské meno}}:",
-       "uid": "ID {{GENDER:$1|používateľa}}:",
        "prefs-memberingroups": "{{GENDER:$2|Člen|Členovia}} {{PLURAL:$1|skupiny|skupín}}:",
        "prefs-registration": "Čas registrácie:",
        "yourrealname": "Skutočné meno *:",
index 42ed906..2646b01 100644 (file)
        "parser-template-recursion-depth-warning": "Prekoračena globina rekurzije predlog ($1)",
        "language-converter-depth-warning": "Prekoračena globina pretvorbe jezikov ($1)",
        "node-count-exceeded-category": "Strani s prekoračenim številom vozlišč",
+       "node-count-exceeded-category-desc": "Kategorija s stranmi, na katerih je preseženo število vozlišč.",
        "node-count-exceeded-warning": "Stran je prekoračila število vozlišč",
        "expansion-depth-exceeded-category": "Strani s prekoračeno globino razširitve",
+       "expansion-depth-exceeded-category-desc": "Kategorija s stranmi, na katerih je prekoračena globina razširitve.",
        "expansion-depth-exceeded-warning": "Stran je prekoračila globino razširitve",
        "parser-unstrip-loop-warning": "Zaznal sem odvezano zanko",
        "parser-unstrip-recursion-limit": "Presežena je omejitev odvezane rekurzije ($1)",
        "prefs-emailconfirm-label": "Potrditev e-pošte:",
        "youremail": "E-poštni naslov:",
        "username": "{{GENDER:$1|Uporabniško|Uporabničino}} ime:",
-       "uid": "ID {{GENDER:$1|uporabnika|uporabnice}}:",
        "prefs-memberingroups": "{{GENDER:$2|Član|Članica}} {{PLURAL:$1|naslednje skupine|naslednjih skupin}}:",
        "prefs-memberingroups-type": "$1",
        "prefs-registration": "Registriran od:",
index 232f1ce..7ac67ef 100644 (file)
        "prefs-emailconfirm-label": "Hubinta Email-ka:",
        "youremail": "E-mail:",
        "username": "Gudagal:",
-       "uid": "Lambarka isticmaalaha:",
        "yourrealname": "Magacaaga runta ah:",
        "yourlanguage": "luqad:",
        "yournick": "Saxiix cusub:",
index 01cba00..c0ac8e6 100644 (file)
        "prefs-emailconfirm-label": "Потврда е-адресе:",
        "youremail": "Е-адреса:",
        "username": "{{GENDER:$1|Корисничко име}}:",
-       "uid": "{{GENDER:$1|Кориснички}} ID:",
        "prefs-memberingroups": "{{PLURAL:$1|Група|Групе}}:",
        "prefs-memberingroups-type": "$1",
        "prefs-registration": "Време уписа:",
index 0780b5f..96a6c94 100644 (file)
        "prefs-emailconfirm-label": "Potvrda e-adrese:",
        "youremail": "E-adresa:",
        "username": "{{GENDER:$1|Korisničko ime}}:",
-       "uid": "{{GENDER:$1|Korisnički}} ID:",
        "prefs-memberingroups": "{{PLURAL:$1|Grupa|Grupe}}:",
        "prefs-memberingroups-type": "$1",
        "prefs-registration": "Vreme upisa:",
index c6e0b06..16ae384 100644 (file)
        "prefs-emailconfirm-label": "E-postbekräftelse:",
        "youremail": "E-post:",
        "username": "{{GENDER:$1|Användarnamn}}:",
-       "uid": "{{GENDER:$1|Användar}}-ID:",
        "prefs-memberingroups": "{{GENDER:$2|Medlem}} av {{PLURAL:$1|gruppen|grupperna}}:",
        "prefs-registration": "Registreringstid:",
        "yourrealname": "Riktigt namn:",
index fe0663c..660df9c 100644 (file)
        "prefs-emailconfirm-label": "Kuhakikisha barua pepe:",
        "youremail": "Barua pepe yako:",
        "username": "Jina la mtumiaji:",
-       "uid": "Namba ya mtumiaji:",
        "prefs-memberingroups": "Mwanachama wa {{PLURAL:$1|kundi la|makundi ya}}:",
        "prefs-registration": "Wakati wa kusajili:",
        "yourrealname": "Jina lako halisi:",
index 5fec48f..777299d 100644 (file)
        "prefs-emailconfirm-label": "ఈ-మెయిల్ నిర్ధారణ:",
        "youremail": "ఈమెయిలు:",
        "username": "{{GENDER:$1|వాడుకరి పేరు}}:",
-       "uid": "{{GENDER:$1|వాడుకరి}} ID:",
        "prefs-memberingroups": "ఈ {{PLURAL:$1|గుంపులో|గుంపులలో}} {{GENDER:$2|సభ్యుడు|సభ్యురాలు}}:",
        "prefs-registration": "నమోదైన సమయం:",
        "yourrealname": "అసలు పేరు:",
index f8ba339..79c6d4c 100644 (file)
        "prefs-emailconfirm-label": "การยืนยันอีเมล:",
        "youremail": "อีเมล:",
        "username": "{{GENDER:$1|ชื่อผู้ใช้}}:",
-       "uid": "รหัสประจำตัว{{GENDER:$1|ผู้ใช้}}:",
        "prefs-memberingroups": "{{GENDER:$2|สมาชิก}}ใน{{PLURAL:$1|กลุ่ม|กลุ่ม}}:",
        "prefs-registration": "เวลาลงทะเบียน:",
        "yourrealname": "ชื่อจริง:",
index 1580cde..0c39b04 100644 (file)
        "prefs-emailconfirm-label": "Kumpirmasyon ng e-liham:",
        "youremail": "E-liham:",
        "username": "{{GENDER:$1|Bansag}}:",
-       "uid": "ID ng {{GENDER:$1|tagagamit}}:",
        "prefs-memberingroups": "{{GENDER:$2|Kasapi}} ng {{PLURAL:$1|na pangkat|na mga pangkat}}:",
        "prefs-memberingroups-type": "$1",
        "prefs-registration": "Oras ng pagtatala:",
index 79752a5..8df60af 100644 (file)
        "prefs-emailconfirm-label": "E-posta doğrulaması:",
        "youremail": "E-posta:",
        "username": "{{GENDER:$1|Kullanıcı adı}}:",
-       "uid": "{{GENDER:$1|Kullanıcı}} kimliği:",
        "prefs-memberingroups": "{{GENDER:$2|Üye}} {{PLURAL:$1|group|grupları}}:",
        "prefs-registration": "Kayıt zamanı:",
        "yourrealname": "Gerçek adınız:",
index c70f3cf..5f868d7 100644 (file)
        "prefs-emailconfirm-label": "Xác nhận thư điện tử:",
        "youremail": "Thư điện tử:",
        "username": "{{GENDER:$1}}Tên người dùng:",
-       "uid": "{{GENDER:$1}}Số thứ tự thành viên:",
        "prefs-memberingroups": "{{GENDER:$2}}Thành viên của {{PLURAL:$1|nhóm|các nhóm}}:",
        "prefs-registration": "Lúc mở tài khoản:",
        "yourrealname": "Tên thật:",
index 6e12f9b..e35ecc3 100644 (file)
        "prefs-emailconfirm-label": "ע-פאסט באַשטעטיקונג:",
        "youremail": "ע-פאסט:",
        "username": "{{GENDER:$1|באַניצער־נאָמען}}:",
-       "uid": "{{GENDER:$1|באַנוצער־נומער}}:",
        "prefs-memberingroups": "{{GENDER:$2|מיטגליד}} אין {{PLURAL:$1|גרופע|גרופעס}}:",
        "prefs-registration": "אײַנשרײַבן צײַט:",
        "yourrealname": "עכטער נאמען *:",
index eec0373..cbaec05 100644 (file)
        "parser-template-recursion-depth-warning": "模板递归深度越限($1)",
        "language-converter-depth-warning": "字词转换器深度越限($1)",
        "node-count-exceeded-category": "页面的节点数超出限制",
+       "node-count-exceeded-category-desc": "节点数溢出页面的分类。",
        "node-count-exceeded-warning": "页面超出了节点数",
        "expansion-depth-exceeded-category": "扩展深度超出限制的页面",
+       "expansion-depth-exceeded-category-desc": "这是超出拓展深度页面的分类。",
        "expansion-depth-exceeded-warning": "页面超过了扩展深度",
        "parser-unstrip-loop-warning": "检测到回圈",
        "parser-unstrip-recursion-limit": "递归超过限制 ($1)",
        "prefs-emailconfirm-label": "电子邮件确认:",
        "youremail": "电子邮件:",
        "username": "{{GENDER:$1|用户名}}:",
-       "uid": "{{GENDER:$1|用户}}ID:",
        "prefs-memberingroups": "{{GENDER:$2|用户}}{{PLURAL:$1|组}}:",
        "prefs-registration": "注册时间:",
        "yourrealname": "真实姓名:",
        "watchlistedit-raw-done": "您的监视列表已经更新。",
        "watchlistedit-raw-added": "$1个标题被添加:",
        "watchlistedit-raw-removed": "$1个标题被删除:",
-       "watchlistedit-clear-title": "æ¸\85空ç\9a\84ç\9b\91è§\86å\88\97表",
+       "watchlistedit-clear-title": "清空监视列表",
        "watchlistedit-clear-legend": "清空监视列表",
        "watchlistedit-clear-explain": "所有标题将从您的监视列表中移除",
        "watchlistedit-clear-titles": "标题:",
index 1323ab2..63bfec2 100644 (file)
        "parser-template-recursion-depth-warning": "超出樣版遞迴深度限制 ($1)",
        "language-converter-depth-warning": "已超過字詞轉換器深度限制($1)",
        "node-count-exceeded-category": "頁面的節點數超出限制",
+       "node-count-exceeded-category-desc": "超過節點計數頁面分類。",
        "node-count-exceeded-warning": "頁面超出節點數",
        "expansion-depth-exceeded-category": "擴展深度超出限制的頁面",
+       "expansion-depth-exceeded-category-desc": "這是超出展開深度頁面的分類。",
        "expansion-depth-exceeded-warning": "頁面超出擴展深度",
        "parser-unstrip-loop-warning": "檢測到迴圈",
        "parser-unstrip-recursion-limit": "遞歸超過限制 ($1)",
        "prefs-emailconfirm-label": "電子郵件確認:",
        "youremail": "電子郵件:",
        "username": "{{GENDER:$1|使用者名稱}}:",
-       "uid": "{{GENDER:$1|使用者 ID}}:",
        "prefs-memberingroups": "{{GENDER:$2|所屬}}{{PLURAL:$1|群組}}:",
        "prefs-registration": "註冊時間:",
        "yourrealname": "真實姓名:",
index f69a3a3..9b86e1b 100644 (file)
@@ -189,9 +189,11 @@ class RunJobs extends Maintenance {
 
                $seconds = 0;
                if ( $job->workItemCount() > 0 ) {
-                       $seconds = floor( $job->workItemCount() / $itemsPerSecond );
-                       $remainder = $job->workItemCount() % $itemsPerSecond;
-                       $seconds += ( mt_rand( 1, $itemsPerSecond ) <= $remainder ) ? 1 : 0;
+                       $exactSeconds = $job->workItemCount() / $itemsPerSecond;
+                       // use randomized rounding
+                       $seconds = floor( $exactSeconds );
+                       $remainder = $exactSeconds - $seconds;
+                       $seconds += ( mt_rand() / mt_getrandmax() < $remainder ) ? 1 : 0;
                }
 
                return (int)$seconds;
index 3a6f5e3..abc1661 100644 (file)
@@ -202,7 +202,9 @@ return array(
                'scripts' => 'resources/src/jquery/jquery.accessKeyLabel.js',
                'dependencies' => array(
                        'jquery.client',
+                       'jquery.mwExtension',
                ),
+               'messages' => array( 'brackets', 'word-separator' ),
                'targets' => array( 'mobile', 'desktop' ),
        ),
        'jquery.appear' => array(
index 4caf072..80b8303 100644 (file)
@@ -3,7 +3,7 @@
  *
  * @class jQuery.plugin.accessKeyLabel
  */
-( function ( $ ) {
+( function ( $, mw ) {
 
 // Cached access key prefix for used browser
 var cachedAccessKeyPrefix,
@@ -111,8 +111,10 @@ function getAccessKeyLabel( element ) {
  * @param {HTMLElement} titleElement Element with the title to update (may be the same as `element`)
  */
 function updateTooltipOnElement( element, titleElement ) {
-       var oldTitle = titleElement.title,
-               rawTitle = oldTitle.replace( / \[.*?\]$/, '' ),
+       var array = ( mw.msg( 'word-separator' ) + mw.msg( 'brackets' ) ).split( '$1' ),
+               regexp = new RegExp( $.map( array, $.escapeRE ).join( '.*?' ) + '$' ),
+               oldTitle = titleElement.title,
+               rawTitle = oldTitle.replace( regexp, '' ),
                newTitle = rawTitle,
                accessKeyLabel = getAccessKeyLabel( element );
 
@@ -122,7 +124,8 @@ function updateTooltipOnElement( element, titleElement ) {
        }
 
        if ( accessKeyLabel ) {
-               newTitle += ' [' + accessKeyLabel + ']';
+               // Should be build the same as in Linker::titleAttrib
+               newTitle += mw.msg( 'word-separator' ) + mw.msg( 'brackets', accessKeyLabel );
        }
        if ( oldTitle !== newTitle ) {
                titleElement.title = newTitle;
@@ -194,4 +197,4 @@ $.fn.updateTooltipAccessKeys.setTestMode = function ( mode ) {
  * @mixins jQuery.plugin.accessKeyLabel
  */
 
-}( jQuery ) );
+}( jQuery, mediaWiki ) );
index 6bf01ae..4157b55 100644 (file)
@@ -143,7 +143,7 @@ html .thumbimage {
 html .thumbcaption {
        border: none;
        line-height: 1.4em;
-       padding: 3px;
+       padding: 3px !important;
        font-size: 94%;
 }
 
index e1f7a83..2f8e1e2 100644 (file)
        margin-left: 2em;
 }
 
+.config-download-link a {
+       background: url(images/download-32.png) no-repeat center left;
+       padding-left: 40px; /* 32 px for the image (above), plus some breathing room */
+       height: 32px; /* provide enough vertical room for the image */
+       display: inline-block; /* allow the height property (above) to work */
+       line-height: 32px; /* center the text vertically */
+}
+
 #config-live-log {
        overflow: hidden;
        min-width: 20em;
diff --git a/skins/vector/components/thumbnails.less b/skins/vector/components/thumbnails.less
deleted file mode 100644 (file)
index afb5f2a..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-// FIXME: Due to commonContent.css we have to use html tag to make sure these are more specific
-html .thumb {
-       &.tright {
-               padding: 1px 0 0 15px;
-       }
-
-       &.tleft {
-               padding: 1px 15px 0 0;
-       }
-
-       // these resets should be unnecessary
-       div.thumbinner {
-               border: none;
-               background: none;
-               font-size: 100%;
-       }
-
-       .thumbcaption {
-               line-height: @content-line-height;
-               font-size: .85em;
-               padding: 3px 0 0 0;
-               color: #333;
-       }
-
-       .magnify {
-               display: none;
-       }
-
-       .thumbimage {
-               border: none;
-       }
-}
index 3e824f3..f7b374f 100644 (file)
@@ -8,4 +8,3 @@
 @import "components/footer.less";
 @import 'components/notifications.less';
 @import "components/externalLinks.less";
-@import "components/thumbnails.less";
index d5c5d27..60a63f9 100644 (file)
@@ -1,5 +1,10 @@
 ( function ( $ ) {
-       QUnit.module( 'jquery.accessKeyLabel', QUnit.newMwEnvironment() );
+       QUnit.module( 'jquery.accessKeyLabel', QUnit.newMwEnvironment( {
+               messages: {
+                       'brackets': '[$1]',
+                       'word-separator': ' '
+               }
+       } ) );
 
        var getAccessKeyPrefixTestData = [
                        //ua string, platform string, expected prefix
index 81fda7e..b2587be 100644 (file)
@@ -5,6 +5,11 @@
                },
                teardown: function () {
                        $.fn.updateTooltipAccessKeys.setTestMode( false );
+               },
+               messages: {
+                       // Used by accessKeyLabel in test for addPortletLink
+                       'brackets': '[$1]',
+                       'word-separator': ' '
                }
        } ) );