* @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;
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,
*
*/
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() {
}
*/
abstract class Collation {
- static $instance;
+ private static $instance;
/**
* @return 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
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.
* 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
* 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( "Ё" ),
* 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();
* @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
$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();
// 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;
}
# 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.
$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 ) {
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 = '';
}
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 = '';
}
// 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>
# "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,
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() );
$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()
* @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>'
$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();
$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>";
$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 );
// 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;
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 {
$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 ) ) {
# 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 ) ) {
* @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();
}
$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;
*
* @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 );
* @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(
*/
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;
}
*/
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;
}
* @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;
}
* @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
* 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;
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;
}
}
}
-
}
/**
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;
} 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 {
}
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 ) {
* 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;
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
$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() ) );
$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() ) );
}
$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 ) {
}
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() );
}
* @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
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 );
* @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
*/
# $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 )
* @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
$limit = min( $limit, $wgFeedLimit );
if ( isset( $wgFeedClasses[$class] ) ) {
+ /** @var RSSFeed|AtomFeed $feed */
$feed = new $wgFeedClasses[$class](
$this->feedTitle(),
$this->feedDesc(),
* 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
* 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
* 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 );
* 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
*/
/**
* 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__ );
$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;
}
$content_actions[$key] = $value;
-
}
-
}
wfProfileOut( __METHOD__ );
/**
* build array of common navigation links
* @return array
- * @private
*/
protected function buildNavUrls() {
global $wgUploadNavigationUrl;
/**
* Generate strings used for xml 'id' names
* @return string
- * @private
*/
- function getNameSpaceKey() {
+ protected function getNameSpaceKey() {
return $this->getTitle()->getNamespaceKey();
}
}
* 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 ) {
* 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 ) {
<?php $this->html( 'reporttime' ) ?>
<?php
}
-
}
// 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" );
' 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/'
}
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;
$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";
}
* @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 );
}
return WebRequest::detectServer();
}
-}
+}
\ No newline at end of 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>",
"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]"
}
"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.",
}
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 )
)
);
}
"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:",
"prefs-emailconfirm-label": "تأكيد البريد الإلكتروني:",
"youremail": "البريد:",
"username": "{{GENDER:$1|اسم المستخدم|اسم المستخدمة}}:",
- "uid": "رقم {{GENDER:$1|المستخدم|المستخدمة}}:",
"prefs-memberingroups": "{{GENDER:$2|عضو|عضوة}} في {{PLURAL:$1|مجموعة|مجموعة|مجموعتي|مجموعات}}:",
"prefs-registration": "وقت التسجيل:",
"yourrealname": "الاسم الحقيقي:",
"prefs-emailconfirm-label": "ইমেইল নিশ্চিতকৰণ:",
"youremail": "আপোনাৰ ই-মেইল *",
"username": "{{GENDER:$1|সদস্যনাম}}:",
- "uid": "{{GENDER:$1|User}} চিহ্ন:",
"prefs-memberingroups": "{{PLURAL:$1|গোট|গোটসমূহৰ}} {{GENDER:$2|সদস্য}} :",
"prefs-registration": "পঞ্জীয়ন কৰাৰ সময়:",
"yourrealname": "প্ৰকৃত নাম:",
"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:",
"prefs-emailconfirm-label": "ایمیل دوغرولاماسی:",
"youremail": "ایمیل:",
"username": "{{GENDER:$1|ایستیفادهچی آدی}}:",
- "uid": "{{GENDER:$1|ایستیفادهچی}} ID:",
"prefs-memberingroups": "{{PLURAL:$1|بیر|$1}} قروپ {{GENDER:$2|عوضو}}و:",
"prefs-registration": "یازیلماق واختی:",
"yourrealname": "دوغرو آد:",
"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": "Сапраўднае імя:",
"prefs-emailconfirm-label": "ই-মেইল নিশ্চিতকরণ:",
"youremail": "ইমেইল *",
"username": "{{GENDER:$1|ব্যবহারকারী নাম}}:",
- "uid": "{{GENDER:$1|ব্যবহারকারী}} নং (ID):",
"prefs-memberingroups": "{{PLURAL:$1|দলের|দলসমূহের}} {{GENDER:$2|সদস্য}}:",
"prefs-registration": "নিবন্ধের সময়:",
"yourrealname": "আসল নাম *",
"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*",
"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 *",
"prefs-emailconfirm-label": "Бакъ яр электрони почт:",
"youremail": "Электронан почта:",
"username": "{{GENDER:$1|Декъашхочун цӀе}}:",
- "uid": "Декъашхочун {{GENDER:$1|код}}:",
"prefs-memberingroups": "{{GENDER:$1|Тобана|Тобаншан}} {{PLURAL:$2|декъашхо|декъашхой}}:",
"prefs-registration": "ДӀаяздар кхолийна хан:",
"yourrealname": "Хьан бакъ цӀе:",
"prefs-emailconfirm-label": "پشتڕاستکردنەوەی ئیمەیل:",
"youremail": "ئیمەیل:",
"username": "{{GENDER:$1|ناوی بهکارھێنەر}}:",
- "uid": "پێناسەی {{GENDER:$1|بهکارھێنەر}}:",
"prefs-memberingroups": "{{GENDER:$2|ئەندامی}} {{PLURAL:$1|گرووپی|گرووپەکانی}}:",
"prefs-registration": "کاتی خۆتۆمارکردن:",
"yourrealname": "ناوی ڕاستی:",
"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",
"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*",
"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:",
"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",
"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ě *:",
"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",
"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",
"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:",
"prefs-emailconfirm-label": "تأیید رایانامه:",
"youremail": "رایانامه:",
"username": "{{GENDER:$1|نام کاربری}}:",
- "uid": "شناسهٔ {{GENDER:$1|کاربری}}:",
"prefs-memberingroups": "{{GENDER:$2|عضو}} {{PLURAL:$1|گروه|گروه}}:",
"prefs-registration": "زمان ثبتنام:",
"yourrealname": "نام واقعی:",
"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",
"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 :",
"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": "שם אמיתי:",
"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)*",
"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:",
"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:",
"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:",
"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:",
"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:",
"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必要であれば文章をコピー&ペーストしてテキストファイルとして保存し、後ほど保存をやり直してください。\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": "利用者名の秘匿",
"prefs-emailconfirm-label": "ელ-ფოსტის დადასტურება:",
"youremail": "ელექტრონული ფოსტა:",
"username": "{{GENDER:$1|მომხმარებლის სახელი}}:",
- "uid": "{{GENDER:$1|მომხმარებლის}} იდენტიფიკატორი:",
"prefs-memberingroups": "{{PLURAL:$1|ჯგუფის|ჯგუფების}} {{GENDER:$2|წევრი}}:",
"prefs-memberingroups-type": "$1",
"prefs-registration": "რეგისტრაციის თარიღი",
"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:",
"prefs-emailconfirm-label": "Е-поштаның расталуы:",
"youremail": "Е-поштаңыз:",
"username": "{{GENDER:$1|Қатысушы атыңыз}}:",
- "uid": "{{GENDER:$1|Қатысушы}} теңдестіргішіңіз (ID):",
"prefs-memberingroups": "{{GENDER:$2|Мүше}} {{PLURAL:$1|тобыңыз|топтарыңыз}}:",
"prefs-registration": "Тіркелген уақытыңыз:",
"yourrealname": "Нақты атыңыз:",
"prefs-emailconfirm-label": "이메일 인증:",
"youremail": "이메일:",
"username": "{{GENDER:$1|사용자 이름}}:",
- "uid": "{{GENDER:$1|사용자}} ID:",
"prefs-memberingroups": "{{GENDER:$2|소속}} {{PLURAL:$1|그룹}}:",
"prefs-registration": "등록 시간:",
"yourrealname": "실명:",
"prefs-emailconfirm-label": "Электрон почтаны бегитиу:",
"youremail": "Электрон почта:",
"username": "{{GENDER:$1|Къошулуучу ат}}:",
- "uid": "{{GENDER:$1|Къошулуучуну}} коду:",
"prefs-memberingroups": "{{PLURAL:$1|1=Группаны|Группаланы}} {{GENDER:$2|члени}}:",
"prefs-memberingroups-type": "$1",
"prefs-registration": "Регистрацияны этилген заманы:",
"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",
"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",
"prefs-files": "Шикил",
"youremail": "Электрон почта:",
"username": "Уртахдин тӀвар",
- "uid": "Уртах тайин ийидайди:",
"yourrealname": "Xалис тIвар:",
"yourlanguage": "ЧIалар",
"yournick": "ЦӀийи къул:",
"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": "Метаданный-влак",
"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": "Вистинско име:",
"prefs-emailconfirm-label": "ഇമെയിൽ സ്ഥിരീകരണം:",
"youremail": "ഇമെയിൽ:",
"username": "{{GENDER:$1|ഉപയോക്തൃനാമം}}:",
- "uid": "{{GENDER:$1|ഉപയോക്തൃ}} ഐ.ഡി.:",
"prefs-memberingroups": "{{GENDER:$2|അംഗത്വമുള്ള}} {{PLURAL:$1|സംഘം|സംഘങ്ങൾ}}:",
"prefs-registration": "അംഗത്വം എടുത്തത്:",
"yourrealname": "യഥാർത്ഥ പേര്:",
"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:",
"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:",
"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:",
"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)",
"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": "पूर्वावलोकन"
}
"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": "ପ୍ରକୃତ ନାମ:",
"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:",
"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:",
"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 o 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 a 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",
"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]].",
"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*",
"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:",
"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": "Настоящее имя:",
"prefs-emailconfirm-label": "ई-पत्रं दृढीक्रियताम् :",
"youremail": "ई-पत्रसङ्केतः :",
"username": "{{GENDER:$1|योजकनाम}} :",
- "uid": "{{GENDER:$1|प्रयोकतृनाम}} :",
"prefs-memberingroups": "{{PLURAL:$1|समूहस्य|समूहानां}} {{GENDER:$2|सदस्यः/सदस्याः}} :",
"prefs-registration": "पञ्जीकरणस्य कालः :",
"yourrealname": "वास्तविकनाम :",
"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",
"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:",
"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:",
"prefs-emailconfirm-label": "විද්යුත්-ලිපිනය තහවුරුකිරීම:",
"youremail": "විද්යුත් තැපෑල:",
"username": "{{GENDER:$1|පරිශීලක නාමය}}:",
- "uid": "{{GENDER:$1|පරිශීලක}} අනන්යාංකය:",
"prefs-memberingroups": "ඉදිරියේ දැක්වෙන {{PLURAL:$1|කණ්ඩායමෙහි|කණ්ඩායම් වල}} {{GENDER:$2|සාමාජිකයෙකි}}:",
"prefs-registration": "ලියාපදිංචිවූ වේලාව:",
"yourrealname": "සැබෑ නාමය:",
"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 *:",
"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:",
"prefs-emailconfirm-label": "Hubinta Email-ka:",
"youremail": "E-mail:",
"username": "Gudagal:",
- "uid": "Lambarka isticmaalaha:",
"yourrealname": "Magacaaga runta ah:",
"yourlanguage": "luqad:",
"yournick": "Saxiix cusub:",
"prefs-emailconfirm-label": "Потврда е-адресе:",
"youremail": "Е-адреса:",
"username": "{{GENDER:$1|Корисничко име}}:",
- "uid": "{{GENDER:$1|Кориснички}} ID:",
"prefs-memberingroups": "{{PLURAL:$1|Група|Групе}}:",
"prefs-memberingroups-type": "$1",
"prefs-registration": "Време уписа:",
"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:",
"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:",
"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:",
"prefs-emailconfirm-label": "ఈ-మెయిల్ నిర్ధారణ:",
"youremail": "ఈమెయిలు:",
"username": "{{GENDER:$1|వాడుకరి పేరు}}:",
- "uid": "{{GENDER:$1|వాడుకరి}} ID:",
"prefs-memberingroups": "ఈ {{PLURAL:$1|గుంపులో|గుంపులలో}} {{GENDER:$2|సభ్యుడు|సభ్యురాలు}}:",
"prefs-registration": "నమోదైన సమయం:",
"yourrealname": "అసలు పేరు:",
"prefs-emailconfirm-label": "การยืนยันอีเมล:",
"youremail": "อีเมล:",
"username": "{{GENDER:$1|ชื่อผู้ใช้}}:",
- "uid": "รหัสประจำตัว{{GENDER:$1|ผู้ใช้}}:",
"prefs-memberingroups": "{{GENDER:$2|สมาชิก}}ใน{{PLURAL:$1|กลุ่ม|กลุ่ม}}:",
"prefs-registration": "เวลาลงทะเบียน:",
"yourrealname": "ชื่อจริง:",
"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:",
"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:",
"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:",
"prefs-emailconfirm-label": "ע-פאסט באַשטעטיקונג:",
"youremail": "ע-פאסט:",
"username": "{{GENDER:$1|באַניצער־נאָמען}}:",
- "uid": "{{GENDER:$1|באַנוצער־נומער}}:",
"prefs-memberingroups": "{{GENDER:$2|מיטגליד}} אין {{PLURAL:$1|גרופע|גרופעס}}:",
"prefs-registration": "אײַנשרײַבן צײַט:",
"yourrealname": "עכטער נאמען *:",
"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": "标题:",
"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": "真實姓名:",
$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;
'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(
*
* @class jQuery.plugin.accessKeyLabel
*/
-( function ( $ ) {
+( function ( $, mw ) {
// Cached access key prefix for used browser
var cachedAccessKeyPrefix,
* @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 );
}
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;
* @mixins jQuery.plugin.accessKeyLabel
*/
-}( jQuery ) );
+}( jQuery, mediaWiki ) );
html .thumbcaption {
border: none;
line-height: 1.4em;
- padding: 3px;
+ padding: 3px !important;
font-size: 94%;
}
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;
+++ /dev/null
-// 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;
- }
-}
@import "components/footer.less";
@import 'components/notifications.less';
@import "components/externalLinks.less";
-@import "components/thumbnails.less";
( 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
},
teardown: function () {
$.fn.updateTooltipAccessKeys.setTestMode( false );
+ },
+ messages: {
+ // Used by accessKeyLabel in test for addPortletLink
+ 'brackets': '[$1]',
+ 'word-separator': ' '
}
} ) );