* (bug 54597) $wgBlockOpenProxies, $wgProxyPorts, $wgProxyScriptPath, and
$wgProxyMemcExpiry have been removed, along with the open proxy scanner
script they were added for.
+* Default value of $wgMaxShellMemory has been tripled (it's now 300 MB).
=== New features in 1.22 ===
* (bug 44525) mediawiki.jqueryMsg can now parse (whitelisted) HTML elements and attributes.
* Added a hook, SpecialWatchlistGetNonRevisionTypes, to allow extensions
with custom recentchanges entries to hook into the Watchlist without
clobbering each other.
+* A hidden, empty input field was added to the edit form, and any edit that fills
+ it in will be rejected. This prevents against the simplest form of spambots.
+ Previously in the "SimpleAntiSpam" extension by Ryan Schmidt.
+* populateRevisionLength.php maintenance script updated to also populate
+ archive.ar_len field.
=== Bug fixes in 1.22 ===
* Disable Special:PasswordReset when $wgEnableEmail is false. Previously one
* (bug 46751) Made Buryat (Russia) (буряад) (bxr) fallback to Russian.
=== Other changes in 1.22 ===
+* The rc_type field in the recentchanges table has been superseded by a new
+ rc_source field. The rc_source field is a string representation of the
+ change type where rc_type was a numeric constant. This field is not yet
+ queried but will be in a future point release of 1.22.
+** Utilize update.php to create and populate this new field. On larger wiki's
+ which do not wish to update recentchanges table in one large update please
+ review the sql and comments in maintenance/archives/patch-rc_source.sql.
+** The rc_type field of recentchanges will be deprecated in a future point
+ release.
* BREAKING CHANGE: Implementation of MediaWiki's JS and JSON value encoding
has changed:
** MediaWiki no longer supports PHP installations in which the native JSON
=== Configuration changes in 1.23 ===
=== New features in 1.23 ===
+* ResourceLoader can utilize the Web Storage API to cache modules client-side.
+ Compared to the browser cache, caching in Web Storage allows ResourceLoader
+ to be more granular about evicting stale modules from the cache while
+ retaining the ability to retrieve multiple modules in a single HTTP request.
+ This capability can be enabled by setting $wgResourceLoaderStorageEnabled to
+ true. This feature is currently considered experimental and should only be
+ enabled with care.
=== Bug fixes in 1.23 ===
+* (bug 41759) The "updated since last visit" markers (on history pages, recent
+ changes and watchlist) and the talk page message indicator are now correctly
+ updated when the user is viewing old revisions of pages, instead of always
+ acting as if the latest revision was being viewed.
=== API changes in 1.23 ===
'UserClearNewTalkNotification': Called when clearing the "You have new
messages!" message, return false to not delete it.
$user: User (object) that will clear the message
+$oldid: ID of the talk page revision being viewed (0 means the most recent one)
'UserComparePasswords': Called when checking passwords, return false to
override the default password checks.
wfDebug( __METHOD__ . ": done file cache\n" );
# tell wgOut that output is taken care of
$outputPage->disable();
- $this->mPage->doViewUpdates( $user );
+ $this->mPage->doViewUpdates( $user, $oldid );
wfProfileOut( __METHOD__ );
return;
$outputPage->setFollowPolicy( $policy['follow'] );
$this->showViewFooter();
- $this->mPage->doViewUpdates( $user );
+ $this->mPage->doViewUpdates( $user, $oldid );
$outputPage->addModules( 'mediawiki.action.view.postEdit' );
$this->mRevIdFetched = $de->mNewid;
$de->showDiffPage( $diffOnly );
- if ( $diff == 0 || $diff == $this->mPage->getLatest() ) {
- # Run view updates for current revision only
- $this->mPage->doViewUpdates( $user );
- }
+ // Run view updates for the newer revision being diffed (and shown below the diff if not $diffOnly)
+ list( $old, $new ) = $de->mapDiffPrevNext( $oldid, $diff );
+ // New can be false, convert it to 0 - this conveniently means the latest revision
+ $this->mPage->doViewUpdates( $user, (int)$new );
}
/**
);
class AutoLoader {
+ static $autoloadLocalClassesLower = null;
+
/**
* autoload - take a class name and attempt to load it
*
* as well.
*/
static function autoload( $className ) {
- global $wgAutoloadClasses, $wgAutoloadLocalClasses;
+ global $wgAutoloadClasses, $wgAutoloadLocalClasses,
+ $wgAutoloadAttemptLowercase;
// Workaround for PHP bug <https://bugs.php.net/bug.php?id=49143> (5.3.2. is broken, it's
// fixed in 5.3.6). Strip leading backslashes from class names. When namespaces are used,
$filename = $wgAutoloadLocalClasses[$className];
} elseif ( isset( $wgAutoloadClasses[$className] ) ) {
$filename = $wgAutoloadClasses[$className];
- } else {
- # Try a different capitalisation
- # The case can sometimes be wrong when unserializing PHP 4 objects
+ } elseif ( $wgAutoloadAttemptLowercase ) {
+ /*
+ * Try a different capitalisation.
+ *
+ * PHP 4 objects are always serialized with the classname coerced to lowercase,
+ * and we are plagued with several legacy uses created by MediaWiki < 1.5, see
+ * https://wikitech.wikimedia.org/wiki/Text_storage_data
+ */
$filename = false;
$lowerClass = strtolower( $className );
- foreach ( $wgAutoloadLocalClasses as $class2 => $file2 ) {
- if ( strtolower( $class2 ) == $lowerClass ) {
- $filename = $file2;
- }
+ if ( self::$autoloadLocalClassesLower === null ) {
+ self::$autoloadLocalClassesLower = array_change_key_case( $wgAutoloadLocalClasses, CASE_LOWER );
}
- if ( !$filename ) {
+ if ( isset( self::$autoloadLocalClassesLower[$lowerClass] ) ) {
if ( function_exists( 'wfDebug' ) ) {
- wfDebug( "Class {$className} not found; skipped loading\n" );
+ wfDebug( "Class {$className} was loaded using incorrect case.\n" );
}
+ $filename = self::$autoloadLocalClassesLower[$lowerClass];
+ }
+ }
- # Give up
- return false;
+ if ( !$filename ) {
+ if ( function_exists( 'wfDebug' ) ) {
+ # FIXME: This is not very polite. Assume we do not manage the class.
+ wfDebug( "Class {$className} not found; skipped loading\n" );
}
+
+ # Give up
+ return false;
}
# Make an absolute path, this improves performance by avoiding some stat calls
}
$data = array( Html::rawElement( 'label', array( 'for' => 'tagfilter' ), wfMessage( 'tag-filter' )->parse() ),
- Xml::input( 'tagfilter', 20, $selected, array( 'class' => 'mw-tagfilter-input' ) ) );
+ Xml::input( 'tagfilter', 20, $selected, array( 'class' => 'mw-tagfilter-input', 'id' => 'tagfilter' ) ) );
if ( !$fullForm ) {
return $data;
"$IP/resources/mediawiki.less/",
);
+/**
+ * Whether ResourceLoader should attempt to persist modules in localStorage on
+ * browsers that support the Web Storage API.
+ *
+ * @since 1.23 - Client-side module persistence is experimental. Exercise care.
+ */
+$wgResourceLoaderStorageEnabled = false;
+
+/**
+ * Cache version for client-side ResourceLoader module storage. You can trigger
+ * invalidation of the contents of the module store by incrementing this value.
+ *
+ * @since 1.23
+ */
+$wgResourceLoaderStorageVersion = 1;
+
/** @} */ # End of resource loader settings }
/*************************************************************************//**
*/
$wgAutoloadClasses = array();
+/**
+ * Switch controlling legacy case-insensitive classloading.
+ * Do not disable if your wiki must support data created by PHP4, or by
+ * MediaWiki 1.4 or earlier.
+ */
+$wgAutoloadAttemptLowercase = true;
+
/**
* An array of extension types and inside that their names, versions, authors,
* urls, descriptions and pointers to localized description msgs. Note that
/**
* Maximum amount of virtual memory available to shell processes under linux, in KB.
*/
-$wgMaxShellMemory = 102400;
+$wgMaxShellMemory = 307200;
/**
* Maximum file size created by shell processes under linux, in KB
return $status;
}
+ $spam = $wgRequest->getText( 'wpAntispam' );
+ if ( $spam !== '' ) {
+ wfDebugLog(
+ 'SimpleAntiSpam',
+ $wgUser->getName() .
+ ' editing "' .
+ $this->mTitle->getPrefixedText() .
+ '" submitted bogus field "' .
+ $spam .
+ '"'
+ );
+ $status->fatal( 'spamprotectionmatch', false );
+ $status->value = self::AS_SPAM_ERROR;
+ wfProfileOut( __METHOD__ . '-checks' );
+ wfProfileOut( __METHOD__ );
+ return $status;
+ }
+
try {
# Construct Content object
$textbox_content = $this->toEditContent( $this->textbox1 );
call_user_func_array( $formCallback, array( &$wgOut ) );
}
+ // Add an empty field to trip up spambots
+ $wgOut->addHTML(
+ Xml::openElement( 'div', array( 'id' => 'antispam-container', 'style' => 'display: none;' ) )
+ . Html::rawElement( 'label', array( 'for' => 'wpAntiSpam' ), wfMessage( 'simpleantispam-label' )->parse() )
+ . Xml::element( 'input', array( 'type' => 'text', 'name' => 'wpAntispam', 'id' => 'wpAntispam', 'value' => '' ) )
+ . Xml::closeElement( 'div' )
+ );
+
wfRunHooks( 'EditPage::showEditForm:fields', array( &$this, &$wgOut ) );
// Put these up at the top to ensure they aren't lost on early form submission
global $wgRedactedFunctionArguments;
$finalExceptionText = '';
+ // Unique value to indicate redacted parameters
+ $redacted = new stdClass();
+
foreach ( $e->getTrace() as $i => $call ) {
$checkFor = array();
if ( isset( $call['class'] ) ) {
foreach ( $checkFor as $check ) {
if ( isset( $wgRedactedFunctionArguments[$check] ) ) {
foreach ( (array)$wgRedactedFunctionArguments[$check] as $argNo ) {
- $call['args'][$argNo] = 'REDACTED';
+ $call['args'][$argNo] = $redacted;
}
}
}
$args = array();
if ( isset( $call['args'] ) ) {
foreach ( $call['args'] as $arg ) {
- if ( is_object( $arg ) ) {
+ if ( $arg === $redacted ) {
+ $args[] = 'REDACTED';
+ } elseif ( is_object( $arg ) ) {
$args[] = 'Object(' . get_class( $arg ) . ')';
} elseif( is_array( $arg ) ) {
$args[] = 'Array';
$out->setPageTitle( $this->getTitle()->getPrefixedText() );
$out->addHTML( $this->viewRedirect( Title::makeTitle( NS_FILE, $this->mPage->getFile()->getName() ),
/* $appendSubtitle */ true, /* $forceKnown */ true ) );
- $this->mPage->doViewUpdates( $this->getContext()->getUser() );
+ $this->mPage->doViewUpdates( $this->getContext()->getUser(), $this->getOldID() );
return;
}
}
# Just need to set the right headers
$out->setArticleFlag( true );
$out->setPageTitle( $this->getTitle()->getPrefixedText() );
- $this->mPage->doViewUpdates( $this->getContext()->getUser() );
+ $this->mPage->doViewUpdates( $this->getContext()->getUser(), $this->getOldID() );
}
# Show shared description, if needed
$this->loadFile();
$descUrl = $this->mPage->getFile()->getDescriptionUrl();
- $descText = $this->mPage->getFile()->getDescriptionText();
+ $descText = $this->mPage->getFile()->getDescriptionText( $this->getContext()->getLanguage() );
/* Add canonical to head if there is no local page for this shared file */
if ( $descUrl && $this->mPage->getID() == 0 ) {
$accesskey = self::accesskey( $name );
if ( $accesskey !== false ) {
if ( $tooltip === false || $tooltip === '' ) {
- $tooltip = "[$accesskey]";
+ $tooltip = wfMessage( 'brackets', $accesskey )->escaped();
} else {
- $tooltip .= " [$accesskey]";
+ $tooltip .= wfMessage( 'word-separator' )->escaped();
+ $tooltip .= wfMessage( 'brackets', $accesskey )->escaped();
}
}
}
*/
private $mTarget = null;
+ /**
+ * @var bool: Whether output should contain table of contents
+ */
+ private $mEnableTOC = true;
+
/**
* Constructor for OutputPage. This should not be called directly.
* Instead a new RequestContext should be created and it will implicitly create
*/
function addParserOutput( &$parserOutput ) {
$this->addParserOutputNoText( $parserOutput );
+ $parserOutput->setTOCEnabled( $this->mEnableTOC );
$text = $parserOutput->getText();
wfRunHooks( 'OutputPageBeforeHTML', array( &$this, &$text ) );
$this->addHTML( $text );
return array();
}
+ /**
+ * Enables/disables TOC, doesn't override __NOTOC__
+ * @param bool $flag
+ * @since 1.22
+ */
+ public function enableTOC( $flag = true ) {
+ $this->mEnableTOC = $flag;
+ }
+
+ /**
+ * @return bool
+ * @since 1.22
+ */
+ public function isTOCEnabled() {
+ return $this->mEnableTOC;
+ }
}
return $fields;
}
+ /**
+ * Return the list of revision fields that should be selected to create
+ * a new revision from an archive row.
+ * @return array
+ */
+ public static function selectArchiveFields() {
+ global $wgContentHandlerUseDB;
+ $fields = array(
+ 'ar_id',
+ 'ar_page_id',
+ 'ar_rev_id',
+ 'ar_text_id',
+ 'ar_timestamp',
+ 'ar_comment',
+ 'ar_user_text',
+ 'ar_user',
+ 'ar_minor_edit',
+ 'ar_deleted',
+ 'ar_len',
+ 'ar_parent_id',
+ 'ar_sha1',
+ );
+
+ if ( $wgContentHandlerUseDB ) {
+ $fields[] = 'ar_content_format';
+ $fields[] = 'ar_content_model';
+ }
+ return $fields;
+ }
+
/**
* Return the list of text fields that should be selected to read the
* revision text
if ( count( $newtalks ) == 1 && $newtalks[0]['wiki'] === wfWikiID() ) {
$uTalkTitle = $user->getTalkPage();
-
- if ( !$uTalkTitle->equals( $out->getTitle() ) ) {
- $lastSeenRev = isset( $newtalks[0]['rev'] ) ? $newtalks[0]['rev'] : null;
- $nofAuthors = 0;
- if ( $lastSeenRev !== null ) {
- $plural = true; // Default if we have a last seen revision: if unknown, use plural
- $latestRev = Revision::newFromTitle( $uTalkTitle, false, Revision::READ_NORMAL );
- if ( $latestRev !== null ) {
- // Singular if only 1 unseen revision, plural if several unseen revisions.
- $plural = $latestRev->getParentId() !== $lastSeenRev->getId();
- $nofAuthors = $uTalkTitle->countAuthorsBetween(
- $lastSeenRev, $latestRev, 10, 'include_new' );
- }
- } else {
- // Singular if no revision -> diff link will show latest change only in any case
- $plural = false;
+ $lastSeenRev = isset( $newtalks[0]['rev'] ) ? $newtalks[0]['rev'] : null;
+ $nofAuthors = 0;
+ if ( $lastSeenRev !== null ) {
+ $plural = true; // Default if we have a last seen revision: if unknown, use plural
+ $latestRev = Revision::newFromTitle( $uTalkTitle, false, Revision::READ_NORMAL );
+ if ( $latestRev !== null ) {
+ // Singular if only 1 unseen revision, plural if several unseen revisions.
+ $plural = $latestRev->getParentId() !== $lastSeenRev->getId();
+ $nofAuthors = $uTalkTitle->countAuthorsBetween(
+ $lastSeenRev, $latestRev, 10, 'include_new' );
}
- $plural = $plural ? 2 : 1;
- // 2 signifies "more than one revision". We don't know how many, and even if we did,
- // the number of revisions or authors is not necessarily the same as the number of
- // "messages".
- $newMessagesLink = Linker::linkKnown(
- $uTalkTitle,
- $this->msg( 'newmessageslinkplural' )->params( $plural )->escaped(),
- array(),
- array( 'redirect' => 'no' )
- );
+ } else {
+ // Singular if no revision -> diff link will show latest change only in any case
+ $plural = false;
+ }
+ $plural = $plural ? 2 : 1;
+ // 2 signifies "more than one revision". We don't know how many, and even if we did,
+ // the number of revisions or authors is not necessarily the same as the number of
+ // "messages".
+ $newMessagesLink = Linker::linkKnown(
+ $uTalkTitle,
+ $this->msg( 'newmessageslinkplural' )->params( $plural )->escaped(),
+ array(),
+ array( 'redirect' => 'no' )
+ );
- $newMessagesDiffLink = Linker::linkKnown(
- $uTalkTitle,
- $this->msg( 'newmessagesdifflinkplural' )->params( $plural )->escaped(),
- array(),
- $lastSeenRev !== null
- ? array( 'oldid' => $lastSeenRev->getId(), 'diff' => 'cur' )
- : array( 'diff' => 'cur' )
- );
+ $newMessagesDiffLink = Linker::linkKnown(
+ $uTalkTitle,
+ $this->msg( 'newmessagesdifflinkplural' )->params( $plural )->escaped(),
+ array(),
+ $lastSeenRev !== null
+ ? array( 'oldid' => $lastSeenRev->getId(), 'diff' => 'cur' )
+ : array( 'diff' => 'cur' )
+ );
- if ( $nofAuthors >= 1 && $nofAuthors <= 10 ) {
- $newMessagesAlert = $this->msg(
- 'youhavenewmessagesfromusers',
- $newMessagesLink,
- $newMessagesDiffLink
- )->numParams( $nofAuthors );
- } else {
- // $nofAuthors === 11 signifies "11 or more" ("more than 10")
- $newMessagesAlert = $this->msg(
- $nofAuthors > 10 ? 'youhavenewmessagesmanyusers' : 'youhavenewmessages',
- $newMessagesLink,
- $newMessagesDiffLink
- );
- }
- $newMessagesAlert = $newMessagesAlert->text();
- # Disable Squid cache
- $out->setSquidMaxage( 0 );
+ if ( $nofAuthors >= 1 && $nofAuthors <= 10 ) {
+ $newMessagesAlert = $this->msg(
+ 'youhavenewmessagesfromusers',
+ $newMessagesLink,
+ $newMessagesDiffLink
+ )->numParams( $nofAuthors );
+ } else {
+ // $nofAuthors === 11 signifies "11 or more" ("more than 10")
+ $newMessagesAlert = $this->msg(
+ $nofAuthors > 10 ? 'youhavenewmessagesmanyusers' : 'youhavenewmessages',
+ $newMessagesLink,
+ $newMessagesDiffLink
+ );
}
+ $newMessagesAlert = $newMessagesAlert->text();
+ # Disable Squid cache
+ $out->setSquidMaxage( 0 );
} elseif ( count( $newtalks ) ) {
$sep = $this->msg( 'newtalkseparator' )->escaped();
$msgs = array();
}
} else {
$msgs = $this->getErrorMessageArray( $this->errors );
- $wrapper = new RawMessage( '* $' . implode( "\n* \$", range( 1, count( $msgs ) + 1 ) ) );
- $wrapper->params( $msgs )->parse();
+ $msgCount = count( $msgs );
+
+ if ( $shortContext ) {
+ $msgCount++;
+ }
+
+ $wrapper = new RawMessage( '* $' . implode( "\n* \$", range( 1, $msgCount ) ) );
+ $s = $wrapper->params( $msgs )->parse();
if ( $longContext ) {
$s = wfMessage( $longContext, $wrapper );
$s = wfMessage( $shortContext, $wrapper );
}
}
+
return $s;
}
* the next change of the page if it's watched etc.
* @note If the user doesn't have 'editmywatchlist', this will do nothing.
* @param $title Title of the article to look at
+ * @param int $oldid The revision id being viewed. If not given or 0, latest revision is assumed.
*/
- public function clearNotification( &$title ) {
+ public function clearNotification( &$title, $oldid = 0 ) {
global $wgUseEnotif, $wgShowUpdatedMarker;
// Do nothing if the database is locked to writes
return;
}
- if ( $title->getNamespace() == NS_USER_TALK &&
- $title->getText() == $this->getName() ) {
- if ( !wfRunHooks( 'UserClearNewTalkNotification', array( &$this ) ) ) {
+ // If we're working on user's talk page, we should update the talk page message indicator
+ if ( $title->getNamespace() == NS_USER_TALK && $title->getText() == $this->getName() ) {
+ if ( !wfRunHooks( 'UserClearNewTalkNotification', array( &$this, $oldid ) ) ) {
return;
}
- $this->setNewtalk( false );
+
+ $nextid = $oldid ? $title->getNextRevisionID( $oldid ) : null;
+
+ if ( !$oldid || !$nextid ) {
+ // If we're looking at the latest revision, we should definitely clear it
+ $this->setNewtalk( false );
+ } else {
+ // Otherwise we should update its revision, if it's present
+ if ( $this->getNewtalk() ) {
+ // Naturally the other one won't clear by itself
+ $this->setNewtalk( false );
+ $this->setNewtalk( true, Revision::newFromId( $nextid ) );
+ }
+ }
}
if ( !$wgUseEnotif && !$wgShowUpdatedMarker ) {
$force = 'force';
}
- $this->getWatchedItem( $title )->resetNotificationTimestamp( $force );
+ $this->getWatchedItem( $title )->resetNotificationTimestamp( $force, $oldid );
}
/**
if ( $id != 0 ) {
$dbw = wfGetDB( DB_MASTER );
$dbw->update( 'watchlist',
- array( /* SET */
- 'wl_notificationtimestamp' => null
- ), array( /* WHERE */
- 'wl_user' => $id
- ), __METHOD__
+ array( /* SET */ 'wl_notificationtimestamp' => null ),
+ array( /* WHERE */ 'wl_user' => $id ),
+ __METHOD__
);
- # We also need to clear here the "you have new message" notification for the own user_talk page
- # This is cleared one page view later in Article::viewUpdates();
+ // We also need to clear here the "you have new message" notification for the own user_talk page;
+ // it's cleared one page view later in WikiPage::doViewUpdates().
}
}
*
* @param $force Whether to force the write query to be executed even if the
* page is not watched or the notification timestamp is already NULL.
+ * @param int $oldid The revision id being viewed. If not given or 0, latest revision is assumed.
*/
- public function resetNotificationTimestamp( $force = '' ) {
+ public function resetNotificationTimestamp( $force = '', $oldid = 0 ) {
// Only loggedin user can have a watchlist
if ( wfReadOnly() || $this->mUser->isAnon() || !$this->isAllowed( 'editmywatchlist' ) ) {
return;
}
}
+ $title = $this->getTitle();
+ if ( !$oldid ) {
+ // No oldid given, assuming latest revision; clear the timestamp.
+ $notificationTimestamp = null;
+ } elseif ( !$title->getNextRevisionID( $oldid ) ) {
+ // Oldid given and is the latest revision for this title; clear the timestamp.
+ $notificationTimestamp = null;
+ } else {
+ // See if the version marked as read is more recent than the one we're viewing.
+ // Call load() if it wasn't called before due to $force.
+ $this->load();
+
+ if ( $this->timestamp === null ) {
+ // This can only happen if $force is enabled.
+ $notificationTimestamp = null;
+ } else {
+ // Oldid given and isn't the latest; update the timestamp.
+ // This will result in no further notification emails being sent!
+ $dbr = wfGetDB( DB_SLAVE );
+ $notificationTimestamp = $dbr->selectField(
+ 'revision', 'rev_timestamp',
+ array( 'rev_page' => $title->getArticleID(), 'rev_id' => $oldid )
+ );
+ // We need to go one second to the future because of various strict comparisons
+ // throughout the codebase
+ $ts = new MWTimestamp( $notificationTimestamp );
+ $ts->timestamp->add( new DateInterval( 'PT1S' ) );
+ $notificationTimestamp = $ts->getTimestamp( TS_MW );
+
+ if ( $notificationTimestamp < $this->timestamp ) {
+ if ( $force != 'force' ) {
+ return;
+ } else {
+ // This is a little silly…
+ $notificationTimestamp = $this->timestamp;
+ }
+ }
+ }
+ }
+
// If the page is watched by the user (or may be watched), update the timestamp on any
// any matching rows
$dbw = wfGetDB( DB_MASTER );
- $dbw->update( 'watchlist', array( 'wl_notificationtimestamp' => null ),
+ $dbw->update( 'watchlist', array( 'wl_notificationtimestamp' => $notificationTimestamp ),
$this->dbCond(), __METHOD__ );
$this->timestamp = null;
}
$cache->loadFromFileCache( $this->context );
}
// Do any stats increment/watchlist stuff
+ // Assume we're viewing the latest revision (this should always be the case with file cache)
$this->context->getWikiPage()->doViewUpdates( $this->context->getUser() );
// Tell OutputPage that output is taken care of
$this->context->getOutput()->disable();
/**
* Do standard deferred updates after page view
- * @param $user User The relevant user
+ * @param User $user The relevant user
+ * @param int $oldid The revision id being viewed. If not given or 0, latest revision is assumed.
*/
- public function doViewUpdates( User $user ) {
+ public function doViewUpdates( User $user, $oldid = 0 ) {
global $wgDisableCounters;
if ( wfReadOnly() ) {
return;
}
// Update newtalk / watchlist notification status
- $user->clearNotification( $this->mTitle );
+ $user->clearNotification( $this->mTitle, $oldid );
}
/**
public function getDescription() {
return array(
- 'Log in and get the authentication tokens. ',
+ 'Log in and get the authentication tokens.',
'In the event of a successful log-in, a cookie will be attached',
- 'to your session. In the event of a failed log-in, you will not ',
+ 'to your session. In the event of a failed log-in, you will not',
'be able to attempt another log-in through this method for 5 seconds.',
'This is to prevent password guessing by automated password crackers'
);
array( 'code' => 'NeedToken', 'info' => 'You need to resubmit your login with the specified token. See https://bugzilla.wikimedia.org/show_bug.cgi?id=23076' ),
array( 'code' => 'WrongToken', 'info' => 'You specified an invalid token' ),
array( 'code' => 'NoName', 'info' => 'You didn\'t set the lgname parameter' ),
- array( 'code' => 'Illegal', 'info' => ' You provided an illegal username' ),
- array( 'code' => 'NotExists', 'info' => ' The username you provided doesn\'t exist' ),
- array( 'code' => 'EmptyPass', 'info' => ' You didn\'t set the lgpassword parameter or you left it empty' ),
- array( 'code' => 'WrongPass', 'info' => ' The password you provided is incorrect' ),
+ array( 'code' => 'Illegal', 'info' => 'You provided an illegal username' ),
+ array( 'code' => 'NotExists', 'info' => 'The username you provided doesn\'t exist' ),
+ array( 'code' => 'EmptyPass', 'info' => 'You didn\'t set the lgpassword parameter or you left it empty' ),
+ array( 'code' => 'WrongPass', 'info' => 'The password you provided is incorrect' ),
array( 'code' => 'WrongPluginPass', 'info' => 'Same as "WrongPass", returned when an authentication plugin rather than MediaWiki itself rejected the password' ),
array( 'code' => 'CreateBlocked', 'info' => 'The wiki tried to automatically create a new account for you, but your IP address has been blocked from account creation' ),
array( 'code' => 'Throttled', 'info' => 'You\'ve logged in too many times in a short time' ),
public function getDescription() {
return array(
'Get a set of random pages',
- 'NOTE: Pages are listed in a fixed sequence, only the starting point is random. This means that if, for example, "Main Page" is the first ',
+ 'NOTE: Pages are listed in a fixed sequence, only the starting point is random. This means that if, for example, "Main Page" is the first',
' random page on your list, "List of fictional monkeys" will *always* be second, "List of people on stamps of Vanuatu" third, etc',
'NOTE: If the number of pages in the namespace is lower than rnlimit, you will get fewer pages. You will not get the same page twice'
);
* rc_namespace namespace #
* rc_title non-prefixed db key
* rc_type is new entry, used to determine whether updating is necessary
+ * rc_source string representation of change source
* rc_minor is minor
* rc_cur_id page_id of associated page entry
* rc_user user id who made the entry
* @todo document functions and variables
*/
class RecentChange {
+
+ // Constants for the rc_source field. Extensions may also have
+ // their own source constants.
+ const SRC_EDIT = 'mw.edit';
+ const SRC_NEW = 'mw.new';
+ const SRC_LOG = 'mw.log';
+ const SRC_EXTERNAL = 'mw.external'; // obsolete
+
var $mAttribs = array(), $mExtra = array();
/**
'rc_this_oldid',
'rc_last_oldid',
'rc_type',
+ 'rc_source',
'rc_patrolled',
'rc_ip',
'rc_old_len',
'rc_namespace' => $title->getNamespace(),
'rc_title' => $title->getDBkey(),
'rc_type' => RC_EDIT,
+ 'rc_source' => self::SRC_EDIT,
'rc_minor' => $minor ? 1 : 0,
'rc_cur_id' => $title->getArticleID(),
'rc_user' => $user->getId(),
'rc_namespace' => $title->getNamespace(),
'rc_title' => $title->getDBkey(),
'rc_type' => RC_NEW,
+ 'rc_source' => self::SRC_NEW,
'rc_minor' => $minor ? 1 : 0,
'rc_cur_id' => $title->getArticleID(),
'rc_user' => $user->getId(),
'rc_namespace' => $target->getNamespace(),
'rc_title' => $target->getDBkey(),
'rc_type' => RC_LOG,
+ 'rc_source' => self::SRC_LOG,
'rc_minor' => 0,
'rc_cur_id' => $target->getArticleID(),
'rc_user' => $user->getId(),
'rc_comment' => $row->rev_comment,
'rc_minor' => $row->rev_minor_edit ? 1 : 0,
'rc_type' => $row->page_is_new ? RC_NEW : RC_EDIT,
+ 'rc_source' => $row->page_is_new ? self::SRC_NEW : self::SRC_EDIT,
'rc_cur_id' => $row->page_id,
'rc_this_oldid' => $row->rev_id,
'rc_last_oldid' => isset( $row->rc_last_oldid ) ? $row->rc_last_oldid : 0,
if ( count( $this->mTrxIdleCallbacks ) || count( $this->mTrxPreCommitCallbacks ) ) {
$callers = array();
foreach ( $this->mTrxIdleCallbacks as $callbackInfo ) {
- $callers[] = $callbackInfo[0];
+ $callers[] = $callbackInfo[1];
}
$callers = implode( ', ', $callers );
- trigger_error( "DB transaction callbacks still pending (from $callers)." );
+ trigger_error( "DB transaction callbacks still pending (from $callers)." );
}
}
}
$this->mDiffLang = wfGetLangObj( $lang );
}
+ /**
+ * Maps a revision pair definition as accepted by DifferenceEngine constructor
+ * to a pair of actual integers representing revision ids.
+ *
+ * @param int $old Revision id, e.g. from URL parameter 'oldid'
+ * @param int|string $new Revision id or strings 'next' or 'prev', e.g. from URL parameter 'diff'
+ * @return array Array of two revision ids, older first, later second.
+ * Zero signifies invalid argument passed.
+ * false signifies that there is no previous/next revision ($old is the oldest/newest one).
+ */
+ public function mapDiffPrevNext( $old, $new ) {
+ if ( $new === 'prev' ) {
+ // Show diff between revision $old and the previous one. Get previous one from DB.
+ $newid = intval( $old );
+ $oldid = $this->getTitle()->getPreviousRevisionID( $newid );
+ } elseif ( $new === 'next' ) {
+ // Show diff between revision $old and the next one. Get next one from DB.
+ $oldid = intval( $old );
+ $newid = $this->getTitle()->getNextRevisionID( $oldid );
+ } else {
+ $oldid = intval( $old );
+ $newid = intval( $new );
+ }
+
+ return array( $oldid, $newid );
+ }
+
/**
* Load revision IDs
*/
$old = $this->mOldid;
$new = $this->mNewid;
- if ( $new === 'prev' ) {
- # Show diff between revision $old and the previous one.
- # Get previous one from DB.
- $this->mNewid = intval( $old );
- $this->mOldid = $this->getTitle()->getPreviousRevisionID( $this->mNewid );
- } elseif ( $new === 'next' ) {
- # Show diff between revision $old and the next one.
- # Get next one from DB.
- $this->mOldid = intval( $old );
- $this->mNewid = $this->getTitle()->getNextRevisionID( $this->mOldid );
- if ( $this->mNewid === false ) {
- # if no result, NewId points to the newest old revision. The only newer
- # revision is cur, which is "0".
- $this->mNewid = 0;
- }
- } else {
- $this->mOldid = intval( $old );
- $this->mNewid = intval( $new );
- wfRunHooks( 'NewDifferenceEngine', array( $this->getTitle(), &$this->mOldid, &$this->mNewid, $old, $new ) );
+ list( $this->mOldid, $this->mNewid ) = self::mapDiffPrevNext( $old, $new );
+ if ( $new === 'next' && $this->mNewid === false ) {
+ # if no result, NewId points to the newest old revision. The only newer
+ # revision is cur, which is "0".
+ $this->mNewid = 0;
}
+
+ wfRunHooks( 'NewDifferenceEngine', array( $this->getTitle(), &$this->mOldid, &$this->mNewid, $old, $new ) );
}
/**
* @return ScopedCallback|null
*/
final protected function getScopedPHPBehaviorForOps() {
- if ( php_sapi_name() != 'cli' ) { // http://bugs.php.net/bug.php?id=47540
+ if ( PHP_SAPI != 'cli' ) { // http://bugs.php.net/bug.php?id=47540
$old = ignore_user_abort( true ); // avoid half-finished operations
return new ScopedCallback( function() use ( $old ) {
ignore_user_abort( $old );
// Clear any file cache entries
$this->clearCache();
- $supportedOps = array( 'create', 'store', 'copy', 'move', 'delete', 'null' );
+ $supportedOps = array( 'create', 'store', 'copy', 'move', 'delete', 'describe', 'null' );
$async = ( $this->parallelize === 'implicit' && count( $ops ) > 1 );
$maxConcurrency = $this->concurrency; // throttle
// Some of the environment checks make shell requests, remove limits
$GLOBALS['wgMaxShellMemory'] = 0;
+
+ // Don't bother embedding images into generated CSS, which is not cached
+ $GLOBALS['wgResourceLoaderLESSFunctions']['embeddable'] = function( $frame, $less ) {
+ return $less->toBool( false );
+ };
}
/**
'patch-iwlinks-from-title-index.sql' ),
array( 'addField', 'archive', 'ar_id', 'patch-archive-ar_id.sql' ),
array( 'addField', 'externallinks', 'el_id', 'patch-externallinks-el_id.sql' ),
+ array( 'addField', 'recentchanges', 'rc_source', 'patch-rc_source.sql' ),
);
}
array( 'addInterwikiType' ),
# end
array( 'tsearchFixes' ),
+
+ // 1.22
+ array( 'addPgField', 'recentchanges', 'rc_source', "TEXT NOT NULL DEFAULT ''" ),
);
}
array( 'addIndex', 'iwlinks', 'iwl_prefix_from_title', 'patch-iwlinks-from-title-index.sql' ),
array( 'addField', 'archive', 'ar_id', 'patch-archive-ar_id.sql' ),
array( 'addField', 'externallinks', 'el_id', 'patch-externallinks-el_id.sql' ),
+
+ // 1.22
+ array( 'addField', 'recentchanges', 'rc_source', 'patch-rc_source.sql' ),
);
}
/**
* Get the raw vector CSS, flipping if needed
+ *
+ * @todo Possibly get rid of this function and use ResourceLoader in the manner it was
+ * designed to be used in, rather than just grabbing a list of filenames from it,
+ * and not properly handling such details as media types in module definitions.
+ *
* @param string $dir 'ltr' or 'rtl'
* @return String
*/
public function getCSS( $dir ) {
- $skinDir = dirname( dirname( __DIR__ ) ) . '/skins';
-
- // All these files will be concatenated in sequence and loaded
- // as one file.
- // The string 'images/' in the files' contents will be replaced
- // by '../skins/$skinName/images/', where $skinName is what appears
- // before the last '/' in each of the strings.
- $cssFileNames = array(
-
- // Basically the "skins.vector" ResourceLoader module styles
- 'common/shared.css',
- 'common/commonElements.css',
- 'common/commonContent.css',
- 'common/commonInterface.css',
- 'vector/screen.css',
-
- // mw-config specific
- 'common/config.css',
+ // All CSS files these modules reference will be concatenated in sequence
+ // and loaded as one file.
+ $moduleNames = array(
+ 'mediawiki.legacy.shared',
+ 'skins.vector',
+ 'mediawiki.legacy.config',
);
+ $prepend = '';
$css = '';
- wfSuppressWarnings();
- foreach ( $cssFileNames as $cssFileName ) {
- $fullCssFileName = "$skinDir/$cssFileName";
- $cssFileContents = file_get_contents( $fullCssFileName );
- if ( $cssFileContents ) {
- preg_match( "/^(\w+)\//", $cssFileName, $match );
- $skinName = $match[1];
- $css .= str_replace( 'images/', "../skins/$skinName/images/", $cssFileContents );
- } else {
- $css .= "/** Your webserver cannot read $fullCssFileName. Please check file permissions. */";
+ $cssFileNames = array();
+ $resourceLoader = new ResourceLoader();
+ foreach ( $moduleNames as $moduleName ) {
+ $module = $resourceLoader->getModule( $moduleName );
+ $cssFileNames = $module->getAllStyleFiles();
+
+ wfSuppressWarnings();
+ foreach ( $cssFileNames as $cssFileName ) {
+ if ( !file_exists( $cssFileName ) ) {
+ $prepend .= ResourceLoader::makeComment( "Unable to find $cssFileName." );
+ continue;
+ }
+
+ if ( !is_readable( $cssFileName ) ) {
+ $prepend .= ResourceLoader::makeComment( "Unable to read $cssFileName. Please check file permissions." );
+ continue;
+ }
+
+ try {
+
+ if ( preg_match( '/\.less$/', $cssFileName ) ) {
+ // Run the LESS compiler for *.less files (bug 55589)
+ $compiler = ResourceLoader::getLessCompiler();
+ $cssFileContents = $compiler->compileFile( $cssFileName );
+ } else {
+ // Regular CSS file
+ $cssFileContents = file_get_contents( $cssFileName );
+ }
+
+ if ( $cssFileContents ) {
+ // Rewrite URLs, though don't bother embedding images. While static image
+ // files may be cached, CSS returned by this function is definitely not.
+ $cssDirName = dirname( $cssFileName );
+ $css .= CSSMin::remap(
+ /* source */ $cssFileContents,
+ /* local */ $cssDirName,
+ /* remote */ '..' . str_replace(
+ array( $GLOBALS['IP'], DIRECTORY_SEPARATOR ),
+ array( '', '/' ),
+ $cssDirName
+ ),
+ /* embedData */ false
+ );
+ } else {
+ $prepend .= ResourceLoader::makeComment( "Unable to read $cssFileName." );
+ }
+
+ } catch ( Exception $e ) {
+ $prepend .= ResourceLoader::formatException( $e );
+ }
+
+ $css .= "\n";
}
-
- $css .= "\n";
+ wfRestoreWarnings();
}
- wfRestoreWarnings();
+
+ $css = $prepend . $css;
if ( $dir == 'rtl' ) {
$css = CSSJanus::transform( $css, true );
*/
const ALL_OK = 3;
+ /**
+ * Regex that matches whitespace inside empty arrays and objects.
+ *
+ * This doesn't affect regular strings inside the JSON because those can't
+ * have a real line break (\n) in them, at this point they are already escaped
+ * as the string "\n" which this doesn't match.
+ *
+ * @private
+ */
+ const WS_CLEANUP_REGEX = '/(?<=[\[{])\n\s*+(?=[\]}])/';
+
/**
* Characters problematic in JavaScript.
*
if ( $json === false ) {
return false;
}
+
+ if ( $pretty ) {
+ // Remove whitespace inside empty arrays/objects; different JSON encoders
+ // vary on this, and we want our output to be consistent across implementations.
+ $json = preg_replace( self::WS_CLEANUP_REGEX, '', $json );
+ }
if ( $escaping & self::UTF8_OK ) {
$json = str_replace( self::$badChars, self::$badCharsEscaped, $json );
}
$buf .= substr( $json, $i, $skip );
}
}
- return str_replace( "\x01", '\"', preg_replace( '/ +$/m', '', $buf ) );
+ $buf = preg_replace( self::WS_CLEANUP_REGEX, '', $buf );
+ return str_replace( "\x01", '\"', $buf );
}
}
}
/**
- * @todo FIXME: Update documentation. makeLinkObj() is deprecated.
* Replace <!--LINK--> link placeholders with actual links, in the buffer
- * Placeholders created in Skin::makeLinkObj()
+ *
* @return array of link CSS classes, indexed by PDBK.
*/
function replace( &$text ) {
# Marker Suffix needs to be accessible staticly.
const MARKER_SUFFIX = "-QINU\x7f";
+ # Markers used for wrapping the table of contents
+ const TOC_START = '<mw:toc>';
+ const TOC_END = '</mw:toc>';
+
# Persistent:
var $mTagHooks = array();
var $mTransparentTagHooks = array();
$openmatch = preg_match( '/(?:<table|<h1|<h2|<h3|<h4|<h5|<h6|<pre|<tr|<p|<ul|<ol|<dl|<li|<\\/tr|<\\/td|<\\/th)/iS', $t );
$closematch = preg_match(
'/(?:<\\/table|<\\/h1|<\\/h2|<\\/h3|<\\/h4|<\\/h5|<\\/h6|' .
- '<td|<th|<\\/?blockquote|<\\/?div|<hr|<\\/pre|<\\/p|' . $this->mUniqPrefix . '-pre|<\\/li|<\\/ul|<\\/ol|<\\/dl|<\\/?center)/iS', $t );
+ '<td|<th|<\\/?blockquote|<\\/?div|<hr|<\\/pre|<\\/p|<\\/mw:|' . $this->mUniqPrefix . '-pre|<\\/li|<\\/ul|<\\/ol|<\\/dl|<\\/?center)/iS', $t );
if ( $openmatch or $closematch ) {
$paragraphStack = false;
# TODO bug 5718: paragraph closed
}
$toc = Linker::tocList( $toc, $this->mOptions->getUserLangObj() );
$this->mOutput->setTOCHTML( $toc );
+ $toc = self::TOC_START . $toc . self::TOC_END;
}
if ( $isMain ) {
$mEditSectionTokens = false, # prefix/suffix markers if edit sections were output as tokens
$mProperties = array(), # Name/value pairs to be cached in the DB
$mTOCHTML = '', # HTML of the TOC
- $mTimestamp; # Timestamp of the revision
+ $mTimestamp, # Timestamp of the revision
+ $mTOCEnabled = true; # Whether TOC should be shown, can't override __NOTOC__
private $mIndexPolicy = ''; # 'index' or 'noindex'? Any other value will result in no change.
private $mAccessedOptions = array(); # List of ParserOptions (stored in the keys)
private $mSecondaryDataUpdates = array(); # List of DataUpdate, used to save info from the page somewhere else.
}
function getText() {
+ wfProfileIn( __METHOD__ );
+ $text = $this->mText;
if ( $this->mEditSectionTokens ) {
- return preg_replace_callback( ParserOutput::EDITSECTION_REGEX,
- array( &$this, 'replaceEditSectionLinksCallback' ), $this->mText );
+ $text = preg_replace_callback( ParserOutput::EDITSECTION_REGEX,
+ array( &$this, 'replaceEditSectionLinksCallback' ), $text );
+ } else {
+ $text = preg_replace( ParserOutput::EDITSECTION_REGEX, '', $text );
+ }
+
+ // If you have an old cached version of this class - sorry, you can't disable the TOC
+ if ( isset( $this->mTOCEnabled ) && $this->mTOCEnabled ) {
+ $text = str_replace( array( Parser::TOC_START, Parser::TOC_END ), '', $text );
+ } else {
+ $text = preg_replace(
+ '#'. preg_quote( Parser::TOC_START ) . '.*?' . preg_quote( Parser::TOC_END ) . '#s',
+ '',
+ $text
+ );
}
- return preg_replace( ParserOutput::EDITSECTION_REGEX, '', $this->mText );
+ wfProfileOut( __METHOD__ );
+ return $text;
}
/**
function getTOCHTML() { return $this->mTOCHTML; }
function getTimestamp() { return $this->mTimestamp; }
function getLimitReportData() { return $this->mLimitReportData; }
+ function getTOCEnabled() { return $this->mTOCEnabled; }
function setText( $text ) { return wfSetVar( $this->mText, $text ); }
function setLanguageLinks( $ll ) { return wfSetVar( $this->mLanguageLinks, $ll ); }
function setIndexPolicy( $policy ) { return wfSetVar( $this->mIndexPolicy, $policy ); }
function setTOCHTML( $tochtml ) { return wfSetVar( $this->mTOCHTML, $tochtml ); }
function setTimestamp( $timestamp ) { return wfSetVar( $this->mTimestamp, $timestamp ); }
+ function setTOCEnabled( $flag ) { return wfSetVar( $this->mTOCEnabled, $flag ); }
function addCategory( $c, $sort ) { $this->mCategories[$c] = $sort; }
function addLanguageLink( $t ) { $this->mLanguageLinks[] = $t; }
// Replace <mw:editsection> elements with placeholders
$wrappedtext = preg_replace_callback( ParserOutput::EDITSECTION_REGEX,
- array( &$this, 'replaceEditSectionLinksCallback' ), $text );
+ array( &$this, 'replaceCallback' ), $text );
+ // ...and <mw:toc> markers
+ $wrappedtext = preg_replace_callback( '/\<\\/?mw:toc\>/',
+ array( &$this, 'replaceCallback' ), $wrappedtext );
// Modify inline Microdata <link> and <meta> elements so they say <html-link> and <html-meta> so
// we can trick Tidy into not stripping them out by including them in tidy's new-empty-tags config
*
* @return string
*/
- function replaceEditSectionLinksCallback( $m ) {
+ function replaceCallback( $m ) {
$marker = "{$this->mUniqPrefix}-item-{$this->mMarkerIndex}" . Parser::MARKER_SUFFIX;
$this->mMarkerIndex++;
$this->mTokens->setPair( $marker, $m[0] );
public static function getLessCompiler() {
global $wgResourceLoaderLESSFunctions, $wgResourceLoaderLESSImportPaths;
+ // When called from the installer, it is possible that a required PHP extension
+ // is missing (at least for now; see bug 47564). If this is the case, throw an
+ // exception (caught by the installer) to prevent a fatal error later on.
+ if ( !function_exists( 'ctype_digit' ) ) {
+ throw new MWException( 'lessc requires the Ctype extension' );
+ }
+
$less = new lessc();
$less->setPreserveComments( true );
$less->setVariables( self::getLESSVars() );
$wgVariantArticlePath, $wgActionPaths, $wgVersion,
$wgEnableAPI, $wgEnableWriteAPI, $wgDBname,
$wgSitename, $wgFileExtensions, $wgExtensionAssetsPath,
- $wgCookiePrefix, $wgResourceLoaderMaxQueryLength;
+ $wgCookiePrefix, $wgResourceLoaderMaxQueryLength,
+ $wgResourceLoaderStorageEnabled, $wgResourceLoaderStorageVersion;
$mainPage = Title::newMainPage();
'wgResourceLoaderMaxQueryLength' => $wgResourceLoaderMaxQueryLength,
'wgCaseSensitiveNamespaces' => $caseSensitiveNamespaces,
'wgLegalTitleChars' => Title::convertByteClassToUnicodeClass( Title::legalChars() ),
+ 'wgResourceLoaderStorageVersion' => $wgResourceLoaderStorageVersion,
+ 'wgResourceLoaderStorageEnabled' => $wgResourceLoaderStorageEnabled,
);
wfRunHooks( 'ResourceLoaderGetConfigVars', array( &$vars ) );
} else {
$parentLen = 0;
if ( isset( $this->mParentLens[$row->rev_parent_id] ) ) {
- $this->mParentLens[$row->rev_parent_id];
+ $parentLen = $this->mParentLens[$row->rev_parent_id];
}
$chardiff = ' <span class="mw-changeslist-separator">. .</span> ';
list( $this->target, $this->type ) = SpecialBlock::getTargetAndType( $par, $this->getRequest() );
$this->block = Block::newFromTarget( $this->target );
+ if ( $this->target instanceof User ) {
+ # Set the 'relevant user' in the skin, so it displays links like Contributions,
+ # User logs, UserRights, etc.
+ $this->getSkin()->setRelevantUser( $this->target );
+ }
$this->setHeaders();
$this->outputHeader();
'spam_reverting' => 'Besig met terugrol na die laaste weergawe wat nie skakels na $1 bevat nie',
'spam_blanking' => "Alle weergawes met 'n skakel na $1 word verwyder",
'spam_deleting' => 'Alle weergawes bevat verwysings na $1. Bladsy verwyder',
+'simpleantispam-label' => "Anti-spam kontrole.
+'''Moenie''' die veld invul nie!",
# Info page
'pageinfo-title' => 'Inligting oor "$1"',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|përdorues|përdorues}} $1',
'creditspage' => 'Kreditat e faqes',
+# Spam protection
+'simpleantispam-label' => "Anti-spam kontrolloni. A'''''NUK' plotësoni këtë!",
+
# Browsing diffs
'previousdiff' => '← Redaktim mâ i vjetër',
'nextdiff' => 'Redaktim ma i ri →',
'spambot_username' => 'Esporga de spam de MediaWiki',
'spam_reverting' => "Tornando t'a zaguera versión sin de vinclos ta $1",
'spam_blanking' => 'Todas as versions teneban vinclos ta $1, se deixa en blanco',
+'simpleantispam-label' => "Preba anti-spam.
+'''NO''' replene esto!",
# Info page
'pageinfo-title' => 'Información ta «$1»',
'cascadeprotected' => 'Þes trament wæs geborgen wiþ adihtunge, for þǣm þe hē is befangen in þissum {{PLURAL:$1|tramente, þe is| tramentum, þe sind}} geborgen settum wyrcende þǣm cyre "cascading": $2',
# Virus scanner
-'virus-badscanner' => '',
-'virus-unknownscanner' => '',
+'virus-badscanner' => 'Bad configuration: Unknown virus scanner: $1',
+'virus-unknownscanner' => 'unknown antivirus:',
# Login and logout pages
'logouttext' => "'''Þū eart nū ūtmeldod.'''
'logout' => 'Ūtmeldian',
'userlogout' => 'Ūtmeldian',
'notloggedin' => 'Nā ingemeldod',
-'userlogin-noaccount' => '',
-'userlogin-joinproject' => '',
+'userlogin-noaccount' => "Don't have an account?",
+'userlogin-joinproject' => 'Join {{SITENAME}}',
'nologin' => 'Næfst þū reccinge? $1',
'nologinlink' => 'Scieppan reccinge',
'createaccount' => 'Scieppan reccinge',
'spam_reverting' => 'استرجاع آخر نسخة ليس بها وصلات إلى $1',
'spam_blanking' => 'كل النسخ احتوت على وصلات ل $1، إفراغ',
'spam_deleting' => 'جميع النسخ تحوي رابطا إلى $1، يتم الحذف',
+'simpleantispam-label' => "اختبار ضد السبام.
+'''لا''' تملأ هذا!",
# Info page
'pageinfo-title' => 'المعلومات عن «$1»',
'noindex-category' => 'shat mamfhtsach',
'broken-file-category' => 'ṣfaḫi fiha wṣlat milffaṫ mhrrsa',
-'linkprefix' => '/^((?>.*(?<![a-zA-Z\\x80-\\xff])))(.+)$/sD',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'ala',
'article' => 'sfht mohtawa',
'spambot_username' => 'تنظيف سبام ميدياويكى',
'spam_reverting' => 'ترجيع آخر نسخة مافيهاش لينكات لـ $1',
'spam_blanking' => 'كل النسخ فيها لينكات ل $1، فضيها',
+'simpleantispam-label' => "اختبار انتي-سبام.
+'''ماتعبيش''' دا!",
# Skin names
'skinname-cologneblue' => 'كولون بلو',
'spam_reverting' => '$1লৈ সংযোগ নথকা সৰ্বশেষ পুনৰীক্ষনলে উভতাই নিয়া হৈছে',
'spam_blanking' => 'সকলো পুনৰীক্ষনৰ $1লৈ সংযোগ আছিল, ৰিক্ত কৰা হৈছে',
'spam_deleting' => 'সকলো পুনৰীক্ষণৰ $1লৈ সংযোগ আছিল, বিলোপ কৰা হৈছে',
+'simpleantispam-label' => "এণ্টি-স্পাম পৰীক্ষা।
+এইখন পূৰণ '''নকৰিব'''!",
# Info page
'pageinfo-title' => '"$1" ৰ তথ্য',
'spam_reverting' => 'Revirtiendo a la cabera versión que nun contién enllaces a $1',
'spam_blanking' => 'Toles revisiones teníen enllaces a $1; dexando en blanco',
'spam_deleting' => 'Toles revisiones teníen enllaces a $1, desaniciando',
+'simpleantispam-label' => "Control anti-spam.
+¡'''NUN''' rellenes esto!",
# Info page
'pageinfo-title' => 'Información sobro "$1"',
'noindex-category' => 'İndeksləşdirilməyən səhifələr',
'broken-file-category' => 'İşləməyən fayl keçidləri olan səhifələr',
-'linkprefix' => '/^((?>.*(?<![a-zA-Z\\x80-\\xff])))(.+)$/sD',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'Haqqında',
'article' => 'Mündəricat',
'spam_reverting' => '$1 һылтанмаһыҙ һуңғы өлгөгә ҡайтарыу',
'spam_blanking' => 'Бөтә өлгөләрҙә лә $1 һылтанмаһы бар, таҙартыу',
'spam_deleting' => 'Бөтә өлгөләрҙә лә $1 һылтанма бар, таҙартыу бара',
+'simpleantispam-label' => "Спамға ҡаршы тикшереү.
+Быны '''ТУЛТЫРМАҒЫҘ'''!",
# Info page
'pageinfo-title' => '«$1» буйынса мәғлүмәт',
'spambot_username' => 'اسپم پاک کنوک مدیا وی کی',
'spam_reverting' => 'عوض کتن په آهری نسحه که شامل لینکان می بیت په $1',
'spam_blanking' => 'کل بازبینی آن شامل لینکان په $1, بوتت هالیکی',
+'simpleantispam-label' => "کنترل ضد اسپم.
+ای شیء پر ''مکن''",
# Skin names
'skinname-cologneblue' => 'نیلی کولاجن',
'spam_reverting' => 'Mabalik sa huring bersion na mayong takod sa $1',
'spam_blanking' => 'An gabos na mga pahirá na may takod sa $1, pigblablanko',
'spam_deleting' => 'An gabos na mga rebisyon na igwang mga kasugpunan sa $1, pinupura',
+'simpleantispam-label' => 'Narikisa kan anti-espam.
+"Dae" ka magkaag nin laman digde!',
# Info page
'pageinfo-title' => 'Impormasyon para sa "$1"',
'spam_reverting' => 'Адкат да апошняй вэрсіі без спасылак на $1',
'spam_blanking' => 'Усе вэрсіі ўтрымліваюць спасылкі на $1, чыстка',
'spam_deleting' => 'Усе вэрсіі ўтрымлівалі спасылкі на $1, выдаляем',
+'simpleantispam-label' => "Праверка анты-спаму.
+'''НЕ''' запаўняйце тут нічога!",
# Info page
'pageinfo-title' => 'Інфармацыя пра «$1»',
'tog-hidepatrolled' => 'Скриване на патрулираните редакции от списъка с последните промени',
'tog-newpageshidepatrolled' => 'Скриване на патрулираните редакции от списъка на новите страници',
'tog-extendwatchlist' => 'Разширяване на списъка, така че да показва всички промени, не само най-скорошните',
-'tog-usenewrc' => 'Ð\93Ñ\80Ñ\83пиÑ\80ане на поÑ\81ледниÑ\82е пÑ\80омени и Ñ\81пиÑ\81Ñ\8aка за наблÑ\8eдение по Ñ\81Ñ\82Ñ\80аниÑ\86и (изиÑ\81ква Ð\94жаваÑ\81кÑ\80ипÑ\82)',
+'tog-usenewrc' => 'Ð\93Ñ\80Ñ\83пиÑ\80ане по Ñ\81Ñ\82Ñ\80аниÑ\86и на пÑ\80омениÑ\82е и Ñ\81пиÑ\81Ñ\8aка за наблÑ\8eдение',
'tog-numberheadings' => 'Номериране на заглавията',
'tog-showtoolbar' => 'Показване на инструментите за редактиране',
'tog-editondblclick' => 'Редактиране на страниците чрез двойно щракване',
'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|от последното посещение}}',
'enhancedrc-history' => 'история',
'recentchanges' => 'Последни промени',
-'recentchanges-legend' => 'Ð\9eпÑ\86ии на списъка с последни промени',
+'recentchanges-legend' => 'Ð\9dаÑ\81Ñ\82Ñ\80ойки на списъка с последни промени',
'recentchanges-summary' => "Проследяване на последните промени в {{SITENAME}}.
Легенда: '''тек''' = разлика на текущата версия,
'thumbnail-more' => 'Увеличаване',
'filemissing' => 'Липсващ файл',
'thumbnail_error' => 'Грешка при създаване на миникартинка: $1',
+'thumbnail_error_remote' => 'Съобщение за грешка от $1:
+$2',
'djvu_page_error' => 'Номерът на DjVu-страницата е извън обхвата',
'djvu_no_xml' => 'Не е възможно вземането на XML за DjVu-файла',
'thumbnail-temp-create' => 'Временния файл с миникартинка не може да бъде създаден.',
'spam_reverting' => 'Връщане на последната версия, несъдържаща препратки към $1',
'spam_blanking' => 'Всички версии, съдържащи препратки към $1, изчистване',
'spam_deleting' => 'Всички версии съдържат препратки към $1, изтриване',
+'simpleantispam-label' => "Проверка за спам.
+Необходимо е да '''НЕ''' попълвате това поле!",
# Info page
'pageinfo-title' => 'Информация за "$1"',
+'pageinfo-not-current' => 'За съжаление тази информация не може да бъде предоставена за стари версии.',
'pageinfo-header-basic' => 'Основна информация',
'pageinfo-header-edits' => 'История на редакциите',
'pageinfo-header-restrictions' => 'Защита на страницата',
'tags' => 'Валидни етикети за промени',
'tag-filter' => 'Филтър на [[Special:Tags|етикета]]:',
'tag-filter-submit' => 'Филтриране',
+'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Етикет|Етикети}}]]: $2)',
'tags-title' => 'Етикети',
'tags-intro' => 'Тук са изброени всички етикети, които могат да се ползват за отбелязване на редакциите, както и тяхното значение.',
'tags-tag' => 'Име на етикета',
'dberr-problems' => 'Съжаляваме! Сайтът изпитва технически затруднения.',
'dberr-again' => 'Изчакайте няколко минути и опитайте да презаредите.',
'dberr-info' => '(Няма достъп до сървъра с базата данни: $1)',
+'dberr-info-hidden' => '(Няма връска със сървъра на базата данни)',
'dberr-usegoogle' => 'Междувременно опитайте да потърсите в Google.',
'dberr-outofdate' => 'Имайте предвид, че индексираното от Гугъл наше съдържание може вече да е неактуално.',
'dberr-cachederror' => 'Следва складирано копие на поисканата страница. Възможно е складираното копие да не е актуално.',
'spam_reverting' => '$1-এর প্রতি কোন সংযোগ নেই, এমন সর্বশেষ সংস্করণে ফেরত নেওয়া হচ্ছে।',
'spam_blanking' => '$1-এর প্রতি সংযোগ অন্তর্ভুক্ত আছে এমন সমস্ত সংশোধন খালি করা হচ্ছে',
'spam_deleting' => '$1-এর প্রতি সংযোগ অন্তর্ভুক্ত আছে এমন সমস্ত সংশোধন অপসারণ করা হচ্ছে',
+'simpleantispam-label' => "এন্টি-স্প্যাম যাচাই।
+এটা পূরণ করবেন '''না'''!",
# Info page
'pageinfo-title' => '"$1" এর তথ্য',
'spam_reverting' => "Distreiñ d'ar stumm diwezhañ hep liamm davet $1",
'spam_blanking' => 'Diverkañ an holl stummoù enno liammoù davet $1',
'spam_deleting' => 'An holl stummoù enno liammoù war-zu $1, o tiverkañ',
+'simpleantispam-label' => "Taol gwiriañ eneb-strob.
+'''Arabat''' merkañ tra pe dra amañ !",
# Info page
'pageinfo-title' => 'Titouroù evit "$1"',
'articlepage' => 'Pogledaj članak',
'talk' => 'Razgovor',
'views' => 'Pregledi',
-'toolbox' => 'Traka sa alatima',
+'toolbox' => 'Alati',
'userpage' => 'Pogledaj korisničku stranicu',
'projectpage' => 'Pogledaj stranicu projekta',
'imagepage' => 'Pogledajte stranicu datoteke',
'spam_reverting' => 'Vraćanje na zadnju verziju koja ne sadrži linkove ka $1',
'spam_blanking' => 'Sve revizije koje sadrže linkove ka $1, očisti',
'spam_deleting' => 'Sve revizije koje sadrže linkove na $1, brišem',
+'simpleantispam-label' => "Provjera protiv spama.
+'''NE''' popunjavaj ovo!",
# Info page
'pageinfo-title' => 'Informacije za "$1"',
'spam_reverting' => 'Es reverteix a la darrera versió que no conté enllaços a $1',
'spam_blanking' => "Totes les revisions contenien enllaços $1, s'està deixant en blanc",
'spam_deleting' => "S'estan suprimint totes les revisions que contenien enllaços a $1",
+'simpleantispam-label' => "Comprovació anti-spam.
+'''NO''' ho ompliu!",
# Info page
'pageinfo-title' => 'Informació de «$1»',
'tog-numberheadings' => 'Ша шех хlитто терахь корташна',
'tog-showtoolbar' => 'Гайта лакхара гlирсан дакъа нисйеш аттон оц тадар чохь (JavaScript)',
'tog-editondblclick' => 'Нисйе агlонаш шозза тlетаlийча (JavaScript)',
-'tog-editsection' => 'Ð\93айÑ\82а Ñ\85Ñ\8cажоÑ\80иг «ниÑ\81йе» аÑ\8cлла Ñ\85lоÑ\80а агlона',
+'tog-editsection' => 'Ð\93айÑ\82а Ñ\85Ñ\8cажоÑ\80аг «ниÑ\81йе» аÑ\8cлла Ñ\85Ó\80оÑ\80а агÓ\80она',
'tog-editsectiononrightclick' => 'Нисде дакъа шозза бакъехьар дахка тlетаlийча оцу кортан (JavaScript)',
'tog-showtoc' => 'Гойти коьртнаш (оцу агlонашна лаххара 3 коьртнашца)',
'tog-rememberpassword' => 'Даглаца сан дӀаяздар хӀокху браузеран тӀяхь (цхьан $1 {{PLURAL:$1|де|ден|динахь}})',
'tog-enotifrevealaddr' => 'Гайта сан зlе оцу хаамаш барехь',
'tog-shownumberswatching' => 'Гайта декъашхойн терахь, агlо латийна болу шай тергаме могlам юкъа',
'tog-oldsig' => 'Хьалххьажар долучу куьгтаlорна:',
-'tog-fancysig' => 'Шен вики-къастаман куьгтаlдар (ша шех хьажориг йоцуш)',
+'tog-fancysig' => 'Шен вики-къастаман куьгтаӀдар (ша шех хьажораг йоцуш)',
'tog-uselivepreview' => 'Лелайа чехка хьалха хьажа (JavaScript, муха ю хьажарна)',
'tog-forceeditsummary' => 'Дага даийта, нагахь нисйарх лаьцна чохь язйина яцахь',
'tog-watchlisthideown' => 'Къайлаяха ас нисйинарш оцу тергаме могlам чура',
'tog-ccmeonemails' => 'Дlадахьийта суна исанна кехат, аса дохьуьйтуш долу кхечу декъашхошна.',
'tog-diffonly' => 'Ма гайта агlон чулацам шина башхонца цхьатерра йолуш',
'tog-showhiddencats' => 'Гайта къайлаха йолу категореш',
-'tog-noconvertlink' => 'Хааман Ñ\85Ñ\8cажоÑ\80иг кÑ\85Ñ\83ллÑ\83 гlиÑ\80Ñ\81 дlабайа',
+'tog-noconvertlink' => 'Хааман Ñ\85Ñ\8cажоÑ\80аг кÑ\85Ñ\83ллÑ\83 гÓ\80иÑ\80Ñ\81 дÓ\80абайа',
'tog-norollbackdiff' => 'Юха яккхиначул тӀаьхьа ма гайта версешан башхо',
'tog-useeditwarning' => 'Хаамбе бина хийцамаш дӀаязцабеш аса болх дӀатосучу хенахь',
+'tog-prefershttps' => 'Даима лела йе лардина системин чудалар',
'underline-always' => 'Даимна',
'underline-never' => 'Цкъа а',
'broken-file-category' => '{{#switch:{{NAMESPACE}}
|{{ns:0}}=Болх цабеш файлийн хьажорагаш йолу агӀонаш}}',
-'linkprefix' => '/^((?>.*(?<![a-zA-Z\\x80-\\xff])))(.+)$/sD',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'Цуьнах лаьцна',
'article' => 'Яззам',
'history_short' => 'Истори',
'updatedmarker' => 'Керла яккхина сона гинчултӀаьхьа',
'printableversion' => 'Зорба туху верси',
-'permalink' => 'Ð\94аиман йолÑ\83 Ñ\85Ñ\8cажоÑ\80иг',
+'permalink' => 'Ð\94аиман йолÑ\83 Ñ\85Ñ\8cажоÑ\80аг',
'print' => 'Зорба тоха',
'view' => 'Хьажа',
'edit' => 'Нисйé',
'italic_sample' => 'Сеттан до йоза',
'italic_tip' => 'Сеттан до йоза',
'link_sample' => 'Хьажориган коьрта могlа',
-'link_tip' => 'ЧоÑ\8cÑ\85Ñ\8cа Ñ\85Ñ\8cажоÑ\80иг',
-'extlink_sample' => 'http://www.example.com Ñ\85Ñ\8cажоÑ\80иг корта',
+'link_tip' => 'ЧоÑ\8cÑ\85Ñ\8cа Ñ\85Ñ\8cажоÑ\80аг',
+'extlink_sample' => 'http://www.example.com Ñ\85Ñ\8cажоÑ\80аг корта',
'extlink_tip' => 'Арахьара хьажораг (йиц ма йе хӀотталушерг http://)',
'headline_sample' => 'Йозан корта',
'headline_tip' => 'Корта 2-гlа локхаллийца',
'image_sample' => 'Example.jpg',
'image_tip' => 'Чохь йолу файл',
'media_sample' => 'Example.ogg',
-'media_tip' => 'Ð¥Ñ\8cажоÑ\80иг медиа-файлан тӀе',
+'media_tip' => 'Ð¥Ñ\8cажоÑ\80аг медиа-файлан тӀе',
'sig_tip' => 'Хьан куьгтаlор аъ хlоттина хан',
'hr_tip' => 'Ана сиз (сих сиха ма леладайша)',
'columns' => 'БӀогӀамаш:',
'searchresultshead' => 'Лаха',
'resultsperpage' => 'Карийначу дӀаяздаршан дукхалла:',
-'stub-threshold' => 'Ð\9aеÑ\87 Ñ\8fÑ\80ан доза <a href="#" class="stub">коÑ\8cÑ\80Ñ\82амогÓ\80амна Ñ\85Ñ\8cажоÑ\80игаш</a> (байташках):',
+'stub-threshold' => 'Ð\9aеÑ\87 Ñ\8fÑ\80ан доза <a href="#" class="stub">коÑ\8cÑ\80Ñ\82амогÓ\80амна Ñ\85Ñ\8cажоÑ\80агаш</a> (байташках):',
'recentchangesdays' => 'Керла нисдар гайта динахь:',
'recentchangesdays-max' => 'Къезиг $1 {{PLURAL:$1|дена}}',
'recentchangescount' => 'Iад йитарца гойтуш долу нисдаршан дукхалла',
'prefs-help-recentchangescount' => 'Гойту керла нисдарш, агӀонашан истори, тептарш.',
+'prefs-help-watchlist-token2' => 'Иза хьан тергаме могӀан къайла догӀа ду.
+Муьлха и хуучунна йиш ю хьан тергаме могӀам беша, цундела ма хаийта иза кхечаьрга. [[Special:ResetTokens|ТӀетаӀа йе кхуза и хьайга кхосса лууш делахь]].',
'savedprefs' => 'Хьан гӀирс Ӏалашбина.',
'timezonelegend' => 'Сахьатан аса:',
'localtime' => 'Меттигера хан:',
'recentchangeslinked-summary' => "Хlара хийцам биначу агlонашан могlам бу, тlетовжар долуш хьагучу агlон (йа хьагойтуш йолучу категорена).
Агlонаш юькъайогlуш йолу хьан [[Special:Watchlist|тергаме могlам чохь]] '''къастийна йу'''.",
'recentchangeslinked-page' => 'Агlон цlе:',
-'recentchangeslinked-to' => 'Кхечу агlор, гайта хийцамаш агlонашца, хlоттийначу агlонтlе хьажориг йолуш',
+'recentchangeslinked-to' => 'Кхечу агӀор, гайта хийцамаш агӀонашца, хӀоттийначу агӀонтӀе хьажораг йолуш',
# Upload
'upload' => 'Файл чуяккхар',
'reuploaddesc' => 'Юху гӀо файл чуйоккху агӀоне',
'upload-tryagain' => 'ДӀадахьийта хийцина файлах лаьцнарг',
'uploadnologintext' => 'Серверан чу файлаш яха хьо $1.',
-'upload-permitted' => 'Ð\9cагийна Ñ\84айлаÑ\88ан тайпанаш: $1.',
+'upload-permitted' => 'Ð\9cагийна Ñ\84айлийн тайпанаш: $1.',
'uploadlogpage' => 'Чуяхаран тéптар',
'uploadlogpagetext' => 'Лахахьа гойтуш бу могlам тlаьххьара чуяхна файлаши. Ишта хьажа. [[Special:ImageList|файлаши могlам]] йа [[Special:NewImages|галеларе файлаши]].',
'filename' => 'Файлан цӀе',
'filehist-dimensions' => 'Файлан барам',
'filehist-filesize' => 'Файлан барам',
'filehist-comment' => 'Билгалдаккхар',
-'imagelinks' => 'Ð¥Ñ\8cажоÑ\80игаÑ\88 оÑ\86Ñ\83 Ñ\84айлан',
+'imagelinks' => 'Файл лелоÑ\80',
'linkstoimage' => '{{PLURAL:$1|ТӀаьхьайогӀу $1 агӀо тӀетойжина|ТӀаьхьайогӀу $1 агӀонаш тӀетойжина|ТӀаьхьайогlу $1 агӀонаш тӀетойжина}} хӀокху файлан:',
'nolinkstoimage' => 'АгӀонашчохь файл лелош яц.',
'sharedupload' => 'Хlара хlума оцун $1 чура ю иза хила мега лелош кхечу кхолламашкахь.',
# Miscellaneous special pages
'nbytes' => '$1 {{PLURAL:$1|байт|байташ|байт}}',
'ncategories' => '$1 {{PLURAL:$1|категори|категореш|категореш}}',
-'ninterwikis' => '$1 {{PLURAL:$1|Ñ\8eкÑ\8aаÑ\80вики-Ñ\85Ñ\8cажоÑ\80иг|Ñ\8eкÑ\8aаÑ\80вики-Ñ\85Ñ\8cажоÑ\80игаш}}',
-'nlinks' => '$1 {{PLURAL:$1|Ñ\85Ñ\8cажоÑ\80иг|Ñ\85Ñ\8cажоÑ\80игаш}}',
+'ninterwikis' => '$1 {{PLURAL:$1|Ñ\8eкÑ\8aаÑ\80вики-Ñ\85Ñ\8cажоÑ\80аг|Ñ\8eкÑ\8aаÑ\80вики-Ñ\85Ñ\8cажоÑ\80агаш}}',
+'nlinks' => '$1 {{PLURAL:$1|Ñ\85Ñ\8cажоÑ\80аг|Ñ\85Ñ\8cажоÑ\80агаш}}',
'nmembers' => '$1 {{PLURAL:$1|хӀума|хӀумнаш}}',
'nimagelinks' => 'Лелош ю $1 {{PLURAL:$1|агӀоначохь|агӀонашкахь|агӀонашкахь}}',
'ntransclusions' => 'лелош ю $1 {{PLURAL:$1|агӀоначохь|агӀонашкахь|агӀонашкахь}}',
Кхин йоцу файлаш гойту [[:$1]] чохь',
'wantedfiletext-nocat' => 'Лахара йоцу файлаш лело гӀерта. Оцу могӀам юкъа ца хууш файлаш кхета там бу, кхечу проекташ чохь йолу. Ишта ца хууш юкъа нийса елачарна тӀехула <del>сиз</del> хира ду.',
'wantedtemplates' => 'Оьшуш долу кепаш',
-'mostlinked' => 'Ð\94Ñ\83ккÑ\85а Ñ\85Ñ\8cажоÑ\80игаш тIе тоьхна йолу агIонаш',
+'mostlinked' => 'Ð\94Ñ\83ккÑ\85а Ñ\85Ñ\8cажоÑ\80агаш тIе тоьхна йолу агIонаш',
'mostlinkedcategories' => 'Дуккха тӀе хьажораш йолу категореш',
'mostlinkedtemplates' => 'Массарел дуккха а леладо кепаш',
'mostcategories' => 'Дуккха категореш тӀе тоьхна йолу агӀонаш',
'mostimages' => 'Массарел дуккха лелайо файлаш',
-'mostinterwikis' => 'Ð\94Ñ\83ккÑ\85а Ñ\8eкÑ\8aаÑ\80вики Ñ\85Ñ\8cажоÑ\80игаш тӀе тоьхна йолу агӀонаш',
+'mostinterwikis' => 'Ð\94Ñ\83ккÑ\85а Ñ\8eкÑ\8aаÑ\80вики Ñ\85Ñ\8cажоÑ\80агаш тӀе тоьхна йолу агӀонаш',
'mostrevisions' => 'Сих сиха нисйина йолу агIонаш',
'prefixindex' => 'Хьалха агlонашан цlераш хlотто йеза',
'prefixindex-namespace' => 'Хьалха агӀонашан цӀераш хӀотто еза («{{ns:$1}}»)',
'ancientpages' => 'Яззамаш оцу терахьца тӀаьххьара тадар дина долу',
'move' => 'Цlе хийца',
'movethispage' => 'Хlокху агlон цlе хийца',
-'unusedimagestext' => 'Дехар до, тидаме эца, кхин йолу дуьнана машан-меттигаш а лелош хила мега нисса йогlу хьажориг (URL) хlокху хlуман, хlокху могlаме йогlуш ялахь яцахь а иза хила мега жигара лелош.',
+'unusedimagestext' => 'Дехар до, тидаме эца, кхин йолу дуьнана машан-меттигаш а лелош хила мега нийсса йогӀу хьажораг (URL) хӀокху хӀуман, хӀокху могӀаме йогӀуш ялахь яцахь а иза хила мега жигара лелош.',
'notargettitle' => 'Ӏалашо билгал йина яц',
'nopagetitle' => 'Ишта агӀо яц',
'nopagetext' => 'Ишта агӀо яц.',
'linksearch-text' => 'Лело мега хӀоттош йолу символаш, масала, <code>*.wikipedia.org</code>.
Лакхара даржан домен мукъа хила еза , масала<code>*.org</code><br />
Ловш йолу {{PLURAL:$2|протокол|протоколаш}}: <code>$1</code> (Iад йитарца http://, протокол бакъалла язъен яцахь).',
-'linksearch-line' => '$2 â\80\94 Ñ\85Ñ\8cажоÑ\80иг кху $1',
+'linksearch-line' => '$2 â\80\94 Ñ\85Ñ\8cажоÑ\80аг кху $1',
# Special:ListUsers
'listusersfrom' => 'Гучé баха декъашхой, болалуш болу тӀера:',
'delete-confirm' => '$1 — дӀаяккхар',
'delete-legend' => 'ДӀаяккхар',
'historywarning' => "'''Тергам:''' хӀокху агӀона герггарчу хьесапехь $1 {{PLURAL:$1|версеш|верси|верси}} ю:",
-'confirmdeletetext' => "<div id=\"confirmdeletetext\">
-Хьо гӀерта '''[[Википеди:АгӀонаш дӀаяхар|хӀара агӀо дӀаяккха]]'''; '''дехар до''', хьажа [[Special:Whatlinkshere/{{FULLPAGENAMEE}}|хьажориг юй кхузе хьажийна]], дӀаяккхале хьалха уьш нисйа деза.
-{{#switch:{{NAMESPACE}}|{{ns:File talk}}=
-<br />Хила мега, хӀара дийцаре агӀо
-{{#ifexist:Media:{{PAGENAME}}
-|{{#ifexist:File:{{PAGENAME}}|цигара файлан.|оц [[ВикидӀайуьллуче]]ра.}}
-|йоцуш йолу файлан]]
-}}
-}}
-</div>",
+'confirmdeletetext' => "Хьо гӀерта агӀо я файл дӀаяккха '''дехар до''', дӀаяккхале хьалха хьажа [[{{MediaWiki:Policy-url}}|кхуза]].",
'actioncomplete' => 'Дешдерг кхочушди',
'actionfailed' => 'Кхочушъ дина дац',
'deletedtext' => '«$1» дӀаяккхина яра.
'sp-contributions-submit' => 'Лаха',
# What links here
-'whatlinkshere' => 'Ð¥Ñ\8cажоÑ\80игаш кхузе',
-'whatlinkshere-title' => 'Ð\90гlонаÑ\88, Ñ\85Ñ\8cажоÑ\80игÑ\86а оÑ\86Ñ\83 «$1»',
+'whatlinkshere' => 'Ð¥Ñ\8cажоÑ\80агаш кхузе',
+'whatlinkshere-title' => 'Ð¥Ó\80окÑ\85Ñ\83нÑ\86а «$1» йолÑ\83 агÓ\80онаÑ\88',
'whatlinkshere-page' => 'Агlо:',
-'linkshere' => "Тlаьхьайогlу агlонаш хьажоригца ю оцу '''[[:$1]]''':",
-'nolinkshere' => "ХӀокху '''[[:$1]]''' агӀона тӀе кхечу агӀонашчохь хьажоригаш яц",
+'linkshere' => "ТӀаьхьайогӀу агӀонаш оцу '''[[:$1]]''': хьажорагца ю",
+'nolinkshere' => "ХӀокху '''[[:$1]]''' агӀона тӀе кхечу агӀонашкахь хьажорагаш яц.",
'nolinkshere-ns' => "Хаьржинчу анахь яц '''[[:$1]]''' цӀе йолу агӀонаш",
'isredirect' => 'агlо-дlасахьажайар',
'istemplate' => 'лата йe',
-'isimage' => 'Ð\9eÑ\86Ñ\83 Ñ\81Ñ\83Ñ\8cÑ\80Ñ\82ан Ñ\85Ñ\8cажоÑ\80иг',
+'isimage' => 'Файлан Ñ\85Ñ\8cажоÑ\80аг',
'whatlinkshere-prev' => '{{PLURAL:$1|хьалхайодарг|хьалхайодарш|хьалхайодарш}} $1',
'whatlinkshere-next' => '{{PLURAL:$1|тlаьхьайогlург|тlаьхьайогlурш|тlаьхьайогlурш}} $1',
-'whatlinkshere-links' => 'â\86\90 Ñ\85Ñ\8cажоÑ\80игаш',
+'whatlinkshere-links' => 'â\86\90 Ñ\85Ñ\8cажоÑ\80агаш',
'whatlinkshere-hideredirs' => '$1 дlасахьажйар',
'whatlinkshere-hidetrans' => '$1 латораш',
-'whatlinkshere-hidelinks' => '$1 Ñ\85Ñ\8cажоÑ\80игаш',
-'whatlinkshere-hideimages' => '$1 Ñ\84айлаÑ\88ан Ñ\85Ñ\8cажоÑ\80игаш',
+'whatlinkshere-hidelinks' => '$1 Ñ\85Ñ\8cажоÑ\80агаш',
+'whatlinkshere-hideimages' => '$1 Ñ\84айлийн Ñ\85Ñ\8cажоÑ\80агаш',
'whatlinkshere-filters' => 'Литтарш',
# Block/unblock
# Move page
'move-page' => '$1 — цlе хийцар',
'move-page-legend' => 'ЦӀe хийца яр',
-'movepagetext' => "Леладан лахар хатlаьхь, хьо агlон цlе хуьйцуш ву, цхьатерра дехьа а докхуш цуьнан хийцаман тептар.
-Тиша цlе хира ю дlасахьажйарехь керлачун тlе хьажийна.
-Хьега далур ду ша шех дlасахьажор керла яккхар, хьалхалерачуьна метта йиллина йолу.
-Нагахь ахьа иза цадинехь, дехар до, хьажа йуйла [[Special:DoubleRedirects|шалгlа]] а [[Special:BrokenRedirects|хадийначу дlасахьажориш]].
-Ахьа жоп лур ду кхин дlа а хьажориг хьажийна хилийта, хила йезаче.
-
-Тергамбеш хила, иза агlо '''хира яц''' цlе хийцина, нагахь иза цlе йолуш керла агlо йалахь, цхьа йолу хенахь, нагахь иза йалахь цхьан тlе хьажийна йа йаьсса а нисйарца истори йоцуш.
-Иза бохург ду, хьега хийцалур ю оцу агlон цlе оцу цlарца, хlинц цуьна хилла йолу, нагахь ахьа гlалатонца цlе хийцанехь, йолуш йолу агlо цахууш йа мега хьа.
-
-'''ДlАХЬЕДАР!'''
-Цlе хийцарца хила тарло барамашкахь а цамётту хийцам ''гlар йойлачу'' агlонашна.
-Дехар до, кхин дlа хьо вахале, дика ойла йе, хьо кхеташ хиларехь тlаьхьа хиндолучунах.",
+'movepagetext' => "Бухахь йолу форманца агӀон цӀе хийцало. Цул совнах цуьна хийцаман журнал кхоьчу метте доккха. Хьалхалера цӀарахь хиръю керла кхоьллина агӀонан хьажораг.
+
+Хьовсалаш [[Special:DoubleRedirects|шалха]] а [[Special:BrokenRedirects|йохна хьажорагаш]] юй техь аьлла.
+
+Шу жоьпехь ду хьажорагаш нийса некъ гойтуш хиларан.
+
+Тидам бе хьалхалера агӀон цӀе ‘’’хийцалур яц’’’ иштта цӀе йолу агӀо йолуш елахь. Юкъардаккхар: йолуш йолу агӀо кхоьчухьа хьажораг елахь, я еса елахь а, цуьна хьийцаме истори яцахь а.
+
+И бохург ду шун агӀонан цӀе юха а хьалха хилларгчунтӀе хийца йиш ю, амма йолуш йолу агӀо дӀаяккха йиш яц.
+
+'''ДӀАХЬЕДАР!'''
+
+ЦӀе хийцар бахьнехь гӀаръяьлла агӀонашна дукха дагахь боцу хийцамаш хила тарло. Цундела цӀе хийцале шеш хила тарлучу тӀехьонашах кхета аьлла тешна хила.",
'movepagetext-noredirectfixer' => "Бухахь йолу форманца агӀон цӀе хийцало. Цул совнах цуьна хийцаман журнал кхоьчу метте доккха. Хьалхалера цӀарахь хиръю керла кхоьллина агӀонан хьажораг.
Хьовсалаш [[Special:DoubleRedirects|шалха]] а [[Special:BrokenRedirects|йохна хьажорагаш]] юй техь аьлла.
'movepage-page-moved' => 'АгӀона $1 цӀе хийцина оцу $2.',
'movelogpage' => 'Цlераш хийцаран тептар',
'movesubpage' => '{{PLURAL:$1|Бухара агӀо|Бухара агӀонаш}}',
+'movesubpagetext' => 'ХӀокху агӀона $1 {{PLURAL:$1|бухара агӀо ю|бухара агӀонаш ю}}.',
'movenosubpage' => 'ХӀокху агӀона бухара агӀонаш яц.',
'movereason' => 'Бахьан:',
'revertmove' => 'юхаяккха',
# Export
'export' => 'АгӀонаш араяхар',
-'exporttext' => 'Шуьга далур ду кхечу меттера чудахарш, йоза а хийцаме тептарш билгалла йолу агlонаш йа гулдина йолу агlонаш хlокх XML барамца, йуха тlяхьа чура [[Special:Import|хьаэцалурдолш]] кхечу вики-хьалхен, болх беш йолу хlокху MediaWiki гlирсаца.
+'exporttext' => 'Шуьга далур ду кхечу меттера чудахарш, йоза а хийцаме тептарш билгалла йолу агӀонаш йа гулдина йолу агӀонаш хӀокх XML барамца, юха тӀяхьа чура [[Special:Import|хьаэцалурдолш]] кхечу вики-хьалхен, болх беш йолу хlокху MediaWiki гlирсаца.
-Кхечу меттера яззамаш чуйаха, чуязйе цlе редокхчу метте, цlхьа могlан цlе могlаршкахь, йуха харжа лаьи шуна Кхечу меттер чуйаха массо яззамашна истори хийцамбарш йа тlяхьаралера яззамна башхо.
+Кхечу меттера яззамаш чуйаха, чуязйе цӀе тадечу метте, цӀхьа могӀан цӀе могӀаршкахь, юха харжа лаьи шуна Кхечу меттер чуйаха массо яззамашна истори хийцамбарш йа тӀяхьаралера яззамна башхо.
-ШÑ\83Ñ\8cга кÑ\85и даландеÑ\80г, лелаеÑ\88 йолÑ\83 меÑ\82Ñ\82иг кÑ\8aаÑ\81Ñ\82аман маÑ\88ан Ñ\85Ñ\8cажоÑ\80иг кÑ\85еÑ\87Ñ\83 меÑ\82Ñ\82еÑ\80 Ñ\87Ñ\83даÑ\85а Ñ\82lÑ\8fÑ\85Ñ\8cаÑ\80леÑ\80а баÑ\88Ñ\85он Ñ\8fззамаÑ\88. Ð\9cаÑ\81Ñ\81ала оÑ\86Ñ\83 Ñ\8fззамна [[{{MediaWiki:Mainpage}}]] Ñ\85lаÑ\80а Ñ\85иÑ\80а йÑ\83 Ñ\85Ñ\8cажоÑ\80иг [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]].',
+ШÑ\83Ñ\8cга кÑ\85и даландеÑ\80г, лелаеÑ\88 йолÑ\83 меÑ\82Ñ\82иг кÑ\8aаÑ\81Ñ\82аман маÑ\88ан Ñ\85Ñ\8cажоÑ\80аг кÑ\85еÑ\87Ñ\83 меÑ\82Ñ\82еÑ\80 Ñ\87Ñ\83даÑ\85а Ñ\82Ó\80аÑ\8cÑ\85Ñ\8cаÑ\80леÑ\80аÑ\87Ñ\83 баÑ\88Ñ\85он Ñ\8fззамаÑ\88. Ð\9cаÑ\81ала оÑ\86Ñ\83 Ñ\8fззамна [[{{MediaWiki:Mainpage}}]] Ñ\85Ó\80аÑ\80а Ñ\85иÑ\80а Ñ\8e Ñ\85Ñ\8cажоÑ\80аг [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]].',
'exportcuronly' => 'Карара верси бен юкъа ма тоха, юзийна хьалхалерра истори йоцуш',
'export-submit' => 'Экспорт ян',
'export-addcattext' => 'ТӀетоха агӀонаш категори чура:',
'tooltip-t-upload' => 'Чуйаха файлаш',
'tooltip-t-specialpages' => 'Белха агlонаши могlам',
'tooltip-t-print' => 'Хlокху агlонна зорба туху башхо',
-'tooltip-t-permalink' => 'Ð\94аимна йолÑ\83 Ñ\85Ñ\8cажоÑ\80иг Ñ\85lокÑ\85Ñ\83 баÑ\88Ñ\85а агlонна',
+'tooltip-t-permalink' => 'Ð\94аима йолÑ\83 Ñ\85Ñ\8cажоÑ\80аг Ñ\85Ó\80окÑ\85Ñ\83 баÑ\88Ñ\85а агÓ\80онна',
'tooltip-ca-nstab-main' => 'Яззамна чулацам',
'tooltip-ca-nstab-user' => 'ХӀора декъашхочун долахь йолу агӀо ю',
'tooltip-ca-nstab-media' => 'Медиа-файл',
# Spam protection
'spamprotectiontitle' => 'Совбиларна литтар',
'spamprotectiontext' => 'Хьо дӀаязъян гӀерта агӀо спам-литтаро дӀакъоьвлина.
-ЦÑ\83на баÑ\85Ñ\8cна Ñ\85ила Ñ\82ам бÑ\83 агÓ\80она Ñ\87оÑ\85Ñ\8c зÑ\83лам лиÑ\82Ñ\82аÑ\80ан Ñ\87Ñ\83Ñ\82оÑ\8cÑ\85на йолÑ\83 Ñ\85Ñ\8cажоÑ\80иг хилар.',
+ЦÑ\83на баÑ\85Ñ\8cна Ñ\85ила Ñ\82ам бÑ\83 агÓ\80она Ñ\87оÑ\85Ñ\8c зÑ\83лам лиÑ\82Ñ\82аÑ\80ан Ñ\87Ñ\83Ñ\82оÑ\8cÑ\85на йолÑ\83 Ñ\85Ñ\8cажоÑ\80аг хилар.',
# Info page
'pageinfo-header-basic' => 'Коьрта хаам',
# Video information, used by Language::formatTimePeriod() to format lengths in the above messages
'seconds-abbrev' => '$1оцу',
+# Human-readable timestamps
+'hours-ago' => '$1 {{PLURAL:$1|сахьат}} хьалха',
+'yesterday-at' => 'селхана $1 даьлча',
+
# Bad image list
'bad_image_list' => 'Барам хила беза ишта:
-Лораш хира йу могlамяхь йолу хlумнаш (могlийн, йола луш йолу сабол тlира *).
-Ð\94Ñ\83Ñ\8cÑ\85Ñ\8cаÑ\80алеÑ\80а Ñ\85Ñ\8cажоÑ\80иг магlаÑ\80Ñ\88и Ñ\85ила беза Ñ\85Ñ\8cажоÑ\80иг кху цамагдо сурт дуьлаче.
-Тlяхьа йогlуш йолу хьажориг оцу могlарехь хира йу магóш, билгалла аьлча яззамаш долуче, сурт хьаллаточехь.',
+Лораш хира ю могӀамяхь йолу хӀумнаш (могӀийн, йола луш йолу символ тӀира *).
+Ð\94Ñ\83Ñ\8cÑ\85Ñ\85Ñ\8cаÑ\80алеÑ\80а Ñ\85Ñ\8cажоÑ\80аг магÓ\80аÑ\80Ñ\88и Ñ\85ила беза Ñ\85Ñ\8cажоÑ\80аг кху цамагдо сурт дуьлаче.
+ТӀяхьа йогӀуш йолу хьажораг оцу могӀарехь хира ю магóш, билгалла аьлча яззамаш долуче, сурт хьаллаточехь.',
# Metadata
'metadata' => 'Метахаамаш',
'htmlform-selectorother-other' => 'Кхин',
# New logging system
-'logentry-delete-delete' => '$1 {{GENDER:$2|дӀаякхина|дӀаякхина}} агӀо $3',
+'logentry-delete-delete' => '$1 {{GENDER:$2|дӀаяьккхина}} агӀо $3',
'logentry-delete-restore' => '$1 {{GENDER:$2|меттахӀоттайина|меттахӀоттайина}} агӀо $3',
'logentry-move-move' => '$1 {{GENDER:$2|цӀе хийцина|цӀе хийцина}} $3 оцу $4',
'logentry-move-move-noredirect' => '$1 {{GENDER:$2|цӀе хийцина|цӀе хийцина}} $3 оцу $4 дӀасахьажийнарг цаюьтуш',
'search-result-size' => '$1 ({{PLURAL:$2|یەک وشە|$2 وشە}})',
'search-result-category-size' => '{{PLURAL:$1|١ ئەندام|$1 ئەندام}} ({{PLURAL:$2|١ ژێرپۆل|$2 ژێرپۆل}}, {{PLURAL:$3|١ پەڕگە|$3 پەڕگە}})',
'search-result-score' => 'پەیوەندی: $1%',
-'search-redirect' => '(ئاڵوگۆڕ $1)',
+'search-redirect' => '(ڕەوانەکەر $1)',
'search-section' => '(بەشی $1)',
'search-suggest' => 'ئایا مەبەستت ئەمە بوو: $1',
'search-interwiki-caption' => 'پرۆژە خوشکەکان',
'noindex-category' => 'Индекссиз саифелер',
'broken-file-category' => 'Ичинде бозукъ файл багълантылары олгъан саифелер',
-'linkprefix' => '/^((?>.*(?<![a-zâçğıñöşüA-ZÂÇĞİÑÖŞÜa-яёА-ЯЁ«„])))(.+)$/sDu',
+'linkprefix' => '/^(.*?)([a-zâçğıñöşüA-ZÂÇĞİÑÖŞÜa-яёА-ЯЁ«„]+)$/sDu',
'about' => 'Акъкъында',
'article' => 'Саифе',
'noindex-category' => 'İndekssiz saifeler',
'broken-file-category' => 'İçinde bozuq fayl bağlantıları olğan saifeler',
-'linkprefix' => '/^((?>.*(?<![a-zâçğıñöşüA-ZÂÇĞİÑÖŞÜa-яёА-ЯЁ«„])))(.+)$/sDu',
+'linkprefix' => '/^(.*?)([a-zâçğıñöşüA-ZÂÇĞİÑÖŞÜa-яёА-ЯЁ«„]+)$/sDu',
'about' => 'Aqqında',
'article' => 'Saife',
'spam_reverting' => 'Revert na poslední verzi neobsahující odkazy na $1',
'spam_blanking' => 'Všechny verze obsahovaly odkazy na $1, vyprázdněno',
'spam_deleting' => 'Všechny verze obsahovaly odkazy na $1, smazáno',
+'simpleantispam-label' => "Antispamová kontrola.
+'''NEVYPLŇUJTE''' následující!",
# Info page
'pageinfo-title' => 'Informace o stránce „$1“',
'category-subcat-count' => '{{PLURAL:$2|Сѥи катигорїи тъкъмо сꙗ подъкатигорїꙗ ѥстъ|Сѥи катигорїи {{PLURAL:$1|ѥдина подъкатигорїꙗ ѥстъ|2 подъкатигорїи ѥстє|$1 подъкатигорїѩ сѫтъ}} · а вьсѩ жє подъкатигорїѩ число $2 ѥстъ}}',
'listingcontinuesabbrev' => '· вѧщє',
-'linkprefix' => '/^((?>.*(?<!(?:„|«)$)))(.+)$/sDu',
+'linkprefix' => '/^(.*?)(„|«)$/sD',
'about' => 'опьсаниѥ',
'article' => 'члѣнъ',
'category-file-count-limited' => 'Ку категоринче $1 файл.',
'listingcontinuesabbrev' => '(малалли)',
-'linkprefix' => '/^((?>.*(?<![a-zA-Z\\x80-\\xff«"])))(.+)$/sD',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff«"]+)$/sD',
'about' => 'Ăнлантаркăч',
'article' => 'Статья',
Dyma'r cofnod lòg diweddaraf, er gwybodaeth:",
'semiprotectedpagewarning' => "'''Sylwer:''' Mae'r dudalen hon wedi ei chloi; dim ond defnyddwyr cofrestredig a allant ei golygu.
Dyma'r cofnod lòg diweddaraf, er gwybodaeth:",
-'cascadeprotectedwarning' => "'''Dalier sylw:''' Mae'r dudalen hon wedi ei diogelu fel nad ond defnyddwyr â galluoedd gweinyddwyr sy'n gallu ei newid, oherwydd ei bod yn rhan o'r {{PLURAL:$1|dudalen ganlynol|dudalen ganlynol|tudalennau canlynol|tudalennau canlynol|tudalennau canlynol|tudalennau canlynol}} sydd wedi {{PLURAL:$1|ei sgydol-ddiogelu|ei sgydol-ddiogelu|eu sgydol-diogelu}}.",
+'cascadeprotectedwarning' => "'''Dalier sylw:''' Mae'r dudalen hon wedi ei diogelu fel nad ond defnyddwyr â galluoedd gweinyddwyr sy'n gallu ei newid, oherwydd ei bod yn rhan o'r {{PLURAL:$1|dudalen ganlynol|dudalen ganlynol|tudalennau canlynol}} sydd wedi {{PLURAL:$1|ei sgydol-ddiogelu|ei sgydol-ddiogelu|eu sgydol-diogelu}}.",
'titleprotectedwarning' => "'''RHYBUDD: Mae'r dudalen hon wedi ei chloi; dim ond rhai defnyddwyr sydd â'r [[Special:ListGroupRights|gallu]] i'w chreu.'''
Dyma'r cofnod lòg diweddaraf, er gwybodaeth:",
'templatesused' => 'Defnyddir y {{PLURAL:$1|nodyn hwn|nodyn hwn|nodiadau hyn|nodiadau hyn|nodiadau hyn|nodiadau hyn}} yn y dudalen hon:',
'spam_reverting' => 'Wedi adfer y diwygiad diweddaraf na sydd yn cynnwys cysylltiadau i $1',
'spam_blanking' => 'Roedd cysylltiadau i $1 gan bob golygiad, felly gwacawyd y dudalen',
'spam_deleting' => 'Roedd pob diwygiad yn cynnwys cysylltiadau â $1, felly fe ddilëwyd y dudalen',
+'simpleantispam-label' => "Prawf gwrth-sbam.
+'''Peidiwch''' â llenwi hwn!",
# Info page
'pageinfo-title' => 'Manylion "$1"',
* @author Morten LJ
* @author Najami
* @author Nghtwlkr
+ * @author Overlaet
* @author Palnatoke
* @author Peter Alberti
* @author Peter Andersen
'searcharticle' => 'Gå til',
'history' => 'Historik',
'history_short' => 'Historik',
-'updatedmarker' => '(ændret)',
+'updatedmarker' => 'opdateret siden sidste besøg',
'printableversion' => 'Udskriftsvenlig udgave',
'permalink' => 'Permanent henvisning',
'print' => 'Udskriv',
'laggedslavemode' => "'''Bemærk:''' Den viste side indeholder muligvis ikke de nyeste ændringer.",
'readonly' => 'Databasen er skrivebeskyttet',
'enterlockreason' => 'Skriv en begrundelse for skrivebeskyttelsen, med samt en vurdering af, hvornår skrivebeskyttelsen ophæves igen',
-'readonlytext' => 'Databasen er midlertidigt skrivebeskyttet. Forsøg venligst senere.
+'readonlytext' => 'Databasen er i øjeblikket låst for nye poster og andre ændringer, sandsynligvis for rutinemæssig databasevedligeholdelse, hvorefter den vil være tilbage til normal.
-Årsag til spærringen: $1',
+Den administrator som har låst, gav denne forklaring: $1',
'missing-article' => 'Databasen burde indeholde siden "$1" $2, men det gør den ikke.
Den sandsynlige årsag er at du har fulgt et forældet link til en forskel eller en gammel version af en side der er blevet slettet.
'customjsprotected' => 'Du har ikke tilladelse til at redigere denne JavaScript-side, da den indeholder en anden brugers personlige indstillinger.',
'mycustomcssprotected' => 'Du har ikke rettigheder til at redigere denne CSS-side.',
'mycustomjsprotected' => 'Du har ikke rettigheder til at redigere denne JavaScript-side.',
-'myprivateinfoprotected' => 'Du har ikke tilladelse til at redigere dine private oplysninger.',
-'mypreferencesprotected' => 'Du har ikke tilladelse til at redigere dine præferencer.',
+'myprivateinfoprotected' => 'Du har ikke rettigheder til at redigere dine private oplysninger.',
+'mypreferencesprotected' => 'Du har ikke rettigheder til at redigere dine indstillinger.',
'ns-specialprotected' => 'Sider i navnerummet {{ns:special}} kan ikke redigeres.',
-'titleprotected' => "Dette sidenavn er beskyttet mod oprettelse af [[User:$1|$1]]. Begrundelsen for beskyttelsen er ''$2''.",
+'titleprotected' => 'Dette sidenavn er blevet beskyttet mod oprettelse af [[User:$1|$1]]. Begrundelsen for beskyttelsen er "\'\'$2\'\'".',
'filereadonlyerror' => 'Ude af stand til at redigere filen "$1", fordi fildatabasen "$2" er skrivebeskyttet.
Administratoren, som skrivebeskyttede den, gav følgende begrundelse: "$3".',
'yourpassword' => 'Din adgangskode:',
'userlogin-yourpassword' => 'Adgangskode',
'userlogin-yourpassword-ph' => 'Indtast din adgangskode',
-'createacct-yourpassword-ph' => 'Indtast kodeord',
+'createacct-yourpassword-ph' => 'Indtast en adgangskode',
'yourpasswordagain' => 'Gentag adgangskode',
-'createacct-yourpasswordagain' => 'Bekræft kodeord',
-'createacct-yourpasswordagain-ph' => 'Indtast kodeord igen',
+'createacct-yourpasswordagain' => 'Bekræft adgangskode',
+'createacct-yourpasswordagain-ph' => 'Indtast adgangskode igen',
'remembermypassword' => 'Husk mit brugernavn i denne browser (højst $1 {{PLURAL:$1|dag|dage}})',
'userlogin-remembermypassword' => 'Husk mig',
'userlogin-signwithsecure' => 'Brug sikker forbindelse',
'userlogin-createanother' => 'Opret en anden konto',
'createacct-join' => 'Indtast dine oplysninger nedenfor.',
'createacct-another-join' => 'Angiv den nye kontos oplysninger nedenfor.',
-'createacct-emailrequired' => 'Mailadresse',
-'createacct-emailoptional' => 'Mailadresse (valgfri)',
-'createacct-email-ph' => 'Indtast din mailadresse',
+'createacct-emailrequired' => 'E-mailadresse',
+'createacct-emailoptional' => 'E-mailadresse (valgfri)',
+'createacct-email-ph' => 'Indtast din e-mailadresse',
'createacct-another-email-ph' => 'Indtast e-mailadresse',
'createaccountmail' => 'Brug en midlertidig tilfældig adgangskode og send den til den angivne e-mailadresse',
-'createacct-realname' => 'Dit rigtige navn',
+'createacct-realname' => 'Dit rigtige navn (valgfrit)',
'createaccountreason' => 'Begrundelse:',
'createacct-reason' => 'Årsag',
-'createacct-reason-ph' => 'Hvorfor vil du oprette endnu en konto',
+'createacct-reason-ph' => 'Hvorfor du vil oprette endnu en konto',
'createacct-captcha' => 'Sikkerhedskontrol',
'createacct-imgcaptcha-ph' => 'Indtast venligst ovenstående tekst',
'createacct-submit' => 'Opret din konto',
-'createacct-another-submit' => 'Oprette en anden konto',
+'createacct-another-submit' => 'Opret en anden konto',
'createacct-benefit-heading' => '{{SITENAME}} laves af mennesker som dig.',
'createacct-benefit-body1' => '{{PLURAL:$1|redigering|redigeringer}}',
'createacct-benefit-body2' => '{{PLURAL:$1|side|sider}}',
'loginerror' => 'Logon mislykket',
'createacct-error' => 'Fejl ved kontooprettelse',
'createaccounterror' => 'Kunne ikke oprette brugerkonto: $1',
-'nocookiesnew' => 'Din brugerkonto er nu oprettet, men du er ikke logget på. {{SITENAME}} bruger cookies til at logge brugere på. Du har slået cookies fra. Vær venlig at slå cookies til, og derefter kan du logge på med dit nye brugernavn og kodeord.',
+'nocookiesnew' => 'Din brugerkonto er nu oprettet, men du er ikke logget på. {{SITENAME}} bruger cookies til at logge brugere på. Du har slået cookies fra. Vær venlig at slå cookies til, og derefter kan du logge på med dit nye brugernavn og adgangskode.',
'nocookieslogin' => '{{SITENAME}} bruger cookies til at logge brugere på. Du har slået cookies fra. Slå dem venligst til og prøv igen.',
'nocookiesfornew' => 'Denne brugerkonto er ikke oprettet, da vi ikke kunne bekræfte dens kilde.
Sørg for, at du har aktivereret cookies, genindlæs siden og prøv igen.',
Kontrollér stavemåden, eller [[Special:UserLogin/signup|opret en ny konto]].',
'nosuchusershort' => 'Der er ingen bruger ved navn "$1". Tjek din stavning.',
'nouserspecified' => 'Angiv venligst et brugernavn.',
-'login-userblocked' => 'Denne bruger er blokeret. Login er ikke tilladt',
+'login-userblocked' => 'Denne bruger er blokeret. Det er ikke tilladt at logge på.',
'wrongpassword' => 'Den indtastede adgangskode var forkert. Prøv igen.',
-'wrongpasswordempty' => 'Du glemte at indtaste password. Prøv igen.',
+'wrongpasswordempty' => 'Du glemte at indtaste adgangskode. Prøv igen.',
'passwordtooshort' => 'Adgangskoden skal mindst være på $1 {{PLURAL:$1|tegn|tegn}}.',
-'password-name-match' => 'Kodeordet må ikke være det samme som brugernavnet.',
+'password-name-match' => 'Adgangskoden må ikke være det samme som brugernavnet.',
'password-login-forbidden' => 'Brugen af dette brugernavn og adgangskode er blevet forbudt.',
-'mailmypassword' => 'Send nyt password',
-'passwordremindertitle' => 'Nyt password til {{SITENAME}}',
+'mailmypassword' => 'Send ny adgangskode',
+'passwordremindertitle' => 'Ny midlertidig adgangskode til {{SITENAME}}',
'passwordremindertext' => 'Nogen (sandsynligvis dig, fra IP-adressen $1)
har bedt om at vi sender dig en ny adgangskode til at logge på {{SITENAME}} ($4).
En midlertidig adgangskode for bruger "$2" er blevet lavet, den er "$3".
-Hvis dette var din mening, skal du logge ind og vælge en ny adgangskode nu.
+Hvis dette var din mening, skal du logge på og vælge en ny adgangskode nu.
Din midlertidige adgangskode vil udløbe om {{PLURAL:$5|en dag|$5 dage}}.
Hvis en anden har bestilt den nye adgangskode, eller hvis du er kommet i tanke om din gamle adgangskode og ikke længere vil ændre den,
'noemailcreate' => 'Du skal angive en gyldig e-mailadresse',
'passwordsent' => 'En ny adgangskode er sendt til e-mailadressen, som er registreret for "$1".
Du bør logge på og ændre din adgangskode straks efter du har modtaget e-mailen.',
-'blocked-mailpassword' => 'Din IP-adresse er spærret for ændring af sider. For at forhindre misbrug, er det heller ikke muligt, at bestille et nyt password.',
+'blocked-mailpassword' => 'Din IP-adresse er spærret for ændring af sider. For at forhindre misbrug, er det heller ikke muligt, at bestille en ny adgangskode.',
'eauthentsent' => 'En bekræftelsesmail er sendt til den angivne e-mailadresse.
Før en e-mail kan modtages af andre brugere af {{SITENAME}}-mailfunktionen, skal adressen og dens tilhørsforhold til denne bruger bekræftes. Følg venligst anvisningerne i denne mail.',
# Change password dialog
'resetpass' => 'Skift adgangskode',
-'resetpass_announce' => 'Log på med den via e-mail tilsendte password. For at afslutte tilmeldingen, skal du nu vælge et nyt password.',
+'resetpass_announce' => 'Du loggede på med den via e-mail tilsendte adgangskode. For at afslutte tilmeldingen, skal du nu vælge en ny adgangskode.',
'resetpass_text' => '<!-- Tilføj tekst her -->',
'resetpass_header' => 'Skift adgangskode',
'oldpassword' => 'Gammel adgangskode:',
'resetpass-wrong-oldpass' => 'Ugyldig midlertidig eller gældende adgangskode.
Du har muligvis allerede skiftet din adgangskode eller anmodet om en ny midlertidig kode.',
'resetpass-temp-password' => 'Midlertidig adgangskode',
-'resetpass-abort-generic' => 'Ændring af kodeord er blevet afbrudt af udvidelse',
+'resetpass-abort-generic' => 'Ændring af adgangskode er blevet afbrudt af en udvidelse',
# Special:PasswordReset
'passwordreset' => 'Nulstil adgangskode',
'passwordreset-text-one' => 'Udfyld denne formular for at nulstille din adgangskode.',
'passwordreset-text-many' => '{{PLURAL:$1|Udfyld en af felterne nedenfor for at nulstille din adgangskode.}}',
'passwordreset-legend' => 'Nulstil adgangskode',
-'passwordreset-disabled' => 'Nulstilling af kodeord er slået fra på denne wiki.',
+'passwordreset-disabled' => 'Nulstilling af adgangskode er slået fra på denne wiki.',
'passwordreset-emaildisabled' => 'E-mailfunktioner er slået fra på denne wiki.',
'passwordreset-username' => 'Brugernavn:',
'passwordreset-domain' => 'Domæne:',
# Special:ChangeEmail
'changeemail' => 'Ændre e-mailadresse',
'changeemail-header' => 'Ændre kontoens e-mailadresse',
-'changeemail-text' => 'Udfyld denne formular for at ændre din e-mailadresse. Du skal indtaste dit kodeord for at bekræfte denne ændring.',
+'changeemail-text' => 'Udfyld denne formular for at ændre din e-mailadresse. Du skal indtaste din adgangskode for at bekræfte denne ændring.',
'changeemail-no-info' => 'Du skal være logget på for at komme direkte til denne side.',
'changeemail-oldemail' => 'Nuværende e-mailadresse:',
'changeemail-newemail' => 'Ny e-mailadresse:',
'deletecomment' => 'Begrundelse:',
'deleteotherreason' => 'Anden/uddybende begrundelse:',
'deletereasonotherlist' => 'Anden begrundelse',
-'deletereason-dropdown' => '
-*Hyppige sletningsårsager
-** Efter forfatters ønske
+'deletereason-dropdown' => '* Hyppige sletningsårsager
+** Spam
+** Hærværk
** Overtrædelse af ophavsret
-** Hærværk',
+** Efter forfatters ønske
+** Brudt omdirigering',
'delete-edit-reasonlist' => 'Rediger sletningsårsager',
'delete-toobig' => 'Denne side har en stor historik, over {{PLURAL:$1|en version|$1 versioner}}. Sletning af sådanne sider er begrænset, for at forhindre utilsigtet forstyrrelse af {{SITENAME}}.',
'delete-warning-toobig' => 'Denne side har en stor historik, over {{PLURAL:$1|en version|$1 versioner}} versioner, slettes den kan det forstyrre driften af {{SITENAME}}, gå forsigtigt frem.',
'spam_reverting' => 'Sidste version uden henvisning til $1 gendannet.',
'spam_blanking' => 'Alle versioner, som indeholdt henvisninger til $1, er renset.',
'spam_deleting' => 'Alle versioner indeholder henvisninger til $1, sletter',
+'simpleantispam-label' => "Anti-spam tjek.
+Udfyld '''IKKE''' dette!",
# Info page
'pageinfo-title' => 'Information om "$1"',
'spam_reverting' => 'Letzte Version ohne Links zu $1 wiederhergestellt.',
'spam_blanking' => 'Alle Versionen mit einem Link zu $1 wurden bereinigt.',
'spam_deleting' => 'Alle Versionen mit einem Link zu $1 wurden gelöscht.',
+'simpleantispam-label' => "Spamschutzprüfung.
+Hier '''NICHTS''' eintragen!",
# Info page
'pageinfo-title' => 'Informationen zu „$1“',
'spam_reverting' => 'agêriyeno revizyon o ke tawayê $1 ıney piya çiniyo',
'spam_blanking' => 'Revizyonê gredê $1 vineyay, wa weng kero',
'spam_deleting' => 'Revizyonê gredê $1 vineyay, wa besterneyê',
+'simpleantispam-label' => "tehqiqatê Anti-spami.
+no '''de mekerê'''!",
# Info page
'pageinfo-title' => 'Heq tê "$1"\'i',
'spam_reverting' => 'Nawrośijo se slědna wersija, kótaraž njejo wopśimjeła wótkaz na $1.',
'spam_blanking' => 'Wšykne wersije su wopśimowali wótkaze na $1, do rěcha spórane.',
'spam_deleting' => 'Wšykne wersije z wótkazami do $1 so lašuju',
+'simpleantispam-label' => "Antispamowa kontrola.
+How '''NIC''' zapisaś!",
# Info page
'pageinfo-title' => 'Informacije za bok "$1"',
'articlepage' => 'Εμφάνιση σελίδας περιεχομένου',
'talk' => 'Συζήτηση',
'views' => 'Προβολές',
-'toolbox' => 'Î\95Ï\81γαλειοθήκη',
+'toolbox' => 'Î\95Ï\81γαλεία',
'userpage' => 'Προβολή σελίδας χρήστη',
'projectpage' => 'Προβολή σελίδας εγχειρήματος',
'imagepage' => 'Προβολή σελίδας αρχείου',
'movepage-moved' => '\'\'\'"$1" μεταφέρθηκε στο "$2"\'\'\'',
'movepage-moved-redirect' => 'Δημιουργήθηκε μια ανακατεύθυνση.',
'movepage-moved-noredirect' => 'Η δημιουργία ανακατεύθυνσης παρεμποδίστηκε.',
-'articleexists' => 'Υπάρχει ήδη σελίδα με αυτό το όνομα. Παρακαλούμε δώστε άλλο όνομα στη σελίδα.',
+'articleexists' => 'Υπάρχει ήδη σελίδα με αυτό το όνομα, ή το όνομα που επιλέξατε δεν είναι αποδεκτό. Παρακαλούμε δώστε άλλο όνομα στη σελίδα.',
'cantmove-titleprotected' => "Δεν μπορείτε να μετακινήσετε μια σελίδα σ' αυτή τη θέση διότι έχει απαγορευθεί η δημιουργία αυτού του τίτλου",
'talkexists' => "Η ίδια η σελίδα μετακινήθηκε επιτυχώς αλλά όχι και η σελίδα συζήτησης, λόγω του ότι υπάρχει ήδη άλλη σελίδα συζήτησης κάτω από το νέο τίτλο. Παρακαλούμε ενοποιήστε τις δύο σελίδες με 'αντιγραφή-και-επικόλληση'.",
'movedto' => 'Μετακινήθηκε στο',
'spam_reverting' => 'Επαναφορά στην τελευταία έκδοση που δεν περιέχει συνδέσμους στο $1',
'spam_blanking' => 'Όλες οι αναθεωρήσεις περιείχαν συνδέσμους προς το $1, εξάλειψη',
'spam_deleting' => 'Διαγραφή όλων των αναθεωρήσεων που περιείχαν συνδέσμους προς το $1',
+'simpleantispam-label' => "Έλεγχος anti-spam.
+'''ΜΗΝ''' το συμπληρώσετε αυτό!",
# Info page
'pageinfo-title' => 'Πληροφορίες για "$1"',
'passwordsent' => 'A new password has been sent to the email address registered for "$1".
Please log in again after you receive it.',
'blocked-mailpassword' => 'Your IP address is blocked from editing, and so is not allowed to use the password recovery function to prevent abuse.',
-'eauthentsent' => 'A confirmation email has been sent to the nominated email address.
+'eauthentsent' => 'A confirmation email has been sent to the specified email address.
Before any other email is sent to the account, you will have to follow the instructions in the email, to confirm that the account is actually yours.',
'throttled-mailpassword' => 'A password reset email has already been sent, within the last {{PLURAL:$1|hour|$1 hours}}.
To prevent abuse, only one password reset email will be sent per {{PLURAL:$1|hour|$1 hours}}.',
'spam_reverting' => 'Reverting to last revision not containing links to $1',
'spam_blanking' => 'All revisions contained links to $1, blanking',
'spam_deleting' => 'All revisions contained links to $1, deleting',
+'simpleantispam-label' => "Anti-spam check.
+Do '''NOT''' fill this in!",
# Info page
'pageinfo-header' => '-', # do not translate or duplicate this message to other languages
'spam_reverting' => 'Restarigo de lasta versio ne entenante ligilojn al $1',
'spam_blanking' => 'Forviŝo de ĉiuj versioj entenantaj ligilojn al $1',
'spam_deleting' => 'Ĉiuj versioj enhavis ligilojn al $1 - forigante',
+'simpleantispam-label' => 'Kontrolo kontraŭ spamo.
+NE ENIGU ion ajn!',
# Info page
'pageinfo-title' => 'Informoj por "$1"',
'spam_reverting' => 'Revirtiendo a la última versión que no contenga enlaces a $1',
'spam_blanking' => 'Todas las revisiones contienen enlaces a $1, blanqueando',
'spam_deleting' => 'Todas las revisiones que contienen enlaces a $1, en proceso de eliminación',
+'simpleantispam-label' => 'Comprobación anti-spam
+¡NO rellenes esto!',
# Info page
'pageinfo-title' => 'Información para «$1»',
'spam_reverting' => 'Taastan viimase versiooni, mis ei sisalda linke aadressile $1.',
'spam_blanking' => 'Kõik versioonid sisaldasid linke veebilehele $1. Lehekülg tühjendatud.',
'spam_deleting' => 'Kustutatud kõik redaktsioonid, mis viitasid aadressile $1.',
+'simpleantispam-label' => "Rämpspostikontroll.
+'''ÄRA''' täida seda välja!",
# Info page
'pageinfo-title' => 'Teave lehekülje "$1" kohta',
'spambot_username' => 'MediaWikiren spam garbiketa',
'spam_reverting' => '$1(e)rako loturarik ez daukan azken bertsiora itzultzen',
'spam_blanking' => 'Berrikuspen guztiek $1(e)rako lotura zeukaten, husten',
+'simpleantispam-label' => "Anti-spam egiaztapena.
+Atal hau '''EZ''' bete!",
# Info page
'pageinfo-title' => '"$1"(r)entzako informazioa',
'resettokens-legend' => 'بازنشانی شناسانندهها',
'resettokens-tokens' => 'شناسانندهها:',
'resettokens-token-label' => '$1 (مقدار کنونی: $2)',
-'resettokens-watchlist-token' => 'شناساننده براÛ\8c Ø®Ù\88راک Ù\88بÙ\90 [[Special:Watchlist|تغÛ\8cÛ\8cرات صÙ\81ØÙ\87â\80\8cÙ\87اÛ\8cÛ\8c Ú©Ù\87 Ù¾Û\8cÚ¯Û\8cرÛ\8c Ù\85Û\8câ\80\8cÚ©Ù\86Û\8cد]] (اتÙ\85/آراسâ\80\8cاس)',
+'resettokens-watchlist-token' => 'شناسانندهÙ\94 Ø®Ù\88راک Ù\88بÙ\90Û\8c [[Special:Watchlist|تغÛ\8cÛ\8cرات صÙ\81ØÙ\87â\80\8cÙ\87اÛ\8cÛ\8c Ú©Ù\87 Ù¾Û\8câ\80\8cÚ¯Û\8cرÛ\8c Ù\85Û\8câ\80\8cÚ©Ù\86Û\8cد]] (اتÙ\85/آراسâ\80\8cاس)',
'resettokens-done' => 'بازنشانی شناسانندهها.',
'resettokens-resetbutton' => 'بازشناسی شناسانندههای گزیدهشده.',
'right-rollback' => 'واگردانی سریع ویرایشهای آخرین کاربری که یک صفحه را ویرایش کردهاست',
'right-markbotedits' => 'علامتزدن ویرایشهای واگردانیشده بهعنوان ویرایش ربات',
'right-noratelimit' => 'تاثیر نپذیرفتن از محدودیت سرعت',
-'right-import' => 'وارد کردن صفحه از ویکیهای دیگر',
-'right-importupload' => 'وارد کردن صفحه از طریق بارگذاری پرونده',
+'right-import' => 'واردکردن صفحه از ویکیهای دیگر',
+'right-importupload' => 'واردکردن صفحه از طریق بارگذاری پرونده',
'right-patrol' => 'گشت زدن به ویرایشهای دیگران',
'right-autopatrol' => 'گشن زدن خودکار به ویرایشهای خودش',
'right-patrolmarks' => 'مشاهدهٔ برچسب گشت تغییرات اخیر',
-'right-unwatchedpages' => 'مشاهدهٔ فهرست صفحههایی که پیگیری نمیشوند',
+'right-unwatchedpages' => 'مشاهدهٔ فهرست صفحههایی که پیگیری نمیشوند',
'right-mergehistory' => 'ادغام تاریخچهٔ صفحهها',
'right-userrights' => 'ویرایش تمام اختیارات کاربرها',
'right-userrights-interwiki' => 'ویرایش اختیارات کاربرهای ویکیهای دیگر',
'action-block' => 'قطع دسترسی این کاربر از ویرایشکردن',
'action-protect' => 'تغییر سطح محافظت این صفحه',
'action-rollback' => 'واگردانی سریع ویرایشهای آخرین کاربری که یک صفحه را ویرایش کردهاست',
-'action-import' => 'وارد کردن صفحه از ویکی های دیگر',
+'action-import' => 'واردکردن صفحه از ویکی های دیگر',
'action-importupload' => 'واردکردن صفحه از طریق بارگذاری پرونده',
'action-patrol' => 'گشت زدن ویرایش دیگران',
'action-autopatrol' => 'گشت زدن ویرایش خودتان',
'uploadstash-nofiles' => 'شما هیچ پروندهٔ انبارشدهای ندارید.',
'uploadstash-badtoken' => 'انجام این اقدام ناموفق بود، احتمالاً به این دلیل که اعتبار ویرایش شما به اتمام رسیده است. دوباره امتحان کنید.',
'uploadstash-errclear' => 'پاک کردن پروندهها ناموفق بود.',
-'uploadstash-refresh' => 'تازه کردن فهرست پروندهها',
+'uploadstash-refresh' => 'تازهکردن فهرست پروندهها',
'invalid-chunk-offset' => 'جابجایی نامعتبر قطعه',
# img_auth script messages
'statistics-articles' => 'صفحههای محتوایی',
'statistics-pages' => 'صفحهها',
'statistics-pages-desc' => 'تمام صفحههای این ویکی، از جمله صفحههای بحث، تغییرمسیر و غیره',
-'statistics-files' => 'پروندههای بارگذاری شده',
+'statistics-files' => 'پروندههای بارگذاریشده',
'statistics-edits' => 'ویرایش صفحهها از هنگامی که {{SITENAME}} راهاندازی شده',
'statistics-edits-average' => 'متوسط ویرایشها به ازای هر صفحه',
'statistics-views-total' => 'مجموع بازدیدها',
'wantedpages-badtitle' => 'عنوان نامجاز در مجموعهٔ نتایج: $1',
'wantedfiles' => 'پروندههای مورد نیاز',
'wantedfiletext-cat' => 'پروندههای زیر استفاده میشوند اما موجود نیستند. همچنین ممکن است پروندههای مخازن خارجی با وجود موجود بودن در اینجا فهرست شوند. هرگونه رتبه مثبت کاذب <del>خط خواهد خورد.</del> علاوه بر این، صفحاتی که پروندههایی ناموجود را در خود جای دادهاند در [[:$1]] فهرست شدهاند.',
-'wantedfiletext-nocat' => 'پروندههای زیر استفاده میشوند اما موجود نیستند. همچنین ممکن است پروندههای مخازن خارجی با وجود موجود بودن در اینجا فهرست شوند. هرگونه رتبه مثبت کاذب <del>خط خواهد خورد.</del>',
+'wantedfiletext-nocat' => 'پروندههای زیر استفاده میشوند اما موجود نیستند. همچنین ممکن است پروندههای مخازن خارجی با وجود موجود بودن در اینجا فهرست شوند. هرگونه رتبهٔ مثبت کاذب <del>خط خواهد خورد.</del>',
'wantedtemplates' => 'الگوهای مورد نیاز',
'mostlinked' => 'صفحههایی که بیشتر از همه به آنها پیوند داده شدهاست',
'mostlinkedcategories' => 'ردههایی که بیشتر از همه به آنها پیوند داده شدهاست',
'iteminvalidname' => 'مشکل با مورد «$1»، نام نامعتبر است...',
'wlnote' => 'در زیر {{PLURAL:$1|تغییری|$1 تغییری}} که در {{PLURAL:$2|ساعت|$2 ساعت}} گذشته انجام شده موجود است، تاریخ آخرین بازیابی: $3، $4',
'wlshowlast' => 'نمایش آخرین $1 ساعت $2 روز $3',
-'watchlist-options' => 'گزینههای پیگیری',
+'watchlist-options' => 'گزینههای پیگیری',
# Displayed when you click the "watch" button and it is in the process of watching
'watching' => 'پیگیری...',
'ipbotheroption' => 'دیگر',
'ipbotherreason' => 'دلیل دیگر/اضافی:',
'ipbhidename' => 'نهفتن نام کاربری از ویرایشها و فهرستها',
-'ipbwatchuser' => 'پیگیری صفحهٔ کاربری و بحث این کاربر',
+'ipbwatchuser' => 'پیگیری صفحهٔ کاربری و بحث این کاربر',
'ipb-disableusertalk' => 'جلوگیری از ویرایشی صفحهً بحث توسط خود کاربر در زمانی که بسته است',
'ipb-change-block' => 'بستن دوبارهٔ کاربر با این تنظیمها',
'ipb-confirm' => 'تأیید بستن',
'spam_reverting' => 'واگردانی به آخرین نسخهای که پیوندی به $1 ندارد.',
'spam_blanking' => 'تمام نسخهها حاوی پیوند به $1 بود، در حال خالی کردن',
'spam_deleting' => 'تمام نسخهها حاوی پیوند به $1 بود، در حال حذف',
+'simpleantispam-label' => "بررسی ضدهرزنگاری.
+این قسمت را پر '''نکنید'''!",
# Info page
'pageinfo-title' => 'اطلاعات در مورد «$1»',
'exif-dc-contributor' => 'مشارکتکنندگان',
'exif-dc-coverage' => 'محدوده مکانی و یا زمانی رسانه',
-'exif-dc-date' => 'تاریخ (ها)',
+'exif-dc-date' => 'تاریخ(ها)',
'exif-dc-publisher' => 'ناشر',
'exif-dc-relation' => 'رسانههای مرتبط',
'exif-dc-rights' => 'حقوق',
'watchlistedit-noitems' => 'فهرست پیگیریهای شما خالی است.',
'watchlistedit-normal-title' => 'ویرایش فهرست پیگیریها',
'watchlistedit-normal-legend' => 'حذف عنوانها از فهرست پیگیریها',
-'watchlistedit-normal-explain' => 'عنوانهای موجود در فهرست پیگیری شما در زیر نشان داده شدهاند.
+'watchlistedit-normal-explain' => 'عنوانهای موجود در فهرست پیگیری شما در زیر نشان داده شدهاند.
برای حذف هر عنوان جعبهٔ کنار آن را علامت بزنید و دکمهٔ «{{int:Watchlistedit-normal-submit}}» را بفشارید.
شما همچنین میتوانید [[Special:EditWatchlist/raw|فهرست خام را ویرایش کنید]].',
'watchlistedit-normal-submit' => 'حذف عنوانها',
'logentry-move-move_redir' => '$1 صفحهٔ $3 را به $4 که تغییرمسیر بود {{GENDER:$2|منتقل کرد}}',
'logentry-move-move_redir-noredirect' => '$1 صفحهٔ $3 را بدون برجایگذاشتن تغییرمسیر به $4 که تغییرمسیر بود {{GENDER:$2|منتقل کرد}}',
'logentry-patrol-patrol' => '$1 نسخه $4 صفحه $3 را به عنوان گشت خورده {{GENDER:$2|علامت زد}}',
-'logentry-patrol-patrol-auto' => '$1 نسخه $4 صفحه $3 را به طور خودکار به عنوان گشت خورده {{GENDER:$2|علامت زد}}',
+'logentry-patrol-patrol-auto' => '$1 نسخهٔ $4 صفحهٔ $3 را بهطور خودکار بهعنوان گشتخورده {{GENDER:$2|علامت زد}}',
'logentry-newusers-newusers' => 'حساب کاربری $1 {{GENDER:$2|ایجاد شد}}',
'logentry-newusers-create' => 'حساب کاربری $1 {{GENDER:$2|ایجاد شد}}',
'logentry-newusers-create2' => 'حساب کاربری $3 توسط $1 {{GENDER:$2|ایجاد شد}}',
'passwordremindertext' => 'Joku IP-osoitteesta $1 pyysi {{GRAMMAR:partitive|{{SITENAME}}}} ($4) lähettämään uuden salasanan. Väliaikainen salasana käyttäjälle $2 on nyt $3. Kirjaudu sisään ja vaihda salasana. Väliaikainen salasana vanhenee {{PLURAL:$5|yhden päivän|$5 päivän}} kuluttua.
Jos joku muu on tehnyt tämän pyynnön, tai jos olet muistanut salasanasi ja et halua vaihtaa sitä, voit jättää tämän viestin huomiotta ja jatkaa vanhan salasanan käyttöä.',
-'noemail' => 'Käyttäjälle "$1" ei ole määritelty sähköpostiosoitetta.',
+'noemail' => 'Käyttäjälle $1 ei ole määritelty sähköpostiosoitetta.',
'noemailcreate' => 'Sinun on annettava voimassa oleva sähköpostiosoite',
'passwordsent' => 'Uusi salasana on lähetetty käyttäjän <b>$1</b> sähköpostiosoitteeseen.
Ole hyvä ja kirjaudu sisään kun olet saanut sen.',
'resetpass-wrong-oldpass' => 'Virheellinen väliaikainen tai nykyinen salasana.
Olet saattanut jo onnistuneesti vaihtaa salasanasi tai pyytää uutta väliaikaista salasanaa.',
'resetpass-temp-password' => 'Väliaikainen salasana:',
-'resetpass-abort-generic' => 'Lisäosa hylkäsi salasanan vaihdon.',
+'resetpass-abort-generic' => 'Laajennus keskeytti salasanan vaihdon.',
# Special:PasswordReset
-'passwordreset' => 'Salasanan vaihto',
-'passwordreset-text-one' => 'Täytä tämä lomake vaihtaaksesi salasanasi.',
-'passwordreset-text-many' => '{{PLURAL:$1|Täytä yksi kentistä alustaaksesi salasanasi.}}',
-'passwordreset-legend' => 'Salasanan vaihto',
-'passwordreset-disabled' => 'Salasanojen vaihtaminen ei ole mahdollista tässä wikissä.',
+'passwordreset' => 'Salasanan uudistus',
+'passwordreset-text-one' => 'Täytä tämä lomake uudistaaksesi salasanasi.',
+'passwordreset-text-many' => '{{PLURAL:$1|Täytä yksi kentistä uudistaaksesi salasanasi.}}',
+'passwordreset-legend' => 'Salasanan uudistus',
+'passwordreset-disabled' => 'Salasanojen uudistaminen ei ole mahdollista tässä wikissä.',
'passwordreset-emaildisabled' => 'Sähköpostitoiminnot on poistettu käytöstä tässä wikissä.',
'passwordreset-username' => 'Käyttäjätunnus:',
'passwordreset-domain' => 'Verkkotunnus:',
'right-editusercssjs' => 'Muokata toisten käyttäjien CSS- ja JavaScript-tiedostoja',
'right-editusercss' => 'Muokata toisten käyttäjien CSS-tiedostoja',
'right-edituserjs' => 'Muokata toisten käyttäjien JavaScript-tiedostoja',
-'right-editmyusercss' => 'Muokata omia CSS-tiedostojaan',
-'right-editmyuserjs' => 'Muokata omia JavaScript-tiedostojaan',
+'right-editmyusercss' => 'Muokata omia CSS-tiedostoja',
+'right-editmyuserjs' => 'Muokata omia JavaScript-tiedostoja',
'right-viewmywatchlist' => 'Tarkastella tarkkailulistaasi',
'right-editmywatchlist' => 'Muokata tarkkailulistaasi. Huomaa, että jotkin toiminnot lisäävät yhä sivuja listallesi riippumatta tästä oikeudesta.',
'right-viewmyprivateinfo' => 'Nähdä omat yksityiset tietosi (esim. sähköpostiosoite, oikea nimi)',
'tooltip-ca-move' => 'Siirrä tämä sivu',
'tooltip-ca-watch' => 'Lisää tämä sivu tarkkailulistallesi',
'tooltip-ca-unwatch' => 'Poista tämä sivu tarkkailulistaltasi',
-'tooltip-search' => 'Etsi {{GRAMMAR:elative|{{SITENAME}}}}',
+'tooltip-search' => 'Hae {{GRAMMAR:elative|{{SITENAME}}}}',
'tooltip-search-go' => 'Siirry sivulle, joka on tarkalleen tällä nimellä',
-'tooltip-search-fulltext' => 'Etsi sivuilta tätä tekstiä',
+'tooltip-search-fulltext' => 'Hae sivuilta tätä tekstiä',
'tooltip-p-logo' => 'Etusivu',
'tooltip-n-mainpage' => 'Siirry etusivulle',
'tooltip-n-mainpage-description' => 'Siirry etusivulle',
'spam_reverting' => 'Palautettu viimeisimpään versioon, joka ei sisällä linkkejä kohteeseen $1.',
'spam_blanking' => 'Kaikki versiot sisälsivät linkkejä kohteeseen $1. Sivu tyhjennetty.',
'spam_deleting' => 'Kaikki versiot sisälsivät linkkejä kohteeseen $1, poistetaan',
+'simpleantispam-label' => "Mainostenvastainen varmistus.
+'''ÄLÄ''' täytä tätä!",
# Info page
'pageinfo-title' => 'Tietoja sivusta $1',
'api-error-publishfailed' => 'Sisäinen virhe: Väliaikaisen tiedoston julkaiseminen epäonnistui.',
'api-error-timeout' => 'Palvelin ei vastannut odotetun ajan kuluessa.',
'api-error-unclassified' => 'Tapahtui tuntematon virhe.',
-'api-error-unknown-code' => 'Tuntematon virhe: $1',
+'api-error-unknown-code' => 'Tuntematon virhe: $1.',
'api-error-unknown-error' => 'Sisäinen virhe: Jotain meni vikaan kun tiedostosi yritettiin tallentaa.',
-'api-error-unknown-warning' => 'Tuntematon varoitus: $1',
+'api-error-unknown-warning' => 'Tuntematon varoitus: $1.',
'api-error-unknownerror' => 'Tuntematon virhe: $1.',
'api-error-uploaddisabled' => 'Tiedostojen tallentaminen ei ole käytössä.',
'api-error-verification-error' => 'Tiedosto voi olla vioittunut, tai sillä saattaa olla väärä tiedostopääte.',
'articlepage' => 'Vís síðu við innihaldi',
'talk' => 'Kjak',
'views' => 'Skoðanir',
-'toolbox' => 'Amboðskassi',
+'toolbox' => 'Tól',
'userpage' => 'Vís brúkarasíðu',
'projectpage' => 'Vís verkætlanarsíðu',
'imagepage' => 'Vís fílusíðuna',
'action-block' => 'noktað hesum brúkara at rætta',
'action-protect' => 'broyt verjustøðuna hjá hesi síðu',
'action-rollback' => 'rulla skjótt aftur rættingarnar hjá tí seinasta brúkaranum, sum rættaði eina ávísa síðu',
-'action-import' => 'innflyt hesa síðu frá aðrari wiki',
-'action-importupload' => 'innflyt hesa síðuna frá einari fílu sum er løgd út',
+'action-import' => 'innflyt síður frá aðrari wiki',
+'action-importupload' => 'innflyt síður frá einari fílu sum er løgd út',
'action-patrol' => 'markað rætting hjá øðrum sum eftirhugda',
'action-autopatrol' => 'fá tina rætting merkta sum eftirhugda',
'action-unwatchedpages' => 'Síggj listan yvir síður sum ikki eru eftiransaðar',
# Recent changes
'nchanges' => '$1 {{PLURAL:$1|broyting|broytingar}}',
+'enhancedrc-history' => 'søga',
'recentchanges' => 'Seinastu broytingar',
'recentchanges-legend' => 'Nýligar broytingar møguleikar',
'recentchanges-summary' => 'Á hesi síðu kanst tú fylgja teimum nýggjastu broytingunum á hesi wiki.',
'deletecomment' => 'Orsøk:',
'deleteotherreason' => 'Onnur orsøk:',
'deletereasonotherlist' => 'Onnur orsøk',
-'deletereason-dropdown' => '*Vanligar orsøkir til striking
-** Umbøn frá høvunda
+'deletereason-dropdown' => '* Vanligar orsøkir til striking
+** Spamm
+** Herverk (Vandalisma)
** Brot á upphavsrættin
-** Herverk (Vandalisma)',
+** Umbøn frá høvunda
+** Brotin víðaristilling',
'delete-edit-reasonlist' => 'Rætta orsøkir til striking',
'delete-toobig' => 'Henda síðan hevur eina langa rættingar søgu, meira enn $1 {{PLURAL:$1|versjón|versjónir}}.
Striking av slíkum síðum er avmarkað fyri at forða fyri at onkur av óvart kemur til at forstýra {{SITENAME}}.',
Seinasta broytingin á síðuni var av [[User:$3|$3]] ([[User talk:$3|kjak]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
'editcomment' => "Rættingarfrágreiðingin var: \"''\$1''\".",
'revertpage' => 'Tók burtur rættingar hjá [[Special:Contributions/$2|$2]] ([[User talk:$2|kjak]]) til seinastu versjón hjá [[User:$1|$1]]',
-'revertpage-nouser' => 'Tók burtur rættingar hjá einum fjaldum brúkara til seinastu versjón hjá [[User:$1|$1]]',
+'revertpage-nouser' => 'Tók burtur rættingar hjá einum fjaldum brúkara til seinastu versjón hjá {{GENDER:$1|[[User:$1|$1]]}}',
'rollback-success' => 'Tók burtur rættingar hjá $1;
broytti tað aftur til seinastu versjón hjá $2.',
'contributions' => '{{GENDER:$1|Brúkaraíkøst}}',
'contributions-title' => 'Brúkaraíkøst fyri $1',
'mycontris' => 'Íkøst',
-'contribsub2' => 'Eftir $1 ($2)',
+'contribsub2' => 'Fyri {{GENDER:$3|$1}} ($2)',
'nocontribs' => 'Ongar broytingar vóru funnar, sum samsvaraðu hesar treytirnar.',
'uctop' => '(verandi)',
'month' => 'Frá mánaði (og áðrenn):',
'spam_reverting' => 'Rétablissement de la dernière version ne contenant pas de lien vers $1',
'spam_blanking' => 'Toutes les versions contenant des liens vers $1 sont blanchies',
'spam_deleting' => 'Toutes les versions contenaient des liens vers $1, suppression',
+'simpleantispam-label' => "Vérification anti-spam.
+Ne '''RIEN''' inscrire ici !",
# Info page
'pageinfo-title' => 'Informations pour « $1 »',
'spam_reverting' => 'Rètablissement de la dèrriére vèrsion que contint gins de lim de vers $1',
'spam_blanking' => 'Totes les vèrsions que contegnont des lims de vers $1 sont blanchies',
'spam_deleting' => 'Totes les vèrsions que contegnont des lims de vers $1 sont suprimâs',
+'simpleantispam-label' => "Contrôlo anti-spame.
+Enscrîde '''REN''' ique !",
# Info page
'pageinfo-title' => 'Enformacions por « $1 »',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
'aboutsite' => 'Auer {{SITENAME}}',
'aboutpage' => 'Project:Auer',
-'copyright' => 'Det stäänt oner det lisens $1.',
+'copyright' => 'Det sidj as tu fun oner $1 , wan diar niks ööders stäänt.',
'copyrightpage' => '{{ns:project}}:Copyrights',
'currentevents' => 'Aktuels',
'currentevents-url' => 'Project:Aktuels',
'userlogin-resetpassword-link' => 'Paaswurd turagsaat',
'helplogin-url' => 'Help:Uunmelde',
'userlogin-helplink' => "[[{{MediaWiki:helplogin-url}}|Halep bi't uunmeldin]]",
+'userlogin-loggedin' => 'Du beest al üs {{GENDER:$1|$1}} uunmeldet.
+Brük det formulaar diar oner, am di mä en öödern nööm uuntumeldin.',
+'userlogin-createanother' => 'En ööder brükerkonto iinracht',
'createacct-join' => 'Du oner din dooten iin.',
'createacct-another-join' => "Skriiw oner a dooten för't nei brükerkonto hen",
'createacct-emailrequired' => 'E-mail adres',
'action-protect' => 'det seekerhaid faan sidjen tu feranrin',
'action-rollback' => 'feranrangen faan di leetst brüker gau turagtusaaten',
'action-import' => 'sidjen faan en ööder Wiki tu importiarin',
-'action-importupload' => 'sidjen auer det huuchschüüren faan datein tu importiarin',
+'action-importupload' => 'sidjen auer det huuchschüüren faan en datei tu importiarin',
'action-patrol' => 'det werk faan ööder brükern üs kontroliaret tu kääntiaknin',
'action-autopatrol' => 'aanj feranrangen üs kontroliaret tu kääntiaknin',
'action-unwatchedpages' => 'det list faan sidjen uuntulukin, diar näämen üüb aachtet',
'listfiles_count' => 'Werjuunen',
'listfiles-show-all' => 'Ual bilwerjuunen mä iinslütj',
'listfiles-latestversion' => 'Aktuel werjuun',
+'listfiles-latestversion-yes' => 'Ja',
'listfiles-latestversion-no' => 'Naan',
# File description page
'listusers' => 'Brükerfertiaknis',
'listusers-editsonly' => 'Wise bluas aktiif brükern',
'listusers-creationsort' => 'Sortiare efter dootem',
+'listusers-desc' => 'Sortiare amdeel',
'usereditcount' => '{{PLURAL:$1|feranrang|$1 feranrangen}}',
'usercreated' => '{{GENDER:$3|Maaget}} di $1 am a klook $2',
'newpages' => 'Nei sidjen',
'deleteotherreason' => 'Ööder/noch en grünj:',
'deletereasonotherlist' => 'Ööder grünj',
'deletereason-dropdown' => "*Algemian grünjer för't striken
-** Di skriiwer wul det so
+** Spam / dom tjüch
+** Wandaalen onerwais
** Copyright as ei beaachtet
-** Wandaalen onerwais",
+** Di skriiwer wul det so
+** Widjerfeerang uunstaken",
'delete-edit-reasonlist' => "Grünjer för't striken bewerke",
'delete-toobig' => 'Detdiar sidj hää muar üs $1 {{PLURAL:$1|werjuun|werjuunen}} . Sok sidjen kön ei so gau stregen wurd, ööders san a servers plaat.',
'delete-warning-toobig' => "Detdiar sidj hää muar üs $1 {{PLURAL:$1|werjuun|werjuunen}} . Det striken koon komer maage bi't dootenbeenk.",
Det leetst feranrang as faan [[User:$3|$3]] ([[User talk:$3|Diskusjuun]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
'editcomment' => "Tuupfaadet feranrang: ''„$1“''.",
'revertpage' => 'Feranrangen faan [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskusjuun]]) san üüb di leetst stant faan [[User:$1|$1]] turagsaat wurden.',
-'revertpage-nouser' => 'Feranrangen faan en ferbürgenen brüker turagsaat an det leetst werjuun faan [[User:$1|$1]] weder iinsteld.',
+'revertpage-nouser' => 'Feranrangen faan en ferbürgenen brüker turagsaat an det leetst werjuun faan {{GENDER:$1|[[User:$1|$1]]}} weder iinsteld.',
'rollback-success' => 'Feranrangen faan $1 turagsaat an det leetst werjuun faan $2 weder iinsteld.',
# Edit tokens
'contributions' => '{{GENDER:$1|Brüker}} bidracher',
'contributions-title' => 'Brükerbidracher för "$1"',
'mycontris' => 'Bidracher',
-'contribsub2' => 'För $1 ($2)',
+'contribsub2' => 'För {{GENDER:$3|$1}} ($2)',
'nocontribs' => 'Diar wiar nian paasin brükerbidracher',
'uctop' => '(aktuel)',
'month' => 'faan muun (of iarer):',
'spam_reverting' => 'Leetst werjuun saner ferwisangen tu $1 weder iinsteld.',
'spam_blanking' => 'Aal a werjuunen mä en ferwisang tu $1 san apklaaret wurden.',
'spam_deleting' => 'Aal a werjuunen mä en ferwisung tu $1 san stregen wurden.',
+'simpleantispam-label' => "Anti-spam preew.
+Heer '''NIKS''' iindreeg!",
# Info page
'pageinfo-title' => 'Informatjuun tu „$1“',
'tags-tag' => 'Kääntiaken-nööm',
'tags-display-header' => 'Nööm üüb feranrangslisten',
'tags-description-header' => 'Widjloftag beskriiwang',
+'tags-active-header' => 'Aktiif?',
'tags-hitcount-header' => 'Kääntiakent feranrangen',
+'tags-active-yes' => 'Ja',
+'tags-active-no' => 'Naan',
'tags-edit' => 'bewerke',
'tags-hitcount' => '$1 {{PLURAL:$1|feranrang|feranrangen}}',
'limitreport-ppvisitednodes' => 'Taal faan ferbinjangsknooter för di föörproseser',
'limitreport-ppgeneratednodes' => 'Faan di föörproseser bereegent ferbinjangsknooter',
'limitreport-postexpandincludesize' => "Grate faan iinbinjangen efter't ütjwidjin",
-'limitreport-postexpandincludesize-value' => '$1/$2 bytes',
+'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|byte|bytes}}',
'limitreport-templateargumentsize' => "Grate faan't föörlaagenargument",
-'limitreport-templateargumentsize-value' => '$1/$2 bytes',
+'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|byte|bytes}}',
'limitreport-expansiondepth' => 'Maksimaal ütjwidjangsjipde',
'limitreport-expensivefunctioncount' => 'Taal faan apwendag parser-funktjuunen',
'listingcontinuesabbrev' => 'ar lean.',
'index-category' => 'Leathanaigh innéacsaithe',
-'linkprefix' => '/^((?>.*(?<![a-zA-Z\\x80-\\xff])))(.+)$/sD',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'Maidir leis',
'article' => 'Leathanach ábhair',
'unwatchedpages' => '冇眏到𠮶页面',
# List redirects
-'listredirects' => '重定向页面列表',
+'listredirects' => '重定向列表',
# Unused templates
'unusedtemplates' => '冇使用𠮶模板',
'statistics-users-active-desc' => '头$1日操作过𠮶用户',
'statistics-mostpopular' => '眵𠮶人最多𠮶页面',
-'doubleredirects' => '双重重定向页面',
+'doubleredirects' => '双重重定向',
'doubleredirectstext' => '底下𠮶重定向链接到别只重定向页面:',
'double-redirect-fixed-move' => '[[$1]]拕移动正,佢个下拕重定向到[[$2]]。',
'double-redirect-fixer' => '重定向𠮶修正器',
'spam_reverting' => 'Revertida á última edición sen ligazóns a "$1"',
'spam_blanking' => 'Limpáronse todas as revisións con ligazóns a "$1"',
'spam_deleting' => 'Borráronse todas as revisións con ligazóns a "$1"',
+'simpleantispam-label' => "Comprobación antispam.
+'''NON''' encha isto!",
# Info page
'pageinfo-title' => 'Información sobre "$1"',
'spam_reverting' => 'Letschti Version ohni Links zue $1 widerhärgstellt.',
'spam_blanking' => 'In allene Versione het s Links zue $1 gha, sufer gmacht.',
'spam_deleting' => 'Alli Versione mit eme Link zue $1 sin glescht woret.',
+'simpleantispam-label' => "Spamschutz-Priefig. Do '''nyt''' yytrage!",
# Info page
'pageinfo-title' => 'Informatione zue „$1“',
$messages = array(
# User preference toggles
'tog-underline' => 'કડીઓની નીચે લીટી (અંડરલાઇન):',
-'tog-justify' => 'ફàª\95રà«\8b લાઇનસર કરો',
+'tog-justify' => 'ફàª\95રાàª\93 લાઇનસર કરો',
'tog-hideminor' => 'હાલમાં થયેલા ફેરફારમાં નાના ફેરફારો છુપાવો',
'tog-hidepatrolled' => 'હાલના સલામતી માટે કરવામાં આવેલાં થયેલા ફેરફારો છુપાવો.',
'tog-newpageshidepatrolled' => 'નવાં પાનાંની યાદીમાંથી દેખરેખ હેઠળનાં પાનાં છુપાવો',
'tog-previewonfirst' => 'પ્રથમ ફેરફાર વખતે પૂર્વાલોકન બતાવો',
'tog-nocache' => 'બ્રાઉઝરનું પેજ કેશિંગ અસક્રિય કરો',
'tog-enotifwatchlistpages' => 'મારી ધ્યાનસૂચિમાંનું પાનુ અને ફાઇલમાં ફેરફાર થાય ત્યારે મને ઇ-મેલ મોકલો',
-'tog-enotifusertalkpages' => 'મારી ચર્ચાનાં પાનામાં ફેરફાર થાય ત્યારે મને ઇ-મેલ મોકલો',
-'tog-enotifminoredits' => 'પાનાં અને ફાઇલ્સમાં નાનાં ફેરફાર થાય તો પણ મને ઇ-મેલ મોકલો',
-'tog-enotifrevealaddr' => 'નà«\8bàª\9fà«\80ફà«\80àª\95à«\87શનના àª\87મà«\87લમાàª\82 મારà«\82 àª\87મà«\87લ àª\8fડà«\8dરà«\87સ બતાવો',
+'tog-enotifusertalkpages' => 'મારી ચર્ચાનાં પાનામાં ફેરફાર થાય ત્યારે મને ઇમેલ મોકલો',
+'tog-enotifminoredits' => 'પાનાં અને ફાઇલ્સમાં નાનાં ફેરફાર થાય તો પણ મને ઇમેલ મોકલો',
+'tog-enotifrevealaddr' => 'નà«\8bàª\9fà«\80ફà«\80àª\95à«\87શનના àª\87મà«\87લમાàª\82 મારà«\82 àª\87મà«\87લ સરનામà«\81àª\82 બતાવો',
'tog-shownumberswatching' => 'ધ્યાન રાખતા સભ્યોની સંખ્યા બતાવો',
'tog-oldsig' => 'હાલના હસ્તાક્ષર:',
'tog-fancysig' => 'હસ્તાક્ષરનો વિકિલખાણ તરીકે ઉપયોગ કરો (સ્વચાલિત કડી વગર)',
'tog-watchlisthidebots' => 'ધ્યાનસુચીમાં બોટ દ્વારા થયેલા ફેરફાર સંતાડો.',
'tog-watchlisthideminor' => "'મારી ધ્યાનસુચી'માં નાનાં ફેરફારો છુપાવો",
'tog-watchlisthideliu' => 'લોગ થયેલા સભ્ય દ્વારા કરવામાં આવેલ ફેરફાર ધ્યાનસુચીમાં છુપાવો.',
-'tog-watchlisthideanons' => 'અજાણ્યાસભ્ય દ્વારા થયેલ ફેરફાર મારી ધ્યાનસુચીમાં છુપાવો.',
-'tog-watchlisthidepatrolled' => 'સુરક્ષા કાજે કરવામાં આવેલ ફેરફાર મારી ધ્યાનસુચીમાં છુપાવો.',
-'tog-ccmeonemails' => 'મે અન્યોને મોકલેલા ઇ-મà«\87àª\87લનà«\80 નàª\95લ મનà«\87 મà«\8bàª\95લà«\8b',
-'tog-diffonly' => 'તફાવતની નીચે લેખ ન બતાવશો.',
+'tog-watchlisthideanons' => 'અજાણ્યા સભ્ય દ્વારા થયેલ ફેરફાર મારી ધ્યાનસુચીમાં છુપાવો',
+'tog-watchlisthidepatrolled' => 'સુરક્ષા કાજે કરવામાં આવેલ ફેરફાર મારી ધ્યાનસુચીમાં છુપાવો',
+'tog-ccmeonemails' => 'મે અન્યોને મોકલેલા ઇમà«\87લનà«\80 નàª\95લ મનà«\87 મà«\8bàª\95લà«\8b',
+'tog-diffonly' => 'તફાવતની નીચે લેખ ન બતાવશો',
'tog-showhiddencats' => 'છુપી શ્રેણીઓ દર્શાવો',
'tog-noconvertlink' => 'Disable link title conversion',
'tog-norollbackdiff' => 'રોલબેક કર્યા પછીના તફાવતો છુપાવો',
'noindex-category' => 'અનુક્રમણિકા નહી બનાવેલા પાનાં',
'broken-file-category' => 'ફાઇલોની ત્રૂટક કડીઓવાળાં પાનાં',
-'linkprefix' => '/^((?>.*(?<![a-zA-Z\\x80-\\xff])(?<!ક્|ખ્|ગ્|ઘ્|ચ્|છ્|જ્|ઝ્|ટ્|ઠ્|ડ્|ઢ્|ણ્|ત્|થ્|દ્|ધ્|ન્|પ્|ફ્|બ્|ભ્|મ્|ય્|ર્|લ્|વ્|સ્|શ્|ષ્|હ્|ળ્|અં|અઃ|અઁ)(?<!ક્ષ્|જ્ઞ્)(?<!અ|આ|ઇ|ઈ|ઉ|ઊ|એ|ઐ|ઓ|ઔ|ઍ|ઑ|ઋ|ઁ|઼|।|્|ા|િ|ી|ુ|ૂ|ે|ૈ|ો|ૌ|ં|ઃ|ૅ|ૉ|ૃ)))(.+)$/sD',
+'linkprefix' => '/^(.*?)((?:[a-zA-Z\\x80-\\xff]|ક્|ખ્|ગ્|ઘ્|ચ્|છ્|જ્|ઝ્|ટ્|ઠ્|ડ્|ઢ્|ણ્|ત્|થ્|દ્|ધ્|ન્|પ્|ફ્|બ્|ભ્|મ્|ય્|ર્|લ્|વ્|સ્|શ્|ષ્|હ્|ળ્|ક્ષ્|જ્ઞ્|અ|આ|ઇ|ઈ|ઉ|ઊ|એ|ઐ|ઓ|ઔ|અં|અઃ|અઁ|ઍ|ઑ|ઋ|ઁ|઼|।|્|ા|િ|ી|ુ|ૂ|ે|ૈ|ો|ૌ|ં|ઃ|ૅ|ૉ|ૃ)+)$/sD',
'about' => 'વિષે',
'article' => 'લેખનું પાનું',
'search' => 'શોધો',
'searchbutton' => 'શોધો',
'go' => 'જાઓ',
-'searcharticle' => 'àª\9cાવ',
+'searcharticle' => 'àª\9cાàª\93',
'history' => 'પાનાનો ઇતિહાસ',
'history_short' => 'ઇતિહાસ',
'updatedmarker' => 'મારી ગઇ મુલાકાત પછીના બદલાવ',
'edit' => 'ફેરફાર કરો',
'create' => 'બનાવો',
'editthispage' => 'આ પાનામાં ફેરફાર કરો',
-'create-this-page' => 'આ પાનું બનાવો.',
+'create-this-page' => 'આ પાનું બનાવો',
'delete' => 'રદ કરો',
'deletethispage' => 'આ પાનું હટાવો',
'undeletethispage' => 'આ પાનું પુનર્જીવીત કરો',
'viewdeleted_short' => '{{PLURAL:$1|ભૂંસી નાખેલો એક|ભૂંસી નાખેલા $1}} ફેરફાર જુઓ',
'protect' => 'સુરક્ષિત કરો',
'protect_change' => 'બદલો',
-'protectthispage' => 'આ પાનું સુરક્ષિત કરો.',
+'protectthispage' => 'આ પાનું સુરક્ષિત કરો',
'unprotect' => 'સુરક્ષા બદલો',
'unprotectthispage' => 'આ પાનાનું સુરક્ષા બદલો',
'newpage' => 'નવું પાનું',
'articlepage' => 'લેખનું પાનું જુઓ',
'talk' => 'ચર્ચા',
'views' => 'દેખાવ',
-'toolbox' => 'સાધન પેટી',
+'toolbox' => 'સાધનો',
'userpage' => 'સભ્યનું પાનું જુઓ',
'projectpage' => 'પ્રકલ્પનું પાનું જુઓ',
'imagepage' => 'ફાઇલનું પાનું જુઓ',
'lastmodifiedat' => 'આ પાનામાં છેલ્લો ફેરફાર $1ના રોજ $2 વાગ્યે થયો.',
'viewcount' => 'આ પાનું {{PLURAL:$1|એક|$1}} વખત જોવામાં આવ્યું છે.',
'protectedpage' => 'સંરક્ષિત પાનું',
-'jumpto' => 'સà«\80ધા àª\86ના પર àª\9cાવ:',
+'jumpto' => 'આના પર જાવ:',
'jumptonavigation' => 'ભ્રમણ',
'jumptosearch' => 'શોધો',
'view-pool-error' => 'માફ કરશો, આ સમયે સર્વર અતિબોજા હેઠળ છે.
$1',
'pool-timeout' => 'સમય સમાપ્ત - સ્થગિતતા પ્રતિક્ષીત',
-'pool-queuefull' => '(Pool) કતાર પૂરી ભરેલી',
+'pool-queuefull' => '(Pool) કતાર પૂરી ભરેલી છે',
'pool-errorunknown' => 'અજ્ઞાત ત્રુટિ',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
'ok' => 'મંજૂર',
'retrievedfrom' => '"$1"થી લીધેલું',
'youhavenewmessages' => 'તમારા માટે $1 ($2).',
-'newmessageslink' => 'નવીન સંદેશ',
+'newmessageslink' => 'નવીન સંદેશાઓ',
'newmessagesdifflink' => 'છેલ્લો ફેરફાર',
'youhavenewmessagesfromusers' => 'આપને માટે {{PLURAL:$3|અન્ય સભ્ય|$3 અન્ય સભ્યો}} તરફથી $1 છે. ($2).',
-'youhavenewmessagesmanyusers' => 'આપને માટે $1 છે. ($2)',
+'youhavenewmessagesmanyusers' => 'આપને માટે ઘણાં સભ્યો તરફથી $1 છે ($2).',
'newmessageslinkplural' => '{{PLURAL:$1|નવો સંદેશો|નવા સંદેશા}}',
'newmessagesdifflinkplural' => 'છેલ્લા {{PLURAL:$1|ફેરફાર|ફેરફારો}}',
-'youhavenewmessagesmulti' => '$1 ઉપર તમારા માટે નવો સંદેશ છે.',
+'youhavenewmessagesmulti' => 'તમારા માટે $1 ઉપર નવા સંદેશાઓ છે',
'editsection' => 'ફેરફાર કરો',
'editold' => 'ફેરફાર કરો',
'viewsourceold' => 'સ્રોત જુઓ',
'editlink' => 'ફેરફાર',
-'viewsourcelink' => 'સ્રોત જુઓ.',
+'viewsourcelink' => 'સ્રોત જુઓ',
'editsectionhint' => 'ફેરફાર કરો - પરિચ્છેદ: $1',
'toc' => 'અનુક્રમણિકા',
'showtoc' => 'બતાવો',
'feedlinks' => 'ફીડ:',
'feed-invalid' => 'અયોગ્ય સબસ્ક્રીપ્સન ફીડ પ્રકાર.',
'feed-unavailable' => ' સંલગ્ન માહિતીની અપૂરાતિ મોજૂદ નથી',
-'site-rss-feed' => '$1 RSS Feed',
-'site-atom-feed' => '$1 Atom Feed',
-'page-rss-feed' => '"$1" RSS Feed',
-'page-atom-feed' => '"$1" àª\8fàª\9fà«\8bમ ફà«\80ડ',
+'site-rss-feed' => '$1 RSS ફીડ',
+'site-atom-feed' => '$1 એટમ ફીડ',
+'page-rss-feed' => '"$1" RSS ફીડ',
+'page-atom-feed' => '"$1" એટમ ફીડ',
'red-link-title' => '$1 (પાનું અસ્તિત્વમાં નથી)',
'sort-descending' => 'ઉતરતા ક્રમમાં ગોઠવો',
'sort-ascending' => 'ચડતા ક્રમમાં ગોઠવો',
'nstab-category' => 'શ્રેણી',
# Main script and global functions
-'nosuchaction' => 'આવી કોઇ ક્રિયા નથી.',
+'nosuchaction' => 'આવી કોઇ ક્રિયા નથી',
'nosuchactiontext' => 'આ URL દ્વારા દર્શાવેલી ક્રિયા અયોગ્ય છે.
તમે કદાચ ખોટો URL છાપ્યો હશે અથવા ખોટી કડીથી અહીં આવ્યા હશો.
તમે સોફ્ટવેરની આ ખામી {{SITENAME}} પર દર્શાવી શકો છો.',
'databaseerror-query' => 'પ્રશ્ન: $1',
'databaseerror-function' => 'વિધેય: $1',
'databaseerror-error' => 'ક્ષતિ: $1',
-'laggedslavemode' => 'ચેતવણી: પાનું તાજેતરના ફેરફાર ધરાવતું નથી.',
+'laggedslavemode' => '"ચેતવણી:" પાનું તાજેતરના ફેરફાર ધરાવતું નથી.',
'readonly' => 'ડેટાબેઝ સ્થગિત',
'enterlockreason' => 'સ્થગિતતા ક્યારે દુર કરાશે તેના અંદાજ શાથે,સ્થગિત કરવાનું કારણ આપો',
'readonlytext' => 'નવી નોંધો અને ફેરફારો માટે ડેટાબેઝ હાલમાં સ્થગિત કરાયેલ છે,કદાચ નિયમિત ડેટાબેઝ સારસંભાળ માટે,તે પછી આ ફરી સામાન્ય થશે.
'filecopyerror' => '"$1" થી "$2"માં નકલ નિષ્ફળ.',
'filerenameerror' => '"$1" નું નામ બદલીને "$2" કરવામાં નિષ્ફળ.',
'filedeleteerror' => '"$1" ફાઇલ હટાવી ન શકાઇ.',
-'directorycreateerror' => 'ડà«\80રેક્ટરી "$1" ન બનાવી શકાઇ.',
+'directorycreateerror' => 'ડિરેક્ટરી "$1" ન બનાવી શકાઇ.',
'filenotfound' => 'ફાઇલ "$1" ન મળી.',
'fileexistserror' => 'ફાઇલ "$1"માં ન લખી શકાયું : ફાઇલ અસ્તિત્વ ધરાવે છે.',
'unexpected' => 'અણધારી કિંમત: "$1"="$2".',
'cannotdelete-title' => '"$1" પાનું કાઢી શકતા નથી',
'delete-hook-aborted' => 'દૂર કરવાનું હૂક વડે રોકી રાખવામાં આવ્યું.
તે કોઇ કારણ આપતું નથી.',
-'badtitle' => 'àª\96રાબ નામ',
+'badtitle' => 'àª\96રાબ શિરà«\8dષàª\95',
'badtitletext' => 'આપનું ઈચ્છિત શીર્ષક અમાન્ય છે, ખાલી છે, અથવાતો અયોગ્ય રીતે આંતર-ભાષિય કે આંતર-વિકિ સાથે જોડાયેલું શીર્ષક છે.
શક્ય છે કે તેમાં એક કે વધુ એવા અક્ષર કે ચિહ્નો છે કે જે પાનાનાં શીર્ષક માટે અવૈધ છે.',
'perfcached' => 'નીચે દર્શાવેલી માહિતી જૂના સંગ્રહમાંથી લીધેલી છે અને શક્ય છે કે તે હાલની પરિસ્થિતિમાં સચોટ ના હોય. વધુમાં વધુ {{PLURAL:$1|એક પરિણામ|$1 પરિણામો}} આ સંગ્રહમાં ઉપલબ્ધ છે.',
'yourname' => 'સભ્ય નામ:',
'userlogin-yourname' => 'સભ્ય નામ',
'userlogin-yourname-ph' => 'તમારૂં સભ્ય નામ દાખલ કરો',
-'createacct-another-username-ph' => 'તમારà«\82àª\82 સàªà«\8dયનામ દાàª\96લ àª\95રà«\8b',
+'createacct-another-username-ph' => 'સભ્યનામ દાખલ કરો',
'yourpassword' => 'ગુપ્ત સંજ્ઞા:',
'userlogin-yourpassword' => 'ગુપ્ત સંજ્ઞા',
-'userlogin-yourpassword-ph' => 'àª\97à«\81પà«\8dત સàª\82àª\9cà«\8dàª\9eા લખો',
+'userlogin-yourpassword-ph' => 'તમારà«\80 àª\97à«\81પà«\8dત સàª\82àª\9cà«\8dàª\9eા (પાસવરà«\8dડ) લખો',
'createacct-yourpassword-ph' => 'પાસવર્ડ દાખલ કરો',
-'yourpasswordagain' => 'ગુપ્ત સંજ્ઞા (પાસવર્ડ) ફરી લખો',
+'yourpasswordagain' => 'ગુપ્ત સંજ્ઞા (પાસવર્ડ) ફરી લખો:',
'createacct-yourpasswordagain' => 'પાસવર્ડની ખાતરી કરો',
'createacct-yourpasswordagain-ph' => 'પાસવર્ડ ફરીથી દાખલ કરો',
'remembermypassword' => 'આ કોમ્યૂટર પર મારી લૉગ ઇન વિગતો ધ્યાનમાં રાખો (વધુમાં વધુ $1 {{PLURAL:$1|દિવસ|દિવસ}} માટે)',
'logout' => 'બહાર નીકળો',
'userlogout' => 'બહાર નીકળો/લૉગ આઉટ',
'notloggedin' => 'પ્રવેશ કરેલ નથી',
-'userlogin-noaccount' => 'શું તમારૂં ખાતું નથી ?',
+'userlogin-noaccount' => 'શું તમારૂં ખાતું નથી?',
'userlogin-joinproject' => '{{SITENAME}} સાથે જોડાવ',
'nologin' => "શું તમારૂં ખાતું નથી? તો નવું '''$1'''.",
'nologinlink' => 'ખાતું ખોલો',
'userlogin-resetpassword-link' => 'તમારી ગુપ્તસંજ્ઞા બદલો',
'helplogin-url' => 'Help:પ્રવેશ માટે',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|પ્રવેશવા માટેની મદદ]]',
+'userlogin-loggedin' => 'તમે પહેલેથી {{GENDER:$1|$1}} તરીકે પ્રવેશ કરેલો જ છે.
+બીજા સભ્ય તરીકે પ્રવેશ કરવા માટે નીચેનું ફોર્મ વાપરો.',
'userlogin-createanother' => 'બીજું ખાતું બનાવો',
'createacct-join' => 'તમારી માહિતી નીચે દાખલ કરો.',
'createacct-another-join' => 'નવા ખાતાંની માહિતી નીચે દાખલ કરો.',
'passwordtooshort' => 'ગુપ્ત સંજ્ઞામાં ઓછામાં {{PLURAL:$1|ઓછો એક અક્ષર હોવો |ઓછા $1 અક્ષર હોવા}} જોઇએ.',
'password-name-match' => 'તમારી ગુપ્તસંજ્ઞા તમારા સભ્યનામ કરતાં અલગ જ હોવી જોઇએ.',
'password-login-forbidden' => 'આ સભ્યનામ અને ગુપ્તસંજ્ઞા વાપરવા પર પ્રતિબંધ છે.',
-'mailmypassword' => 'પાસવરà«\8dડ àª\87-મેલમાં મોકલો',
+'mailmypassword' => 'નવà«\8b પાસવરà«\8dડ àª\87મેલમાં મોકલો',
'passwordremindertitle' => '{{SITENAME}} માટેની નવી કામચલાઉ ગુપ્ત સંજ્ઞા',
'passwordremindertext' => 'કોઇકે (કદાચ તમે IP એડ્રેસ $1 પરથી) {{SITENAME}} ($4) માટે નવી ગુપ્ત સજ્ઞા (પાસવર્ડ) માટે વિનંતી કરેલ છે.
હંગામી ધોરણે સભ્ય "$2" માટે ગુપ્ત સંજ્ઞા બની છે અને તે "$3". જો તમે જ આ વિનંતી કરી હોય અને તમે ગુપ્ત સંજ્ઞા બદલવા માંગતા હો તો તમારે પ્રવેશ કરવો પડશે અને નવી ગુપ્ત સંજ્ઞા પસંદ કરવી પડશે. હંગામી ગુપ્ત સંજ્ઞાની અવધિ {{PLURAL:$5|એક દિવસ|$5 દિવસો}} છે ત્યાર બાદ તે કામ નહીં કરે.
જો બીજા કોઇએ આ વિનંતી કરી હોય અથવા તમને તમારી જુની ગુપ્ત સંજ્ઞા યાદ આવી ગઇ હોય અને તમે તે બદલવા ન માંગતા હો તો આ સંદેશ અવગણીને તમારી જુની ગુપ્ત સંજ્ઞા વાપરવાનું ચાલુ રાખો.',
'noemail' => 'સભ્ય "$1"નું કોઇ ઇ-મેલ સરનામું નોંધાયેલું નથી.',
-'noemailcreate' => 'વà«\88ધ àª\87-મà«\87લ àª\86પશà«\8b',
+'noemailcreate' => 'તમારà«\87 વà«\88ધ àª\87મà«\87લ àª\86પવાનà«\80 àª\9cરà«\82ર àª\9bà«\87.',
'passwordsent' => '"$1" ની નવી ગુપ્તસંજ્ઞા (પાસવર્ડ) આપના ઇમેઇલ પર મોકલવામાં આવ્યો છે.
કૃપા કરી તે મળ્યા બાદ ફરી લોગ ઇન કરો.',
-'blocked-mailpassword' => 'Your IP address is blocked from editing, and so is not allowed to use the password recovery function to prevent abuse.
-ફેરફાર કરવા માટે તમારું IP એડ્રેસ સ્થગિત કરી દેવાયું છે તેથી દૂરુપયોગ ટાળવા માટે તમને ગુપ્તસંજ્ઞા રીકવરી કરવાની છૂટ નથી.',
-'eauthentsent' => 'પુષ્ટિ કરવા માટે તમે આપેલા સરનામાં પર ઇમેઇલ મોકલવામાં આવ્યો છે.
-એ જ સરનામે બીજો ઇમેઇલ થતાં પહેલાં તમારે ઇમેઇલમાં લખેલી સૂચનાઓ પ્રમાણે કરવું પડશે જેથી એ પુષ્ટિ થઇ શકે કે આપેલું સરનામું તમારું છે.',
+'blocked-mailpassword' => 'ફેરફાર કરવા માટે તમારું IP એડ્રેસ સ્થગિત કરી દેવાયું છે, તેથી દૂરુપયોગ ટાળવા માટે તમને ગુપ્તસંજ્ઞા ફરી મેળવવાની છૂટ નથી.',
+'eauthentsent' => 'પુષ્ટિ કરવા માટે તમે આપેલા સરનામાં પર ઇમેલ મોકલવામાં આવ્યો છે.
+એ જ સરનામે બીજો ઇમેલ થતાં પહેલાં તમારે ઇમેલમાં લખેલી સૂચનાઓ પ્રમાણે કરવું પડશે જેથી એ પુષ્ટિ થઇ શકે કે આપેલું સરનામું તમારું છે.',
'throttled-mailpassword' => 'ગુપ્ત સંજ્ઞા યાદ અપાવતી ઇમેઇલ છેલ્લા {{PLURAL:$1|કલાકમાં|$1 કલાકોમાં}} મોકલેલી છે.
દૂરુપયોગ રોકવા માટે, {{PLURAL:$1|કલાકમાં|$1 કલાકોમાં}} ફક્ત એક જ આવી મેઇલ કરવામાં આવે છે.',
'mailerror' => 'મેઇલ મોકલવામાં ત્રુટિ: $1',
'resetpass-no-info' => 'બારોબાર આ પાનું જોવા માટે પ્રવેશ કરવો આવશ્યક છે.',
'resetpass-submit-loggedin' => 'ગુપ્તસંજ્ઞા બદલો',
'resetpass-submit-cancel' => 'રદ કરો',
-'resetpass-wrong-oldpass' => 'àª\85વà«\88ધ હàª\82àª\97ામà«\87 àª\95à«\87 àª\95ાયમી ગુપ્તસંજ્ઞા.
-કદાચ તમે પહેલેથી સફળતા પૂર્વક તમારી ગુપ્ત સંજ્ઞા બદલી દીધી હોય કે નવી ગુપ્ત સંંજ્ઞામાટે વિનંતિ કરી હોય',
+'resetpass-wrong-oldpass' => 'àª\85યà«\8bàª\97à«\8dય હàª\82àª\97ામà«\80 àª\95à«\87 હાલની ગુપ્તસંજ્ઞા.
+કદાચ તમે પહેલેથી સફળતાપૂર્વક તમારી ગુપ્ત સંજ્ઞા બદલી દીધી હશે કે નવી ગુપ્ત સંજ્ઞા માટે વિનંતિ કરી હશે.',
'resetpass-temp-password' => 'કામચલાઉ ગુપ્તસંજ્ઞા:',
'resetpass-abort-generic' => 'વિસ્તારક વડે પાસવર્ડ બદલવાનું રોકી રખાયું છે.',
# Special:PasswordReset
-'passwordreset' => 'પાસવરà«\8dડ રà«\80સà«\87àª\9f àª\95રો',
+'passwordreset' => 'àª\97à«\81પà«\8dત સàª\82àª\9cà«\8dàª\9eા ફરà«\80 àª\97à«\8bઠવો',
'passwordreset-text-one' => 'તમારો પાસવર્ડ બદલવા માટે આ ફોર્મ પૂરુ કરો.',
-'passwordreset-legend' => 'પાસવરà«\8dડ રà«\80સà«\87àª\9f àª\95રો',
-'passwordreset-disabled' => 'àª\86 વિàª\95à«\80 પર પાસવરà«\8dડ રà«\80સà«\87àª\9f àª\95રવા પર પ્રતિબંધ છે.',
+'passwordreset-legend' => 'àª\97à«\81પà«\8dત સàª\82àª\9cà«\8dàª\9eા ફરà«\80 àª\97à«\8bઠવો',
+'passwordreset-disabled' => 'àª\86 વિàª\95à«\80 પર àª\97à«\81પà«\8dત સàª\82àª\9cà«\8dàª\9eા ફરà«\80 àª\97à«\8bઠવવા પર પ્રતિબંધ છે.',
'passwordreset-emaildisabled' => 'આ વિકિ પર ઇમેઇલ સગવડ બંધ છે.',
'passwordreset-username' => 'સભ્ય નામ:',
'passwordreset-domain' => 'ડોમેઈન:',
-'passwordreset-capture' => 'પરિણામી ઈ મેલ જોવો છે ?',
+'passwordreset-capture' => 'પરિણામી ઈમેલ જોવો છે?',
'passwordreset-capture-help' => 'જો તમે આ ઓપ્શન સિલેક્ટ કરશો, તો તમને અને યુઝર ને ઈ મેલ (કામચલાઉ પાસવર્ડ સાથે) દેખાડવામાં આવશે.',
-'passwordreset-email' => 'ઇ મેલ સરનામું:',
-'passwordreset-emailtitle' => '{{SITENAME}} માàª\9fà«\87 àª\96ાતà«\81 બનાવà«\8dયà«\81àª\82',
+'passwordreset-email' => 'ઇમેલ સરનામું:',
+'passwordreset-emailtitle' => '{{SITENAME}} પર àª\96ાતાનà«\80 માહિતà«\80',
'passwordreset-emailtext-ip' => 'કોઈકે (કદાચ તમોએ , $1 IP એડ્રેસ થી) તમારી વેબસાઈટ {{SITENAME}} ($4) નો પાસવર્ડ રિસેટ કરવાની રજૂઆત કરી છે. આ ઈમેઈલ એડ્રેસ સાથે {{PLURAL:$3|નું ખાતું|ના ખાતા}} જોડાયેલા છે.
.
.
'passwordreset-emailerror-capture' => 'પાસવર્ડ ફરી ગોઠવવા માટેનો ઇમેલ બનાવવામાં આવ્યો છે, જે નીચે પ્રમાણે છે, પરંતુ તે {{GENDER:$2|સભ્ય}}ને મોકલવામાં નિષ્ફળ થયો છે: $1',
# Special:ChangeEmail
-'changeemail' => 'àª\88 મà«\87લ àª\96ાતà«\81 બદલવા માàª\9fà«\87',
-'changeemail-header' => 'તમારા àª\96ાતાનà«\81àª\82 àª\88-મà«\87àª\88લ સરનામું બદલો',
+'changeemail' => 'àª\87મà«\87લ સરનામà«\81àª\82 બદલà«\8b',
+'changeemail-header' => 'તમારા àª\96ાતાનà«\81àª\82 àª\87મà«\87લ સરનામું બદલો',
'changeemail-text' => 'તમારું ઈ-મેઈલ સરનામું બદલવા માટે આ ફોર્મ ભરો. આ ફેરફાર કાયમ કરવા માટે તમારે પાસવર્ડ ભરવાની જરૂર પડશે.',
'changeemail-no-info' => 'બારોબાર આ પાનું જોવા માટે પ્રવેશ કરવો આવશ્યક છે.',
-'changeemail-oldemail' => 'હાલ નું ઈ મેલ ખાતુ:',
-'changeemail-newemail' => 'નવું ઈ-મેલ સરનામું',
+'changeemail-oldemail' => 'હાલનું ઈમેલ સરનામું:',
+'changeemail-newemail' => 'નવું ઈમેલ સરનામું:',
'changeemail-none' => '(કંઈ નહી)',
'changeemail-password' => 'તમારો {{SITENAME}} પાસવર્ડ:',
-'changeemail-submit' => 'ઈ મેલ બદલો',
+'changeemail-submit' => 'ઈમેલ બદલો',
'changeemail-cancel' => 'રદ કરો',
# Special:ResetTokens
# Edit pages
'summary' => 'સારાંશ:',
'subject' => 'વિષય/શીર્ષક:',
-'minoredit' => 'આ એક નાનો સુધારો છે.',
+'minoredit' => 'આ એક નાનો સુધારો છે',
'watchthis' => 'આ પાનાને ધ્યાનમાં રાખો',
-'savearticle' => 'સાચવો',
+'savearticle' => 'પાનà«\81àª\82 સાàª\9aવà«\8b',
'preview' => 'પૂર્વાવલોકન',
-'showpreview' => 'ઝલક',
+'showpreview' => 'ઝલક દર્શાવો',
'showlivepreview' => 'જીવંત પૂર્વાવલોકન',
-'showdiff' => 'ફેરફારો',
+'showdiff' => 'ફેરફારો દર્શાવો',
'anoneditwarning' => "'''ચેતવણી:''' તમે તમારા સભ્ય નામથી પ્રવેશ કર્યો નથી.
આ પાનાનાં ઇતિહાસમાં તમારૂં આઇ.પી. (IP) એડ્રેસ નોંધવામાં આવશે.",
'anonpreviewwarning' => 'તમે સભ્યનામથી પ્રવેશ કર્યો નથી,આ પાનું ઈતિહાસમાંતમારા IP સરનામાના નામે સાચવવામાં આવશે',
તમારે તમારા ફેરફારો વિહરમાન હયાત લેખમાં વિલિન કરવો પડશે.
જો તમે \"{{int:savearticle}}\" આ બાન દબાવશો તો '''ફક્ત''' ઉપરનો લેખ સચવાશે.",
'yourtext' => 'તમારું લખાણ',
-'storedversion' => 'રàª\95à«\8dષિત પુનરાવર્તન',
+'storedversion' => 'સàª\82àª\97à«\8dરહà«\87લ પુનરાવર્તન',
'nonunicodebrowser' => "'''ચેતવણી: તમારું બ્રાઉઝર યુનિકોડ ઉકેલવા સક્ષમ નથી.'''
અહીં તમે સુરક્ષિત રીતે ફેરફારો નહીં કરી શકો: ASCII સિવાયના અક્ષરો સંપાદન ચોકઠામાં હેક્સાડેસિમલ સ્વરૂપે દેખાશે.",
'editingold' => "'''ચેતવણી: તમે આ પાનાની ખૂબ જૂની આવૃત્તિમાં ફેરફાર કરી રહ્યાં છો.'''
'currentrev-asof' => '$1એ જોઈ શકાતી હાલની આવૃત્તિ',
'revisionasof' => '$1 સુધીનાં પુનરાવર્તન',
'revision-info' => '$2 દ્વારા $1 સુધીમાં કરવામાં આવેલાં ફેરફારો',
-'previousrevision' => '←જુના ફેરફારો',
+'previousrevision' => '← જુના ફેરફારો',
'nextrevision' => 'આ પછીનું પુનરાવર્તન→',
'currentrevisionlink' => 'વર્તમાન આવૃત્તિ',
'cur' => 'વર્તમાન',
# Merge log
'mergelog' => 'લોગ વિલિન કરો',
'pagemerge-logentry' => '[[$1]] ને [[$2]]માં વિલિન કરાયું ( $3 સુધી ના પુનરાવર્તનો)',
-'revertmerge' => 'છુટુ પાડો',
+'revertmerge' => 'છુટું પાડો',
'mergelogpagetext' => 'તાજેતરમાં એક બીજા સાથે વિલિન થયેલ ઇતિહાસ પાનાની યાદી',
# Diffs
# Preferences page
'preferences' => 'પસંદ',
-'mypreferences' => 'પસંદ',
+'mypreferences' => 'પસંદગીઓ',
'prefs-edits' => 'સંપાદનોની સંખ્યા',
'prefsnologin' => 'પ્રવેશ કરેલ નથી',
'prefsnologintext' => 'સભ્યના અધિકારો બદલવા તમે <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} logged in]</span> પ્રવેશ કરેલો હોવો જોઈએ',
'filehist-current' => 'વર્તમાન',
'filehist-datetime' => 'તારીખ/સમય',
'filehist-thumb' => 'લઘુચિત્ર',
-'filehist-thumbtext' => '$1àª\8d હતું તે સંસ્કરણનું લઘુચિત્ર',
-'filehist-nothumb' => 'થમà«\8dબનà«\87àª\87લ નથી',
+'filehist-thumbtext' => '$1àª\8f હતું તે સંસ્કરણનું લઘુચિત્ર',
+'filehist-nothumb' => 'લàª\98à«\81àª\9aિતà«\8dર નથી',
'filehist-user' => 'સભ્ય',
-'filehist-dimensions' => 'પરિમાણ',
+'filehist-dimensions' => 'પરિમાણો',
'filehist-filesize' => 'ફાઇલનું કદ',
'filehist-comment' => 'ટિપ્પણી',
'filehist-missing' => 'ફાઇલ ગાયબ',
'filedelete-intro' => "તમે '''[[Media:$1|$1]]'' ફાઇલ અને તેની સાથે સંલગ્ન ઇતિહાસ ભુંસી રહ્યા છો.",
'filedelete-intro-old' => "તમે '''[[Media:$1|$1]]'''નું આ [$4 $3, $2] વર્ઝન ભુસી રહ્યા છો.",
'filedelete-comment' => 'કારણ:',
-'filedelete-submit' => 'àªà«\81àª\82સો',
-'filedelete-success' => "'''$1'''નà«\87 àªà«\82àª\82સà«\80 નાàª\82àª\96વામાં આવ્યું છે.",
+'filedelete-submit' => 'દà«\82ર àª\95રો',
+'filedelete-success' => "'''$1'''નà«\87 દà«\82ર àª\95રવામાં આવ્યું છે.",
'filedelete-success-old' => "'''[[Media:$1|$1]]'''નું $3, $2ના રોજનું સંસ્કરણ ભુંસી નાખ્યું છે.",
'filedelete-nofile' => "'''$1'''નું અસ્તિત્વ નથી.",
'filedelete-nofile-old' => "'''$1'''નું આપે જણાવેલ ખાસિયતવાળું સંગ્રહિત સંસ્કરણ અસ્તિત્વમાં નથી.",
'randompage-nopages' => 'આ {{PLURAL:$2|નામસ્થળ|નામસ્થળો}}માં કોઇ પાના નથી: $1.',
# Random page in category
+'randomincategory' => 'શ્રેણીમાં ગમે તે પાનું',
+'randomincategory-invalidcategory' => '"$1" એ યોગ્ય શ્રેણી નામ નથી.',
+'randomincategory-nopages' => '[[:Category:$1|$1]] વર્ગમાં કોઇ પાનું નથી.',
+'randomincategory-selectcategory' => 'વર્ગમાંથી ગમે તે પાનું મેળવો: $1 $2.',
'randomincategory-selectcategory-submit' => 'જાઓ',
# Random redirect
# Miscellaneous special pages
'nbytes' => '$1 {{PLURAL:$1|બાઇટ|બાઇટ્સ}}',
'ncategories' => '$1 {{PLURAL:$1|શ્રેણી|શ્રેણીઓ}}',
+'ninterwikis' => '$1 {{PLURAL:$1|આંતરવિકિ|આંતરવિકિઓ}}',
'nlinks' => '$1 {{PLURAL:$1|કડી|કડીઓ}}',
'nmembers' => '$1 {{PLURAL:$1|સદસ્ય|સદસ્યો}}',
'nrevisions' => '$1 {{PLURAL:$1|પુનરાવર્તન|પુનરાવર્તનો}}',
'listusers' => 'સભ્યોની યાદી',
'listusers-editsonly' => 'માત્ર સંપાદન કરનારા સભ્યો બતાવો',
'listusers-creationsort' => 'તારીખ અનુસાર ગોઠવો',
+'listusers-desc' => 'ઉતરતા ક્રમમાં ગોઠવો',
'usereditcount' => '$1 {{PLURAL:$1|ફેરફાર|ફેરફારો}}',
'usercreated' => '$1 તારીખે $2 વાગ્યે {{GENDER:$3|બનાવ્યું}}',
'newpages' => 'નવાં પાનાં',
'prevpage' => 'પાછળનું પાનું ($1)',
'allpagesfrom' => 'આનાથી શરૂ થતા પાના દર્શાવો:',
'allpagesto' => 'આનાથી અંત થતા પાના દર્શાવો:',
-'allarticles' => 'બધા લà«\87àª\96',
+'allarticles' => 'બધા પાનાàª\82àª\93',
'allinnamespace' => 'બધા પાના ($1 નમાવકાશ)',
'allnotinnamespace' => 'બધા પાના ($1 નમાવકાશમાંના હોય)',
'allpagesprev' => 'પહેલાનું',
'deletecomment' => 'કારણ:',
'deleteotherreason' => 'અન્ય/વધારાનું કારણ:',
'deletereasonotherlist' => 'અન્ય કારણ',
-'deletereason-dropdown' => '* હટાવવાનાં સામાન્ય કારણો
-** લેખકની વિનંતી
+'deletereason-dropdown' => '* દૂર કરવાના સામાન્ય કારણો
+** સ્પામ
+** ભાંગફોડીયા પ્રવૃત્તિ
** પ્રકાશનાધિકાર ભંગ
-** ભાંગફોડીયા પ્રવૃત્તિ',
+** લેખકની વિનંતી
+** ભાંગેલ વળાંક',
'delete-edit-reasonlist' => 'ભુંસવાનું કારણ બદલો.',
'delete-toobig' => 'આ પાનાના ફેરફારોનો ઇતિહાસ ખૂબ લાંબો છે , $1 {{PLURAL:$1|ફેરફાર|ફેરફારો}}થી પણ વધારે.
{{SITENAME}}ને અક્સ્માતે ખોરવાતું અટકાવવા આવા પાનાને હટાવવા પર પ્રતિબંધ છે.',
'whatlinkshere-hidetrans' => '$1 આરપાર સમાવેશનો',
'whatlinkshere-hidelinks' => 'કડીઓ $1',
'whatlinkshere-hideimages' => '$1 ફાઇલની કડીઓ',
-'whatlinkshere-filters' => 'ચાળણી',
+'whatlinkshere-filters' => 'ચાળણીઓ',
# Block/unblock
'autoblockid' => 'ઓટોબ્લોક #$1',
'unblocked-range' => '$1 અનાવરોધિત કરવામાં આવ્યું છે',
'unblocked-id' => ' $1 નો પ્રતિબંધ હટાવાયો',
'blocklist' => 'પ્રતિબંધિત સભ્યો',
-'ipblocklist' => 'àª\85વરà«\8bધિત વપરાશકર્તાઓ',
+'ipblocklist' => 'પà«\8dરતિબàª\82ધિત વપરાશકર્તાઓ',
'ipblocklist-legend' => 'પ્રતિબંધિત સભ્ય શોધો',
'blocklist-userblocks' => 'એકાઉન્ટ બ્લોકો છુપાવો',
'blocklist-tempblocks' => 'કામચલાઉ બ્લોકો છુપાવો',
'thumbnail-more' => 'વિસ્તૃત કરો',
'filemissing' => 'ફાઇલ ગાયબ',
'thumbnail_error' => 'નાની છબી (થંબનેઇલ-thumbnail) બનાવવામાં ત્રુટિ: $1',
+'thumbnail_error_remote' => '$1 તરફથી ક્ષતિ સંદેશ:
+$2',
'djvu_page_error' => 'DjVu પાનું સીમાની બહાર',
'djvu_no_xml' => 'DjVu ફાઇલ માટે XML લાવવા અસમર્થ',
'thumbnail-temp-create' => 'હંગામી થમ્બનેલ ફાઈલ ન બનાવી શકાઈ',
'tooltip-pt-anonuserpage' => 'IP સરનામું માટેના સભ્ય પાનામાં તમે ફેરફાર કરી રહ્યાં છો.',
'tooltip-pt-mytalk' => 'તમારૂં ચર્ચાનું પાનું',
'tooltip-pt-anontalk' => 'આ IP સરનામા દ્વારા થયેલ ફેરફારની ચર્ચા',
-'tooltip-pt-preferences' => 'મારà«\80 પસàª\82દ',
+'tooltip-pt-preferences' => 'તમારà«\80 પસàª\82દàª\97à«\80àª\93',
'tooltip-pt-watchlist' => 'તમે દેખરેખ રાખી રહ્યાં હોવ તેવા પાનાઓની યાદી',
'tooltip-pt-mycontris' => 'તમારા યોગદાનની યાદી',
'tooltip-pt-login' => 'આપને લોગ ઇન કરવા ભલામણ કરવામાં આવે છે, જોકે તે આવશ્યક નથી',
'tooltip-n-mainpage-description' => 'મુખ્ય પાના પર જાઓ',
'tooltip-n-portal' => 'પરિયોજના વિષે, આપ શું કરી શકો અને વસ્તુઓ ક્યાં શોધશો',
'tooltip-n-currentevents' => 'પ્રસ્તુત ઘટનાની પૃષ્ઠભૂમિની માહિતિ શોધો',
-'tooltip-n-recentchanges' => 'વિકિમાં હાલમા થયેલા ફેરફારોની સૂચિ.',
+'tooltip-n-recentchanges' => 'વિકિમાં હાલમાં થયેલ ફેરફારોની સૂચિ',
'tooltip-n-randompage' => 'કોઇ પણ એક લેખ બતાવો',
-'tooltip-n-help' => 'શોધવા માટેની જગ્યા.',
+'tooltip-n-help' => 'શોધવા માટેની જગ્યા',
'tooltip-t-whatlinkshere' => 'અહીં જોડાતા બધાં વિકિ પાનાઓની યાદી',
'tooltip-t-recentchangeslinked' => 'આ પાના પરની કડીઓ વાળા લેખોમાં તાજેતરમાં થયેલા ફેરફારો',
'tooltip-feed-rss' => 'આ પાના માટે આર.એસ.એસ. ફીડ',
'spambot_username' => 'મિડિયાવિકી સ્પેમ સફાઇ',
'spam_reverting' => ' $1 પર કડી ન ધરાવતા છેલ્લા ફેરેફાર પર પુનઃ સ્થાપન કરાય છે',
'spam_blanking' => 'બધા ફેરફારોમાં $1 પર કડી હતી, આને હટાવી દેવામાં આવે છે',
+'simpleantispam-label' => "સ્પામ-વિરોધી તપાસ.
+આને '''ના''' ભરશો!",
# Info page
'pageinfo-title' => ' "$1" માટે માહિતી',
'dberr-problems' => 'દિલગીરી! આ સાઇટ તકનિકી અડચણ અનુભવી રહી છે.',
'dberr-again' => 'થોડી વાર રાહ જોઈને ફરી પેજ લોડ કરવાનો પ્રયત્ન કરો.',
'dberr-info' => '(માહિતી સંચય સર્વર : $1નો સંપર્ક નથી કરી શકાયો)',
+'dberr-info-hidden' => '(ડેટાબેઝ સર્વર સાથે જોડાણ થઇ શકતું નથી)',
'dberr-usegoogle' => 'તેસમયા દરમ્યાન તમે ગુગલ દ્વારા શોધી શકો',
'dberr-outofdate' => 'આપણી માહિતી સંબંધી તેમની સૂચિ કાલાતિત હોઇ શકે.',
'dberr-cachederror' => 'વિનંતિ કરેલ પાનાની આ એક સંગ્રહીત પ્રત માત્ર છે અને તે અધ્યતન ન પણ હોય.',
'logentry-move-move-noredirect' => '$1 એ દિશાનિર્દેશન છોડ્યા વગર પાના $3ને $4 પર {{GENDER:$2|વાળ્યું}}',
'logentry-move-move_redir' => '$1એ દિશાનિર્દેશન કરીને પાના $3ને $4 પર {{GENDER:$2|ખસેડ્યું}}',
'logentry-move-move_redir-noredirect' => '$1એ દિશાનિર્દેશન કરીને પાના $3ને $4 પર {{GENDER:$2|વાળ્યું}} પણ પાછળ દિશાનિર્દેશન છોડ્યું નહી',
-'logentry-patrol-patrol' => '$1 આવૃત્તિ ચિહ્નિત થયેલ પાનાં $4 $3 ચોકી કરવા ફરવા નીકળવું',
-'logentry-patrol-patrol-auto' => '$1 આપોઆપ ચિહ્નિત ચોકી પહેરો કરવા લાગ્યા આવૃત્તિ પાનું $4 $3',
+'logentry-patrol-patrol' => 'પાનાં $3 ની આવૃત્તિ $4 ને $1 વડે ચોકી કરવા માટે {{GENDER:$2|નિશાનીત}} કરેલ છે',
+'logentry-patrol-patrol-auto' => 'પાનાં $3 ની આવૃત્તિ $4 ને $1 એ આપમેળે ચોકી કરવા માટે {{GENDER:$2|નિશાનીત}} કરેલ છે',
'logentry-newusers-newusers' => 'સભ્ય ખાતું $1 {{GENDER:$2|બનાવવામાં આવ્યું}}',
'logentry-newusers-create' => 'સભ્ય ખાતું $1 {{GENDER:$2|બનાવવામાં આવ્યું}}',
'logentry-newusers-create2' => 'સભ્ય ખાતું $3 $1 વડે {{GENDER:$2|બનાવવામાં આવ્યું હતું}}',
'spam_reverting' => 'שחזור לגרסה אחרונה שלא כוללת קישורים ל־$1',
'spam_blanking' => 'כל הגרסאות כוללות קישורים ל־$1, מרוקן את הדף',
'spam_deleting' => 'כל הגרסאות כוללות קישורים ל־$1, מוחק את הדף',
+'simpleantispam-label' => "בדיקת אנטי־ספאם.
+'''אל''' תמלאו שדה זה!",
# Info page
'pageinfo-title' => 'מידע על "$1"',
'spam_reverting' => '$1 को कड़ी ना होने वाले पुराने अवतरण को पुनर्स्थापित कर रहें हैं',
'spam_blanking' => 'सभी अवतरणोंमें $1 को कड़ियां हैं, पूरा पाठ निकाल रहें हैं',
'spam_deleting' => 'सभी अवतरणों में $1 की कड़ी थी, हटाया जा रहा है',
+'simpleantispam-label' => "ऍन्टी-स्पैम जाँच.
+इसे भरें '''नहीं'''!",
# Info page
'pageinfo-title' => '"$1" के लिये जानकारी',
'recentchangesdays-max' => '(maksimalno $1 {{PLURAL:$1|dan|dana}})',
'recentchangescount' => 'Zadani broj izmjena koje se prikazuju:',
'prefs-help-recentchangescount' => 'Ovo uključuje nedavne promjene, stare izmjene, i evidencije.',
+'prefs-help-watchlist-token2' => 'Ovo je tajni ključ prema sažetku vašeg popisa praćenja. Svaki suradnik kojem je poznat, moći će čitati vaš popis praćenih stranica. Ne dijelite ga ni s kim. [[Special:ResetTokens|Kliknite ovdje ako ga želite ponovo postaviti]].',
'savedprefs' => 'Vaše postavke su sačuvane.',
'timezonelegend' => 'Vremenska zona:',
'localtime' => 'Lokalno vrijeme:',
'spam_reverting' => 'Vraćam na zadnju inačicu koja ne sadrži poveznice na $1',
'spam_blanking' => 'Sve inačice sadrže poveznice na $1, brišem cjelokupni sadržaj',
'spam_deleting' => 'Sve inačice sadržale su poveznice na $1, brišem cjelokupni sadržaj',
+'simpleantispam-label' => "Anti-spam provjera.
+'''Ne''' ispunjavajte ovo!",
# Info page
'pageinfo-title' => 'Podatci o stranici "$1"',
'spam_reverting' => 'wróćo na poslednju wersiju, kotraž wotkazy na $1 njewobsahuje',
'spam_blanking' => 'Wšě wersije z wotkazami do $1 so porjedźeja',
'spam_deleting' => 'Wšě wersije z wotkazami do $1 so zhašeja',
+'simpleantispam-label' => "Kontrola přećiwo spamej.
+Tu '''ničo''' njezapisać!",
# Info page
'pageinfo-title' => 'Informacije za stronu "$1"',
'spam_reverting' => 'Visszatérés a $1 lapra mutató hivatkozásokat nem tartalmazó utolsó változathoz',
'spam_blanking' => 'Az összes változat tartalmazott a $1 lapra mutató hivatkozásokat, kiürítés',
'spam_deleting' => 'Minden változat tartalmazott $1-re mutató hivatkozást, törlöm',
+'simpleantispam-label' => "Spam elleni ellenőrzés.
+'''NE''' töltsd ezt ki!",
# Info page
'pageinfo-title' => 'Információk a(z) „$1” lapról',
'spam_reverting' => 'Revertite al ultime version que non contine ligamines a $1',
'spam_blanking' => 'Tote le versiones contineva ligamines a $1. Le pagina es vacuate.',
'spam_deleting' => 'Tote le versiones contineva ligamines a $1. Le pagina es delite.',
+'simpleantispam-label' => "Verification anti-spam.
+'''NON''' completa isto!",
# Info page
'pageinfo-title' => 'Informationes pro "$1"',
'broken-file-category' => 'Halaman dengan gambar rusak',
'categoryviewer-pagedlinks' => '($1) ($2)',
-'linkprefix' => '/^((?>.*(?<![a-zA-Z\\x80-\\xff])))(.+)$/sD',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'Tentang',
'article' => 'Halaman isi',
'spam_reverting' => 'Membatalkan ke versi terakhir yang tak memiliki pranala ke $1',
'spam_blanking' => 'Semua revisi yang memiliki pranala ke $1, kosong',
'spam_deleting' => 'Semua revisi yang memiliki pranala ke $1, penghapusan',
+'simpleantispam-label' => "Pemeriksaan anti-spam.
+Masukan ini '''DILARANG'''!",
# Info page
'pageinfo-title' => 'Informasi untuk "$1"',
'articlepage' => 'Kitaen ti naglaon a panid',
'talk' => 'Pagtungtungan',
'views' => 'Dagiti pangkitaan',
-'toolbox' => 'Kahon ti ramit',
+'toolbox' => 'Ramramit',
'userpage' => 'Kitaen ti panid ti agar-aramat',
'projectpage' => 'Kitaen ti panid ti gandat',
'imagepage' => 'Kitaen ti panid ti papeles',
'userlogin-resetpassword-link' => 'Iyasentar manen ti kontrasenias',
'helplogin-url' => 'Help:Panagserrek',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Tulong iti panagserrek]]',
+'userlogin-loggedin' => 'Nakastrekkan a kas ni {{GENDER:$1|$1}}.
+Usaren ti porma dita baba tapno sumrek a kas sabali nga agar-aramat.',
+'userlogin-createanother' => 'Agaramid pay ti sabali a pakabilangan',
'createacct-join' => 'Ikabil ti pakaammom dita baba.',
'createacct-another-join' => 'Ikabil ti pakaammo ti baro a pakabilangan dita baba.',
'createacct-emailrequired' => 'Esurat a pagtaengan',
'deletecomment' => 'Rason:',
'deleteotherreason' => 'Sabali/maipatinayon a rason:',
'deletereasonotherlist' => 'Sabali a rason',
-'deletereason-dropdown' => '*Kadawyan a rasrason ti panagikkat
-** Kiddaw ti mannurat
+'deletereason-dropdown' => '* Kadawyan a rasrason ti panagikkat
+** Spam
+** Bandalismo
** Panaglabsing iti karbengan ti panagipablaak
-** Bandalismo',
+** Kiddaw ti mannurat
+** Naputed a baw-ing',
'delete-edit-reasonlist' => 'Urnosen dagiti rason ti panagikkat',
'delete-toobig' => 'Daytoy a panid ket dakkel ti pakasaritaanna, sumurok a $1 {{PLURAL:a panagbaliwan|dagiti panagbaliwan}}.
Ti panagikkat ti kastoy a pammpanid ket naparitan tapno mapawilan ti saan nga inkarkaro a pannakadadael ti {{SITENAME}}.',
'spam_reverting' => 'Ipasubli ti kinaudi a panagbaliw nga awan dagiti linaon a silpo idiay $1',
'spam_blanking' => 'Dagiti amin a panagbaliw ket aglaon kadagiti silpo idiay $1, iblanko',
'spam_deleting' => 'Dagiti amin a panagbaliw ket naglaon kadagiti silpo idiay $1, ik-ikkaten',
+'simpleantispam-label' => "Kontra-spam a panagkita.
+ '''Saan''' mo a suratan daytoy!",
# Info page
'pageinfo-title' => 'Pakaammo para iti "$1"',
'noindex-category' => 'Óraðaðar skrár',
'broken-file-category' => 'Síður með brotna myndatengla',
-'linkprefix' => '/^((?>.*(?<![áÁðÐéÉíÍóÓúÚýÝþÞæÆöÖA-Za-z-–])))(.+)$/sDu',
+'linkprefix' => '/^(.*?)([áÁðÐéÉíÍóÓúÚýÝþÞæÆöÖA-Za-z-–]+)$/sDu',
'about' => 'Um',
'article' => 'Efnissíða',
'spam_reverting' => 'Tek aftur síðustu breytingu sem inniheldur ekki tengil á $1',
'spam_blanking' => 'Allar útgáfur innihéldu tengla á $1, tæmi síðuna',
'spam_deleting' => 'Allar útgáfur innihéldu tengla á $1, eyði síðunni',
+'simpleantispam-label' => 'Kæfuvörn.
+Ekki fylla þetta út!',
# Info page
'pageinfo-title' => 'Upplýsingar um $1',
'spam_reverting' => "Ripristinata l'ultima versione priva di collegamenti a $1",
'spam_blanking' => 'Pagina svuotata, tutte le versioni contenevano collegamenti a $1',
'spam_deleting' => 'Pagina cancellata, tutte le versioni contenevano collegamenti a $1',
+'simpleantispam-label' => "Controllo anti-spam.
+'''NON''' riempire!",
# Info page
'pageinfo-title' => 'Informazioni per "$1"',
'spam_reverting' => '$1へのリンクを含まない最新の版に差し戻し',
'spam_blanking' => 'すべての版が$1へのリンクを含んでいます。白紙化します。',
'spam_deleting' => 'すべての版が$1へのリンクを含んでいます。削除します。',
+'simpleantispam-label' => "スパム攻撃防止用のチェックです。
+ここに値を決して入力'''しない'''でください。",
# Info page
'pageinfo-title' => '「$1」の情報',
'spam_reverting' => 'Mbalèkaké menyang vèrsi pungkasan sing ora ana pranalané menyang $1',
'spam_blanking' => 'Kabèh révisi sing duwé pranala menyang $1, pangosongan',
'spam_deleting' => 'Kabèh benahan sing nduwé pranala nèng $1, dibusaki',
+'simpleantispam-label' => "Pamariksan anti-spam.
+'''Aja''' diisèkaké!",
# Info page
'pageinfo-title' => 'Inpormasi kanggo "$1"',
'tog-hidepatrolled' => 'დამალეთ შესწორებული რედაქტირებები ბოლო ცვლილებებში',
'tog-newpageshidepatrolled' => 'დამალეთ შემოწმებული გვერდები ახალი გვერდების სიიდან',
'tog-extendwatchlist' => 'გავრცობილი კონტროლის სია ყველა დაკავშირებული ცვლილების ჩვენების ჩათვლით',
-'tog-usenewrc' => 'ბოლო ცვლილებების და კონტროლის სიის ცვლილებების დაჯგუფება (საჭიროა ჯავასკრიპტი)',
+'tog-usenewrc' => 'ბოლო ცვლილებების და კონტროლის სიის ცვლილებების დაჯგუფება',
'tog-numberheadings' => 'ავტომატურად დანომრე ქვესათაურები',
'tog-showtoolbar' => 'რედაქტირების პანელის ჩვენება',
'tog-editondblclick' => 'გვერდების რედაქტირება ორმაგი დაწკაპუნებით',
'broken-file-category' => 'გვერდები ფაილების არასწორი ბმულებით',
'categoryviewer-pagedlinks' => '($1) ($2)',
-'linkprefix' => '/^((?>.*(?<![a-zA-Z\\x80-\\xff])))(.+)$/sD',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'შესახებ',
'article' => 'სტატია',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
'aboutsite' => '{{SITENAME}}-ის შესახებ',
'aboutpage' => 'Project:შესახებ',
-'copyright' => 'შინაარსი წარმოდგენილია $1 პირობებით.',
+'copyright' => 'შინაარსი წარმოდგენილია $1 პირობებით (თუ სხვა არ არის მითითებული).',
'copyrightpage' => '{{ns:project}}:საავტორო უფლებები',
'currentevents' => 'მიმდინარე მოვლენები',
'currentevents-url' => 'Project:მიმდინარე მოვლენები',
'virus-unknownscanner' => 'უცნობი ანტივირუსი:',
# Login and logout pages
-'logouttext' => "'''á\83\97á\83¥á\83\95á\83\94á\83\9c á\83\90á\83\9bá\83\9fá\83\90á\83\9bá\83\90á\83\93 á\83¡á\83\98á\83¡á\83¢á\83\94á\83\9bá\83\98á\83\93á\83\90á\83\9c á\83\92á\83\90á\83¡á\83£á\83\9aá\83\98 á\83®á\83\90á\83 á\83\97.'''
+'logouttext' => "'''á\83\97á\83¥á\83\95á\83\94á\83\9c á\83\90á\83\9bá\83\9fá\83\90á\83\9bá\83\90á\83\93 á\83\92á\83\90á\83¡á\83£á\83\9aá\83\98 á\83®á\83\90á\83 á\83\97 á\83¡á\83\98á\83¡á\83¢á\83\94á\83\9bá\83\98á\83\93á\83\90á\83\9c.'''
-შეგიძლიათ გამოიყენოთ {{SITENAME}} ანონიმურად, ან შეგიძლიათ
-<span class='plainlinks'>[$1 შეხვიდეთ ისევ]</span> როგორც იგივე ან სხვა მომხმარებელი.
-შენიშნეთ, რომ ზოგიერთ გვერდზე შესაძლოა ისევ უჩვენებდეს რომ შესული ხართ სანამ თქვენი ბრაუზერის მეხსიერებას არ გაწმენდთ.",
+ზოგიერთმა გვერდმა შესაძლოა ისევ ისე გააგრძელოს ჩვენება თითქოს თქვენ ჯერ კიდევ სისტემაში იყოთ. ამის მოსაგვარებლად საჭიროა თქვენი ბრაუზერის მეხსიერების გაწმენდა.",
'welcomeuser' => 'მოგესალმებით, $1!',
'welcomecreation-msg' => 'თქვენი ანგარიში შექმნილია.
არ დაგავიწყდეთ თქვენი [[Special:Preferences|{{SITENAME}}-ის კონფიგურაციის]] შეცვლა.',
'createacct-emailoptional' => 'ელ. ფოსტის მისამართი (არასავალდებულო)',
'createacct-email-ph' => 'შეიყვანეთ თქვენი ელ. ფოსტის მისამართი',
'createacct-another-email-ph' => 'შეიყვანეთ ელ.ფოსტის მისამართი',
-'createaccountmail' => 'á\83\92á\83\90á\83\9bá\83\9dá\83\98á\83§á\83\94á\83\9cá\83\94á\83\97 á\83¨á\83\94á\83\9bá\83\97á\83®á\83\95á\83\94á\83\95á\83\98á\83\97á\83\9dá\83\91á\83\98á\83¡ á\83\9bá\83\94á\83\97á\83\9dá\83\93á\83\98á\83\97 á\83¨á\83\94á\83 á\83©á\83\94á\83£á\83\9aá\83\98 á\83\93á\83 á\83\9dá\83\94á\83\91á\83\98á\83\97á\83\98 á\83\9eá\83\90á\83 á\83\9dá\83\9aá\83\98 á\83\93á\83\90 á\83\9bá\83\98á\83¡á\83\98 á\83\92á\83\90á\83\92á\83\96á\83\90á\83\95á\83\9cá\83\90 á\83¥á\83\95á\83\94á\83\9bá\83\9dá\83\97 á\83\9bá\83\98á\83\97á\83\98á\83\97á\83\94á\83\91á\83£á\83\9a á\83\94á\83\9a. á\83¤á\83\9dá\83¡á\83¢á\83\98á\83¡ á\83\9bá\83\98á\83¡á\83\90á\83\9bá\83\90á\83 á\83\97á\83\96á\83\94:',
+'createaccountmail' => 'á\83\92á\83\90á\83\9bá\83\9dá\83\98á\83§á\83\94á\83\9cá\83\94á\83\97 á\83¨á\83\94á\83\9bá\83\97á\83®á\83\95á\83\94á\83\95á\83\98á\83\97á\83\9dá\83\91á\83\98á\83¡ á\83\9bá\83\94á\83\97á\83\9dá\83\93á\83\98á\83\97 á\83¨á\83\94á\83 á\83©á\83\94á\83£á\83\9aá\83\98 á\83\93á\83 á\83\9dá\83\94á\83\91á\83\98á\83\97á\83\98 á\83\9eá\83\90á\83 á\83\9dá\83\9aá\83\98 á\83\93á\83\90 á\83\9bá\83\98á\83¡á\83\98 á\83\92á\83\90á\83\90á\83\92á\83\96á\83\90á\83\95á\83\9cá\83\94á\83\97 á\83\9bá\83\98á\83\97á\83\98á\83\97á\83\94á\83\91á\83£á\83\9a á\83\94á\83\9a.á\83¤á\83\9dá\83¡á\83¢á\83\98á\83¡ á\83\9bá\83\98á\83¡á\83\90á\83\9bá\83\90á\83 á\83\97á\83\96á\83\94',
'createacct-realname' => 'ნამდვილი სახელი (არააუცილებელი)',
'createaccountreason' => 'მიზეზი:',
'createacct-reason' => 'მიზეზი',
'loginreqlink' => 'შესვლა',
'loginreqpagetext' => 'თქვენ უნდა $1 სხვა გვერდები აჩვენოთ.',
'accmailtitle' => 'პაროლი გაგზავნილია.',
-'accmailtext' => "მომხმარებელი [[User talk:$1|$1]]-სთვის შექმნილია ახალი პაროლი, შექმნილი შემთხვევითი სიმბოლოებისგან გაიგზავნა $2 ელექტრონულ მისამართზე.
-სისტემისადმი თავის წარდგენის შემდეგ თქვენ შეგიძლლიათ ''[[Special:ChangePassword|შეცვალოთ პაროლი]]''.",
+'accmailtext' => "შემთხვევითი მეთოდით შექმნილი პაროლი მომხმარებლისათვის [[User talk:$1|$1]] გაგზავნილია მისამართზე $2.
+
+ავტორიზაციის გავლის შემდეგ შესაძლებელი იქნება ამ ანგარიშის ''[[Special:ChangePassword|პაროლის შეცვლა]]'' ანგარიშში შესვლის გვერდზე.",
'newarticle' => '(ახალი)',
'newarticletext' => 'ბმულის მეშვეობით თქვენ მოხვდით გვერდზე, რომელიც ჯერ არ არსებობს.
გვერდის შესაქმნელად შეიყვანეთ ინფორმაცია ქვემო ფანჯარაში
'prefs-rendering' => 'იერსახე',
'saveprefs' => 'შენახვა',
'resetprefs' => 'გადატვირთვა',
-'restoreprefs' => 'á\83\99á\83\9dá\83\9cá\83¤á\83\98á\83\92á\83£á\83 á\83\90á\83ªá\83\98á\83\98á\83¡ á\83¡á\83\90á\83¬á\83§á\83\98á\83¡á\83\96á\83\94 á\83\93á\83\90á\83\91á\83 á\83£á\83\9cá\83\94á\83\91á\83\90',
+'restoreprefs' => 'á\83§á\83\95á\83\94á\83\9aá\83\90 á\83¡á\83\90á\83¬á\83§á\83\98á\83¡á\83\98 á\83\9eá\83\90á\83 á\83\90á\83\9bá\83\94á\83¢á\83 á\83\98á\83¡ á\83\90á\83¦á\83\93á\83\92á\83\94á\83\9cá\83\90 (á\83§á\83\95á\83\94á\83\9aá\83\90 á\83¡á\83\94á\83¥á\83ªá\83\98á\83\90á\83¨á\83\98)',
'prefs-editing' => 'რედაქტირება',
'rows' => 'რიგები:',
'columns' => 'სვეტები',
'gender-unknown' => 'მითითებას არ ვთვლი საჭიროდ',
'gender-male' => 'ის (მამრობითი) არედაქტირებს ვიკი-გვერდებს',
'gender-female' => 'ის (მდედრობითი) არედაქტირებს ვიკი-გვერდებს',
-'prefs-help-gender' => 'არასავალდებულო ველი: გამოიყენება პროგრამული უზრუნველყოფის იმ შეტყობინებებისთვის, რომლებიც ადამიანის სქესზეა დამოკიდებული.
-ეს ინფორმაცია საზოგადოებრივი იქნება.',
+'prefs-help-gender' => 'ამ პარამეტრის დაყენება არასავალდებულოა.
+პროგრამული უზრუნველყოფა ამ ინფორმაციას იყენებს მხოლოდ სწორი გრამატიკული სქესით მომართვისათვის.
+ეს ინფორმაცია საჯარო იქნება ყველასათვის.',
'email' => 'ელ. ფოსტა',
'prefs-help-realname' => 'ნამდვილი სახელის მითითება აუცილებელი არ არის, მაგრამ თუ მიუთითებთ ის გამოყენებული იქნება თქვენი ნამუშევრის აღსანიშნავად.',
'prefs-help-email' => 'ელ. ფოსტის მისამართი არ არის სავალდებულო, მაგრამ მისი მითითება იძლევა ახალი პაროლის გამოგზავნის საშუალებას თქვენი პაროლის დავიწყების შემთხვევაში.',
'right-reupload-shared' => 'ფაილთა შეცვლა საერთო საცავიდან ლოკალურებით',
'right-upload_by_url' => 'ფაილის ატვირთვა URL-დან',
'right-purge' => 'ქეშის გაწმენდა დადასტურების გვერდის გარეშე',
-'right-autoconfirmed' => 'á\83\9cá\83\90á\83¬á\83\98á\83\9aá\83\9dá\83\91á\83 á\83\98á\83\95 á\83\93á\83\90á\83ªá\83£á\83\9aá\83\98 á\83\92á\83\95á\83\94á\83 á\83\93á\83\94á\83\91á\83\98á\83¡ á\83 á\83\94á\83\93á\83\90á\83¥á\83¢á\83\98á\83 á\83\94á\83\91á\83\90',
+'right-autoconfirmed' => 'á\83¡á\83\98á\83©á\83¥á\83\90á\83 á\83\98á\83¡ á\83¨á\83\94á\83\96á\83¦á\83£á\83\93á\83\95á\83\90 IP á\83\9bá\83\98á\83¡á\83\90á\83\9bá\83\90á\83 á\83\97á\83\96á\83\94 á\83\90á\83 á\83\90á\83 á\83\98á\83¡',
'right-bot' => 'ჩაითვალო ავტომატურ პროცესად',
'right-nominornewtalk' => 'მცირე რედაქტირებების არ ქონის შემთხვევაში ჩაირთვება ახალ შეტყობინებათა რეჟიმი',
'right-apihighlimits' => 'ნაკლები შეზღუდვა API-მოთხოვნებზე',
'right-ipblock-exempt' => 'IP ბლოკის, ავტობლოკის და დიაპაზონთა ბლოკის გასვლა',
'right-proxyunbannable' => 'პროქსის ავტობლოკის გადასვლა',
'right-unblockself' => 'საკუთარი თავის განბლოკვა',
-'right-protect' => 'გვერდების დაცვის დონის შეცვლა და დაცული გვერდების რედაქტირება',
+'right-protect' => 'á\83\92á\83\95á\83\94á\83 á\83\93á\83\94á\83\91á\83\98á\83¡ á\83\93á\83\90á\83ªá\83\95á\83\98á\83¡ á\83\93á\83\9dá\83\9cá\83\98á\83¡ á\83¨á\83\94á\83ªá\83\95á\83\9aá\83\90 á\83\93á\83\90 á\83\99á\83\90á\83¡á\83\99á\83\90á\83\93á\83£á\83 á\83\90á\83\93 á\83\93á\83\90á\83ªá\83£á\83\9aá\83\98 á\83\92á\83\95á\83\94á\83 á\83\93á\83\94á\83\91á\83\98á\83¡ á\83 á\83\94á\83\93á\83\90á\83¥á\83¢á\83\98á\83 á\83\94á\83\91á\83\90',
'right-editprotected' => 'გვერდების რედაქტირება რომლებიც დაცულია როგორც „{{int:protect-level-sysop}}“',
'right-editsemiprotected' => 'გვერდების რედაქტირება რომლებიც დაცულია როგორც „{{int:protect-level-autoconfirmed}}“',
'right-editinterface' => 'მომხმარებლის ინტერფეისის შეცვლა',
'upload_source_file' => ' (ფაილი შენს კომპიუტერზე)',
# Special:ListFiles
-'listfiles-summary' => 'ეს სპეციალური გვერდი აჩვენებს ყველა ატვირთულ ფაილს.
-მომხმარებლების მიხედვით გაფილტვრისას, ნაჩვენები იქნება ამ მომხმარებლის მხოლოდ ახალი ატვირთვები.',
+'listfiles-summary' => 'ეს სპეციალური გვერდი აჩვენებს ყველა ატვირთულ ფაილს.',
'listfiles_search_for' => 'ძიება სურათის სახელის მიხედვით:',
'imgfile' => 'ფაილი',
'listfiles' => 'სურათების სია',
'randompage-nopages' => '{{PLURAL:$2|სახელთა შემდეგი სივრცე|სახელთა შემდეგ სივრცეში}} "$1" არ არის გვერდები.',
# Random page in category
+'randomincategory-invalidcategory' => 'კატეგორია „$1“ არ არსებობს.',
'randomincategory-selectcategory-submit' => 'მიდი',
# Random redirect
'deleteotherreason' => 'სხვა/დამატებითი მიზეზი:',
'deletereasonotherlist' => 'სხვა მიზეზი',
'deletereason-dropdown' => '* წაშლის ხშირი მიზეზები
-** ავტორის თხოვნით
+** სპამი
+** ვანდალიზმი
** საავტორო უფლების დარღვევა
-** ვანდალიზმი',
+** ავტორის მოთხოვნით
+** გატეხილი გადამისამართება',
'delete-edit-reasonlist' => 'წაშლის მიზეზების რედაქტირება',
'delete-toobig' => 'ამ გვერდს ძალიან გრძელი ისტორია გააჩნია, $1 {{PLURAL:$1|ვერსიაზე|ვერსიიებზე|ვერსიებზე}} მეტი. მისი წაშლა აიკრძალა {{SITENAME}}-ის კორექტურად მუშაობის უზრუნველყოფისთვის.',
'delete-warning-toobig' => 'ამ გვერდს ძალიან გრძელი ისტორია გააჩნია, $1 {{PLURAL:$1|ვერსიაზე|ვერსიიებზე|ვერსიებზე}} მეტი.
ბოლო ცვლილებები შეიტანა [[User:$3|$3]] ([[User talk:$3|განხილვა]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
'editcomment' => "რედაქტირება განმარტებული იყო როგორც: \"''\$1''\".",
'revertpage' => '[[Special:Contributions/$2|$2]]-ის რედაქტირება გაუქმდა; აღდგა ბოლოს [[User:$1|$1]]-ის მიერ რედაქტირებული ვერსია',
-'revertpage-nouser' => 'á\83\9bá\83\9dá\83\9bá\83®á\83\9bá\83\90á\83 á\83\94á\83\91á\83\94á\83\9a (á\83\9bá\83\9dá\83\9bá\83®á\83\9bá\83\90á\83 á\83\94á\83\91á\83\9aá\83\98á\83¡ á\83¡á\83\90á\83®á\83\94á\83\9aá\83\98 á\83\93á\83\90á\83\9bá\83\90á\83\9aá\83£á\83\9aá\83\98á\83\90)-á\83\98á\83¡ á\83 á\83\94á\83\93á\83\90á\83¥á\83¢á\83\98á\83 á\83\94á\83\91á\83\90 á\83\93á\83\90á\83\91á\83 á\83£á\83\9cá\83\94á\83\91á\83£á\83\9aá\83\98á\83\90 á\83\95á\83\94á\83 á\83¡á\83\98á\83\90á\83\96á\83\94 [[User:$1|$1]]',
+'revertpage-nouser' => 'á\83\9bá\83\9dá\83\9bá\83®á\83\9bá\83\90á\83 á\83\94á\83\91á\83\9aá\83\98á\83¡ (á\83\9bá\83\9dá\83\9bá\83®á\83\9bá\83\90á\83 á\83\94á\83\91á\83\9aá\83\98á\83¡ á\83¡á\83\90á\83®á\83\94á\83\9aá\83\98 á\83\93á\83\90á\83\9bá\83\90á\83\9aá\83£á\83\9aá\83\98á\83\90) á\83ªá\83\95á\83\9aá\83\98á\83\9aá\83\94á\83\91á\83\94á\83\91á\83\98 á\83\93á\83\90á\83\91á\83 á\83£á\83\9cá\83\94á\83\91á\83£á\83\9aá\83\98á\83\90 á\83\95á\83\94á\83 á\83¡á\83\98á\83\90á\83\96á\83\94 {{GENDER:$1|[[User:$1|$1]]}}',
'rollback-success' => 'გაუქმდა შესწორება $1; დაბრუნება ვერსიაზე $2.',
# Edit tokens
'contributions' => '{{GENDER:$1|მომხმარებელი}} წვლილი',
'contributions-title' => 'მომხმარებლის წვლილი $1',
'mycontris' => 'წვლილი',
-'contribsub2' => '$1 ($2) თვის',
+'contribsub2' => 'მომხმარებელი {{GENDER:$3|$1}} წვლილი ($2)',
'nocontribs' => 'ძებნისას მითითებული პარამეტრების შესაბამისი არც ერთი ცვლილება ნაპოვნი არ არის',
'uctop' => '(მიმდინარე)',
'month' => 'თვე:',
'spam_reverting' => 'დაბრუნება ბოლო ვერსიასთან, რომელიც არ შეიცავს ბმულს $1-თან',
'spam_blanking' => 'ყველა გვერდი შეიცავს ბმულს $1-გვერდზე. გასუფთავება',
'spam_deleting' => 'ყველა ვერსია შეიცავდა ბმულს $1-ზე, მიმდინარეობს წაშლა',
+'simpleantispam-label' => "სპამის საწინააღმდეგო შემოწმება.
+ეს '''არ''' შეავსოთ!",
# Info page
'pageinfo-title' => 'ინფორმაცია „$1“-თვის',
'pageinfo-length' => 'გვერდის სიგრძე (ბაიტებში)',
'pageinfo-article-id' => 'გვერდის ID',
'pageinfo-language' => 'გვერდის შინაარსის ენა',
-'pageinfo-robot-policy' => 'á\83¡á\83\90á\83«á\83\98á\83\94á\83\91á\83\9d á\83¡á\83\98á\83¡á\83¢á\83\94á\83\9bá\83\98á\83¡ á\83¡á\83¢á\83\90á\83¢á\83£á\83¡á\83\98',
+'pageinfo-robot-policy' => 'á\83\98á\83\9cá\83\93á\83\94á\83¥á\83¡á\83\90á\83ªá\83\98á\83\90 á\83¡á\83\90á\83«á\83\98á\83\94á\83\91á\83\9d á\83 á\83\9dá\83\91á\83\9dá\83¢á\83\94á\83\91á\83\98á\83\97',
'pageinfo-robot-index' => 'დაშვებულია',
'pageinfo-robot-noindex' => 'არ არის დაშვებული',
'pageinfo-views' => 'ხილვების რაოდენობა',
'category-file-count-limited' => "Usı kategoriyada to'mendegi {{PLURAL:$1|fayl|$1 fayl}} bar.",
'listingcontinuesabbrev' => 'dawamı',
-'linkprefix' => '/^((?>.*(?<![a-zıA-Zİ\\x80-\\xff])))(.+)$/sDu',
+'linkprefix' => '/^(.*?)([a-zıA-Zİ\\x80-\\xff]+)$/sDu',
'about' => 'Haqqında',
'article' => "Mag'lıwmat beti",
'noindex-category' => 'Pelê bêendeksıni',
'broken-file-category' => 'Peli be gıreunê dosyeunê sıkıtau',
-'linkprefix' => '/^((?>.*(?<![a-zA-Z\\x80-\\xff])))(.+)$/sD',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'Heqa',
'article' => 'Pela tedeesteyu',
'broken-file-category' => 'ទំព័រទាំងឡាយដែលដាច់តំណភ្ជាប់',
'categoryviewer-pagedlinks' => '($1) ($2)',
-'linkprefix' => '/^((?>.*(?<![a-zA-Z\\x80-\\xff])))(.+)$/sD',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'អំពី',
'article' => 'មាតិកាអត្ថបទ',
'spam_reverting' => '$1(을)를 포함하지 않는 최신 버전으로 되돌림',
'spam_blanking' => '모든 버전에 $1 링크를 포함하고 있어 차단함',
'spam_deleting' => '모든 버전에 $1 링크를 포함하고 있어 삭제함',
+'simpleantispam-label' => "스팸 방지 검사입니다.
+이것을 입력하지 '''마세요'''!",
# Info page
'pageinfo-title' => '"$1" 문서에 대한 정보',
'spam_reverting' => 'De letzte Version ohne de Links op „$1“ widder zerröckjehollt.',
'spam_blanking' => 'All die Versione hatte Links op „$1“, die sin jetz erus jemaht.',
'spam_deleting' => 'All di Versione met Lenks op „$1“ wääde fott jeschmeße',
+'simpleantispam-label' => 'SPAMschotz — donn hee nix endraare!',
# Info page
'pageinfo-title' => 'Övver di Sigg: „$1“',
Waart w.e.g. $1 ier Dir et nach eng Kéier probéiert.',
'login-abort-generic' => 'Dir sidd net ageloggt - Aloggen ofgebrach',
'loginlanguagelabel' => 'Sprooch: $1',
-'suspicious-userlogout' => 'Är Ufro fir Iech auszeloggen gouf refuséiert well et sou ausgesäit wéi wa se vun engem Futtise Browser oder Proxy-Tëschespäicher kënnt.',
+'suspicious-userlogout' => 'Är Ufro fir Iech auszeloggen gouf refuséiert well et sou ausgesäit wéi wa se vun engem futtise Browser oder Proxy-Tëschespäicher kënnt.',
'createacct-another-realname-tip' => "De richtegen Numm ass fakultativ.
Wann Dir en ugitt, gëtt e benotzt fir d'Benotzerattributiounen fir Är Aarbecht zouzeuerdnen.",
'spam_reverting' => 'Déi lescht Versioun ouni Linken op $1 restauréieren.',
'spam_blanking' => 'An alle Versioune ware Linken op $1, et ass elo alles gebotzt.',
'spam_deleting' => 'All Versioune mat Linken op $1 gi geläscht',
+'simpleantispam-label' => "Anti-Spam Kontroll.
+Fëllt dëst '''NET''' aus!",
# Info page
'pageinfo-title' => 'Informatioun iwwer "$1"',
'spam_reverting' => 'Bezig mit trökdrèjje nao de letste versie die gein verwiezing haet nao $1',
'spam_blanking' => "Alle wieziginge mit 'ne link nao $1 waere verwiederd",
'spam_deleting' => 'Alle wieziginge hawwe links nao $1, wuuertj gewösj',
+'simpleantispam-label' => "Antispemcontrole.
+Vol dit veld '''NEET''' in!",
# Info page
'pageinfo-title' => 'Informatie euver "$1"',
'spam_reverting' => 'Atkuriama į ankstesnę versiją, neturinčios nuorodų į $1',
'spam_blanking' => 'Visos versijos turėjo nuorodų į $1, išvaloma',
'spam_deleting' => 'Visos versijos turėjo nuorodų į $1, ištrinama',
+'simpleantispam-label' => "Anti-spam patikra.
+'''NE'''pildykite!",
# Info page
'pageinfo-title' => '„$1“ informacija',
'category-article-count' => '{{PLURAL:$2|Itymā kategorejā ir vīn dūtuo puslopa.|{{PLURAL:$1|Paruodeita $1 puslopa|Paruodeitys $1 puslopys}} nu $2.}}',
'listingcontinuesabbrev' => '(tuoļuojums)',
-'linkprefix' => '/^((?>.*(?<![a-zA-Z\\x80-\\xff])))(.+)$/sD',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'Aproksts',
'article' => 'Rakstīņs',
'spamprotectionmatch' => 'Spama filtram radās iebildumi pret šo tekstu: $1',
'spambot_username' => 'MediaWiki surogātpasta tīrīšana',
'spam_reverting' => 'Atjauno iepriekšējo versiju, kas nesatur saiti uz $1',
+'simpleantispam-label' => "Pretspama pārbaude.
+ '''NEAIZPILDĪT!'''",
# Info page
'pageinfo-title' => 'Informācija par "$1"',
'userlogin-resetpassword-link' => 'Hamerina ny tenimiafinao',
'helplogin-url' => 'Help:Fidirana',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Fanoroana mikasika ny fidirana]]',
+'userlogin-createanother' => 'Hamorona kaonty hafa',
'createacct-join' => 'Atsofohy eo ambany ny fampahalalana momba anao.',
'createacct-another-join' => "Atsofohy eo ambany ny fampahalalana vaovaon'ny kaonty",
'createacct-emailrequired' => 'Adiresy mailaka :',
'listfiles_size' => 'Habe',
'listfiles_description' => 'Visavisa',
'listfiles_count' => 'Version',
+'listfiles-latestversion' => 'Filaza ankehitriny',
'listfiles-latestversion-yes' => 'Eny',
'listfiles-latestversion-no' => 'Tsia',
'morelinkstoimage' => "Hijery [[Special:WhatLinksHere/$1|rohy fanampiny]] makany amin'io rakitra io.",
'linkstoimage-redirect' => '$1 (fihodinana) $2',
'sharedupload' => "Mety ho rakitra itambarana amin'ny tetikasa hafa ny rakitra $1.",
+'sharedupload-desc-there' => "Avy amin'i $1 ity rakitr aity ary mety ampiasaina any amin'ny tetikasa hafa.
+Jereo [$2 ny pejy famisavisana ilay rakitra] ho an'ny fampahalalana fanampiny.",
'sharedupload-desc-here' => "Avy amin'i $1 io rakitra io ary mety ampiasain'ny tetikasa hafa.
Aseho eo ambany ny [$2 famisavisana ilay rakitra].",
+'sharedupload-desc-edit' => "Avy amin'i $1 ity rakitra ity ka mety ampiasaina any amina tetikasa hafa.
+Mety tia hanova ny famisavisany ianao any amin'ny [$2 pejy famisavisana rakitra] any.",
'filepage-nofile' => 'Tsy nahitana rakitra mitondra io anarana io.',
'filepage-nofile-link' => 'Tsy misy rakitra mitondra io anarana io, fa afaka [$1 mampiditra azy ianao].',
'uploadnewversion-linktext' => "Andefa version vaovao n'ity rakitra ity",
Efa nataon'i [[User:$3|$3]] ([[User talk:$3|dinika]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) ny fanovana farany.",
'editcomment' => "Toy izao no fanamarihana momba io fanovana io: \"''\$1''\".",
'revertpage' => "Voafafa ny fanovana ny [[Special:Contributions/$2|$2]] ([[User talk:$2|Dinika]]); voaverina amin'ny votoatiny teo aloha nataon'i [[User:$1|$1]]",
-'revertpage-nouser' => "Manala ny fanovana (nataon'ny anaram-pikambana nesorina), miverina any amin'ny santiona farany nataon'i [[User:$1|$1]]",
+'revertpage-nouser' => "Manala ny fanovana (nataom-pikambana voaafina), miverina any amin'ny filaza faran'i [[User:$1|$1]]",
'rollback-success' => "Fanalàna ny fanovana nataon'i $1 ;
miverina any amin'ny santiôna farany nataon'i $2.",
'unprotectedarticle' => "nanala ny fiarovana an'i « [[$1]] »",
'movedarticleprotection' => 'nanova ny safidim-piarovana : « [[$2]] » lasa « [[$1]] »',
'protect-title' => "Hanova ny lentam-piarovana ho an'i « $1 »",
-'protect-title-notallowed' => "Hijery ny lentam-piarovana ho an'i «[[$1]]»",
+'protect-title-notallowed' => "Hijery ny lentam-piarovana ho an'i «$1»",
'prot_1movedto2' => '[[$1]] voaova anarana ho [[$2]]',
'protect-badnamespace-title' => 'Anaran-tsehatra tsy azo arovana',
'protect-badnamespace-text' => "Tsy afaka arovana ny pejy ao amin'io anaran-tsehatra io.",
# JavaScriptTest
'javascripttest' => 'Fanandramana JavaScript',
'javascripttest-title' => 'Mandefa fanandramana $1',
+'javascripttest-pagetext-skins' => 'Mifidia skin hanaovana ny fanandramana:',
+'javascripttest-qunit-intro' => "Jereo ny [$1 fanoroana mikasika ny andrana] eo amin'i mediawiki.org.",
+'javascripttest-qunit-heading' => "Tohin'andrana QUnit an'i Javascript eo amin'i MediaWiki",
# Tooltip help for the actions
'tooltip-pt-userpage' => 'Ny pejinao',
'tooltip-ca-viewsource' => 'Voaaro ilay pejy. Fa afaka itanao ny voatotiny.',
'tooltip-ca-history' => "Ny revision natao tamin'ity pejy ity",
'tooltip-ca-protect' => 'Arovy ity pejy ity',
-'tooltip-ca-unprotect' => "Hanala ny fiarovan'ity pejy ity",
+'tooltip-ca-unprotect' => "Hanova ny lentam-piarovan'ity pejy ity",
'tooltip-ca-delete' => 'Fafao ity pejy ity',
'tooltip-ca-undelete' => "Hamerina ny fanovana natao tamin'ity pejy ity talohan'ny famafany",
'tooltip-ca-move' => 'Ovay anarana ilay pejy',
'othercontribs' => "Mifototra amin'ny asan'i $1.",
'others' => 'hafa',
'siteusers' => '{{SITENAME}} mpikambana $1 miisa $2{{PLURAL:}}',
-'anonusers' => "Ny mpikambana tsy nisoratra anarana $1 ao amin'i {{SITENAME}}",
+'anonusers' => "Ny mpikambana tsy nisoratra anarana $1 ao amin'i {{SITENAME}}{{PLURAL:$2}}",
+'creditspage' => "Fisaorana ho an'ny pejy",
# Spam protection
'spamprotectiontitle' => "Sivana mpiaro amin'ny spam",
'pageinfo-length' => 'Halavam-pejy (oktety)',
'pageinfo-article-id' => 'Laharam-pejy',
'pageinfo-language' => "Tenin'ny votoatiny",
-'pageinfo-robot-policy' => "Satan'ny motera fikarohana",
-'pageinfo-robot-index' => 'Azo tondroina',
+'pageinfo-robot-policy' => "Fanondroana ataon'ny rôbô",
+'pageinfo-robot-index' => 'Azo atao',
'pageinfo-robot-noindex' => 'Tsy azo tondroina',
'pageinfo-views' => "Isan'ny jery",
'pageinfo-watchers' => "Isan'ny mpandray anjara manaraka",
+'pageinfo-few-watchers' => 'Mpanaraka latsaky ny $1{{PLURAL:}}',
'pageinfo-redirects-name' => "Fihodinana manketo amin'ity pejy ity",
'pageinfo-subpages-name' => "Zana-pejin'ity pejy ity",
'pageinfo-firstuser' => 'Mpamorona ilay pejy',
'markedaspatrollederrortext' => 'Tsy maintsy misafidy santiôna iray ianao mba hahafahanao manamarika azy ho voamarina.',
'markedaspatrollederror-noautopatrol' => 'Tsy azonao marihana ho voamarina ny fanovanao.',
'markedaspatrollednotify' => "Voamarika ho hita ny fanovana natao tamin'i $1.",
+'markedaspatrollederrornotify' => 'Tsy nahamarika azy ho voaara-maso.',
# Patrol log
'patrol-log-page' => "Laogin'ny fanovana voamarina",
'exif-gpsdestlatitude' => 'Laharam-pehintany tanjona',
'exif-gpsareainformation' => 'Anaram-paritra GPS',
'exif-gpsdatestamp' => 'Daty GPS',
+'exif-worldregioncreated' => 'Faritany nangalana ity ilay sary',
'exif-countrycreated' => 'Firenena nangalana ilay sary',
+'exif-countrycodecreated' => 'Kaontim-pirenena nangalana ilay sary',
+'exif-provinceorstatecreated' => 'Faritany nangalana ilay sary',
+'exif-citycreated' => 'Tanàna nangalana ilay sary',
+'exif-sublocationcreated' => 'Fari-tanàna nangalana ilay sary',
'exif-worldregiondest' => 'Faritany aseho',
'exif-countrydest' => 'Firenena aseho',
'exif-countrycodedest' => 'Kaodim-pirenena aseho',
'exif-contact' => 'Fampahalalana mikasika ny fifandraisana',
'exif-writer' => 'Mpanoratra',
'exif-languagecode' => 'Fiteny',
+'exif-iimversion' => 'filaza IIM',
'exif-iimcategory' => 'Sokajy',
'exif-iimsupplementalcategory' => 'Sokajy fanampiny',
'exif-datetimeexpires' => 'Asa ampiasaina aoriany',
'exif-attributionurl' => "Rehefa mampiasa ity asa ity dia asio rohy mankany amin'i",
'exif-preferredattributionname' => 'Rehefa mampiasa ilay asa, isaory',
'exif-pngfilecomment' => "Famoahan-kevitra momban'ilay rakitra PNG",
+'exif-disclaimer' => 'Fampitanremana',
'exif-contentwarning' => 'Fampitandremana mikasika ny votoatiny',
'exif-giffilecomment' => 'Famoahan-kevitry ny rakirta GIF',
'exif-intellectualgenre' => 'Karazan-javatra',
+'exif-subjectnewscode' => "Kaodin'ny lohahevitra",
+'exif-event' => 'Zava-mitranga azo sary',
+'exif-organisationinimage' => 'Fikambanana azo sary',
+'exif-personinimage' => 'Olona azo sary',
+'exif-originalimageheight' => "Haambon-tsary talohan'ny nanovana azy",
'exif-copyrighted-true' => "Iharan'ny zom-pamorona",
'exif-copyrighted-false' => "Toetran'ny zom-pamorona tsy voafaritra",
'exif-unknowndate' => 'Daty tsy fantatra',
'exif-orientation-1' => 'Tsotra',
+'exif-orientation-3' => 'Ahodina 180°',
+'exif-orientation-4' => 'Navadika ambony ambany',
+'exif-orientation-5' => 'Navadika 90° miankavia ary navadika ambony ambany',
+'exif-orientation-6' => 'Navadika 90° miankavia',
+'exif-orientation-7' => 'Navadika 90° miankavanana ary navadika ambony ambany',
+'exif-orientation-8' => 'Navadika 90° miankavanana',
+
+'exif-planarconfiguration-2' => 'Data misaraka',
'exif-componentsconfiguration-0' => 'tsy nahitana',
'exif-exposureprogram-0' => 'Tsy nolazaina',
+'exif-exposureprogram-1' => 'Natao tanana',
+'exif-exposureprogram-2' => 'Fandaharana ara-dalàna',
'exif-subjectdistance-value' => '$1 metatra',
'exif-lightsource-9' => "Toetr'andro mazava",
'exif-lightsource-10' => "Toetr'andro mandrahona",
'exif-lightsource-11' => 'Haloka',
+'exif-lightsource-17' => 'Jiro manara-penitra A',
+'exif-lightsource-18' => 'Jiro manara-penitra B',
+'exif-lightsource-19' => 'Jiro manara-penitra C',
+'exif-lightsource-24' => "Tangistenina ISO an'ny studio",
+'exif-lightsource-255' => 'Loharanon-kazavana hafa',
# Flash modes
+'exif-flash-fired-0' => 'Tsy nirehitra ny flash',
+'exif-flash-fired-1' => 'Nirehitra ny flash',
+'exif-flash-return-0' => 'Tsy misy stirôbôskôpy mamerina lefa fahitana',
'exif-flash-mode-3' => 'Toetra aotômatika',
'exif-focalplaneresolutionunit-2' => 'Posy',
'confirm_purge_button' => 'Eka',
'confirm-purge-top' => "Fafana ve ny cache-n'ity pejy ity?",
+# action=watch/unwatch
+'confirm-watch-top' => 'Hanaraka ity pejy ity?',
+'confirm-unwatch-button' => 'OK',
+'confirm-unwatch-top' => "Hanala ity pejy ity amin'ny lisitry ny pejy arahinao?",
+
# Multipage image navigation
'imgmultipageprev' => '← pejy nialoha',
'imgmultipagenext' => 'pejy manaraka →',
'table_pager_first' => 'Pejy voalohany',
'table_pager_last' => 'Pejy farany',
'table_pager_limit' => 'Haneho zavatra $1 isaky ny pejy',
+'table_pager_limit_label' => 'Valiny isam-pejy:',
'table_pager_limit_submit' => 'Hitsidika',
'table_pager_empty' => 'Tsy nahitana valiny',
'watchlistedit-noitems' => 'Tsy misy lohateny ny lisitrao.',
'watchlistedit-normal-title' => 'Hanova ny lisitra ny pejy arahako maso',
'watchlistedit-normal-legend' => "Hanala lohateny ao amin'ny lisitra",
+'watchlistedit-normal-explain' => "Aseho eo ambany ny lohateny ao amin'ny lisitry ny pejy arahanao.
+Tsindrio ny boaty eo akaikiny ary tsindrio « {{int:Watchlistedit-normal-submit}} ».
+Azonao atao ihany koa ny [[Special:EditWatchlist/raw|manova ilay lisitra amin'ny akorany]].",
'watchlistedit-normal-submit' => 'Hanala ireo lohateny nosafidiana ireo',
+'watchlistedit-normal-done' => "Afaka tamin'ny lisitry ny pejy arahanao ny lohateny $1{{PLURAL:}}",
'watchlistedit-raw-title' => "Hanova ny lisitra ny pejy arahako maso amin'ny fomba akorany",
'watchlistedit-raw-legend' => "Fanovana ilay lisitry ny pejy arahina maso amin'ny fomba akorany",
'watchlistedit-raw-titles' => 'Lohateny :',
'version-hook-subscribedby' => "Nalefan'i",
'version-version' => '(Santiôna $1)',
'version-license' => 'Lisansy',
+'version-poweredby-others' => 'hafa',
'version-software' => 'Rindrankahy voapetraka',
'version-software-product' => 'Vokatra',
'version-software-version' => 'Santiôna',
# Spam protection
'spam_blanking' => 'Sado revisi nan ado pautan ka $1, kosong',
'spam_deleting' => 'Sado revisi nan ado pautan ka $1, dihapuih',
+'simpleantispam-label' => "Pamarisoan anti-spam.
+Masukan ko '''DILARANG'''!",
# Info page
'pageinfo-title' => 'Informasi untuak "$1"',
'noindex-category' => 'Неиндексирани страници',
'broken-file-category' => 'Страници со прекинати врски до податотеки',
-'linkprefix' => '/^((?>.*(?<![a-zA-Z\\x80-\\xff])))(.+)$/sD',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'За {{SITENAME}}',
'article' => 'Статија',
'spam_reverting' => 'Враќам на последната верзија што не содржи врска до $1',
'spam_blanking' => 'Сите ревизии содржеа врски до $1. Чистам',
'spam_deleting' => 'Сите ревизии содржеа врски до $1. Бришам',
+'simpleantispam-label' => "Проверка против спам.
+'''НЕ''' пополнувајте го ова!",
# Info page
'pageinfo-title' => 'Информации за „$1“',
'articlepage' => 'ലേഖനം കാണുക',
'talk' => 'സംവാദം',
'views' => 'ദർശനീയത',
-'toolbox' => 'പണിസà´\9eàµ\8dà´\9aà´¿',
+'toolbox' => 'à´\89à´ªà´\95à´°à´£à´\99àµ\8dà´\99ൾ',
'userpage' => 'ഉപയോക്താവിന്റെ താൾ കാണുക',
'projectpage' => 'പദ്ധതി താൾ കാണുക',
'imagepage' => 'പ്രമാണ താൾ കാണുക',
'spam_reverting' => '$1 എന്നതിലേയ്ക്കുള്ള കണ്ണികളില്ലാത്ത അവസാന നാൾപ്പതിപ്പിലേയ്ക്ക് മുൻപ്രാപനം ചെയ്യുന്നു',
'spam_blanking' => '$1 എന്നതിലേയ്ക്ക് കണ്ണികളുള്ള എല്ലാ നാൾപ്പതിപ്പുകളും ശൂന്യമാക്കുന്നു',
'spam_deleting' => '$1 എന്നതിലേയ്ക്ക് കണ്ണികളുള്ള എല്ലാ നാൾപ്പതിപ്പുകളും മായ്ക്കുന്നു',
+'simpleantispam-label' => "പാഴെഴുത്ത് വിരുദ്ധ പരിശോധന.
+ഇത് '''പൂരിപ്പിക്കരുത്'''!",
# Info page
'pageinfo-title' => '"$1" എന്ന താളിന്റെ വിവരങ്ങൾ',
'spam_reverting' => '$1शी दुवे नसलेल्या गेल्या आवर्तनाकडे परत उलटवत आहे',
'spam_blanking' => '$1शी दुवे असलेली सर्व आवर्तने,रिक्त केली जात आहेत',
'spam_deleting' => 'यातील सर्व आवृत्त्यांचे $1शी दुवे आहेत.गाळत आहे',
+'simpleantispam-label' => "चिखलणी विरोधक तपासणी.
+हे भरू '''नका'''!",
# Info page
'pageinfo-title' => '"$1" च्याबद्दल माहिती',
'noindex-category' => 'Laman tak diindeks',
'broken-file-category' => 'Laman yang ada pautan fail yang terputus',
-'linkprefix' => '/^((?>.*(?<![a-zA-Z\\x80-\\xff])))(.+)$/sD',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'Perihal',
'article' => 'Laman kandungan',
'spam_reverting' => 'Membalikkan kepada versi terakhir yang tidak mengandungi pautan ke $1',
'spam_blanking' => 'Mengosongkan semua semakan yang mengandungi pautan ke $1',
'spam_deleting' => 'Menghapuskan semua semakan yang mengandungi pautan ke $1',
+'simpleantispam-label' => "Pemeriksaan anti-spam. '''JANGAN''' isi ruangan ini!",
# Info page
'pageinfo-title' => 'Maklumat untuk "$1"',
'noindex-category' => 'Paġni mhux indiċizzati',
'broken-file-category' => "Paġni b'ħoloq lejn fajls miksura",
-'linkprefix' => '/^((?>.*(?<![a-żA-Ż\\x80-\\xff])))(.+)$/sD',
+'linkprefix' => '/^(.*?)([a-żA-Ż\\x80-\\xff]+)$/sD',
'about' => 'Dwar',
'article' => 'artiklu',
'articlepage' => 'Ber páigina de cuntenido',
'talk' => 'Çcusson',
'views' => 'Besitas',
-'toolbox' => 'Caixa de Ferramientas',
+'toolbox' => 'Ferramientas',
'userpage' => 'Ber páigina de outelizador',
'imagepage' => 'Ber páigina de fexeiro',
'mediawikipage' => 'Ber páigina de mensaiges',
'spam_reverting' => 'Tilbakestiller til siste versjon uten lenke til $1',
'spam_blanking' => 'Alle revisjoner inneholdt lenke til $1, tømmer siden',
'spam_deleting' => 'Sletter alle revisjoner med lenker til $1',
+'simpleantispam-label' => "Antispamsjekk.
+'''IKKE''' fyll inn dette feltet!",
# Info page
'pageinfo-title' => 'Informasjon om «$1»',
'spambot_username' => 'MediaWiki Spam-Oprümen',
'spam_reverting' => 'Trüchdreiht na de letzte Version ahn Lenken na $1.',
'spam_blanking' => 'All Versionen harrn Lenken na $1, rein maakt.',
+'simpleantispam-label' => "Antispam-Kuntrull. Hier '''nix''' indragen!",
# Info page
'pageinfo-title' => 'Informatschoon för "$1"',
'deletecomment' => 'Reden:',
'deleteotherreason' => 'Aandere/extra reden:',
'deletereasonotherlist' => 'Aandere reden',
-'deletereason-dropdown' => '*Redens veur t vortdoon van ziejen
+'deletereason-dropdown' => '* Redens veur t vortdoon van ziejen
+** Spam
+** Vandalisme
+** Schending van auteursrechten
** Op verzeuk van de auteur
-** Schending van auteursrecht
-** Vandalisme',
+** Ebreuken deurverwiezing',
'delete-edit-reasonlist' => 'Redens veur t vortdoon bewarken',
'delete-toobig' => 'Disse zied hef n lange bewarkingsgeschiedenisse, meer as $1 {{PLURAL:$1|versie|versies}}.
t Vortdoon van dit soort ziejen is mit rechten bepark um t per ongelok versteuren van de warking van {{SITENAME}} te veurkoemen.',
'spam_reverting' => 'Bezig mit t weerummezetten naor de leste versie die gien verwiezing hef naor $1',
'spam_blanking' => 'Alle wiezigingen mit n verwiezing naor $1 wörden vortehaold',
'spam_deleting' => 'In alle versies staon verwiezingen naor $1. Zied vortedaon',
+'simpleantispam-label' => "Antispamkontraole.
+Hier '''NIKS''' invullen!",
# Info page
'pageinfo-title' => 'Informasie over "$1"',
'specialpages-group-pagetools' => 'Ziedhulpmiddels',
'specialpages-group-wiki' => 'Gegevens en hulpmiddels',
'specialpages-group-redirects' => 'Deurverwiezende spesiale ziejen',
-'specialpages-group-spam' => 'Hulpmiddels tegen ongewunste bewarkingen',
+'specialpages-group-spam' => 'Spam-hulpmiddels',
# Special:BlankPage
'blankpage' => 'Lege zied',
'noindex-category' => 'क्रमांकन नगरिएका पृष्ठहरु',
'broken-file-category' => 'टुटेको फाइल लिंकसितको पृष्ठ',
-'linkprefix' => '/^((?>.*(?<![a-zA-Z\\x80-\\xff])))(.+)$/sD',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'बारेमा',
'article' => 'सामाग्री पृष्ठ',
'spam_reverting' => 'Teruggedraaid naar de laatste versie die geen koppeling bevat naar $1',
'spam_blanking' => 'Alle versies bevatten een koppeling naar $1. Pagina leeggemaakt',
'spam_deleting' => 'Alle versies bevatten koppelingen naar $1. Pagina verwijderd',
+'simpleantispam-label' => "Antispamcontrole.
+Vul dit veld '''NIET''' in!",
# Info page
'pageinfo-title' => 'Informatie over "$1"',
'noindex-category' => 'Ikkje-indekserte sider',
'broken-file-category' => 'Sider med brotne fillenkjer',
-'linkprefix' => '/^((?>.*(?<![a-zA-Z\\x80-\\xff])))(.+)$/sD',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'Om',
'article' => 'Innhaldsside',
'spam_reverting' => 'Attenderullar til siste versjon utan lenkje til $1',
'spam_blanking' => 'Alle versjonar inneheldt lenkje til $1, tømmer sida',
'spam_deleting' => 'Alle versjonane inneheldt lenkjer til $1, slettar.',
+'simpleantispam-label' => "Antispam-kontroll.
+'''IKKJE''' fyll ut dette feltet!",
# Info page
'pageinfo-title' => 'Informasjon om «$1»',
'tog-minordefault' => 'Considerar mas modificacions coma menoras per defaut',
'tog-previewontop' => 'Far veire la previsualizacion al dessús de la zòna de modificacion',
'tog-previewonfirst' => 'Far veire la previsualizacion al moment de la primièra edicion',
-'tog-nocache' => "Desactivar l'amagatal de paginas",
+'tog-nocache' => "Desactivar l'escondedor de las paginas pel navigador",
'tog-enotifwatchlistpages' => 'M’avertir per corrièr electronic quand una pagina o un fichièr de ma lista de seguiment es modificat',
'tog-enotifusertalkpages' => 'M’avertir per corrièr electronic en cas de modificacion de ma pagina de discussion',
'tog-enotifminoredits' => 'M’avertir per corrièr electronic quitament en cas de modificacions menoras de las paginas o dels fichièrs',
'articlepage' => "Vejatz l'article",
'talk' => 'Discussion',
'views' => 'Afichatges',
-'toolbox' => "Bóstia d'aisinas",
+'toolbox' => 'Aisinas',
'userpage' => "Pagina d'utilizaire",
'projectpage' => 'Pagina meta',
'imagepage' => 'Veire la pagina del fichièr',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
'aboutsite' => 'A prepaus de {{SITENAME}}',
'aboutpage' => 'Project:A prepaus',
-'copyright' => 'Lo contengut es disponible segon los tèrmes de la licéncia $1.',
+'copyright' => 'Lo contengut es disponible jos licéncia $1 levat mencion contrària.',
'copyrightpage' => '{{ns:project}}:Copyright',
'currentevents' => 'Actualitats',
'currentevents-url' => 'Project:Actualitats',
# General errors
'error' => 'Error',
'databaseerror' => 'Error de la banca de donadas',
+'databaseerror-text' => "Una error de requèsta de banca de donadas s'es producha. Aquò pòt provenir d'un bug dins lo logicial.",
+'databaseerror-textcl' => "Una error de requèsta de banca de donadas s'es produsida.",
'databaseerror-query' => 'Requèsta : $1',
'databaseerror-function' => 'Foncion : $1',
'databaseerror-error' => 'Error : $1',
'userlogin-resetpassword-link' => 'Reïnicializar lo senhal',
'helplogin-url' => 'Help:Connexion',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Ajuda a la connexion]]',
+'userlogin-loggedin' => 'Sètz ja connectat en tant que {{GENDER:$1|$1}}.
+Utilizatz lo formulari çaijós per vos connectar amb un autre utilizaire.',
+'userlogin-createanother' => 'Crear un autre compte',
'createacct-join' => 'Entratz vòstras informacions çaijós.',
'createacct-another-join' => 'Picar las informacions del novèl compte çaijós.',
'createacct-emailrequired' => 'Adreça electronica',
'prefs-displaywatchlist' => "Opcions d'afichatge",
'prefs-tokenwatchlist' => 'Geton',
'prefs-diffs' => 'Diferéncias',
+'prefs-help-prefershttps' => 'Aquesta preferéncia serà efectiva al moment de vòstra connexion que ven.',
# User preference: email validation using jQuery
'email-address-validity-valid' => "L'adreça electronica sembla bona",
'userrights-notallowed' => "Avètz pas la permission d'apondre o suprimir de dreches d'utilizaire.",
'userrights-changeable-col' => 'Los gropes que podètz cambiar',
'userrights-unchangeable-col' => 'Los gropes que podètz pas cambiar',
+'userrights-conflict' => "Conflicte de modificacion de dreches d'utilizaire ! Relegissètz e confirmatz vòstras modificacions.",
# Groups
'group' => 'Grop :',
'action-block' => 'blocar aqueste utilizaire a l’edicion',
'action-protect' => 'modificar los nivèls de proteccion per aquesta pagina',
'action-rollback' => "anullar rapidament las modificacions del darrièr utilizaire qu'a modificat una pagina donada",
-'action-import' => 'importar aquesta pagina a partir d’un autre wiki',
-'action-importupload' => 'importar aquesta pagina e partir de l’impòrt d’un fichièr',
+'action-import' => 'importar de paginas dempuèi un autre wiki',
+'action-importupload' => 'importar de paginas dempuèi un fichièr telecargat',
'action-patrol' => 'marcar la modificacion dels autres coma patrolhada',
'action-autopatrol' => 'aver vòstra modificacion marcada coma patrolhada',
'action-unwatchedpages' => 'veire la lista de las paginas pas susvelhadas',
'listusers' => 'Lista dels participants',
'listusers-editsonly' => "Far veire sonque los utilizaires qu'an al mens una contribucion",
'listusers-creationsort' => 'Triar per data de creacion',
+'listusers-desc' => 'Triar en òrdre descendent',
'usereditcount' => '$1 {{PLURAL:$1|cambiament|cambiaments}}',
'usercreated' => '{{GENDER:$3|Creat}} lo $1 a $2',
'newpages' => 'Paginas novèlas',
'deletecomment' => 'Motiu :',
'deleteotherreason' => 'Motius suplementaris o autres :',
'deletereasonotherlist' => 'Autre motiu',
-'deletereason-dropdown' => "*Motius de supression mai corrents
-** Demanda de l'autor
-** Violacion dels dreches d'autor
-** Vandalisme",
+'deletereason-dropdown' => '* Motius de supression los mai corrents
+** Corrièrs indesirables
+** Vandalisme
+** Violacion dels dreches d’autor
+** Demanda de l’autor
+** Redireccion copada',
'delete-edit-reasonlist' => 'Modifica los motius de la supression',
'delete-toobig' => "Aquesta pagina dispausa d'un istoric important, depassant {{PLURAL:$1|revision|revisions}}.
La supression de talas paginas es estada limitada per evitar de perturbacions accidentalas de {{SITENAME}}.",
La darrièra modificacion es estada efectuada per [[User:$3|$3]] ([[User talk:$3|Discutir]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
'editcomment' => "Lo resumit de la modificacion èra : « ''$1'' ».",
'revertpage' => 'Anullacion de las modificacions de [[Special:Contributions/$2|$2]] ([[User talk:$2|Discussion]]) cap a la darrièra version de [[User:$1|$1]]',
-'revertpage-nouser' => 'Revocacion de las modificacions per un d’utilizaire amagat a la darrièra version per [[User:$1|$1]]',
+'revertpage-nouser' => 'Revocacion de las modificacions per un utilizaire amagat a la darrièra version per {{GENDER:$1|[[User:$1|$1]]}}',
'rollback-success' => 'Anullacion de las modificacions de $1 ; retorn a la version de $2.',
# Edit tokens
'protect-title-notallowed' => 'Veire lo nivèl de proteccion de « $1 »',
'prot_1movedto2' => 'a renomenat [[$1]] en [[$2]]',
'protect-badnamespace-title' => 'Espaci de noms pas protegible',
+'protect-badnamespace-text' => 'Las paginas dins aqueste espaci de noms pòdon pas èsser protegidas.',
'protect-norestrictiontypes-title' => 'Pagina pas protegibla',
'protect-legend' => 'Confirmar la proteccion',
'protectcomment' => 'Rason :',
'contributions' => "Contribucions de l'{{GENDER:$1|utilizaire|utilizaira}}",
'contributions-title' => 'Lista de las contribucions de l’utilizaire $1',
'mycontris' => 'Contribucions',
-'contribsub2' => 'Lista de las contribucions de $1 ($2). Las paginas que son estadas escafadas son pas afichadas.',
+'contribsub2' => 'Per {{GENDER:$3|$1}} ($2)',
'nocontribs' => 'Cap de modificacion correspondenta a aquestes critèris es pas estada trobada.',
'uctop' => '(actual)',
'month' => 'A partir del mes (e precedents) :',
'import-token-mismatch' => 'Pèrda de las donadas de sesilha. Tornatz ensajar.',
'import-invalid-interwiki' => "Impossible d'importar dempuèi lo wiki especificat.",
'import-options-wrong' => '{{PLURAL:$2|Marrida opcion|Marridas opcions}} : <nowiki>$1</nowiki>',
+'import-rootpage-invalid' => 'La pagina raiç provesida es un títol invalid.',
# Import log
'importlogpage' => 'Istoric de las importacions de paginas',
# JavaScriptTest
'javascripttest' => 'Tèst de JavaScript',
'javascripttest-title' => 'Execucion dels tèsts $1',
+'javascripttest-pagetext-noframework' => "Aquesta pagina es reservada per l'execucion dels tèsts JavaScript.",
'javascripttest-pagetext-unknownframework' => 'Estructura « $1 » desconeguda.',
'javascripttest-pagetext-frameworks' => 'Causissètz una de las estructuras de tèst seguentas : $1',
'javascripttest-pagetext-skins' => 'Causissètz un abilhatge amb lo qual cal aviar los tèsts :',
'spam_reverting' => 'Restabliment de la darrièra version que conten pas de ligam cap a $1',
'spam_blanking' => 'Totas las versions que contenon de ligams cap a $1 son blanquidas',
'spam_deleting' => 'Totas las versions contenonián de ligams cap a $1, supression',
+'simpleantispam-label' => "Verificacion antispam.
+Inscriviscatz '''PAS RES''' dedins !",
# Info page
'pageinfo-title' => 'Informacions per « $1 »',
'tags-tag' => 'Nom de la balisa',
'tags-display-header' => 'Aparéncia dins las listas de modificacions',
'tags-description-header' => 'Descripcion completa de la balisa',
+'tags-active-header' => 'Actiu ?',
'tags-hitcount-header' => 'Modificacions balisadas',
+'tags-active-yes' => 'Òc',
+'tags-active-no' => 'Non',
'tags-edit' => 'modificar',
'tags-hitcount' => '$1 {{PLURAL:$1|cambiament|cambiaments}}',
'dberr-problems' => 'O planhèm ! Aqueste site rencontra de dificultats tecnicas.',
'dberr-again' => "Ensajatz d'esperar qualques minutas e tornatz cargar.",
'dberr-info' => '(Se pòt pas connectar al servidor de la banca de donadas : $1)',
+'dberr-info-hidden' => '(Connexion al servidor de la banca de donadas impossibla)',
'dberr-usegoogle' => 'Podètz ensajar de cercar amb Google pendent aqueste temps.',
'dberr-outofdate' => 'Notatz que lors indèxes de nòstre contengut pòdon èsser depassats.',
'dberr-cachederror' => 'Aquò es una còpia amagada de la pagina demandada e pòt èsser depassada.',
'api-error-filetype-missing' => "L'extension del fichièr es mancanta.",
'api-error-hookaborted' => "La modificacion qu'avètz ensajat de realizar es estada anullada per una extension.",
'api-error-illegal-filename' => 'Lo nom del fichièr es pas autorizat.',
+'api-error-mustbeloggedin' => 'Vos cal èsser connectat per telecargar de fichièrs.',
+'api-error-mustbeposted' => 'Error intèrna : aquesta requèsta necessita lo metòde HTTP POST.',
'api-error-nomodule' => 'Error intèrna : cap de modul de versament pas definit.',
'api-error-ok-but-empty' => 'Error intèrna : Lo servidor a pas respondut.',
+'api-error-overwrite' => 'Espotir un fichièr existent es pas autorizat.',
+'api-error-stashfailed' => 'Error intèrna : lo servidor a pas pogut enregistrar lo fichièr temporari.',
'api-error-unclassified' => "Una error desconeguda s'es producha.",
'api-error-unknown-code' => 'Error desconeguda : « $1 »',
'api-error-unknown-warning' => 'Avertiment desconegut : $1',
'limitreport-ppvisitednodes' => 'Nombre de nosèls de preprocessor visitats',
'limitreport-ppgeneratednodes' => 'Nombre de nosèls de preprocessor generats',
'limitreport-postexpandincludesize' => 'Talha d’inclusion aprèp espandiment',
-'limitreport-postexpandincludesize-value' => '$1/$2 octets',
+'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|octet|octets}}',
'limitreport-templateargumentsize' => 'Talha de l’argument del modèl',
-'limitreport-templateargumentsize-value' => '$1/$2 octets',
+'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|octet|octets}}',
'limitreport-expansiondepth' => 'Mai granda prigondor d’espandiment',
'limitreport-expensivefunctioncount' => 'Nombre de foncions d’analisi costosas',
'spam_reverting' => '$1 ସହ ଯୋଡ଼ା ନଥିବା ଶେଷ ସଂସ୍କରଣକୁ ଲେଉଟାଇ ଦେଉଅଛୁଁ',
'spam_blanking' => '$1 ସହ ଯୋଡ଼ାଥିବା ସବୁଯାକ ସଂସ୍କରଣ ଖାଲି କରିଦିଆଗଲା',
'spam_deleting' => '$1 ସହ ଯୋଡ଼ାଥିବା ସବୁଯାକ ସଂସ୍କରଣ ଖାଲି କରିଦିଆଗଲା',
+'simpleantispam-label' => "ସ୍ପାମ-ବିରୋଧି ପରଖ ।
+ଏହାକୁ ଭରନ୍ତୁ '''ନାହିଁ''' !",
# Info page
'pageinfo-title' => '"$1"ର ବିବରଣୀ',
'emailnotauthenticated' => 'ਤੁਹਾਡਾ ਈਮੇਲ ਪਤਾ ਹਾਲੇ ਤਸਕਦੀਕ ਨਹੀਂ ਹੋਇਆ। ਹੇਠ ਦਿੱਤੇ ਫੀਚਰਾਂ ਲਈ ਕੋਈ ਵੀ ਈਮੇਲ ਨਹੀਂ ਭੇਜੀ ਜਾਵੇਗੀ।',
'noemailprefs' => 'ਇਹਨਾਂ ਸਹੂਲਤਾਂ ਦੀ ਵਰਤੋਂ ਲਈ ਆਪਣੀਆਂ ਪਸੰਦਾਂ ਵਿਚ ਇਕ ਈ-ਮੇਲ ਪਤਾ ਦਿਓ।',
'emailconfirmlink' => 'ਆਪਣਾ ਈਮੇਲ ਪਤਾ ਤਸਦੀਕ ਕਰਾਓ',
-'invalidemailaddress' => 'ਈ-ਮੇਲ ਪਤਾ ਕਬੂਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਕਿਉਂਕਿ ਇਹ ਸਹੀ ਅੰਦਾਜ਼ ਵਿਚ ਲਿਖਿਆ ਨਹੀਂ ਜਾਪਦਾ ਹੈ।
-ਸਹà©\80 à¨\85ੰਦਾà¨\9c਼ ਵਿà¨\9a ਦਿà¨\93 ਜਾਂ ਇਹ ਖ਼ਾਨਾ ਖ਼ਾਲੀ ਛੱਡ ਦਿਓ।',
+'invalidemailaddress' => 'ਈਮੇਲ ਪਤਾ ਕਬੂਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਕਿਉਂਕਿ ਇਹ ਸਹੀ ਅੰਦਾਜ਼ ਵਿਚ ਲਿਖਿਆ ਨਹੀਂ ਜਾਪਦਾ ਹੈ।
+ਸਹà©\80 à¨\85ੰਦਾà¨\9c਼ ਵਿà¨\9a ਲਿà¨\96à©\8b ਜਾਂ ਇਹ ਖ਼ਾਨਾ ਖ਼ਾਲੀ ਛੱਡ ਦਿਓ।',
'cannotchangeemail' => 'ਇਸ ਵਿਕੀ ਤੇ ਈ-ਮੇਲ ਪਤੇ ਬਦਲੇ ਨਹੀਂ ਜਾ ਸਕਦੇ।',
'emaildisabled' => 'ਇਹ ਸਾਈਟ ਈ-ਮੇਲਾਂ ਨਹੀਂ ਭੇਜ ਸਕਦੀ।',
'accountcreated' => 'ਖਾਤਾ ਬਣਾਇਆ',
'gender-female' => 'ਉਹ ਵਿਕੀ ਸਫ਼ੇ ਸੋਧਦੀ ਹੈ',
'email' => 'ਈਮੇਲ',
'prefs-help-realname' => 'ਅਸਲੀ ਨਾਂ ਚੋਣਵਾਂ ਹੈ, ਅਤੇ ਜੇ ਤੁਸੀਂ ਇਹ ਦਿੱਤਾ ਹੈ ਤਾਂ ਤੁਹਾਡੇ ਕੰਮ ਵਾਸਤੇ ਗੁਣ ਦੇ ਤੌਰ ਉੱਤੇ ਵਰਤਿਆ ਜਾਵੇਗਾ।',
-'prefs-help-email' => 'ਤà©\81ਹਾਡà©\80 ਮਰà¨\9cà©\80 ਹà©\88 à¨\88ਮà©\87ਲ ਪਤਾ ਦਿà¨\93 à¨\9cਾà¨\82 ਨਾ ਦਿà¨\93 ਪਰ ਪਾਸਵਰਡ à¨à©\81ੱਲ à¨\9cਾਣ ਤà©\87 ਨਵਾà¨\82 ਪਾਸਵਰਡ ਹਾਸਲ à¨\95ਰਨ ਲà¨\88 à¨\87ਹ à¨\9cਰੂਰੀ ਹੈ।',
+'prefs-help-email' => 'à¨\88ਮà©\87ਲ ਪਤਾ ਦà©\87ਣਾ ਤà©\81ਹਾਡà©\80 ਮਰà¨\9c਼à©\80 ਹà©\88, ਦਿà¨\93 à¨\9cਾà¨\82 ਨਾ ਦਿà¨\93 ਪਰ ਪਾਸਵਰਡ à¨à©\81ੱਲ à¨\9cਾਣ ਤà©\87 ਨਵਾà¨\82 ਪਾਸਵਰਡ ਹਾਸਲ à¨\95ਰਨ ਲà¨\88 à¨\87ਹ à¨\9c਼ਰੂਰੀ ਹੈ।',
'prefs-help-email-others' => 'ਤੁਸੀਂ ਇਹ ਵੀ ਚੁਣ ਸਕਦੇ ਹੋ ਕਿ ਤੁਹਾਡੇ ਵਰਤੋਂਕਾਰ ਜਾਂ ਚਰਚਾ ਪੰਨੇ ਤੋਂ ਹੋਰ ਵਰਤੋਂਕਾਰ ਤੁਹਾਨੂੰ ਈ-ਮੇਲ ਭੇਜ ਸਕਣ?
ਜਦੋਂ ਹੋਰ ਵਰਤੋਂਕਾਰ ਤੁਹਾਨੂੰ ਈ-ਮੇਲ ਭੇਜਦੇ ਹਨ ਤਾਂ ਤੁਹਾਡਾ ਈ-ਮੇਲ ਪਤਾ ਜ਼ਾਹਰ ਨਹੀਂ ਕੀਤਾ ਜਾਂਦਾ।',
'prefs-help-email-required' => 'ਈ-ਮੇਲ ਪਤਾ ਚਾਹੀਦਾ ਹੈ।',
'confirmemail_send' => 'ਇੱਕ ਤਸਦੀਕੀ ਕੋਡ ਭੇਜੋ',
'confirmemail_sent' => 'ਤਸਦੀਕੀ ਈਮੇਲ ਭੇਜੀ ਗਈ।',
'confirmemail_invalid' => 'ਗਲਤ ਪੁਸ਼ਟੀ ਕੋਡ ਹੈ। ਕੋਡ ਦੀ ਮਿਆਦ ਪੁੱਗੀ ਹੋ ਸਕਦੀ ਹੈ।',
+'confirmemail_success' => 'ਤੁਹਾਡਾ ਈਮੇਲ ਪਤਾ ਤਸਦੀਕ ਹੋ ਚੁੱਕਾ ਹੈ।
+ਤੁਸੀਂ ਹੁਣ [[Special:UserLogin|ਲਾਗਇਨ]] ਕਰ ਕੇ ਵਿਕੀ ਦਾ ਮਜ਼ਾ ਸਕਦੇ ਹੋ।',
'confirmemail_loggedin' => 'ਤੁਹਾਡਾ ਈ-ਮੇਲ ਪਤਾ ਹੁਣ ਤਸਦੀਕ ਹੋ ਚੁੱਕਾ ਹੈ।',
'confirmemail_subject' => '{{SITENAME}} ਈ-ਮੇਲ ਪਤਾ ਤਸਦੀਕ',
'confirmemail_invalidated' => 'ਈਮੇਲ ਪਤੇ ਦੀ ਤਸਦੀਕੀ ਰੱਦ ਕੀਤੀ ਗਈ',
ਸਧਾਰਨ ਝਲਕ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ।',
# Watchlist editor
-'watchlistedit-noitems' => 'ਤੁਹਾਡੀ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਵਿਚ ਕੋਈ ਸਿਰਲੇਖ ਨਹੀਂ ਹਨ।',
+'watchlistedit-numitems' => 'ਗੱਲ-ਬਾਤ ਸਫ਼ਿਆਂ ਤੋਂ ਬਿਨਾਂ, ਤੁਹਾਡੀ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਵਿੱਚ {{PLURAL:$1|1 ਸਿਰਲੇਖ ਹੈ|$1 ਸਿਰਲੇਖ ਹਨ}}।',
+'watchlistedit-noitems' => 'ਤੁਹਾਡੀ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਵਿੱਚ ਕੋਈ ਸਿਰਲੇਖ ਨਹੀਂ ਹਨ।',
'watchlistedit-normal-title' => 'ਨਿਗਰਾਨੀ-ਲਿਸਟ ਸੋਧੋ',
-'watchlistedit-normal-legend' => 'ਨਿà¨\97ਰਾਨà©\80-ਲਿਸà¨\9f ਤà©\8bà¨\82 ਸਿਰਲà©\87à¨\96 ਹਟਾਓ',
+'watchlistedit-normal-legend' => 'ਸਿਰਲà©\87à¨\96ਾà¨\82 ਨà©\82à©° ਨਿà¨\97ਰਾਨà©\80-ਲਿਸà¨\9f ਵਿੱà¨\9aà©\8bà¨\82 ਹਟਾਓ',
'watchlistedit-normal-submit' => 'ਸਿਰਲੇਖ ਹਟਾਓ',
+'watchlistedit-normal-done' => 'ਤੁਹਾਡੀ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਵਿੱਚੋਂ {{PLURAL:$1|1 ਸਿਰਲੇਖ ਹਟਾਇਆ ਗਿਆ|$1 ਸਿਰਲੇਖ ਹਟਾਏ ਗਏ}}:',
'watchlistedit-raw-title' => 'ਕੱਚੀ ਨਿਗਰਾਨ-ਸੂਚੀ ਸੋਧੋ',
-'watchlistedit-raw-legend' => 'ਕੱਚੀ ਨਿਗਰਾਨ-ਸੂਚੀ ਸੋਧੋ',
+'watchlistedit-raw-legend' => 'ਕੱਚੀ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਸੋਧੋ',
+'watchlistedit-raw-explain' => 'ਤੁਹਾਡੀ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਵਿੱਚ ਮੌਜੂਦ ਸਫ਼ੇ ਹਟਾਏ ਜਾਂ ਹੋਰ ਜੋੜੇ ਜਾ ਸਕਦੇ ਹਨ। ਹਟਾਉਣ ਜਾਂ ਜੋੜਨ ਤੋਂ ਬਾਅਦ "{{int:Watchlistedit-raw-submit}}" ’ਤੇ ਕਲਿੱਕ ਕਰੋ।
+ਤੁਸੀਂ [[Special:EditWatchlist|ਮਿਆਰੀ ਐਡੀਟਰ]] ਵੀ ਵਰਤ ਸਕਦੇ ਹੋ।',
'watchlistedit-raw-titles' => 'ਸਿਰਲੇਖ:',
'watchlistedit-raw-submit' => 'ਨਿਗਰਾਨੀ-ਲਿਸਟ ਤਾਜ਼ੀ ਕਰੋ',
-'watchlistedit-raw-done' => 'ਤੁਹਾਡੀ ਨਿਗਰਾਨ-ਸੂਚੀ ਅੱਪਡੇਟ ਹੋ ਗਈ ਹੈ।',
-'watchlistedit-raw-added' => '{{PLURAL:$1|1 title was|$1 titles were}} ਸ਼ਾਮਲ:',
-'watchlistedit-raw-removed' => '{{PLURAL:$1|1 title was|$1 titles were}} ਹਟਾਓ:',
+'watchlistedit-raw-done' => 'ਤੁਹਾਡੀ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਅੱਪਡੇਟ ਹੋ ਗਈ ਹੈ।',
+'watchlistedit-raw-added' => '{{PLURAL:$1|1 ਸਿਰਲੇਖ ਸ਼ਾਮਲ ਕੀਤਾ|$1 ਸਿਰਲੇਖ ਸ਼ਾਮਲ ਕੀਤੇ}}:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|1 ਸਿਰਲੇਖ ਹਟਾਇਆ|$1 ਸਿਰਲੇਖ ਹਟਾਏ}}:',
# Watchlist editing tools
'watchlisttools-view' => 'ਸਬੰਧਤ ਤਬਦੀਲੀਆਂ ਵੇਖੋ',
'userlogin-resetpassword-link' => 'Nie pamiętasz hasła?',
'helplogin-url' => 'Help:Logowanie',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Pomoc z logowaniem]]',
+'userlogin-loggedin' => 'Zalogowano jako {{GENDER:$1|$1}}.
+Użyj poniższego formularza, aby zalogować się jako inny użytkownik.',
+'userlogin-createanother' => 'Załóż nowe konto',
'createacct-join' => 'Wpisz poniżej swoje dane.',
'createacct-another-join' => 'Wprowadź szczegóły nowego konta poniżej.',
'createacct-emailrequired' => 'Adres e‐mail',
'logdelete-selected' => "'''Zaznaczone {{PLURAL:$1|zdarzenie|zdarzenia}} z rejestru:'''",
'revdelete-text' => "'''Usunięte wersje i czynności będą nadal widoczne w historii strony i rejestrach, ale ich treść nie będzie publicznie dostępna.'''
Inni administratorzy {{GRAMMAR:D.lp|{{SITENAME}}}} nadal będą mieć dostęp do ukrytych treści oraz będą mogli je odtworzyć używając standardowych mechanizmów, chyba że nałożono dodatkowe ograniczenia.",
-'revdelete-confirm' => 'Potwierdź, że chcesz to zrobić, rozumiesz konsekwencje oraz że robisz to zgodnie z [[{{MediaWiki:Policy-url}}|zasadami]].',
+'revdelete-confirm' => 'Potwierdź, że chcesz to zrobić zgodnie z [[{{MediaWiki:Policy-url}}|zasadami]] i że rozumiesz konsekwencje.',
'revdelete-suppress-text' => "Ukrywanie powinno być używane '''wyłącznie''' w sytuacji:
* Ujawnienie danych osobowych
*: ''adres domowy, numer telefonu, numer PESEL itp''",
'spam_reverting' => 'Przywracanie ostatniej wersji nie zawierającej linków do $1',
'spam_blanking' => 'Wszystkie wersje zawierały odnośniki do $1. Czyszczenie strony.',
'spam_deleting' => 'Wszystkie wersje zawierały linki do $1, usuwam.',
+'simpleantispam-label' => "Filtr antyspamowy.
+'''NIE''' wpisuj tu nic!",
# Info page
'pageinfo-title' => 'Informacje o „$1“',
'tag-filter-submit' => 'Filtr',
'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Znacznik|Znaczniki}}]]: $2)',
'tags-title' => 'Znaczniki',
-'tags-intro' => 'Na tej stronie znajduje się lista wzorców tekstu, dla których oprogramowanie może oznaczyć edycje, dodatkowo wskazując ich znaczenie.',
+'tags-intro' => 'Na tej stronie znajduje się lista znaczników, którymi oprogramowanie może oznaczyć edycje, oraz ich opisów.',
'tags-tag' => 'Nazwa znacznika',
'tags-display-header' => 'Wystąpienia na listach zmian',
'tags-description-header' => 'Pełny opis znaczenia',
'nocreatetext' => "{{SITENAME}} a l'ha limità la possibilità ëd creé dle pàgine neuve.
A peul torné andaré e modifiché na pàgina che a-i é già, ò pura [[Special:UserLogin|rintré ant ël sistema ò deurb-se un cont]].",
'nocreate-loggedin' => "A l'ha pa ël përmess ëd creé dle pàgine neuve.",
-'sectioneditnotsupported-title' => "La modìfica dla session a l'é nen prevëdùa",
-'sectioneditnotsupported-text' => "La modìfica dla session a l'é nen prevëdùa an costa pàgina ëd modìfica.",
+'sectioneditnotsupported-title' => "La modìfica ëd session a l'é nen mantnùa",
+'sectioneditnotsupported-text' => "La modìfica ëd na session a l'é nen mantnùa për costa pàgina.",
'permissionserrors' => 'Eror ant ij përmess',
-'permissionserrorstext' => "A l'ha pa ij përmess dont a fa da manca për {{PLURAL:$1|via che|via che}}:",
-'permissionserrorstext-withaction' => "It l'has nen ij përmess për $2, për {{PLURAL:$1|cost motiv|costi motiv}}:",
-'recreate-moveddeleted-warn' => "A l'é an camin ch'a crea torna na pàgina ch'a l'era stàita scancelà.'''
+'permissionserrorstext' => "A l'ha pa ij përmess dont a fa da manca për {{PLURAL:$1|via che}}:",
+'permissionserrorstext-withaction' => "A l'ha nen ij përmess për $2, për {{PLURAL:$1|cost motiv|costi motiv}}:",
+'recreate-moveddeleted-warn' => "'''Atension: a l'é an camin ch'a crea torna na pàgina ch'a l'era stàita scancelà.'''
Ch'a varda d'esse sigur ch'a vala la pen-a ëd travajé an sna pàgina parèj.
Për soa comodità i-j mostroma la lista djë scancelament ch'a toco sta pàgina-sì:",
'moveddeleted-notice' => "Sta pàgina-sì a l'é stàita scancelà.
-Ël registr ëd le scancelassion e dij tramud a l'é arportà sota për arferiment.",
-'log-fulllog' => 'Varda tut ël registr',
+Ël registr ëd le scancelassion e dij tramud a l'é arportà sì-sota për arferiment.",
+'log-fulllog' => 'Vëdde tut ël registr',
'edit-hook-aborted' => "Modìfica anulà da n'estension.
-A-i é pa gnun-e spiegassion.",
-'edit-gone-missing' => 'As peul nen modifiché la pàgina.
+A-i é pa dë spiegassion.",
+'edit-gone-missing' => 'As peul nen agiornesse la pàgina.
A smija che a sia stàita scancelà.',
-'edit-conflict' => "Conflit d'edission.",
-'edit-no-change' => "Toa modìfica a l'é stàita ignorà, përchè a l'é pa stàit fàit gnun cambiament al test.",
-'postedit-confirmation' => "Soa modìfica a l'é stàita salvà!",
+'edit-conflict' => 'Conflit ëd modìfiche.',
+'edit-no-change' => "Soa modìfica a l'é stàita ignorà, përchè gnun cambiament a l'é stàit fàit al test.",
+'postedit-confirmation' => "Soa modìfica a l'é stàita salvà.",
'edit-already-exists' => 'As peul nen creesse la pàgina.
A esist già.',
'defaultmessagetext' => "Test che a-i sarìa se a-i fusso pa 'd modìfiche",
'spam_reverting' => "Butà andaré a l'ùltima version che a l'avèissa pa andrinta dj'anliure a $1",
'spam_blanking' => "Pàgina dësvujdà, che tute le version a l'avìo andrinta dj'anliure a $1",
'spam_deleting' => 'Scancelà, dagià che tute le revision a contnisìo dle liure a $1',
+'simpleantispam-label' => "Contròl contra la rumenta.
+Compilé '''NEN''' sòn!",
# Info page
'pageinfo-title' => 'Anformassion për «$1»',
'spambot_username' => 'میڈیاوکی سپام سفائی',
'spam_reverting' => 'آخری ریوین ول جیدے چ $1 دے جوڑ ناں ہون۔',
'spam_blanking' => 'سارے ریوین جناں چ $1 نوں جوڑ نیں، طاف کیتا جاریا اے۔',
+'simpleantispam-label' => 'سپام روک پھاٹک
+ایدے تے ناں لکھو۔',
# Info page
'pageinfo-title' => '"$1" لئی جانکاری',
Isto pode indicar um defeito no programa.',
'databaseerror-textcl' => 'Ocorreu um erro na consulta à base de dados.',
'databaseerror-query' => 'Consulta:$1',
+'databaseerror-function' => 'Função: $1',
'databaseerror-error' => 'Erro: $1',
'laggedslavemode' => "'''Aviso:''' A página pode não conter as atualizações mais recentes.",
'readonly' => 'Base de dados bloqueada (limitada a leituras)',
'prefs-dateformat' => 'Formato de data',
'prefs-timeoffset' => 'Desvio horário',
'prefs-advancedediting' => 'Opções gerais',
+'prefs-editor' => 'Editor',
'prefs-preview' => 'Antevisão',
'prefs-advancedrc' => 'Opções avançadas',
'prefs-advancedrendering' => 'Opções avançadas',
'prefs-displaywatchlist' => 'Opções de apresentação',
'prefs-tokenwatchlist' => 'Chave',
'prefs-diffs' => 'Diferenças',
+'prefs-help-prefershttps' => 'Esta preferência terá efeito no seu próximo início de sessão.',
# User preference: email validation using jQuery
'email-address-validity-valid' => 'Parece válido',
'userrights-notallowed' => 'A sua conta não tem permissão para adicionar ou remover privilégios a utilizadores.',
'userrights-changeable-col' => 'Grupos que pode alterar',
'userrights-unchangeable-col' => 'Grupos que não pode alterar',
-'userrights-conflict' => 'Conflito com os privilégios dos utilizadores! Por favor, aplique as suas mudanças novamente.',
+'userrights-conflict' => 'Conflito entre alterações de privilégios de utilizador! Por favor, revise e confirme as suas mudanças.',
'userrights-removed-self' => 'Você removeu com sucesso os seus privilégios. Como resultado disso, já não consegue aceder a esta página.',
# Groups
'right-unblockself' => 'Desbloquearem-se a si próprios',
'right-protect' => 'Mudar níveis de proteção e editar páginas protegidas em cascata',
'right-editprotected' => 'Editar páginas protegidas como "{{int:protect-level-sysop}}"',
+'right-editsemiprotected' => 'Editar páginas protegidas como "{{int:protect-level-autoconfirmed}}"',
'right-editinterface' => 'Editar a interface de utilizador',
'right-editusercssjs' => 'Editar os ficheiros CSS e JS de outros utilizadores',
'right-editusercss' => 'Editar os ficheiros CSS de outros utilizadores',
'right-edituserjs' => 'Editar os ficheiros JS de outros utilizadores',
'right-editmyusercss' => 'Editar os seus próprios ficheiros CSS de utilizador',
'right-editmyuserjs' => 'Editar os seus próprios ficheiros JavaScript de utilizador',
+'right-viewmyprivateinfo' => 'Ver os seus próprios dados privados (ex.: endereço de e-mail, nome real)',
+'right-editmyprivateinfo' => 'Editar os seus próprios dados privados (ex.: endereço de e-mail, nome real)',
+'right-editmyoptions' => 'Editar as suas próprias preferências',
'right-rollback' => 'Reverter rapidamente as edições do último utilizador que editou uma página em particular',
'right-markbotedits' => 'Marcar edições revertidas como edições de bot',
'right-noratelimit' => 'Não ser afetado pelos limites de velocidade de operação',
'action-block' => 'impedir este utilizador de editar',
'action-protect' => 'alterar os níveis de proteção desta página',
'action-rollback' => 'reverter rapidamente as edições do último utilizador que editou uma dada página',
-'action-import' => 'importar esta página a partir de outra wiki',
-'action-importupload' => 'importar esta página a partir de um ficheiro xml',
+'action-import' => 'importar páginas a partir de outra wiki',
+'action-importupload' => 'importar páginas por meio do envio de um ficheiro',
'action-patrol' => 'marcar as edições de outros utilizadores como patrulhadas',
'action-autopatrol' => 'marcar como patrulhadas as suas próprias edições',
'action-unwatchedpages' => 'ver a lista de páginas não-vigiadas',
# Recent changes
'nchanges' => '$1 {{PLURAL:$1|alteração|alterações}}',
+'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|desde a última visita}}',
+'enhancedrc-history' => 'histórico',
'recentchanges' => 'Mudanças recentes',
'recentchanges-legend' => 'Opções das mudanças recentes',
'recentchanges-summary' => 'Acompanhe nesta página as mudanças mais recentes da wiki.',
'listfiles_description' => 'Descrição',
'listfiles_count' => 'Versões',
'listfiles-show-all' => 'Incluir versões antigas de imagens',
+'listfiles-latestversion' => 'Versão atual',
+'listfiles-latestversion-yes' => 'Sim',
'listfiles-latestversion-no' => 'Não',
# File description page
'pageswithprop-text' => 'Esta página lista páginas que usam uma propriedade em particular.',
'pageswithprop-prop' => 'Nome da propriedade:',
'pageswithprop-submit' => 'Avançar',
-'pageswithprop-prophidden-long' => 'foi ocultado o valor da propriedade por ser um texto muito longo ($1 kilobytes)',
-'pageswithprop-prophidden-binary' => 'foi ocultado o valor da propriedade por ser binário ($1 kilobytes)',
+'pageswithprop-prophidden-long' => 'foi ocultado o valor da propriedade por ser um texto muito longo ($1)',
+'pageswithprop-prophidden-binary' => 'foi ocultado o valor da propriedade por ser binário ($1)',
'doubleredirects' => 'Redirecionamentos duplos',
'doubleredirectstext' => 'Esta página lista todas as páginas que redirecionam para outras páginas de redirecionamento.
'spam_reverting' => 'A reverter para a última revisão que não contém links para $1',
'spam_blanking' => 'Todas as revisões continham links para $1; a esvaziar',
'spam_deleting' => 'Todas as revisões continham links para $1; a eliminar',
+'simpleantispam-label' => "Verificação contra spam
+'''NÃO''' preencha isto!",
# Info page
'pageinfo-title' => 'Informações sobre "$1"',
'tags-description-header' => 'Descrição completa do significado',
'tags-active-header' => 'Ativa?',
'tags-hitcount-header' => 'Modificações etiquetadas',
+'tags-active-yes' => 'Sim',
+'tags-active-no' => 'Não',
'tags-edit' => 'editar',
'tags-hitcount' => '$1 {{PLURAL:$1|modificação|modificações}}',
'dberr-problems' => 'Desculpe! Este site está com dificuldades técnicas.',
'dberr-again' => 'Experimente esperar alguns minutos e atualizar.',
'dberr-info' => '(Não foi possível contactar o servidor da base de dados: $1)',
+'dberr-info-hidden' => '(Não foi possível contactar o servidor de base de dados)',
'dberr-usegoogle' => 'Pode tentar pesquisar no Google entretanto.',
'dberr-outofdate' => 'Note que os seus índices relativos ao nosso conteúdo podem estar desatualizados.',
'dberr-cachederror' => 'A seguinte página é uma cópia em cache da página pedida e pode não estar atualizada.',
# Limit report
'limitreport-cputime-value' => '$1 {{PLURAL:$1|segundo|segundos}}',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|segundo|segundos}}',
'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|byte|bytes}}',
'limitreport-templateargumentsize' => 'Tamanho dos argumentos da predefinição',
'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|byte|bytes}}',
* @author Sir Lestaty de Lioncourt
* @author Teles
* @author TheGabrielZaum
+ * @author Titoncio
* @author Urhixidur
* @author Vivaelcelta
* @author Vuln
'spam_reverting' => 'Revertendo para a última versão que não contém links para $1',
'spam_blanking' => 'Todas revisões contendo links para $1, limpando',
'spam_deleting' => 'Eliminada por todas as suas edições conterem links para $1',
+'simpleantispam-label' => "Verificação contra spam
+'''NÃO''' preencha isto!",
# Info page
'pageinfo-title' => 'Informações sobre "$1"',
Parameters:
* $1 - a spammed domain name',
+'simpleantispam-label' => 'Used as label for the input box in "Edit" page.
+
+The label and the input box are always hidden.',
# Info page
'pageinfo-title' => 'Page title for action=info. Parameters:
# General errors
'error' => 'Pantasqa',
'databaseerror' => 'Willañiqintin pantasqa',
+'databaseerror-text' => "Willañiqintin maskana pantasqam tukurqan. Llamp'u kaqpi pantasqachá kachkan.",
+'databaseerror-textcl' => 'Willañiqintin maskana pantasqam tukurqan.',
+'databaseerror-query' => 'Maskana: $1',
+'databaseerror-function' => 'Ruray paqtachi: $1',
+'databaseerror-error' => 'Pantasqa: $1',
'laggedslavemode' => "'''Paqtataq''': Kay p'anqapiqa manaraqchá kachkanchu aswan qayna musuqchasqakuna.",
'readonly' => "Willañiqintinqa hark'asqam",
'enterlockreason' => "Qillqamuy imarayku hark'asqa karqan, hayk'appas manañachá hark'asqachu kanqa",
'cannotdelete-title' => 'Manam atinichu "$1" sutiyuq p\'anqata qulluyta',
'delete-hook-aborted' => "Ch'iwinam qulluyta t'ipirqan.
Manam nirqanchu imarayku.",
+'no-null-revision' => 'Manam atinichu "$1" p\'anqapaq musuq ch\'usaq musuqchasqata kamariyta.',
'badtitle' => "P'anqap sutinqa manam allinchu",
'badtitletext' => "Kay p'anqap sutinqa manam allinchu, mana allin interwiki t'inkichá icha ch'usaqchá, p'anqa sutipaq mana saqillasqa sananchayuqchá.",
'perfcached' => "Kay qatiq willakunaqa ''cache'' nisqa pakasqa hallch'apim kachkan, chayrayku manañachá musuqchasqachu. {{PLURAL:$1|Huklla|$1-lla}} taripasqam pakasqa hallch'api aypalla kachkan, manam aswanchu.",
'customjsprotected' => "Manam saqillasunkichu kay JavaScript p'anqata llamk'apuyta, huk ruraqpa kikin tiyachisqankunayuq kaptinmi.",
'mycustomcssprotected' => "Kay CSS p'anqataqa manam llamk'apuyta atinkichu.",
'mycustomjsprotected' => "Kay JavaScript p'anqataqa manam llamk'apuyta atinkichu.",
+'myprivateinfoprotected' => "Manam saqillasqachu kanki kikiykip akuna willaykikunata llamk'apunaykipaq.",
+'mypreferencesprotected' => "Manam saqillasqachu kanki allinkachinaykikunata llamk'apunaykipaq.",
'ns-specialprotected' => "{{ns:special}} suti k'itipi p'anqakunaqa manam llamk'apunallachu.",
'titleprotected' => "Kay p'anqa sutitaqa [[User:$1|$1]] sutiyuq ruraq kamariymanta hark'arqanmi, kayraykum nispa: ''$2''.",
'filereadonlyerror' => 'Manam atinichu "$1" sutiyuq willañiqita hukchayta, "$2" sutiyuq willañiqi churamuna ñawirillanapaq kachkaptinmi.
'yourname' => 'Ruraq sutiyki:',
'userlogin-yourname' => 'Ruraqpa sutin',
'userlogin-yourname-ph' => 'Ruraqpa sutiykita yaykuchiy',
+'createacct-another-username-ph' => 'Ruraqpa sutinta yaykuchiy',
'yourpassword' => 'Yaykuna rimayki',
'userlogin-yourpassword' => 'Yaykuna rima',
'userlogin-yourpassword-ph' => 'Yaykuna rimaykita yaykuchiy',
'userlogin-resetpassword-link' => 'Yaykuna rimaykita kutichiy',
'helplogin-url' => 'Help:Yaykuy',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Yaykunapaq yanapa]]',
+'userlogin-createanother' => 'Huk rakiqunata kamariy',
'createacct-join' => 'Kay qatiqpi willaykita yaykuchiy.',
'createacct-emailrequired' => 'E-chaski imamayta',
'createacct-emailoptional' => 'E-chaski imamayta (munaspayki)',
'createacct-email-ph' => 'E-chaski imamaytaykita yaykuchiy',
+'createacct-another-email-ph' => 'E-chaski imamaytata yaykuchiy',
'createaccountmail' => "Kikinmanta tukusqa mit'alla yaykuna rimata llamk'achispa akllasqa e-chaski imamaytaman kachay",
'createacct-realname' => 'Chiqap suti (munaspayki)',
'createaccountreason' => 'Kayrayku:',
'createacct-captcha' => 'Amachana llanchiy',
'createacct-imgcaptcha-ph' => 'Hanaqpi rikusqayki qillqata yaykuchiy',
'createacct-submit' => 'Rakiqunaykita kamariy',
+'createacct-another-submit' => 'Huk rakiqunata kamariy',
'createacct-benefit-heading' => '{{SITENAME}}taqa qam hina runakunam ruran.',
'createacct-benefit-body1' => "{{PLURAL:$1|llamk'apusqa|llamk'apusqakuna}}",
'createacct-benefit-body2' => "{{PLURAL:$1|p'anqa|p'anqakuna}}",
'login-abort-generic' => 'Yaykuykachaspayki manam ayparqankichu - Allqasqa',
'loginlanguagelabel' => 'Rimay: $1',
'suspicious-userlogout' => "Lluqsiy mañakuyniykiqa mananchasqam karqan, waqllisqa wamp'unamanta icha pakaq proksimanta kachasqa kaspanchá.",
+'createacct-another-realname-tip' => "* Chiqap sutiqa munanallapaqmi. Quwaptiykiqa, llamk'apusqakunam paywan sananchasqa kanqa.",
# Email sending
'php-mail-error-unknown' => 'Mana riqsisqa pantasqa PHP mail() rurananpi',
'changeemail-submit' => 'E-chaskita wakinchay',
'changeemail-cancel' => 'Ama niy',
+# Special:ResetTokens
+'resettokens' => 'Llawikunata kutichiy',
+'resettokens-no-tokens' => 'Manam kanchu kutichina llawikuna.',
+'resettokens-legend' => 'Llawikunata kutichiy',
+'resettokens-tokens' => 'Llawikuna:',
+'resettokens-token-label' => '$1 (kunan chani: $2)',
+'resettokens-done' => 'Llawikunaqa kutichimusqañam.',
+'resettokens-resetbutton' => 'Akllasqa llawikunata kutichimuy',
+
# Edit page toolbar
'bold_sample' => 'Yanasapa qillqa',
'bold_tip' => 'Yanasapa qillqa',
'undo-failure' => "Manam atinichu llamk'apusqata kutichiyta, huk ruraqtaq musuqta llamk'apurquptinñam.",
'undo-norev' => "Manam atinichu llamk'apusqata kutichiyta, mana kaptinmi icha qullusqa kaptinmi.",
'undo-summary' => '[[Special:Contributions/$2|$2]]-pa $1 hukchasqanta kutichisqa ([[User talk:$2|rimay]])',
+'undo-summary-username-hidden' => 'Pakasqa ruraqpa $1 nisqa musuqchasqata kutichiy',
# Account creation failure
'cantcreateaccounttitle' => 'Manam atinichu rakiqunata kichayta',
'compareselectedversions' => "Akllasqa llamk'apusqakunata wakichay",
'showhideselectedversions' => 'Akllasqa musuqchasqakunata rikuchiy/pakay',
'editundo' => 'kutichiy',
+'diff-empty' => '(Manam wak hina kanchu)',
'diff-multi' => "({{PLURAL:$2|Huk ruraqpa|$2 ruraqpa}} {{PLURAL:$1|chawpipi huk llamk'apusqanqa manam rikuchisqachu|chawpipi $1 llamk'apusqankunaqa manam rikuchisqachu}})",
'diff-multi-manyusers' => "({{PLURAL:$2|Hukmanta|$2-manta}} aswan ruraqkunap {{PLURAL:$1|chawpipi huk llamk'apusqanqa manam rikuchisqachu|chawpipi $1 llamk'apusqankunaqa manam rikuchisqachu}})",
'difference-missing-revision' => "Kay wakin kaymanta ($1) {{PLURAL:$2|huk musuqchasqa|$2 musuqchasqakuna}} manam tarisqachu.
'prefs-dateformat' => "P'unchaw rikch'ay",
'prefs-timeoffset' => 'Pacha wakinyay',
'prefs-advancedediting' => 'Sapsi akllanakuna',
+'prefs-editor' => "P'anqachaq",
+'prefs-preview' => 'Ñawpaqta qhawallay',
'prefs-advancedrc' => 'Ñawparikusqa akllanakuna',
'prefs-advancedrendering' => 'Ñawparikusqa akllanakuna',
'prefs-advancedsearchoptions' => 'Ñawparikusqa akllanakuna',
'prefs-displayrc' => 'Akllanakunata rikuchiy',
'prefs-displaysearchoptions' => 'Akllanakunata rikuchiy',
'prefs-displaywatchlist' => 'Akllanakunata rikuchiy',
+'prefs-tokenwatchlist' => 'Llawi',
'prefs-diffs' => 'Wakin kaykuna',
# User preference: email validation using jQuery
'right-unblockself' => "Kikinta hark'asqamanta qispikuy",
'right-protect' => "Amachasqa kachkayta hukchay, ch'aqtasqa amachasqa p'anqakunata llamk'apuy",
'right-editprotected' => 'Amachasqa p\'anqakunata "{{int:protect-level-sysop}}" hina llamk\'apuy',
+'right-editsemiprotected' => '"{{int:protect-level-autoconfirmed}}" hina amachasqa p\'anqakunata llamk\'apuy',
'right-editinterface' => "Ruraqpaq uyapurata llamk'apuy",
'right-editusercssjs' => "Huk ruraqkunap CSS, JS willañiqinkunata llamk'apuy",
'right-editusercss' => "Huk ruraqkunap CSS willañiqinkunata llamk'apuy",
'right-edituserjs' => "Huk ruraqkunap JS willañiqinkunata llamk'apuy",
'right-editmyusercss' => "Kikiykip ruraqpaq CSS willañiqiykikunata llamk'apuy",
'right-editmyuserjs' => "Kikiykip ruraqpaq JavaScript willañiqiykikunata llamk'apuy",
+'right-viewmywatchlist' => 'Kikiykip watiqasqayki sutisuyuykita qhaway',
+'right-editmywatchlist' => "Kikiykip watiqasqayki sutisuyuykita llamk'apuy. Paqtataq, huk ruranakunaqa p'anqakunata yapanqaraqmi kay hañi mana kaptinpas.",
+'right-viewmyprivateinfo' => 'Kikiykip akuna willaykikunata qhaway (ahinataq e-chaski imamaytayki, chiqap sutiyki)',
+'right-editmyprivateinfo' => "Kikiykip akuna willaykikunata llamk'apuy (ahinataq e-chaski imamaytayki, chiqap sutiyki)",
+'right-editmyoptions' => "Kikiykip allinkachinaykikunata llamk'apuy",
'right-rollback' => "Huk p'anqapi qhipaq llamk'apuqpa hukchasqankunata utqaylla kutichiy",
'right-markbotedits' => "Kutichisqa llamk'apusqakunata rurana antachap llamk'apusqankunata hina sananchay",
'right-noratelimit' => 'Achura saywakunap manam chayachisqanchu',
'action-userrights-interwiki' => "hawa wikikunapi ruraqkunap hayñinkunata llamk'apuy",
'action-siteadmin' => "willañiqintinta hark'ay icha paskay",
'action-sendemail' => 'e-chaskikunata kachay',
+'action-editmywatchlist' => "watiqasqayki sutisuyuta llamk'apuy",
+'action-viewmywatchlist' => 'watiqasqayki sutisuyuta qhaway',
+'action-viewmyprivateinfo' => 'kikiykip akuna willaykikunata qhaway',
+'action-editmyprivateinfo' => "kikiykip akuna willaykikunata llamk'apuy",
# Recent changes
'nchanges' => '$1 {{PLURAL:$1|hukchasqa|hukchasqakuna}}',
+'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|qhipaq watukusqamantapacha}}',
+'enhancedrc-history' => 'wiñay kawsay',
'recentchanges' => 'Ñaqha hukchasqa',
'recentchanges-legend' => 'Ñaqha hukchasqapaq allinkachinakuna',
'recentchanges-summary' => "Kay p'anqapiqa aswan qhipaq ñaqha hukchasqakunam.",
+'recentchanges-noresult' => "Kay taripanakama hukchasqakunaqa akllasqa mit'api manam kanchu.",
'recentchanges-feed-description' => 'Kay mikhuchinapi wikipi qhipaq ñaqha hukchasqakunata qatiy.',
'recentchanges-label-newpage' => "Kayta llamk'apuptiykim musuq p'anqam tukukurqun",
'recentchanges-label-minor' => "Kayqa aslla llamk'apuymi",
'listfiles_size' => 'Hatun kay',
'listfiles_description' => "T'iktuna",
'listfiles_count' => 'Musuqchasqakuna',
+'listfiles-show-all' => "Rikchakunamanta mawk'a musuqchasqakunata ch'aqtay",
+'listfiles-latestversion' => 'Kunan musuqchasqa',
+'listfiles-latestversion-yes' => 'Arí',
+'listfiles-latestversion-no' => 'Mana',
# File description page
'file-anchor-link' => 'Rikcha',
'randompage' => "Mayninpi p'anqa",
'randompage-nopages' => "Manam ima p'anqapas kanchu kay suti {{PLURAL:$2|k'itipi|k'itikunapi}}: $1.",
+# Random page in category
+'randomincategory' => "Katiguriyapi kikinmanta p'anqa",
+'randomincategory-invalidcategory' => '"$1" nisqaqa katiguriyapaq manam allin sutinchu.',
+'randomincategory-nopages' => "[[:Category:$1|$1]] katiguriyapiqa manam p'anqakuna kanchu.",
+'randomincategory-selectcategory' => "Katiguriyamanta kikinmanta p'anqata chaskiy: $1 $2.",
+'randomincategory-selectcategory-submit' => 'Riy',
+
# Random redirect
'randomredirect' => "Mayninpi pusapuna p'anqa",
'randomredirect-nopages' => 'Manam kanchu "$1" nisqa suti k\'itipi pusapuna p\'anqakuna.',
'tags-tag' => 'Unanchachap sutin',
'tags-display-header' => "Hukchasqakunamanta sutisuyup rikch'akuynin",
'tags-description-header' => "Sut'inmanta hunt'a ch'uyanchaynin",
+'tags-active-header' => 'Ruraqllachu?',
'tags-hitcount-header' => 'Unanchasqa hukchasqakuna',
+'tags-active-yes' => 'Arí',
+'tags-active-no' => 'Mana',
'tags-edit' => "llamk'apuy",
'tags-hitcount' => '$1 {{PLURAL:$1|hukchasqa|hukchasqakuna}}',
# Image rotation
'rotate-comment' => "Rikch'aqa pacha rikuchiqwan $1 {{PLURAL:$1|k'atma}} muyusqam",
+# Limit report
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|sikundu|sikundukuna}}',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|sikundu|sikundukuna}}',
+'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|byte}}',
+'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|byte}}',
+
);
'noindex-category' => 'Pagini neindexate',
'broken-file-category' => 'Pagini cu legături invalide către fișiere',
-'linkprefix' => '/^((?>.*(?<![a-zA-Z\\x80-\\xff])))(.+)$/sD',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'Despre',
'article' => 'Articol',
'spam_reverting' => 'Revenire la ultima versiune care nu conține legături către $1',
'spam_blanking' => 'Toate versiunile conținând legături către $1 au fost golite',
'spam_deleting' => 'Toate versiunile conținând legături către $1 au fost șterse',
+'simpleantispam-label' => "Verificare antispam.
+'''NU''' completați!",
# Info page
'pageinfo-title' => 'Informații pentru „$1”',
'broken-file-category' => 'Pàggene cu collegaminde a le file scuasciate',
'categoryviewer-pagedlinks' => '($1) ($2)',
-'linkprefix' => '/^((?>.*(?<![a-zA-Z\\x80-\\xff])))(.+)$/sD',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'Sus a',
'article' => 'Pàgene de le condenute',
'spam_reverting' => "Turnanne a l'urtema revisione no ge condiene collegaminde a $1",
'spam_blanking' => 'Tutte le revisiune condènene collegaminde a $1, vacande',
'spam_deleting' => 'Tutte le revisiune condènene collegaminde a $1, stoche a scangelle',
+'simpleantispam-label' => "Verifiche andi-spam.
+'''NO''' anghiè quiste!",
# Info page
'pageinfo-title' => '\'Mbormaziune pe "$1"',
'logout' => 'Завершение сеанса',
'userlogout' => 'Завершение сеанса',
'notloggedin' => 'Вы не представились системе',
-'userlogin-noaccount' => 'Нет учетной записи?',
+'userlogin-noaccount' => 'Нет учётной записи?',
'userlogin-joinproject' => 'Присоединиться к проекту',
'nologin' => 'Нет учётной записи? $1.',
'nologinlink' => 'Создать учётную запись',
'spam_reverting' => 'Откат к последней версии, не содержащей ссылки на $1',
'spam_blanking' => 'Все версии содержат ссылки на $1, очистка',
'spam_deleting' => 'Все версии содержали ссылки на $1, производится удаление',
+'simpleantispam-label' => "Анти-спам проверка.
+'''НЕ''' заполняйте это!",
# Info page
'pageinfo-title' => 'Сведения по «$1»',
'spam_reverting' => 'Реверт на послїдню верзію необсягуючу одказы на $1',
'spam_blanking' => 'Вшыткы ревізії обсяговали одказы на $1, выпорожнєны',
'spam_deleting' => 'Вшыткы ревізії обсяговали одказы на $1, змазане',
+'simpleantispam-label' => "Перевірка на спам.
+'''НЕ''' заповнюйте тото!",
# Info page
'pageinfo-title' => 'Інформація про "$1"',
'spam_reverting' => '$1 इत्यनेन नानुबद्धनां प्राचीनपुनरावृत्तीनां पुनस्थापनं कुर्वन्ति ।',
'spam_blanking' => 'सर्वाः पुनरावृत्तयः $1 इत्यस्य अनुबन्धाः पूर्णपाठाः अपनीयन्ते ।',
'spam_deleting' => 'सर्वाः पुनरावृत्तयः $1 इत्यस्य अनुबन्धाः । पूर्णपाठाः अपनीयन्ते ।',
+'simpleantispam-label' => "अनिष्टसन्देशविरोधपरीक्षणम् ।
+अस्मिन् '''नहि''' पूर्यताम् !",
# Info page
'pageinfo-title' => '"$1" कृते सूचनाः ।',
'spam_reverting' => 'Манна: $1 ыйынньыга суох бүтэһик торуму сөргүтүү (төннөрүү)',
'spam_blanking' => 'Бары торумнар манна "$1" ыйынньыктаахтар, барытын суох оҥоруу',
'spam_deleting' => 'Бары барыллар манна "$1" сигэнэллэр эит, сотуу бара турар',
+'simpleantispam-label' => "Анти-спам бэрэбиэркэтэ.
+Маны '''толорумаҥ'''!",
# Info page
'pageinfo-title' => '"$1" туһунан',
'index-category' => 'Pàginas indicizadas',
'noindex-category' => 'Pàginas no indicitzadas',
-'linkprefix' => '/^((?>.*(?<![a-zA-Z\\x80-\\xff])))(.+)$/sD',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'A propòsitu de',
'article' => 'Artìculu',
'noindex-category' => 'සූචිගත නොකළ පිටු',
'broken-file-category' => 'භින්න වූ ගොනු සබැඳි සහිත පිටු',
-'linkprefix' => '/^((?>.*(?<![a-zA-Z\\x80-\\xff])))(.+)$/sD',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'පිළිබඳ',
'article' => 'පටුන',
'spambot_username' => 'මීඩියාවිකි ස්පෑම් ඉවත්කිරීම',
'spam_reverting' => ' $1 හට සබැඳියන් නොමැති අවසන් අනුවාදය වෙත ප්රතිවර්තනය වෙමින්',
'spam_blanking' => 'සියළු සංශෝධනයන්හි $1 වෙතවූ සබැඳියන් අඩංගු විය, හිස්කරමින්',
+'simpleantispam-label' => "ප්රති-ස්පෑම පරීක්ෂාව.
+කරුණාකර මෙය පුරවන්න '''එපා'''!",
# Info page
'pageinfo-title' => '"$1" සඳහා තොරතුරු',
'spam_reverting' => 'Vraciam poslednú verziu, ktorá neobsahuje odkazy na $1',
'spam_blanking' => 'Všetky revízie obsahovali odkaz na $1, odstraňujem obsah',
'spam_deleting' => 'Všetky revízie obsahovali odkaz na $1, odstraňuje sa',
+'simpleantispam-label' => "Antispamová kontrola.
+'''NEVYPĹŇAJTE''' nasledovné!",
# Info page
'pageinfo-title' => 'Informácie o „$1“',
'articlepage' => 'Prikaže članek',
'talk' => 'Pogovor',
'views' => 'Pogled',
-'toolbox' => 'Pripomočki',
+'toolbox' => 'Orodja',
'userpage' => 'Prikaži uporabnikovo stran',
'projectpage' => 'Prikaži projektno stran',
'imagepage' => 'Pokaži stran z datoteko',
'spam_reverting' => 'Vračanje na zadnjo redakcijo brez povezav na $1',
'spam_blanking' => 'Vse redakcije so vsebovale povezave na $1, izpraznjujem',
'spam_deleting' => 'Vse redakcije so vsebovale povezave na $1, brišem',
+'simpleantispam-label' => "Preverjanje proti smetju.
+'''NE''' izpolnite tega!",
# Info page
'pageinfo-title' => 'Informacije o »$1«',
'spam_reverting' => "U kthye tek versioni i fundit që s'ka lidhje tek $1",
'spam_blanking' => 'U boshatis sepse të gjitha versionet kanë lidhje tek $1',
'spam_deleting' => 'Të gjitha inspektimet përmbanin lidhje në $1, duke fshirë',
+'simpleantispam-label' => "Kontroll anti-spam.
+'''MOS''' e plotësoni këtë!",
# Info page
'pageinfo-title' => 'Informacion për " $1 "',
'noindex-category' => 'Непописане странице',
'broken-file-category' => 'Странице с неисправним везама до датотека',
-'linkprefix' => '/^((?>.*(?<![a-zA-Z\\x80-\\xff])))(.+)$/sD',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'О нама',
'article' => 'Страница са садржајем',
'spam_reverting' => 'Враћам на последњу измену која не садржи везе до $1',
'spam_blanking' => 'Све измене садрже везе до $1. Чистим',
'spam_deleting' => 'Све измене садрже везе до $1. Бришем',
+'simpleantispam-label' => "Провера спама. '''НЕ''' попуњавај ово унутра!",
# Info page
'pageinfo-title' => 'Подаци о „$1“',
'noindex-category' => 'Nepopisane stranice',
'broken-file-category' => 'Stranice s neispravnim vezama do datoteka',
-'linkprefix' => '/^((?>.*(?<![a-zA-Z\\x80-\\xff])))(.+)$/sD',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'O nama',
'article' => 'Stranica sa sadržajem',
'spam_reverting' => 'Vraćam na poslednju izmenu koja ne sadrži veze do $1',
'spam_blanking' => 'Sve izmene sadrže veze do $1. Čistim',
'spam_deleting' => 'Sve izmene sadrže veze do $1. Brišem',
+'simpleantispam-label' => "Provera spama. '''NE''' popunjavaj ovo unutra!",
# Info page
'pageinfo-title' => 'Podaci o „$1“',
'spambot_username' => 'MediaWiki Spam-Süüwerenge',
'spam_reverting' => 'Lääste Version sunner Links tou $1 wier häärstoald.',
'spam_blanking' => 'Aal Versione äntheelden Links tou $1, skeenmoaked.',
+'simpleantispam-label' => "Spamskuts-Wröige. Hier '''niks''' iendreege!",
# Info page
'pageinfo-title' => 'Informatione tou „$1“',
'spam_reverting' => 'Återställer till den senaste versionen som inte innehåller länkar till $1',
'spam_blanking' => 'Alla versioner innehöll en länk till $1, blankar',
'spam_deleting' => 'Alla ändringar innehöll länkar till $1, raderar',
+'simpleantispam-label' => "Anti-spamkontroll.
+Fyll '''INTE''' i den här!",
# Info page
'pageinfo-title' => 'Information om "$1"',
* @author Gaj777
* @author Herr Kriss
* @author Kaganer
+ * @author Krol111
* @author Lajsikonik
* @author Leinad
* @author Lwh
'tog-usenewrc' => 'Używej poszyrzyńo ńydowno pomjyńanych (JavaScript)',
'tog-numberheadings' => 'Automatyczno numeracyjo titlůw',
'tog-showtoolbar' => 'Pokoż gurt werkcojgůw (JavaScript)',
-'tog-editondblclick' => 'Edycja napoczynajům dwa klikńyńća (JavaScript)',
+'tog-editondblclick' => 'Edycyjo napoczynajům dwa klikńyńća (JavaScript)',
'tog-editsection' => 'Kożdo tajla zajty sprowjano uosobno',
-'tog-editsectiononrightclick' => 'Klikńyńće prawym kneflym myszy na titlu tajli<br />napoczyno jego sprowjańy(JavaScript)',
+'tog-editsectiononrightclick' => 'Klikńyńće prawym kneflym myszy na titlu tajli<br />napoczyno jigo sprowjańy(JavaScript)',
'tog-showtoc' => 'Pokoż spis treśći (na zajtach, kere majům wjyncy jak trzi tajle)',
'tog-rememberpassword' => 'Pamjyntej můj ausdruk na tym kůmputrze (nojdalij bez $1 {{PLURAL:$1|dźyń|dńůw}})',
'tog-watchcreations' => 'Dowům pozůr na zajty, kere żech naszkryfloł',
'tog-shownumberswatching' => 'Pokoż, wjela sprowjorzy dowo pozůr',
'tog-oldsig' => 'Teroźni wyglůnd Twojygo szrajbowańo',
'tog-fancysig' => 'Szrajbńij s kodůma wiki (bez autůmatycznygo linka)',
-'tog-uselivepreview' => 'Używej dynamiczne uobźyrańy (JavaScript) (eksperymentalny)',
+'tog-uselivepreview' => 'Używej dynamiczne uobźyrańy (JavaScript) (ekszperymentalny)',
'tog-forceeditsummary' => 'Pedź, kejbych ńic ńy naszkryfloł we uopiśe pomjyńań',
'tog-watchlisthideown' => 'Schow moje pomjyńańa we artiklach, na kere dowom pozůr',
'tog-watchlisthidebots' => 'Schow pomjyńańa sprowjone bez boty we artiklach, na kere dowom pozůr',
'tog-diffonly' => 'Ńy pokozuj treśći zajtůw půnižyj porůwnańo pomjyńań',
'tog-showhiddencats' => 'Pokoż schowane kategoryje',
'tog-norollbackdiff' => 'Uomiń pokozywańy pomjyńań po użyću funkcyje „cofej”',
+'tog-useeditwarning' => 'Uostrzegej mje, kej uopuszczom zajta edycyji bez spamjyntańo půmjań',
+'tog-prefershttps' => 'Zowdy używej pewne połůnczyńe przi logowańu',
'underline-always' => 'Dycki',
'underline-never' => 'Ńigdy',
'oct' => 'paź',
'nov' => 'lis',
'dec' => 'gru',
+'january-date' => '$1 styczńa',
+'february-date' => '$1 lutygo',
+'april-date' => '$1 kwjytńa',
+'may-date' => '$1 moja',
+'june-date' => '$1 czyrwca',
+'august-date' => '$1 śyrpńa',
+'september-date' => '$1 wrzyśńa',
+'october-date' => '$1 paźdźyrńika',
+'december-date' => '$1 grudńa',
# Categories related messages
'pagecategories' => '{{PLURAL:$1|Kategoryjo|Kategoryje|Kategoryj}}',
'newwindow' => '(uodwjyro śe we nowym uokńe)',
'cancel' => 'Uodćepej',
'moredotdotdot' => 'Wjyncy...',
-'mypage' => 'Moja zajta',
-'mytalk' => 'Mojo dyskusyjo',
+'morenotlisted' => 'Ńy je to kůmplytno lista',
+'mypage' => 'Zajta',
+'mytalk' => 'Dyskusyjo',
'anontalk' => 'Godka tygo IP',
'navigation' => 'Nawigacyjo',
'and' => ' a',
'vector-action-protect' => 'Zawrzij',
'vector-action-undelete' => 'Wćep',
'vector-action-unprotect' => 'Uodymkńij',
-'vector-simplesearch-preference' => 'Włącz zaawansowane podpowiedzi wyszukiwania (tylko dla skórki Wektor)',
+'vector-simplesearch-preference' => 'Używej zaawansowane podpowjedźi sznupańo (ino lo skůrki Wektor)',
'vector-view-create' => 'Stwůrz',
'vector-view-edit' => 'Sprowjej',
'vector-view-history' => 'Uobocz gyszichta',
'namespaces' => 'Raumy mjan',
'variants' => 'Warjanty',
+'navigation-heading' => 'Menu nawigacyji',
'errorpagetitle' => 'Feler',
'returnto' => 'Nazod do zajty $1.',
'tagline' => 'Ze {{GRAMMAR:D.lp|{{SITENAME}}}}',
'create-this-page' => 'Stwůrz ta zajta',
'delete' => 'Wyćep',
'deletethispage' => 'Wyćep ta zajta',
+'undeletethispage' => 'Prziwrůć ta zajta',
'undelete_short' => 'Wćep nazod {{PLURAL:$1|jedna wersyjo|$1 wersyje|$1 wersyji}}',
'viewdeleted_short' => '{{PLURAL:$1|jedna wyćepano wersyjo|$1 wyćepane wersyje|$1 wyćepanych wersyjůw}}',
'protect' => 'Zawrzij',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
'aboutsite' => 'Uo {{GRAMMAR:MS.lp|{{SITENAME}}}}',
'aboutpage' => 'Project:Uo serwiśe',
-'copyright' => 'Tekst udostympńany na licencyji $1.',
+'copyright' => 'Tekst udostympńany na licencyji $1, eli inakszyj ńy podano.',
'copyrightpage' => '{{ns:project}}:Autorske prawa',
'currentevents' => 'Aktualne przitrefjyńa',
'currentevents-url' => 'Project:Aktualne przitrefjyńa',
'youhavenewmessages' => 'Mosz $1 ($2).',
'newmessageslink' => 'nowe powjadůmjyńa',
'newmessagesdifflink' => 'uostatńe pomjyńyńy',
+'youhavenewmessagesfromusers' => 'Mosz $1 uod {{PLURAL:$3|inszygo używocza|$3 używoczy}} ($2).',
+'youhavenewmessagesmanyusers' => 'Mosz $1 uod wjelu używoczy ($2).',
+'newmessageslinkplural' => '{{PLURAL:$1|jydno nowina|nowiny}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|uostatńe sprowjyńe|uostatńe sprowjyńa}}',
'youhavenewmessagesmulti' => 'Mosz nowe powjadůmjyńa: $1',
'editsection' => 'Sprowjej',
'editold' => 'sprowjej',
# General errors
'error' => 'Feler',
'databaseerror' => 'Feler bazy danych',
+'databaseerror-text' => 'Pojawjůł śe feler przi wysyłańu zapytańa do bazy danych. Mogebność je, aże je to feler we uoprogramowańu.',
+'databaseerror-textcl' => 'Pojawjůł śe feler przi wysyłańu zapytańa do bazy danych.',
+'databaseerror-query' => 'Zapytańe: $1',
+'databaseerror-function' => 'Funkcyjo: $1',
+'databaseerror-error' => 'Feler: $1',
'laggedslavemode' => 'Dej pozůr: Ta zajta može ńy mjeć nojnowšych aktualizacyjůw.',
'readonly' => 'Baza danych je zawarto',
'enterlockreason' => 'Naškryflej sam powůd zawarća bazy danych a za wjela (myńi-wjyncyj) ja uodymkńeš',
'badarticleerror' => 'Tyj uoperacyje ńy idźe zrobić lo tyj zajty.',
'cannotdelete' => 'Ńy idźe wyćepać podanyj zajty abo grafiki $1.',
'cannotdelete-title' => 'Ńy idźie wyćepać zajty "$1".',
+'delete-hook-aborted' => 'Wyćepywańe sztopńynte bez hak. Przyczyna ńyuokreślůno.',
'badtitle' => 'Felerno tytůua',
'badtitletext' => 'Podano felerny titel zajty. Prawdopodańy sům w ńim znoki, kerych ńy wolno užywać we titlach abo je pusty.',
'perfcached' => 'To co sam je naszkryflane, to ino kopja s pamjyńći podryncznyj a może ńy być aktualne. Nojwjyncyj {{PLURAL:$1|jydyn wynik je|$1 wyniki sům}} w tyj pamjyńći.',
Administrator kery zawarł wćepał kůmyntorz: "$3".',
'invalidtitle-knownnamespace' => 'Felerne mjano "$3" w przestrzeńy "$2".',
+'exception-nologin' => 'Ńy jest żeś zalogůwany',
+'exception-nologin-text' => 'Ta zajta abo akcyja wymogo byćo zalogůwanym na tyj wiki.',
# Virus scanner
'virus-badscanner' => "Felerno konfiguracyjo – ńyznany skaner antywirusowy ''$1''",
'virus-unknownscanner' => 'ńyznajůmy průgram antywirusowy',
# Login and logout pages
-'logouttext' => "'''Terozki ježeś wylůgowany'''.
+'logouttext' => "'''Terozki jeżeś wylůgowany'''.
-Možeš dali sam sprowjać zajty we {{SITENAME}} kej ńyzalůgowany užytkowńik, abo <span class='plainlinks'>[$1 zalůgować śe nazod]</span> kej tyn som abo inkšy užytkowńik.
-Dej pozůr, co na ńykerych zajtach přeglůndarka može dali pokozywać co ježeś zalůgowany, a bydźe tak aže uodśwjyžyš jeij cache.",
+Możesz dali sam sprowjać zajty we {{SITENAME}} kej ńyzalůgowany sprowjorz, abo <span class='plainlinks'>[$1 zalůgować śe nazod]</span> kej tyn som abo inkszy używocz.
+Dej pozůr, co na ńykerych zajtach przeglůndarka może dali pokozywać co jeżeś zalůgowany, a bydźe tak aże uodśwjyżysz jeij cache.",
+'welcomeuser' => 'Witej, $1',
+'welcomecreation-msg' => 'Uotwarli my sam lo Ćebje kůnto.
+Pamjyntej coby posztalować [[Special:Preferences|preferencyji]]',
'yourname' => 'Mjano użytkowńika:',
+'userlogin-yourname' => 'Mjano używocza',
+'userlogin-yourname-ph' => 'Wszkryflej swoje mjano użytkowńika',
+'createacct-another-username-ph' => 'Wszkryflej mjano użytkowńika',
'yourpassword' => 'Hasło:',
+'userlogin-yourpassword-ph' => 'Wszkryflej swoje hasło',
+'createacct-yourpassword-ph' => 'Wszkryflej hasło',
'yourpasswordagain' => 'Naszkryflej ausdruk zaś',
+'createacct-yourpasswordagain' => 'Potwjyrdź hasło',
+'createacct-yourpasswordagain-ph' => 'Wszkryflej hasło jeszcze roz',
'remembermypassword' => 'Pamjyntej můj ausdruk na tym kůmputrze (nojdalij bez $1 {{PLURAL:$1|dźyń|dńůw}})',
+'userlogin-remembermypassword' => 'Ńy wylogůwywuj mje',
+'userlogin-signwithsecure' => 'Użyj bezpjecznygo połůnczyńa',
'yourdomainname' => 'Twoja domyna',
+'password-change-forbidden' => 'Ńy można půmjyńać haseł na tyj wiki.',
'externaldberror' => 'Je jaki feler we zewnyntřnyj baźe autentyfikacyjnyj, abo ńy moš uprawńyń potřebnych do aktualizacyji zewnyntřnego kůnta.',
'login' => 'Zaloguj śe',
'nav-login-createaccount' => 'Logowańy / tworzińy kůnta',
'logout' => 'Wyloguj',
'userlogout' => 'Uodloguj śe',
'notloggedin' => 'Ńy ježeś zalůgowany',
+'userlogin-noaccount' => 'Ńy mosz kůnta?',
+'userlogin-joinproject' => 'Doćep śe do {{SITENAME}}',
'nologin' => "Ńy mosz kůnta? '''$1'''.",
'nologinlink' => 'Twůrz kůnto',
'createaccount' => 'Twůrz nowe kůnto',
'gotaccount' => "Mosz już kůnto? '''$1'''.",
'gotaccountlink' => 'Naloguj śe',
'userlogin-resetlink' => 'Zapomńoł żeś dane lo nalogowańo?',
-'createaccountmail' => 'e-brifym',
+'createaccountmail' => 'Użyj chwilowygo hasła losowo genyrowanygo a wyślij je na wrychtowany adres e-brifa.',
+'createacct-realname' => 'Prawdźiwe imje a nazwisko (uopcjůnalńe)',
'createaccountreason' => 'Kůmyntorz:',
+'createacct-reason' => 'Powůd:',
'badretype' => 'Hasua kere žeś naškryflou ńy zgodzajům śe jydne s drugim.',
'userexists' => 'Mjano użytkowńika, kere żeś wybroł, je zajynte. Wybjer, prosza, inksze mjano.',
'loginerror' => 'Feler při logůwańu',
'blocked-mailpassword' => 'Twůj adres IP zostou zawarty a ńy možeš užywać funkcyje odzyskiwańo hasua skuli možliwośći jeji nadužywańo.',
'eauthentsent' => 'Potwjerdzeńy zostoło posłane na e-brifa.
Jak bydźesz chćoł, coby wysyłouo Ći e-brify, pjyrwyj go przeczytej. Bydźesz tam mjoł instrukcyjo co mosz zrobić, coby pokozać, aże tyn ausdruk je Twůj.',
-'throttled-mailpassword' => 'Připůmńyńy hasua bůuo juž wysuane bez {{PLURAL:$1|uostatńo godźina|uostatńe $1 godźin}}.
-Coby powstřimać nadužyća, možliwość wysyuańa připůmńeń naštalowano na jydne bez {{PLURAL:$1|godźina|$1 godźiny}}.',
+'throttled-mailpassword' => 'Przipůmńyńy hasła bůło już wysłane bez {{PLURAL:$1|uostatńo godźina|uostatńe $1 godźin}}.
+Coby powstrzimać nadużyća, mogebność wysyłańo przipůmńyń nasztalowano na jydne bez {{PLURAL:$1|godźina|$1 godźiny}}.',
'mailerror' => 'Při wysyuańu e-brifa zdořiu śe feler: $1',
'acct_creation_throttle_hit' => 'Przikro nom, założył(a)żeś już {{PLURAL:$1|1 kůnto|$1 kůnta}}. Ńy możesz założyć kolejnygo.',
'emailauthenticated' => 'Twůj adres e-brifa zostou uwjeřitelńůny $2 uo $3.',
'cannotchangeemail' => 'Ńy możno pomjyńyc ausdruku e-mail.',
'emaildisabled' => 'Ta zajta ńy je mogebna posyłać e-brify.',
'accountcreated' => 'Utwůřůno kůnto',
-'accountcreatedtext' => 'Kůnto lo $1 zostouo utwůřůne.',
+'accountcreatedtext' => 'Kůnto lo [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|dyskusyjo]]) je utwůrzůne.',
'createaccount-title' => 'Stwořyńy kůnta na {{GRAMMAR:MS.lp|{{SITENAME}}}}',
'createaccount-text' => 'Ktoś utworził na {{GRAMMAR:MS.lp|{{SITENAME}}}} ($4) dla Twojego adresa e-brif kůnto "$2". Aktualne hasło to "$3". Powińeżeś śe terozki zalogůwać a je zmjyńić.',
'usernamehasherror' => 'Nazwa sprowjorza ńy może mjyć buchsztaby "#".',
-'login-throttled' => '!Wykonołżeś za wjela průb zalůgowańo śe na te kůnto. Poczekej chwila ńym zaś sprůbujesz.',
+'login-throttled' => 'Wykonołżeś za wjela průb zalůgowańo śe na te kůnto. Uodczekej $1 ńym zaś sprůbujesz.',
'login-abort-generic' => 'Felerne logowańe',
'loginlanguagelabel' => 'Godka: $1',
'suspicious-userlogout' => 'Żądanie wylogowania zostało odrzucone ponieważ wygląda na to, że zostało wysłane przez uszkodzoną przeglądarkę lub buforujący serwer proxy.',
'newpassword' => 'Nowe hasło',
'retypenew' => 'Naszkryflej jeszcze roz nowe hasło:',
'resetpass_submit' => 'Naštaluj hasuo a zalůguj',
-'changepassword-success' => 'Twoje hasuo zostouo půmyślńy pomjyńone! Trwo logůwańe...',
+'changepassword-success' => 'Twoje hasło zostoło půmyślńy půmjyńone!',
'resetpass_forbidden' => 'Ńy idźe sam půmjyńyć hasuůw.',
'resetpass-no-info' => 'Muśysz być zalogowany, coby uzyskać bezpostrzedńi dostymp do tyj zajty.',
'resetpass-submit-loggedin' => 'Zmjyń hasło',
'editundo' => 'uodćepej',
'diff-multi' => '(Ńy pokozano {{PLURAL:$1|jydnyj wersyji postrzedńij|$1 wersyji postrzedńich}}, sprowjanej bez {{PLURAL:$2|jydnygo sprowjorza|$2 sprowjorzow}} .)',
'diff-multi-manyusers' => '(Ńy pokozano {{PLURAL:$1|jydnyj wersyji postrzedńij|$1 wersyji postrzedńich}}, sprowjanej bez {{PLURAL:$2|jydnygo sprowjorza|$2 sprowjorzow}} .)',
+'difference-missing-revision' => '{{PLURAL:$2|Wersyjo|$2 wersyje|$2 wersyji}} #$1 zajty "{{PAGENAME}}" ńy {{PLURAL:$2|uostoła znaleźůno|uostoły znaleźůne|uostoło znaleźůnych}}. Zauobycz je to skiż starygo linky do wyćępanyj zajty. Powůd wyćepańa nojdźesz we [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rejerze].',
# Search results
'searchresults' => 'Wyńiki sznupańo',
'search-interwiki-default' => '$1 wyńiki:',
'search-interwiki-more' => '(wjyncyj)',
'search-relatedarticle' => 'Podane',
-'mwsuggest-disable' => 'Wyuůnč sůgestyje AJAX',
+'mwsuggest-disable' => 'Wyłůncz sůgestyje AJAX',
'searcheverything-enable' => 'Sznupej we wszech mjan',
'searchrelated' => 'podane',
'searchall' => 'wszyjske',
'powersearch-togglenone' => 'żodno',
'search-external' => 'Šnupańy zewnyntřne',
'searchdisabled' => 'Šnupańy we {{GRAMMAR:MS.lp|{{SITENAME}}}} zostouo zawarte. Zańim go zouůnčům, možeš sprůbować šnupańo bez Google. Ino zauwaž, co informacyje uo treśći {{GRAMMAR:MS.lp|{{SITENAME}}}} můgům być we Google ńyakuratne.',
+'search-error' => 'Wystůmpjůł feler przi sznupańu: $1',
# Preferences page
'preferences' => 'Preferyncyje',
-'mypreferences' => 'Moje preferyncyje',
+'mypreferences' => 'Preferyncyje',
'prefs-edits' => 'Liczba sprowjyń:',
'prefsnologin' => 'Ńy ježeś zalůgowany',
'prefsnologintext' => 'Muśiš śe <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} zalůgować]</span> coby štalować swoje preferyncyje.',
'timezoneregion-indian' => 'Ocean Indyjski',
'timezoneregion-pacific' => 'Uocean Spokojny',
'allowemail' => 'Inkśi užytkowńicy můgům přesyuać mje e-brify',
-'prefs-searchoptions' => 'Uopcyje šnupańo',
+'prefs-searchoptions' => 'Sznupańe',
'prefs-namespaces' => 'Přystřyńe mjan',
'defaultns' => 'Důmyślńy sznupej we nastympujůncych przystrzyńach mjan:',
'default' => 'důmyślńy',
'prefs-files' => 'Pliki',
'youremail' => 'E-brif:',
-'username' => 'Mjano użytkowńika:',
-'uid' => 'ID užytkowÅ\84ika:',
+'username' => '{{GENDER:$1|Mjano używocza}}:',
+'uid' => 'ID używocza:',
'prefs-memberingroups' => 'Należy do {{PLURAL:$1|grupy|grup:}}',
'prefs-registration' => 'Czas twůrzyńa kůnta:',
'yourrealname' => 'Prawdźiwe mjano',
'yournick' => 'Twoja šrajba:',
'badsig' => 'Felerno šrajba, sprowdź značńiki HTML.',
'badsiglength' => 'Twůj szrajbůng je za dugi. Maksymalno jego dugość to $1 {{PLURAL:$1|buchsztaby|buchsztabůw}}',
-'yourgender' => 'Płeć',
-'gender-unknown' => 'ńyznana',
+'yourgender' => 'Płeć:',
+'gender-unknown' => 'ńyznano',
'gender-male' => 'chop',
'gender-female' => 'baba',
'email' => 'E-brif',
'group-bot' => 'బాట్లు',
'group-sysop' => 'నిర్వాహకులు',
'group-bureaucrat' => 'అధికారులు',
-'group-suppress' => 'పరాà°\95à±\81à°²à±\81',
+'group-suppress' => 'మారà±\8dà°ªà±\81లనà±\81 à°ªà±\82à°°à±\8dతిà°\97à°¾ à°\95నిపిà°\82à°\9aà°\95à±\81à°\82à°¡à°¾à°\9aà±\87à°¯à±\81à°\9f',
'group-all' => '(అందరూ)',
'group-user-member' => '{{GENDER:$1|వాడుకరి}}',
'group-bot-member' => '{{GENDER:$1|బాట్}}',
'group-sysop-member' => '{{GENDER:$1|నిర్వాహకుడు|నిర్వాహకురాలు}}',
'group-bureaucrat-member' => '{{GENDER:$1|అధికారి|అధికారిణి}}',
-'group-suppress-member' => 'పరాకు',
+'group-suppress-member' => '{{GENDER:$1|మార్పులను పూర్తిగా కనిపించకుండాచేయుట}}',
'grouppage-user' => '{{ns:project}}:వాడుకరులు',
'grouppage-autoconfirmed' => '{{ns:project}}:ఆటోమాటిగ్గా నిర్ధారించబడిన వాడుకరులు',
'grouppage-bot' => '{{ns:project}}:బాట్లు',
'grouppage-sysop' => '{{ns:project}}:నిర్వాహకులు',
'grouppage-bureaucrat' => '{{ns:project}}:అధికార్లు',
-'grouppage-suppress' => '{{ns:project}}:పరాà°\95à±\81',
+'grouppage-suppress' => '{{ns:project}}:మారà±\8dà°ªà±\81లనà±\81 à°ªà±\82à°°à±\8dతిà°\97à°¾ à°\95నిపిà°\82à°\9aà°\95à±\81à°\82à°¡à°¾à°\9aà±\87à°¯à±\81à°\9f',
# Rights
'right-read' => 'పేజీలు చదవడం',
'nopagetext' => 'మీరు అడిగిన పేజీ లేదు',
'pager-newer-n' => '{{PLURAL:$1|1 కొత్తది|$1 కొత్తవి}}',
'pager-older-n' => '{{PLURAL:$1|1 పాతది|$1 పాతవి}}',
-'suppress' => 'పరాà°\95à±\81',
+'suppress' => 'మారà±\8dà°ªà±\81లనà±\81 à°ªà±\82à°°à±\8dతిà°\97à°¾ à°\95నిపిà°\82à°\9aà°\95à±\81à°\82à°¡à°¾à°\9aà±\87à°¯à±\81à°\9f',
'querypage-disabled' => 'పనితీరు కారణాల వలన, ఈ ప్రత్యేకపేజీని అశక్తం చేసాం.',
# Book sources
'spambot_username' => 'MediaWiki spam arassalaýyş',
'spam_reverting' => '$1 sahypasyna çykgytlary bolmadyk iň soňky wersiýasyna yzyna getirilýär',
'spam_blanking' => 'Ähli wersiýalarda $1 sahypasyna çykgytlar bar, boşadylýar',
+'simpleantispam-label' => "Anti-spam barlagy.
+Muny '''DOLDURMAŇ'''!",
# Patrolling
'markaspatrolleddiff' => 'Patrullyk edilen diýip belle',
'broken-file-category' => 'Mga pahina na may sirang mga kawing ng talaksan',
'categoryviewer-pagedlinks' => '($1) ($2)',
-'linkprefix' => '/^((?>.*(?<![a-zA-Z\\x80-\\xff])))(.+)$/sD',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'Patungkol',
'article' => 'Pahina ng nilalaman',
'spam_reverting' => "Ibinabalik sa huling bersyon na 'di-naglalaman ng mga kawing sa $1",
'spam_blanking' => 'Lahat ng mga pagbabago ay naglalaman ng mga kawing sa $1, pagpapatlang',
'spam_deleting' => 'Lahat ng mga pagbabago ay naglalaman ng mga kawing sa $1, binubura',
+'simpleantispam-label' => "Pagsusuring panlaban sa \"manlulusob\" (''spam'').
+'''HUWAG''' itong lagyan ng laman!",
# Info page
'pageinfo-title' => 'Kabatiran para sa "$1"',
'morelinkstoimage' => 'Bu dosyaya [[Special:WhatLinksHere/$1|daha fazla bağlantıları]] gör.',
'linkstoimage-redirect' => '$1 (dosya yönlendirme) $2',
'duplicatesoffile' => 'Şu {{PLURAL:$1|dosya|$1 dosya}}, bu dosyanın kopyası ([[Special:FileDuplicateSearch/$2|daha fazla ayrıntı]]):',
-'sharedupload' => 'Bu dosya $1 deposundan ve diğer projelerde kullanılıyor olabilir.',
+'sharedupload' => 'Bu dosya $1 projesinden olup, diğer projelerde kullanılıyor olabilir.',
'sharedupload-desc-there' => 'Bu dosya $1 deposundan ve diğer projeler tarafından kullanılıyor olabilir. Daha fazla bilgi için lütfen [$2 dosya açıklama sayfasına] bakın.',
'sharedupload-desc-here' => 'Bu dosya $1 deposundan ve diğer projeler tarafından kullanılıyor olabilir.
Aşağıda [$2 dosya açıklama sayfasındaki] açıklama gösteriliyor.',
-'sharedupload-desc-create' => 'Bu dosya, $1 ve diğer projeler tarafından kullanılıyor olabilir.
-Dosya açıklamasını düzenlemek isterseniz, [$2 dosya açıklama sayfası] bulunmaktadır.',
+'sharedupload-desc-edit' => 'Bu dosya $1 projesinden olup, diğer projelerde kullanılıyor olabilir.
+Dosyanın açıklama sayfasında değişiklik yapmak için ilgili sayfaya [$2 buradan] gidebilirsiniz.',
+'sharedupload-desc-create' => 'Bu dosya $1 projesinden olup, diğer projelerde kullanılıyor olabilir.
+Dosyanın açıklama sayfasında değişiklik yapmak için ilgili sayfaya [$2 buradan] gidebilirsiniz.',
'filepage-nofile' => 'Bu isimde bir dosya yok.',
'filepage-nofile-link' => 'Bu isimde bir dosya yok, ama siz [$1 yükleyebilirsiniz].',
'uploadnewversion-linktext' => 'Dosyanın yenisini yükleyin',
'contributions' => '{{GENDER:$1|Kullanıcı}} katkıları',
'contributions-title' => '$1 için kullanıcı katkıları',
'mycontris' => 'Katkılar',
-'contribsub2' => '$1 ($2)',
+'contribsub2' => '{{GENDER:$3|$1}} ($2) tarafından',
'nocontribs' => 'Bu kriterlere uyan değişiklik bulunamadı',
'uctop' => '(son)',
'month' => 'Ay:',
'spambot_username' => 'Medyaviki spam temizleme',
'spam_reverting' => '$1 ile bağlantı içermeyen son sürüme geri dönülüyor',
'spam_blanking' => 'Tüm revizyonlar $1 sayfasına bağlantı içeriyor, boşaltılıyor',
+'simpleantispam-label' => "Anti-spam denetimi.
+Bunu '''doldurmayın'''!",
# Info page
'pageinfo-title' => 'Bilgi için "$1"',
'noindex-category' => 'Индексланмаган битләр',
'broken-file-category' => 'Файлларга эшләми торган сылтамалар булган битләр',
-'linkprefix' => '/^((?>.*(?<![a-zA-Z\\x80-\\xff])))(.+)$/sD',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'Тасвирлама',
'article' => 'Мәкалә',
'index-category' => 'İndekslanğan bitlär',
'noindex-category' => 'İndekslanmağan bitlär',
-'linkprefix' => '/^((?>.*(?<![a-zA-Z\\x80-\\xff])))(.+)$/sD',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'Taswirlama',
'article' => 'Mäqälä',
'broken-file-category' => 'ھۆججەت ئۇلىنىشى بۇزۇلغان بەتلەر',
'categoryviewer-pagedlinks' => '($1) ($2)',
-'linkprefix' => '/^((?>.*(?<![a-zA-Z\\x80-\\xff])))(.+)$/sD',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'ھەققىدە',
'article' => 'مۇندەرىجە',
'broken-file-category' => 'Сторінки, що посилаються на неіснуючі файли',
'categoryviewer-pagedlinks' => '($1) ($2)',
-'linkprefix' => '/^((?>.*(?<!(?:„|«)$)))(.+)$/sDu',
+'linkprefix' => '/^(.*?)(„|«)$/sD',
'about' => 'Про',
'article' => 'Стаття',
'spam_reverting' => 'Відкинути до останньої версії, що не містить посилання на $1',
'spam_blanking' => 'Всі версії містять посилання на $1, очистка',
'spam_deleting' => 'Все версії, що містили посилання на $1, вилучаються',
+'simpleantispam-label' => "Перевірка на спам.
+'''НЕ''' заповнюйте це!",
# Info page
'pageinfo-title' => 'Інформація про " $1 "',
'noindex-category' => 'Indekslanmaydigan sahifalar',
'broken-file-category' => 'Ishlamaydigan fayl havolalari bor sahifalar',
-'linkprefix' => '/^((?>.*(?<![a-zA-Z\\x80-\\xffʻʼ«„])))(.+)$/sDu',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xffʻʼ«„]+)$/sDu',
'about' => 'Haqida',
'article' => 'Sahifa',
'spam_reverting' => "Ripristinà l'ultima version priva de colegamenti a $1",
'spam_blanking' => 'Pàxena svodà, tute łe version le contegneva cołegamenti a $1',
'spam_deleting' => 'Pàjina scansełà, tute łe version łe contegneva ligamenti a $1',
+'simpleantispam-label' => "Controlo anti spam.
+'''NO STA''' scrivar gnente qua de soto!",
# Info page
'pageinfo-title' => 'Informasion par "$1"',
'spam_reverting' => 'Lùi lại đến phiên bản cuối không chứa liên kết đến $1',
'spam_blanking' => 'Tất cả các phiên bản có liên kết đến $1; tẩy trống',
'spam_deleting' => 'Tất cả các phiên bản có liên kết đến $1; xóa',
+'simpleantispam-label' => "Hệ thông đang kiểm tra chống spam.
+Xin '''ĐỪNG''' điền gì vào!",
# Info page
'pageinfo-title' => 'Thông tin về “$1”',
'tog-hidepatrolled' => 'Klänedön redakamis pezepöl in lised votükamas nulik.',
'tog-newpageshidepatrolled' => 'Klänedön padis pezepöl in lised padas nulik',
'tog-extendwatchlist' => 'Stäänükön galädalisedi ad jonön votükamis tefik valik, e no te nulikünos',
-'tog-usenewrc' => 'Grupön votükamis pado in votukäms nulik e galädalised (me JavaScript)',
+'tog-usenewrc' => 'Grupön votükamis pado in votukäms nulik e galädalised',
'tog-numberheadings' => 'Givön itjäfidiko nümis dilädatiädes',
'tog-showtoolbar' => 'Jonön redakamastumemi',
'tog-editondblclick' => 'Dälön redakön padis pö drän telik mugaknopa',
'newwindow' => '(maifikon in fenät nulik)',
'cancel' => 'Stöpädön',
'moredotdotdot' => 'Plu...',
+'morenotlisted' => 'Lised at no binon lölöfik.',
'mypage' => 'Pad',
'mytalk' => 'Bespiks',
'anontalk' => 'Bespiks ela IP at',
'articlepage' => 'Jonön ninädapadi',
'talk' => 'Bespik',
'views' => 'Logams',
-'toolbox' => 'Stumem',
+'toolbox' => 'Stums',
'userpage' => 'Logön gebanapadi',
'projectpage' => 'Logön proyegapadi',
'imagepage' => 'Jonön ragivapad',
# General errors
'error' => 'Pöl',
'databaseerror' => 'Pöl in nünodem',
+'databaseerror-function' => 'Dunod: $1',
'databaseerror-error' => 'Pöl: $1',
'laggedslavemode' => 'Nuned: pad ba labon votükamis brefabüik',
'readonly' => 'Vük pefärmükon',
'viewsource-title' => 'Logön fonäti pada: "$1"',
'actionthrottled' => 'Dun pemiedükon',
'actionthrottledtext' => 'Ad tadunön reklamami itjäfidik (el „spam“), dunot at no padälon tu suvo dü brefüp. Ya erivol miedi gretikün. Steifülolös nogna pos minuts anik.',
-'protectedpagetext' => 'Pad at pejelon ad neletön redakami.',
+'protectedpagetext' => 'Pad at pejelon ad neletön redakami u dunotis votik.',
'viewsourcetext' => 'Kanol logön e kopiedön fonätakoti pada at:',
'protectedinterface' => 'Pad at jafon vödemis sitanünas, ed anu pelökofärmükon ad vitön migebis.',
'editinginterface' => "'''Nuned:''' redakol padi, kel labükon vödemis bevüik pro programem.
Ad läükön u votükön tradutodis pro els wiki valik, demolös gebi ela [//translatewiki.net/?setlang=vo translatewiki.net]: topükamaproyeg ela MediaWiki.",
'cascadeprotected' => 'Pad at pejelon ta redakam, bi pakeninükon fa {{PLURAL:$1|pad|pads}} sököl, kels pejelons ma „jänajel“: $2',
'namespaceprotected' => "No dalol redakön padis in nemaspad: '''$1'''.",
+'mycustomcssprotected' => 'No dalol redakön padi: CSS at.',
+'mycustomjsprotected' => 'No dalol redakön padi: JavaScript at.',
+'myprivateinfoprotected' => 'No dalol redakön nünis privatik ola.',
+'mypreferencesprotected' => 'No dalol votükön buükamis olik.',
'ns-specialprotected' => 'Pads patik no kanons paredakön.',
'titleprotected' => "Jaf tiäda at penemögükon fa geban: [[User:$1|$1]].
Kod binon: ''$2''.",
'invalidemailaddress' => 'Ladet leäktronik no kanon pazepön bi fomät onik jiniko no lonöfon.
Penolös ladeti labü fomät lonöföl, u vagükolös penamaspadi.',
'accountcreated' => 'Kal pejafon',
-'accountcreatedtext' => 'Gebanakal pro $1 pejafon.',
+'accountcreatedtext' => 'Gebanakal pro [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|bespik]]) pejafon.',
'createaccount-title' => 'Kalijafam in {{SITENAME}}',
'createaccount-text' => 'Ek ejafon kali pro ladet leäktronik ola in {{SITENAME}} ($4) labü nem: „$2“ e letavöd: „$3“. Kanol nunädön oli e votükön letavödi olik anu.
'nosuchsectiontitle' => 'Diläd no petuvöl',
'nosuchsectiontext' => 'Esteifülol ad redakön dilädi no dabinöli.',
'loginreqtitle' => 'Nunädam Paflagon',
-'loginreqlink' => 'nunädolös obi',
+'loginreqlink' => 'nunädön oli',
'loginreqpagetext' => 'Mutol $1 ad logön padis votik.',
'accmailtitle' => 'Letavöd pesedon.',
'accmailtext' => "Letavöd fädik pro [[User talk:$1|$1]] pasedon lü $2.
Garanol obes, das ol it epenol atosi, u das ekopiedol atosi se räyun notidik u se fon libik sümik (logolös eli $1 pro notets).
'''NO PLADOLÖD ISIO NEN DÄL LAUTANA VÖDEMIS LABÜ KOPIEDAGITÄT!'''",
-'longpageerror' => "'''PÖL: Vödem fa ol pesedöl labon lunoti miljölätas $1, kelos pluon leigodü völad muik pedälöl miljölätas $2. No kanon padakipön.'''",
+'longpageerror' => "'''Pöl: Vödem fa ol pesedöl labon lunoti {{PLURAL:$1|miljöläta bal|miljölätas $1}}, kelos pluon leigodü völad muik pedälöl {{PLURAL:$2|miljöläta bal|miljölätas $2}}.'''
+No kanon padakipön.",
'readonlywarning' => "'''NUNED: Vük pefärmükon kodü kodididazesüd. No kanol dakipön votükamis olik anu. Kopiedolös vödemi nulik ini program votik e dakipolös oni in nünöm olik. Poso okanol dönu steifülön ad pladön oni isio.'''
Geban, kel efärmükon oni, egevon kodi at: $1",
'undo-failure' => 'No eplöpos ad sädunön redakami at sekü konflits vü redakams vüik.',
'undo-norev' => 'No eplöpos ad sädunön redakami at, bi no dabinon u pämoükon.',
'undo-summary' => 'Äsädunon votükami $1 fa [[Special:Contributions/$2|$2]] ([[User talk:$2|Bespikapad]])',
+'undo-summary-username-hidden' => 'Sädunön revidi: $1 fa geban peklenädöl',
# Account creation failure
'cantcreateaccounttitle' => 'Kal no kanon pajafön',
'right-ipblock-exempt' => 'Nedemön blokamis-IP, blokamis itjäfidik e grupiblokamis',
'right-proxyunbannable' => 'Nedemön blokamis itjäfidik pladulömas',
'right-protect' => 'Votükön jelanivodis e redakön padis pejelöl',
-'right-editprotected' => 'Bevobön padis pejelöl (nen vatafalajel)',
+'right-editprotected' => 'Bevobön padis pejelöl äs "{{int:protect-level-sysop}}"',
'right-editinterface' => 'Votükön gebanaloveikömi',
'right-editusercssjs' => 'Redakön ragivis-CSS e -JS gebanas votik',
'right-editusercss' => 'Redakön ragivis-CSS gebanas votik',
'uploadbtn' => 'Löpükön ragivi',
'reuploaddesc' => 'Nosükon lopükami e geikön lü löpükamafomet.',
'uploadnologin' => 'No enunädon oki',
-'uploadnologintext' => 'Mutol [[Special:UserLogin|nunädön oli]] ad löpükön ragivis.',
+'uploadnologintext' => 'Mutol $1 ad löpükön ragivis.',
'upload_directory_missing' => 'Löpükamaragiviär ($1) no dabinon e no ekanon pajafön fa dünanünöm bevüresodik.',
'upload_directory_read_only' => 'Ragiviär lopükama ($1) no kanon papenön fa dünanünöm bevüresodik.',
'uploaderror' => 'Pök pö löpükam',
'booksources-invalid-isbn' => 'El ISBN at jiniko no lonöfon; kontrololös pökis po kopiedam se rigafonät.',
# Special:Log
-'specialloguserlabel' => 'Geban:',
+'specialloguserlabel' => 'Dunan:',
'speciallogtitlelabel' => 'Lükömöp (tiäd u geban):',
'log' => 'Jenotaliseds',
'all-logs-page' => 'Jenotaliseds notidik valik',
'listusers-blocked' => '(pebloköl)',
# Special:ActiveUsers
-'activeusers-count' => '{{PLURAL:$1|redakam|redakams}} $1 ün {{PLURAL:$3|del lätik|dels lätik $3}}',
+'activeusers-count' => '{{PLURAL:$1|dunot|dunots}} $1 ün {{PLURAL:$3|del lätik|dels lätik $3}}',
'activeusers-hidebots' => 'Klänedolöd elis bot',
'activeusers-hidesysops' => 'Klänedolöd guvanis',
'activeusers-noresult' => 'Geban nonik petuvon.',
'deletecomment' => 'Kod:',
'deleteotherreason' => 'Kod votik:',
'deletereasonotherlist' => 'Kod votik',
-'deletereason-dropdown' => '* Kods kösömik moükama
-** Beg lautana
+'deletereason-dropdown' => "* Kods kösömik moükama
+** 'Spam'
+** Vandalim
** Kopiedagitäts
-** Vandalim',
+** Beg lautana
+** Lüodüköm dädik",
'delete-edit-reasonlist' => 'Redakön kodis moükama',
'delete-toobig' => 'Pad at labon redakamajenotemi lunik ({{PLURAL:$1|revid|revids}} plu $1).
Moükam padas somik pemiedükon ad vitön däropami pö {{SITENAME}}.',
Logolös [[Special:ProtectedPages|lisedi padas pejelöl]], kö pajonons padijelams anu lonöföls.',
'protectedarticle' => 'ejelon padi: „[[$1]]“',
'modifiedarticleprotection' => 'evotükon jelanivodi pada: „[[$1]]“',
-'unprotectedarticle' => 'Pad: „[[$1]]“ pesäjelon.',
+'unprotectedarticle' => 'esäjelon padi: "[[$1]]"',
'movedarticleprotection' => 'moved protection settings from „[[$2]]“ to „[[$1]]“',
'protect-title' => 'lonon jelanivodi pada: „$1“',
'prot_1movedto2' => '[[$1]] petopätükon lü [[$2]]',
'contributions' => '{{GENDER:$1|Gebanakeblünots}}',
'contributions-title' => 'Gebanakeblünots pro $1',
'mycontris' => 'Keblünots',
-'contribsub2' => 'Tefü $1 ($2)',
+'contribsub2' => '{{GENDER:$3|Hiela|Jiela|Ela}} $1 ($2)',
'nocontribs' => 'Votükams nonik petuvons me paramets at.',
'uctop' => '(anuik)',
'month' => 'De mul (e büiks):',
'noindex-category' => 'Mga diri nakatudlokan nga pagkli',
'broken-file-category' => 'Mga pakli nga mayda utod nga mga sumpay hin paypay',
-'linkprefix' => '/^((?>.*(?<![a-zA-Z\\x80-\\xff])))(.+)$/sD',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'Mahitungod han',
'article' => 'Pakli hin sulod',
'spambot_username' => 'MediaWiki垃圾清除',
'spam_reverting' => '恢復返去最後一個唔包含指去$1嘅連結嘅嗰個修訂。',
'spam_blanking' => '全部版本都含有指去$1嘅連結,留空',
+'simpleantispam-label' => "反垃圾檢查。
+'''唔好'''加入呢個!",
# Skin names
'skinname-cologneblue' => '科隆藍',
'articlepage' => '查看内容页面',
'talk' => '讨论',
'views' => '查看',
-'toolbox' => '工具箱',
+'toolbox' => '工具',
'userpage' => '查看用户页面',
'projectpage' => '查看项目页面',
'imagepage' => '查看文件页面',
# "Undo" feature
'undo-success' => '该编辑可以被撤销。请检查下面的对比以核实你想要撤销的内容,然后保存下面的更改以完成撤销。',
'undo-failure' => '因存在冲突的中间编辑,本编辑不能撤销。',
-'undo-norev' => '由于其修订版本不存在或已删除,此编辑不能撤销。',
+'undo-norev' => '该编辑无法撤消,因为它不存在或已被删除。',
'undo-summary' => '撤销[[Special:Contributions/$2|$2]]([[User talk:$2|讨论]])的版本$1',
'undo-summary-username-hidden' => '取消由一匿名用户所作的修订$1',
'editcomment' => '编辑摘要:"<i>$1</i>"。',
'revertpage' => '已恢复[[Special:Contributions/$2|$2]]([[User talk:$2|讨论]])的编辑至[[User:$1|$1]]的最后一个修订版本',
'revertpage-nouser' => '恢复由隐藏用户的编辑到{{GENDER:$1|[[User:$1|$1]]}}的最后一个修订版本',
-'rollback-success' => '已恢复$1的编辑,更改回$2的最后修订版本。',
+'rollback-success' => '已恢复$1的编辑,更改回$2的最后版本。',
# Edit tokens
'sessionfailure-title' => '会话无效',
'tooltip-save' => '保存你的更改',
'tooltip-preview' => '预览您的更改,请在保存前使用此功能!',
'tooltip-diff' => '显示您对该文字所做的更改',
-'tooltip-compareselectedversions' => '查看此页面两个选定的修订版本间的差异。',
+'tooltip-compareselectedversions' => '查看该页面两个选定的版本之间的差异。',
'tooltip-watch' => '添加本页面至你的监视列表',
'tooltip-watchlistedit-normal-submit' => '删除标题',
'tooltip-watchlistedit-raw-submit' => '更新监视列表',
'tooltip-undo' => '“撤销”可以恢复该编辑并在预览模式下打开编辑表单。它允许在摘要中加入原因。',
'tooltip-preferences-save' => '保存系统设置',
'tooltip-summary' => '请输入简短的摘要',
-'tooltip-iwiki' => '$1——$2',
+'tooltip-iwiki' => '$1 – 2',
# Stylesheets
'common.css' => '/* 此处的 CSS 将应用于所有的皮肤 */',
'spam_reverting' => '恢复到不包含链接的最近修订版本$1',
'spam_blanking' => '消隐所有包含链接至$1的修订',
'spam_deleting' => '正在删除所有包含至$1的版本',
+'simpleantispam-label' => "反垃圾检查。
+'''不要'''加入这个!",
# Info page
'pageinfo-title' => '“$1”的信息',
# action=purge
'confirm_purge_button' => '确定',
'confirm-purge-top' => '要清除此页面的缓存吗?',
-'confirm-purge-bottom' => '清理一页将会清除快取以及强迫显示最现时之修订版本。',
+'confirm-purge-bottom' => '清除页面数据会清除缓存并强制显示最近的版本。',
# action=watch/unwatch
'confirm-watch-button' => '确定',
# Special:Redirect
'redirect' => '重定向(按文件、用户或版本ID)',
'redirect-legend' => '重定向至文件或页面',
-'redirect-summary' => '本特殊页面会重定向到一个文件(给予文件名),一个页面(给予修订版本ID),或一个用户页面(给予用户数字ID)。',
+'redirect-summary' => '本特殊页面可以跳转至一个文件(提供文件名)、页面(提供版本ID)或用户页面(提供数字用户ID)。',
'redirect-submit' => '提交',
'redirect-lookup' => '基于:',
'redirect-value' => '值:',
'redirect-user' => '用户ID',
-'redirect-revision' => '页面修订',
+'redirect-revision' => '页面版本ID',
'redirect-file' => '文件名',
'redirect-not-exists' => '没找到相应值',
'spam_reverting' => '恢復到不包含連結至$1的最近修訂版本',
'spam_blanking' => '所有包含連結至$1的修訂,清空',
'spam_deleting' => '所有包含連結至$1的修訂,刪除中',
+'simpleantispam-label' => "反垃圾檢查。
+'''不要'''加入這個!",
# Info page
'pageinfo-title' => '「$1」的信息',
--- /dev/null
+-- first step of migrating recentchanges rc_type to rc_source
+ALTER TABLE /*$wgDBprefix*/recentchanges
+ ADD rc_source varbinary(16) NOT NULL default '';
+
+-- Populate rc_source field with the data from rc_type
+-- Large wiki's might prefer the PopulateRecentChangeSource maintenance
+-- script to batch updates into groups rather than all at once.
+UPDATE /*$wgDBprefix*/recentchanges
+ SET rc_source = CASE
+ WHEN rc_type = 0 THEN 'mw.edit'
+ WHEN rc_type = 1 THEN 'mw.new'
+ WHEN rc_type = 3 THEN 'mw.log'
+ WHEN rc_type = 5 THEN 'mw.external'
+ ELSE ''
+ END
+WHERE rc_source = '';
"mw.Map",
"mw.Message",
"mw.loader",
+ "mw.loader.store",
"mw.log",
"mw.html",
"mw.html.Cdata",
'spam_reverting',
'spam_blanking',
'spam_deleting',
+ 'simpleantispam-label',
),
'info' => array(
'pageinfo-header',
JSDUCK_MWVERSION="$2"
elif [[ "$*" != "" ]]
then
- echo "Usage $0: [--version <mediawiki version>]"
+ echo "Usage: $0 [--version <mediawiki version>]"
echo
exit 1
fi
--- /dev/null
+<?php
+/**
+ * Upgrade script to populate the rc_source field
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Maintenance
+ */
+
+require_once dirname( __FILE__ ) . '/Maintenance.php';
+
+/**
+ * Maintenance script to populate the rc_source field.
+ *
+ * @ingroup Maintenance
+ * @since 1.22
+ */
+class PopulateRecentChangesSource extends LoggedUpdateMaintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Populates rc_source field of the recentchanges table with the data in rc_type.";
+ $this->setBatchSize( 100 );
+ }
+
+ protected function doDBUpdates() {
+ $dbw = $this->getDB( DB_MASTER );
+ if ( !$dbw->fieldExists( 'recentchanges', 'rc_source' ) ) {
+ $this->error( 'rc_source field in recentchanges table does not exist.' );
+ }
+
+ $start = $dbw->selectField( 'recentchanges', 'MIN(rc_id)', false, __METHOD__ );
+ if ( !$start ) {
+ $this->output( "Nothing to do.\n" );
+ return true;
+ }
+ $end = $dbw->selectField( 'recentchanges', 'MAX(rc_id)', false, __METHOD__ );
+ $end += $this->mBatchSize - 1;
+ $blockStart = $start;
+ $blockEnd = $start + $this->mBatchSize - 1;
+
+ $updatedValues = $this->buildUpdateCondition( $dbw );
+
+ while ( $blockEnd <= $end ) {
+ $cond = "rc_id BETWEEN $blockStart AND $blockEnd";
+
+ $dbw->update(
+ 'recentchanges',
+ array( $updatedValues ),
+ array(
+ "rc_source = ''",
+ "rc_id BETWEEN $blockStart AND $blockEnd"
+ ),
+ __METHOD__
+ );
+
+ $this->output( "." );
+ wfWaitForSlaves();
+
+ $blockStart += $this->mBatchSize;
+ $blockEnd += $this->mBatchSize;
+ }
+
+ $this->output( "\nDone.\n" );
+ }
+
+ protected function getUpdateKey() {
+ return __CLASS__;
+ }
+
+ protected function buildUpdateCondition( DatabaseBase $dbw ) {
+ $rcNew = $dbw->addQuotes( RC_NEW );
+ $rcSrcNew = $dbw->addQuotes( RecentChange::SRC_NEW );
+ $rcEdit = $dbw->addQuotes( RC_EDIT );
+ $rcSrcEdit = $dbw->addQuotes( RecentChange::SRC_EDIT );
+ $rcLog = $dbw->addQuotes( RC_LOG );
+ $rcSrcLog = $dbw->addQuotes( RecentChange::SRC_LOG );
+ $rcExternal = $dbw->addQuotes( RC_EXTERNAL );
+ $rcSrcExternal = $dbw->addQuotes( RecentChange::SRC_EXTERNAL );
+
+ return "rc_source = CASE
+ WHEN rc_type = $rcNew THEN $rcSrcNew
+ WHEN rc_type = $rcEdit THEN $rcSrcEdit
+ WHEN rc_type = $rcLog THEN $rcSrcLog
+ WHEN rc_type = $rcExternal THEN $rcSrcExternal
+ ELSE ''
+ END";
+ }
+}
+
+$maintClass = "PopulateRecentChangesSource";
+require_once RUN_MAINTENANCE_IF_MAIN;
<?php
/**
- * Populates the rev_len field for old revisions created before MW 1.10.
+ * Populates the rev_len and ar_len fields for old revisions created
+ * before MW 1.10.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
require_once __DIR__ . '/Maintenance.php';
/**
- * Maintenance script that populates the rev_len field for old revisions
- * created before MW 1.10.
+ * Maintenance script that populates the rev_len and ar_len fields
+ * for old revisions created before MW 1.10.
*
* @ingroup Maintenance
*/
class PopulateRevisionLength extends LoggedUpdateMaintenance {
public function __construct() {
parent::__construct();
- $this->mDescription = "Populates the rev_len field";
+ $this->mDescription = "Populates the rev_len and ar_len fields";
$this->setBatchSize( 200 );
}
protected function getUpdateKey() {
- return 'populate rev_len';
- }
-
- protected function updateSkippedMessage() {
- return 'rev_len column of revision table already populated.';
+ return 'populate rev_len and ar_len';
}
public function doDBUpdates() {
$db = $this->getDB( DB_MASTER );
if ( !$db->tableExists( 'revision' ) ) {
$this->error( "revision table does not exist", true );
+ } elseif ( !$db->tableExists( 'archive' ) ) {
+ $this->error( "archive table does not exist", true );
} elseif ( !$db->fieldExists( 'revision', 'rev_len', __METHOD__ ) ) {
$this->output( "rev_len column does not exist\n\n", true );
return false;
}
$this->output( "Populating rev_len column\n" );
+ $rev = $this->doLenUpdates( 'revision', 'rev_id', 'rev', Revision::selectFields() );
+
+ $this->output( "Populating ar_len column\n" );
+ $ar = $this->doLenUpdates( 'archive', 'ar_id', 'ar', Revision::selectArchiveFields() );
+
+ $this->output( "rev_len and ar_len population complete [$rev revision rows, $ar archive rows].\n" );
+ return true;
+ }
- $start = $db->selectField( 'revision', 'MIN(rev_id)', false, __METHOD__ );
- $end = $db->selectField( 'revision', 'MAX(rev_id)', false, __METHOD__ );
+ /**
+ * @param string $table
+ * @param string $idCol
+ * @param string $prefix
+ * @param array $fields
+ * @return int
+ */
+ protected function doLenUpdates( $table, $idCol, $prefix, $fields ) {
+ $db = $this->getDB( DB_MASTER );
+ $start = $db->selectField( $table, "MIN($idCol)", false, __METHOD__ );
+ $end = $db->selectField( $table, "MAX($idCol)", false, __METHOD__ );
if ( !$start || !$end ) {
- $this->output( "...revision table seems to be empty.\n" );
- return true;
+ $this->output( "...$table table seems to be empty.\n" );
+ return 0;
}
# Do remaining chunks
$blockStart = intval( $start );
$blockEnd = intval( $start ) + $this->mBatchSize - 1;
$count = 0;
- $missing = 0;
- $fields = Revision::selectFields();
+
while ( $blockStart <= $end ) {
- $this->output( "...doing rev_id from $blockStart to $blockEnd\n" );
+ $this->output( "...doing $idCol from $blockStart to $blockEnd\n" );
$res = $db->select(
- 'revision',
+ $table,
$fields,
array(
- "rev_id >= $blockStart",
- "rev_id <= $blockEnd",
- "rev_len IS NULL"
+ "$idCol >= $blockStart",
+ "$idCol <= $blockEnd",
+ "{$prefix}_len IS NULL"
),
__METHOD__
);
+
+ $db->begin( __METHOD__ );
# Go through and update rev_len from these rows.
foreach ( $res as $row ) {
- $rev = new Revision( $row );
- $content = $rev->getContent();
- if ( !$content ) {
- # This should not happen, but sometimes does (bug 20757)
- $this->output( "Content of revision {$row->rev_id} unavailable!\n" );
- $missing++;
- }
- else {
- # Update the row...
- $db->update( 'revision',
- array( 'rev_len' => $content->getSize() ),
- array( 'rev_id' => $row->rev_id ),
- __METHOD__ );
+ if ( $this->upgradeRow( $row, $table, $idCol, $prefix ) ) {
$count++;
}
}
+ $db->commit( __METHOD__ );
+
$blockStart += $this->mBatchSize;
$blockEnd += $this->mBatchSize;
wfWaitForSlaves();
}
- $this->output( "rev_len population complete ... {$count} rows changed ({$missing} missing)\n" );
+ return $count;
+ }
+
+ /**
+ * @param $row
+ * @param string $table
+ * @param string $idCol
+ * @param string $prefix
+ * @return bool
+ */
+ protected function upgradeRow( $row, $table, $idCol, $prefix ) {
+ $db = $this->getDB( DB_MASTER );
+
+ $rev = ( $table === 'archive' )
+ ? Revision::newFromArchiveRow( $row )
+ : new Revision( $row );
+
+ $content = $rev->getContent();
+ if ( !$content ) {
+ # This should not happen, but sometimes does (bug 20757)
+ $id = $row->$idCol;
+ $this->output( "Content of $table $id unavailable!\n" );
+ return false;
+ }
+
+ # Update the row...
+ $db->update( $table,
+ array( "{$prefix}_len" => $content->getSize() ),
+ array( $idCol => $row->$idCol ),
+ __METHOD__
+ );
+
return true;
}
}
rc_this_oldid INTEGER NOT NULL,
rc_last_oldid INTEGER NOT NULL,
rc_type SMALLINT NOT NULL DEFAULT 0,
+ rc_source TEXT NOT NULL,
rc_patrolled SMALLINT NOT NULL DEFAULT 0,
rc_ip CIDR,
rc_old_len INTEGER,
'rc_this_oldid' => 'rev_id',
'rc_last_oldid' => 0, // is this ok?
'rc_type' => $dbw->conditional( 'page_is_new != 0', RC_NEW, RC_EDIT ),
+ 'rc_source' => $dbw->conditional( 'page_is_new != 0', $dbw->addQuotes( RecentChange::SRC_NEW ), $dbw->addQuotes( RecentChange::SRC_EDIT ) ),
'rc_deleted' => 'rev_deleted'
), array(
'rev_timestamp > ' . $dbw->addQuotes( $dbw->timestamp( $cutoff ) ),
-- The type of change entry (RC_EDIT,RC_NEW,RC_LOG,RC_EXTERNAL)
rc_type tinyint unsigned NOT NULL default 0,
+ -- The source of the change entry (replaces rc_type)
+ -- default of '' is temporary, needed for initial migration
+ rc_source varchar(16) binary not null default '',
+
-- If the Recent Changes Patrol option is enabled,
-- users may mark edits as having been reviewed to
-- remove a warning flag on the RC list.
wl_namespace int NOT NULL default 0,
wl_title varchar(255) binary NOT NULL default '',
- -- Timestamp when user was last sent a notification e-mail;
- -- cleared when the user visits the page.
+ -- Timestamp used to send notification e-mails and show "updated since last visit" markers on
+ -- history and recent changes / watchlist. Set to NULL when the user visits the latest revision
+ -- of the page, which means that they should be sent an e-mail on the next change.
wl_notificationtimestamp varbinary(14)
) /*$wgDBTableOptions*/;
'localBasePath' => $GLOBALS['wgStyleDirectory'],
),
'skins.vector' => array(
- // Keep in sync with WebInstallerOutput::getCSS()
+ // Used in the web installer. Test it after modifying this definition!
'styles' => array(
'common/commonElements.css' => array( 'media' => 'screen' ),
'common/commonContent.css' => array( 'media' => 'screen' ),
'localBasePath' => $GLOBALS['wgStyleDirectory'],
),
'mediawiki.legacy.config' => array(
+ // Used in the web installer. Test it after modifying this definition!
'scripts' => 'common/config.js',
- 'styles' => array( 'common/config.css', 'common/config-cc.css' ),
+ 'styles' => array( 'common/config.css' ),
'remoteBasePath' => $GLOBALS['wgStylePath'],
'localBasePath' => $GLOBALS['wgStyleDirectory'],
'dependencies' => 'mediawiki.legacy.wikibits',
'position' => 'top',
),
'mediawiki.legacy.shared' => array(
+ // Used in the web installer. Test it after modifying this definition!
'styles' => array( 'common/shared.css' => array( 'media' => 'screen' ) ),
'remoteBasePath' => $GLOBALS['wgStylePath'],
'localBasePath' => $GLOBALS['wgStyleDirectory'],
// thumb.php-generated thumbnails
thumbPhpRegex = /thumb\.php/,
-
regexes = [
// Thumbnails
- /\/[a-f0-9]\/[a-f0-9]{2}\/([^\s\/]+)\/[0-9]+px-\1[^\s\/]*$/,
+ /\/[a-f0-9]\/[a-f0-9]{2}\/([^\s\/]+)\/[^\s\/]+-\1[^\s\/]*$/,
// Thumbnails in non-hashed upload directories
- /\/([^\s\/]+)\/[0-9]+px-\1[^\s\/]*$/,
+ /\/([^\s\/]+)\/[^\s\/]+-\1[^\s\/]*$/,
// Full size images
/\/[a-f0-9]\/[a-f0-9]{2}\/([^\s\/]+)$/,
*/
auditSelectors: function ( css ) {
var selectors = { total: 0, matched: 0 },
- style = document.createElement( 'style' );
+ style = document.createElement( 'style' ),
+ sheet, rules;
style.textContent = css;
document.body.appendChild( style );
- $.each( style.sheet.cssRules, function ( index, rule ) {
+ // Standards-compliant browsers use .sheet.cssRules, IE8 uses .styleSheet.rules…
+ sheet = style.sheet || style.styleSheet;
+ rules = sheet.cssRules || sheet.rules;
+ $.each( rules, function ( index, rule ) {
selectors.total++;
if ( document.querySelector( rule.selectorText ) !== null ) {
selectors.matched++;
-/*
- * Core MediaWiki JavaScript Library
+/**
+ * Base library for MediaWiki.
+ *
+ * @class mw
+ * @alternateClassName mediaWiki
+ * @singleton
*/
var mw = ( function ( $, undefined ) {
var hasOwn = Object.prototype.hasOwnProperty,
slice = Array.prototype.slice;
+ /**
+ * Log a message to window.console, if possible. Useful to force logging of some
+ * errors that are otherwise hard to detect (I.e., this logs also in production mode).
+ * Gets console references in each invocation, so that delayed debugging tools work
+ * fine. No need for optimization here, which would only result in losing logs.
+ *
+ * @private
+ * @param {string} msg text for the log entry.
+ * @param {Error} [e]
+ */
+ function log( msg, e ) {
+ var console = window.console;
+ if ( console && console.log ) {
+ console.log( msg );
+ // If we have an exception object, log it through .error() to trigger
+ // proper stacktraces in browsers that support it. There are no (known)
+ // browsers that don't support .error(), that do support .log() and
+ // have useful exception handling through .log().
+ if ( e && console.error ) {
+ console.error( String( e ), e );
+ }
+ }
+ }
+
/* Object constructors */
/**
},
/**
- * Converts message object to it's string form based on the state of format.
+ * Converts message object to its string form based on the state of format.
*
* @return {string} Message as a string in the current form or `<key>` if key does not exist.
*/
}
};
- /**
- * Base library for MediaWiki.
- *
- * @class mw
- * @alternateClassName mediaWiki
- * @singleton
- */
return {
/* Public Members */
try {
styleEl.styleSheet.cssText += cssText; // IE
} catch ( e ) {
- log( 'addEmbeddedCSS fail\ne.message: ' + e.message, e );
+ log( 'addEmbeddedCSS fail', e );
}
} else {
styleEl.appendChild( document.createTextNode( String( cssText ) ) );
return filter( 'ready', dependencies ).length === dependencies.length;
}
- /**
- * Log a message to window.console, if possible. Useful to force logging of some
- * errors that are otherwise hard to detect (I.e., this logs also in production mode).
- * Gets console references in each invocation, so that delayed debugging tools work
- * fine. No need for optimization here, which would only result in losing logs.
- *
- * @private
- * @param {string} msg text for the log entry.
- * @param {Error} [e]
- */
- function log( msg, e ) {
- var console = window.console;
- if ( console && console.log ) {
- console.log( msg );
- // If we have an exception object, log it through .error() to trigger
- // proper stacktraces in browsers that support it. There are no (known)
- // browsers that don't support .error(), that do support .log() and
- // have useful exception handling through .log().
- if ( e && console.error ) {
- console.error( e );
- }
- }
- }
-
/**
* A module has entered state 'ready', 'error', or 'missing'. Automatically update pending jobs
* and modules that depend upon this module. if the given module failed, propagate the 'error'
j -= 1;
try {
if ( hasErrors ) {
- throw new Error( 'Module ' + module + ' failed.');
+ if ( $.isFunction( job.error ) ) {
+ job.error( new Error( 'Module ' + module + ' has failed dependencies' ), [module] );
+ }
} else {
if ( $.isFunction( job.ready ) ) {
job.ready();
}
}
} catch ( e ) {
- if ( $.isFunction( job.error ) ) {
- try {
- job.error( e, [module] );
- } catch ( ex ) {
- // A user-defined operation raised an exception. Swallow to protect
- // our state machine!
- log( 'Exception thrown by job.error()', ex );
- }
- }
+ // A user-defined callback raised an exception.
+ // Swallow it to protect our state machine!
+ log( 'Exception thrown by job.error', e );
}
}
}
if ( registry[module].state === 'ready' ) {
- // The current module became 'ready'. Recursively execute all dependent modules that are loaded
- // and now have all dependencies satisfied.
+ // The current module became 'ready'. Set it in the module store, and recursively execute all
+ // dependent modules that are loaded and now have all dependencies satisfied.
+ mw.loader.store.set( module, registry[module] );
for ( m in registry ) {
if ( registry[m].state === 'loaded' && allReady( registry[m].dependencies ) ) {
execute( m );
} catch ( e ) {
// This needs to NOT use mw.log because these errors are common in production mode
// and not in debug mode, such as when a symbol that should be global isn't exported
- log( 'Exception thrown by ' + module + ': ' + e.message, e );
+ log( 'Exception thrown by ' + module, e );
registry[module].state = 'error';
handlePending( module );
}
addScript( sourceLoadScript + '?' + $.param( request ) + '&*', null, async );
}
- /* Public Methods */
+ /* Public Members */
return {
/**
* The module registry is exposed as an aid for debugging and inspecting page
}
}
}
+
+ mw.loader.store.init();
+ if ( mw.loader.store.enabled ) {
+ batch = $.grep( batch, function ( module ) {
+ var source = mw.loader.store.get( module );
+ if ( source ) {
+ $.globalEval( source );
+ return false; // Don't fetch
+ }
+ return true; // Fetch
+ } );
+ }
+
// Early exit if there's nothing to load...
if ( !batch.length ) {
return;
mw.loader.using( 'mediawiki.inspect', function () {
mw.inspect.runReports.apply( mw.inspect, args );
} );
- }
+ },
+
+ /**
+ * On browsers that implement the localStorage API, the module store serves as a
+ * smart complement to the browser cache. Unlike the browser cache, the module store
+ * can slice a concatenated response from ResourceLoader into its constituent
+ * modules and cache each of them separately, using each module's versioning scheme
+ * to determine when the cache should be invalidated.
+ *
+ * @singleton
+ * @class mw.loader.store
+ */
+ store: {
+ // Whether the store is in use on this page.
+ enabled: null,
+
+ // The contents of the store, mapping '[module name]@[version]' keys
+ // to module implementations.
+ items: {},
+
+ // Cache hit stats
+ stats: { hits: 0, misses: 0, expired: 0 },
+
+ /**
+ * Construct a JSON-serializable object representing the content of the store.
+ * @return {Object} Module store contents.
+ */
+ toJSON: function () {
+ return { items: mw.loader.store.items, vary: mw.loader.store.getVary() };
+ },
+
+ /**
+ * Get the localStorage key for the entire module store. The key references
+ * $wgDBname to prevent clashes between wikis which share a common host.
+ *
+ * @return {string} localStorage item key
+ */
+ getStoreKey: function () {
+ return 'MediaWikiModuleStore:' + mw.config.get( 'wgDBname' );
+ },
+
+ /**
+ * Get a string key on which to vary the module cache.
+ * @return {string} String of concatenated vary conditions.
+ */
+ getVary: function () {
+ return [
+ mw.config.get( 'skin' ),
+ mw.config.get( 'wgResourceLoaderStorageVersion' ),
+ mw.config.get( 'wgUserLanguage' )
+ ].join(':');
+ },
+
+ /**
+ * Get a string key for a specific module. The key format is '[name]@[version]'.
+ *
+ * @param {string} module Module name
+ * @return {string|null} Module key or null if module does not exist
+ */
+ getModuleKey: function ( module ) {
+ return typeof registry[module] === 'object' ?
+ ( module + '@' + registry[module].version ) : null;
+ },
+
+ /**
+ * Initialize the store by retrieving it from localStorage and (if successfully
+ * retrieved) decoding the stored JSON value to a plain object.
+ *
+ * The try / catch block is used for JSON & localStorage feature detection.
+ * See the in-line documentation for Modernizr's localStorage feature detection
+ * code for a full account of why we need a try / catch: <http://git.io/4NEwKg>.
+ */
+ init: function () {
+ var raw, data;
+
+ if ( mw.loader.store.enabled !== null ) {
+ // #init already ran.
+ return;
+ }
+ if ( !mw.config.get( 'wgResourceLoaderStorageEnabled' ) || mw.config.get( 'debug' ) ) {
+ // Disabled by configuration, or because debug mode is set.
+ mw.loader.store.enabled = false;
+ return;
+ }
+
+ try {
+ raw = localStorage.getItem( mw.loader.store.getStoreKey() );
+ // If we get here, localStorage is available; mark enabled.
+ mw.loader.store.enabled = true;
+ data = JSON.parse( raw );
+ if ( data && typeof data.items === 'object' && data.vary === mw.loader.store.getVary() ) {
+ mw.loader.store.items = data.items;
+ return;
+ }
+ } catch (e) {}
+
+ if ( raw === undefined ) {
+ mw.loader.store.enabled = false; // localStorage failed; disable store.
+ } else {
+ mw.loader.store.update();
+ }
+ },
+
+ /**
+ * Retrieve a module from the store and update cache hit stats.
+ *
+ * @param {string} module Module name
+ * @return {string|boolean} Module implementation or false if unavailable
+ */
+ get: function ( module ) {
+ var key;
+
+ if ( mw.loader.store.enabled !== true ) {
+ return false;
+ }
+
+ key = mw.loader.store.getModuleKey( module );
+ if ( key in mw.loader.store.items ) {
+ mw.loader.store.stats.hits++;
+ return mw.loader.store.items[key];
+ }
+ mw.loader.store.stats.misses++;
+ return false;
+ },
+
+ /**
+ * Stringify a module and queue it for storage.
+ *
+ * @param {string} module Module name
+ * @param {Object} descriptor The module's descriptor as set in the registry
+ */
+ set: function ( module, descriptor ) {
+ var args, key;
+
+ if ( mw.loader.store.enabled !== true ) {
+ return false;
+ }
+
+ key = mw.loader.store.getModuleKey( module );
+
+ if ( key in mw.loader.store.items ) {
+ // Already set; decline to store.
+ return false;
+ }
+
+ if ( descriptor.state !== 'ready' ) {
+ // Module failed to load; decline to store.
+ return false;
+ }
+
+ if ( !descriptor.version || $.inArray( descriptor.group, [ 'private', 'user', 'site' ] ) !== -1 ) {
+ // Unversioned, private, or site-/user-specific; decline to store.
+ return false;
+ }
+
+ if ( $.inArray( undefined, [ descriptor.script, descriptor.style, descriptor.messages ] ) !== -1 ) {
+ // Partial descriptor; decline to store.
+ return false;
+ }
+
+ try {
+ args = [
+ JSON.stringify( module ),
+ typeof descriptor.script === 'function' ?
+ String( descriptor.script ) : JSON.stringify( descriptor.script ),
+ JSON.stringify( descriptor.style ),
+ JSON.stringify( descriptor.messages )
+ ];
+ } catch (e) {
+ return;
+ }
+ mw.loader.store.items[key] = 'mw.loader.implement(' + args.join(',') + ');';
+ mw.loader.store.update();
+ },
+
+ /**
+ * Iterate through the module store, removing any item that does not correspond
+ * (in name and version) to an item in the module registry.
+ */
+ prune: function () {
+ var key, module;
+
+ if ( mw.loader.store.enabled !== true ) {
+ return false;
+ }
+
+ for ( key in mw.loader.store.items ) {
+ module = key.substring( 0, key.indexOf( '@' ) );
+ if ( mw.loader.store.getModuleKey( module ) !== key ) {
+ mw.loader.store.stats.expired++;
+ delete mw.loader.store.items[key];
+ }
+ }
+ },
+
+ /**
+ * Sync modules to localStorage.
+ *
+ * This function debounces localStorage updates. When called multiple times in
+ * quick succession, the calls are coalesced into a single update operation.
+ * This allows us to call #update without having to consider the module load
+ * queue; the call to localStorage.setItem will be naturally deferred until the
+ * page is quiescent.
+ *
+ * Because localStorage is shared by all pages with the same origin, if multiple
+ * pages are loaded with different module sets, the possibility exists that
+ * modules saved by one page will be clobbered by another. But the impact would
+ * be minor and the problem would be corrected by subsequent page views.
+ */
+ update: ( function () {
+ var timer;
+
+ function flush() {
+ var data;
+ if ( mw.loader.store.enabled !== true ) {
+ return false;
+ }
+ mw.loader.store.prune();
+ try {
+ data = JSON.stringify( mw.loader.store );
+ localStorage.setItem( mw.loader.store.getStoreKey(), data );
+ } catch (e) {}
+ }
+
+ return function () {
+ clearTimeout( timer );
+ timer = setTimeout( flush, 2000 );
+ };
+ }() )
+ }
};
}() ),
@html-font-size: 90%;
@body-font-size: inherit;
-@body-font-color: inherit;
// Page content
@content-font-family: "Helvetica Neue", "Helvetica", "Nimbus Sans L", "Arial", "Liberation Sans", sans-serif;
+@content-font-color: #252525;
@content-font-size: 0.9em;
@content-line-height: inherit;
@content-padding: 1em;
/* Merge the border with tabs' one (in their background image) */
margin-top: -1px;
background-color: white;
- color: @body-font-color;
+ color: @content-font-color;
direction: ltr;
}
/* Hide, but keep accessible for screen-readers */
@html-font-size: 1em;
@body-font-size: 1em;
-@body-font-color: #252525;
// Page content
@content-font-family: sans-serif;
+@content-font-color: black;
@content-font-size: 0.8em;
@content-line-height: 1.5em;
@content-padding: 1.5em 1.5em 1.5em 1.75em;
/**
* Get a Parser object
+ *
+ * @param string $preprocessor
+ * @return Parser
*/
function getParser( $preprocessor = null ) {
global $wgParserConf;
$out = $parser->getPreloadText( $input, $title, $options );
} else {
$output = $parser->parse( $input, $title, $options, true, true, 1337 );
+ $output->setTOCEnabled( !isset( $opts['notoc'] ) );
$out = $output->getText();
if ( isset( $opts['showtitle'] ) ) {
/**
* Use a regex to find out the value of an option
* @param $key String: name of option val to retrieve
- * @param $opts Options array to look in
+ * @param $opts array: Options array to look in
* @param $default Mixed: default value returned if not found
*/
private static function getOptionValue( $key, $opts, $default ) {
# showtitle make the first line the title
# comment run through Linker::formatComment() instead of main parser
# local format section links in edit comment text as local links
+# notoc disable table of contents
#
# You can also set the following parser properties via test options:
# wgEnableUploads, wgAllowExternalImages, wgMaxTocLevel,
</li>
</ul>
</div>
+
<h2><span class="mw-headline" id="Headline_1">Headline 1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Headline 1">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<h3><span class="mw-headline" id="Subheadline_1">Subheadline 1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: Subheadline 1">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<h5><span class="mw-headline" id="Skipping_a_level">Skipping a level</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=3" title="Edit section: Skipping a level">edit</a><span class="mw-editsection-bracket">]</span></span></h5>
</li>
</ul>
</div>
+
<h1><span class="mw-headline" id="Level_1_Heading">Level 1 Heading</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Level 1 Heading">edit</a><span class="mw-editsection-bracket">]</span></span></h1>
<h2><span class="mw-headline" id="Level_2_Heading">Level 2 Heading</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: Level 2 Heading">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<h3><span class="mw-headline" id="Level_3_Heading">Level 3 Heading</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=3" title="Edit section: Level 3 Heading">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
</li>
</ul>
</div>
+
<h2><span class="mw-headline" id="title_1">title 1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: title 1">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<h3><span class="mw-headline" id="title_1.1">title 1.1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: title 1.1">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<h4><span class="mw-headline" id="title_1.1.1">title 1.1.1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=3" title="Edit section: title 1.1.1">edit</a><span class="mw-editsection-bracket">]</span></span></h4>
</li>
</ul>
</div>
+
<h2><span class="mw-headline" id="title_1">title 1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: title 1">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<h3><span class="mw-headline" id="title_1.1">title 1.1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: title 1.1">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<h4><span class="mw-headline" id="title_1.1.1">title 1.1.1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=3" title="Edit section: title 1.1.1">edit</a><span class="mw-editsection-bracket">]</span></span></h4>
<li class="toclevel-1 tocsection-5"><a href="#Section_2"><span class="tocnumber">2</span> <span class="toctext">Section 2</span></a></li>
</ul>
</div>
+
<h2><span class="mw-headline" id="Section_1">Section 1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Section 1">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<h3><span class="mw-headline" id="Section_1.1">Section 1.1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: Section 1.1">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<h4><span class="mw-headline" id="Section_1.1.1">Section 1.1.1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=3" title="Edit section: Section 1.1.1">edit</a><span class="mw-editsection-bracket">]</span></span></h4>
<li class="toclevel-1 tocsection-3"><a href="#title_2"><span class="tocnumber">2</span> <span class="toctext">title 2</span></a></li>
</ul>
</div>
+
<h2><span class="mw-headline" id="title_1">title 1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: title 1">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<h3><span class="mw-headline" id="title_1.1">title 1.1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: title 1.1">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<h2><span class="mw-headline" id="title_2">title 2</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=3" title="Edit section: title 2">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<li class="toclevel-1 tocsection-5"><a href="#text_.22_text"><span class="tocnumber">5</span> <span class="toctext">text " text</span></a></li>
</ul>
</div>
+
<h2><span class="mw-headline" id="text_.3E_text">text > text</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: text > text">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<p>section 1
</p>
<li class="toclevel-1 tocsection-4"><a href="#.3Ditalic_heading"><span class="tocnumber">4</span> <span class="toctext">=<i>italic</i> heading</span></a></li>
</ul>
</div>
+
<h1><span class="mw-headline" id="foo.3D">foo=</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: foo=">edit</a><span class="mw-editsection-bracket">]</span></span></h1>
<h1><span class="mw-headline" id=".3Dfoo">=foo</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: =foo">edit</a><span class="mw-editsection-bracket">]</span></span></h1>
<h1><span class="mw-headline" id="italic_heading.3D"><i>italic</i> heading=</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=3" title="Edit section: italic heading=">edit</a><span class="mw-editsection-bracket">]</span></span></h1>
</li>
</ul>
</div>
+
<h1><span class="mw-headline" id="Header_1">Header 1</span></h1>
<h2><span class="mw-headline" id="Header_1.1">Header 1.1</span></h2>
<h2><span class="mw-headline" id="Header_1.2">Header 1.2</span></h2>
</ul>
</div>
+
!! end
!! test
</li>
</ul>
</div>
+
<h2><span class="mw-headline" id="2">2</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: 2">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<h6><span class="mw-headline" id="6">6</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: 6">edit</a><span class="mw-editsection-bracket">]</span></span></h6>
<h3><span class="mw-headline" id="3">3</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=3" title="Edit section: 3">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<li class="toclevel-1 tocsection-1"><a href="#Lost_episodes"><span class="tocnumber">1</span> <span class="toctext"><i>Lost</i> episodes</span></a></li>
</ul>
</div>
+
<h2><span class="mw-headline" id="Lost_episodes"><i>Lost</i> episodes</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Main_Page&action=edit&section=1" title="Edit section: Lost episodes">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
!! end
<li class="toclevel-1 tocsection-1"><a href="#should_be_bold_then_normal_text"><span class="tocnumber">1</span> <span class="toctext"><b>should be bold</b> then normal text</span></a></li>
</ul>
</div>
+
<h2><span class="mw-headline" id="should_be_bold_then_normal_text"><b>should be bold</b> then normal text</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Main_Page&action=edit&section=1" title="Edit section: should be bold then normal text">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
!! end
<li class="toclevel-1 tocsection-1"><a href="#Image"><span class="tocnumber">1</span> <span class="toctext">Image</span></a></li>
</ul>
</div>
+
<h2><span class="mw-headline" id="Image">Image <a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Main_Page&action=edit&section=1" title="Edit section: Image">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
!! end
<li class="toclevel-1 tocsection-1"><a href="#Quote"><span class="tocnumber">1</span> <span class="toctext">Quote</span></a></li>
</ul>
</div>
+
<h2><span class="mw-headline" id="Quote"><blockquote>Quote</blockquote></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Main_Page&action=edit&section=1" title="Edit section: Quote">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
!! end
<li class="toclevel-1 tocsection-1"><a href="#Proof:_2_.3C_3"><span class="tocnumber">1</span> <span class="toctext">Proof: 2 < 3</span></a></li>
</ul>
</div>
+
<h2><span class="mw-headline" id="Proof:_2_.3C_3">Proof: 2 < 3</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Main_Page&action=edit&section=1" title="Edit section: Proof: 2 < 3">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<p><small>Hanc marginis exiguitas non caperet.</small>
QED
<li class="toclevel-1 tocsection-2"><a href="#Foo_Bar_2"><span class="tocnumber">2</span> <span class="toctext"><i>Foo</i> Bar</span></a></li>
</ul>
</div>
+
<h2><span class="mw-headline" id="Foo_Bar"><i>Foo</i> <b>Bar</b></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Foo Bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<h2><span class="mw-headline" id="Foo_Bar_2"><i>Foo</i> <blockquote>Bar</blockquote></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: Foo Bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<li class="toclevel-1 tocsection-2"><a href="#b.22.3EEvilbye"><span class="tocnumber">2</span> <span class="toctext"><sup> b">Evilbye</sup></span></a></li>
</ul>
</div>
+
<h2><span class="mw-headline" id="Hello"><sup class="in-h2">Hello</sup></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Hello">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<h2><span class="mw-headline" id="b.22.3EEvilbye"><sup> b">Evilbye</sup></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: b">Evilbye">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<li class="toclevel-1 tocsection-5"><a href="#Attributes_after_dir_on_these_span_tags_must_be_deleted_from_the_TOC"><span class="tocnumber">5</span> <span class="toctext"><span dir="ltr">Attributes after dir on these span tags must be deleted from the TOC</span></span></a></li>
</ul>
</div>
+
<h2><span class="mw-headline" id="C.2B.2B"><span dir="ltr">C++</span></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: C++">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<h2><span class="mw-headline" id=".D7.96.D7.91.D7.A0.D7.92.21"><span dir="rtl">זבנג!</span></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: זבנג!">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<h2><span class="mw-headline" id="The_attributes_on_these_span_tags_must_be_deleted_from_the_TOC"><span style="font-style: italic">The attributes on these span tags must be deleted from the TOC</span></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=3" title="Edit section: The attributes on these span tags must be deleted from the TOC">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
</p>
!! end
+!!test
+Disable TOC
+!! options
+notoc
+!! input
+Lead
+== Section 1 ==
+== Section 2 ==
+== Section 3 ==
+== Section 4 ==
+== Section 5 ==
+!! result
+<p>Lead
+</p>
+
+<h2><span class="mw-headline" id="Section_1">Section 1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Section 1">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
+<h2><span class="mw-headline" id="Section_2">Section 2</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: Section 2">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
+<h2><span class="mw-headline" id="Section_3">Section 3</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=3" title="Edit section: Section 3">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
+<h2><span class="mw-headline" id="Section_4">Section 4</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=4" title="Edit section: Section 4">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
+<h2><span class="mw-headline" id="Section_5">Section 5</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=5" title="Edit section: Section 5">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
+
+!! end
+
###
### Parsoids-specific tests
--- /dev/null
+<?php
+
+class TestAutoloadedCamlClass {
+}
--- /dev/null
+<?php
+
+class TestAutoloadedClass {
+}
--- /dev/null
+<?php
+
+class TestAutoloadedLocalClass {
+}
--- /dev/null
+<?php
+
+class TestAutoloadedSerializedClass {
+}
<?php
+/**
+ * @covers Licenses
+ */
class LicensesTest extends MediaWikiTestCase {
public function testLicenses() {
return array( $t, $po );
}
+ /**
+ * @covers LinksUpdate::addLink
+ */
public function testUpdate_pagelinks() {
list( $t, $po ) = $this->makeTitleAndParserOutput( "Testing", 111 );
), $update->getRemovedLinks() );
}
+ /**
+ * @covers LinksUpdate::addExternalLink
+ */
public function testUpdate_externallinks() {
list( $t, $po ) = $this->makeTitleAndParserOutput( "Testing", 111 );
) );
}
+ /**
+ * @covers LinksUpdate::addCategory
+ */
public function testUpdate_categorylinks() {
$this->setMwGlobals( 'wgCategoryCollation', 'uppercase' );
) );
}
+ /**
+ * @covers LinksUpdate::addInterwikiLink
+ */
public function testUpdate_iwlinks() {
list( $t, $po ) = $this->makeTitleAndParserOutput( "Testing", 111 );
) );
}
+ /**
+ * @covers LinksUpdate::addTemplate
+ */
public function testUpdate_templatelinks() {
list( $t, $po ) = $this->makeTitleAndParserOutput( "Testing", 111 );
) );
}
+ /**
+ * @covers LinksUpdate::addImage
+ */
public function testUpdate_imagelinks() {
list( $t, $po ) = $this->makeTitleAndParserOutput( "Testing", 111 );
) );
}
+ /**
+ * @covers LinksUpdate::addLanguageLink
+ */
public function testUpdate_langlinks() {
list( $t, $po ) = $this->makeTitleAndParserOutput( "Testing", 111 );
) );
}
+ /**
+ * @covers LinksUpdate::setProperty
+ */
public function testUpdate_page_props() {
list( $t, $po ) = $this->makeTitleAndParserOutput( "Testing", 111 );
/**
* These tests should work regardless of $wgCapitalLinks
* @group Database
+ * @todo Split tests into providers and test methods
*/
class LocalFileTest extends MediaWikiTestCase {
$this->file_lc = $this->repo_lc->newFile( 'test!' );
}
+ /**
+ * @covers File::getHashPath
+ */
public function testGetHashPath() {
$this->assertEquals( '', $this->file_hl0->getHashPath() );
$this->assertEquals( 'a/a2/', $this->file_hl2->getHashPath() );
$this->assertEquals( 'c/c4/', $this->file_lc->getHashPath() );
}
+ /**
+ * @covers File::getRel
+ */
public function testGetRel() {
$this->assertEquals( 'Test!', $this->file_hl0->getRel() );
$this->assertEquals( 'a/a2/Test!', $this->file_hl2->getRel() );
$this->assertEquals( 'c/c4/test!', $this->file_lc->getRel() );
}
+ /**
+ * @covers File::getUrlRel
+ */
public function testGetUrlRel() {
$this->assertEquals( 'Test%21', $this->file_hl0->getUrlRel() );
$this->assertEquals( 'a/a2/Test%21', $this->file_hl2->getUrlRel() );
$this->assertEquals( 'c/c4/test%21', $this->file_lc->getUrlRel() );
}
+ /**
+ * @covers File::getArchivePath
+ */
public function testGetArchivePath() {
$this->assertEquals( 'mwstore://local-backend/test-public/archive', $this->file_hl0->getArchivePath() );
$this->assertEquals( 'mwstore://local-backend/test-public/archive/a/a2', $this->file_hl2->getArchivePath() );
$this->assertEquals( 'mwstore://local-backend/test-public/archive/a/a2/!', $this->file_hl2->getArchivePath( '!' ) );
}
+ /**
+ * @covers File::getThumbPath
+ */
public function testGetThumbPath() {
$this->assertEquals( 'mwstore://local-backend/test-thumb/Test!', $this->file_hl0->getThumbPath() );
$this->assertEquals( 'mwstore://local-backend/test-thumb/a/a2/Test!', $this->file_hl2->getThumbPath() );
$this->assertEquals( 'mwstore://local-backend/test-thumb/a/a2/Test!/x', $this->file_hl2->getThumbPath( 'x' ) );
}
+ /**
+ * @covers File::getArchiveUrl
+ */
public function testGetArchiveUrl() {
$this->assertEquals( '/testurl/archive', $this->file_hl0->getArchiveUrl() );
$this->assertEquals( '/testurl/archive/a/a2', $this->file_hl2->getArchiveUrl() );
$this->assertEquals( '/testurl/archive/a/a2/%21', $this->file_hl2->getArchiveUrl( '!' ) );
}
+ /**
+ * @covers File::getThumbUrl
+ */
public function testGetThumbUrl() {
$this->assertEquals( '/testurl/thumb/Test%21', $this->file_hl0->getThumbUrl() );
$this->assertEquals( '/testurl/thumb/a/a2/Test%21', $this->file_hl2->getThumbUrl() );
$this->assertEquals( '/testurl/thumb/a/a2/Test%21/x', $this->file_hl2->getThumbUrl( 'x' ) );
}
+ /**
+ * @covers File::getArchiveVirtualUrl
+ */
public function testGetArchiveVirtualUrl() {
$this->assertEquals( 'mwrepo://test/public/archive', $this->file_hl0->getArchiveVirtualUrl() );
$this->assertEquals( 'mwrepo://test/public/archive/a/a2', $this->file_hl2->getArchiveVirtualUrl() );
$this->assertEquals( 'mwrepo://test/public/archive/a/a2/%21', $this->file_hl2->getArchiveVirtualUrl( '!' ) );
}
+ /**
+ * @covers File::getThumbVirtualUrl
+ */
public function testGetThumbVirtualUrl() {
$this->assertEquals( 'mwrepo://test/thumb/Test%21', $this->file_hl0->getThumbVirtualUrl() );
$this->assertEquals( 'mwrepo://test/thumb/a/a2/Test%21', $this->file_hl2->getThumbVirtualUrl() );
$this->assertEquals( 'mwrepo://test/thumb/a/a2/Test%21/%21', $this->file_hl2->getThumbVirtualUrl( '!' ) );
}
+ /**
+ * @covers File::getUrl
+ */
public function testGetUrl() {
$this->assertEquals( '/testurl/Test%21', $this->file_hl0->getUrl() );
$this->assertEquals( '/testurl/a/a2/Test%21', $this->file_hl2->getUrl() );
}
+ /**
+ * @covers ::wfLocalFile
+ */
public function testWfLocalFile() {
$file = wfLocalFile( "File:Some_file_that_probably_doesn't exist.png" );
$this->assertThat( $file, $this->isInstanceOf( 'LocalFile' ), 'wfLocalFile() returns LocalFile for valid Titles' );
<?php
+/**
+ * @covers LocalisationCache
+ */
class LocalisationCacheTest extends MediaWikiTestCase {
public function testPuralRulesFallback() {
$cache = Language::getLocalisationCache();
<?php
+/**
+ * @covers MWFunction
+ */
class MWFunctionTest extends MediaWikiTestCase {
public function testNewObjFunction() {
$arg1 = 'Foo';
/**
* Test class for MWNamespace.
* Generated by PHPUnit on 2011-02-20 at 21:01:55.
+ * @todo covers tags
+ * @FIXME this test file is a mess
*
*/
class MWNamespaceTest extends MediaWikiTestCase {
/**
* @todo Write more texts, handle $wgAllowImageMoving setting
+ * @covers MWNamespace::isMovable
*/
public function testIsMovable() {
$this->assertFalse( MWNamespace::isMovable( NS_CATEGORY ) );
/**
* Please make sure to change testIsTalk() if you change the assertions below
+ * @covers MWNamespace::isSubject
*/
public function testIsSubject() {
// Special namespaces
/**
* Reverse of testIsSubject().
* Please update testIsSubject() if you change assertions below
+ * @covers MWNamespace::isTalk
*/
public function testIsTalk() {
// Special namespaces
}
/**
+ * @covers MWNamespace::getSubject
*/
public function testGetSubject() {
// Special namespaces are their own subjects
* Regular getTalk() calls
* Namespaces without a talk page (NS_MEDIA, NS_SPECIAL) are tested in
* the function testGetTalkExceptions()
+ * @covers MWNamespace::getTalk
*/
public function testGetTalk() {
$this->assertEquals( NS_TALK, MWNamespace::getTalk( NS_MAIN ) );
* Exceptions with getTalk()
* NS_MEDIA does not have talk pages. MediaWiki raise an exception for them.
* @expectedException MWException
+ * @covers MWNamespace::getTalk
*/
public function testGetTalkExceptionsForNsMedia() {
$this->assertNull( MWNamespace::getTalk( NS_MEDIA ) );
* Exceptions with getTalk()
* NS_SPECIAL does not have talk pages. MediaWiki raise an exception for them.
* @expectedException MWException
+ * @covers MWNamespace::getTalk
*/
public function testGetTalkExceptionsForNsSpecial() {
$this->assertNull( MWNamespace::getTalk( NS_SPECIAL ) );
* Regular getAssociated() calls
* Namespaces without an associated page (NS_MEDIA, NS_SPECIAL) are tested in
* the function testGetAssociatedExceptions()
+ * @covers MWNamespace::getAssociated
*/
public function testGetAssociated() {
$this->assertEquals( NS_TALK, MWNamespace::getAssociated( NS_MAIN ) );
### an exception for them.
/**
* @expectedException MWException
+ * @covers MWNamespace::getAssociated
*/
public function testGetAssociatedExceptionsForNsMedia() {
$this->assertNull( MWNamespace::getAssociated( NS_MEDIA ) );
/**
* @expectedException MWException
+ * @covers MWNamespace::getAssociated
*/
public function testGetAssociatedExceptionsForNsSpecial() {
$this->assertNull( MWNamespace::getAssociated( NS_SPECIAL ) );
* Note if we add a namespace registration system with keys like 'MAIN'
* we should add tests here for equivilance on things like 'MAIN' == 0
* and 'MAIN' == NS_MAIN.
+ * @covers MWNamespace::equals
*/
public function testEquals() {
$this->assertTrue( MWNamespace::equals( NS_MAIN, NS_MAIN ) );
}
/**
- * Test MWNamespace::subjectEquals
+ * @covers MWNamespace::subjectEquals
*/
public function testSubjectEquals() {
$this->assertSameSubject( NS_MAIN, NS_MAIN );
$this->assertDifferentSubject( NS_SPECIAL, NS_MAIN );
}
+ /**
+ * @covers MWNamespace::subjectEquals
+ */
public function testSpecialAndMediaAreDifferentSubjects() {
$this->assertDifferentSubject(
NS_MEDIA, NS_SPECIAL,
*/
/**
+ * @covers MWNamespace::canTalk
*/
public function testCanTalk() {
$this->assertCanNotTalk( NS_MEDIA );
}
/**
+ * @covers MWNamespace::isContent
*/
public function testIsContent() {
// NS_MAIN is a content namespace per DefaultSettings.php
/**
* Similar to testIsContent() but alters the $wgContentNamespaces
* global variable.
+ * @covers MWNamespace::isContent
*/
public function testIsContentAdvanced() {
global $wgContentNamespaces;
$this->assertIsContent( NS_MAIN );
}
+ /**
+ * @covers MWNamespace::isWatchable
+ */
public function testIsWatchable() {
// Specials namespaces are not watchable
$this->assertIsNotWatchable( NS_MEDIA );
$this->assertIsWatchable( 101 );
}
+ /**
+ * @covers MWNamespace::hasSubpages
+ */
public function testHasSubpages() {
global $wgNamespacesWithSubpages;
}
/**
+ * @covers MWNamespace::getContentNamespaces
*/
public function testGetContentNamespaces() {
global $wgContentNamespaces;
}
/**
+ * @covers MWNamespace::getSubjectNamespaces
*/
public function testGetSubjectNamespaces() {
$subjectsNS = MWNamespace::getSubjectNamespaces();
}
/**
+ * @covers MWNamespace::getTalkNamespaces
*/
public function testGetTalkNamespaces() {
$talkNS = MWNamespace::getTalkNamespaces();
/**
* Some namespaces are always capitalized per code definition
* in MWNamespace::$alwaysCapitalizedNamespaces
+ * @covers MWNamespace::isCapitalized
*/
public function testIsCapitalizedHardcodedAssertions() {
// NS_MEDIA and NS_FILE are treated the same
*
* Global setting correctness is tested against the NS_PROJECT and
* NS_PROJECT_TALK namespaces since they are not hardcoded nor specials
+ * @covers MWNamespace::isCapitalized
*/
public function testIsCapitalizedWithWgCapitalLinks() {
global $wgCapitalLinks;
* testing the $wgCapitalLinkOverrides global.
*
* @todo split groups of assertions in autonomous testing functions
+ * @covers MWNamespace::isCapitalized
*/
public function testIsCapitalizedWithWgCapitalLinkOverrides() {
global $wgCapitalLinkOverrides;
$this->assertIsCapitalized( NS_PROJECT );
}
+ /**
+ * @covers MWNamespace::hasGenderDistinction
+ */
public function testHasGenderDistinction() {
// Namespaces with gender distinctions
$this->assertTrue( MWNamespace::hasGenderDistinction( NS_USER ) );
$this->assertFalse( MWNamespace::hasGenderDistinction( NS_TALK ) );
}
+ /**
+ * @covers MWNamespace::isNonincludable
+ */
public function testIsNonincludable() {
global $wgNonincludableNamespaces;
) );
}
+ /**
+ * @covers Message::exists
+ */
public function testExists() {
$this->assertTrue( wfMessage( 'mainpage' )->exists() );
$this->assertTrue( wfMessage( 'mainpage' )->params( array() )->exists() );
$this->assertFalse( wfMessage( 'i-dont-exist-evar' )->rawParams( 'foo', 123 )->exists() );
}
+ /**
+ * @covers Message::__construct
+ */
public function testKey() {
$this->assertInstanceOf( 'Message', wfMessage( 'mainpage' ) );
$this->assertInstanceOf( 'Message', wfMessage( 'i-dont-exist-evar' ) );
$this->assertEquals( '<i-dont-exist-evar>', wfMessage( 'i-dont-exist-evar' )->escaped() );
}
+ /**
+ * @covers Message::inLanguage
+ */
public function testInLanguage() {
$this->assertEquals( 'Main Page', wfMessage( 'mainpage' )->inLanguage( 'en' )->text() );
$this->assertEquals( 'Заглавная страница', wfMessage( 'mainpage' )->inLanguage( 'ru' )->text() );
$this->assertEquals( 'Заглавная страница', wfMessage( 'mainpage' )->inLanguage( Language::factory( 'ru' ) )->text() );
}
+ /**
+ * @covers Message::__construct
+ */
public function testMessageParams() {
$this->assertEquals( 'Return to $1.', wfMessage( 'returnto' )->text() );
$this->assertEquals( 'Return to $1.', wfMessage( 'returnto', array() )->text() );
$this->assertEquals( 'You have foo (bar).', wfMessage( 'youhavenewmessages', array( 'foo', 'bar' ) )->text() );
}
+ /**
+ * @covers Message::__construct
+ * @covers Message::rawParams
+ */
public function testMessageParamSubstitution() {
$this->assertEquals( '(Заглавная страница)', wfMessage( 'parentheses', 'Заглавная страница' )->plain() );
$this->assertEquals( '(Заглавная страница $1)', wfMessage( 'parentheses', 'Заглавная страница $1' )->plain() );
$this->assertEquals( '(Заглавная страница $1)', wfMessage( 'parentheses' )->rawParams( 'Заглавная страница $1' )->plain() );
}
+ /**
+ * @covers Message::__construct
+ * @covers Message::params
+ */
public function testDeliciouslyManyParams() {
$msg = new RawMessage( '$1$2$3$4$5$6$7$8$9$10$11$12' );
// One less than above has placeholders
/**
* FIXME: This should not need database, but Language#formatExpiry does (bug 55912)
* @group Database
+ * @todo this should be split up into multiple test methods
+ * @covers Message::numParams
+ * @covers Message::durationParams
+ * @covers Message::expiryParams
+ * @covers Message::timeperiodParams
+ * @covers Message::sizeParams
+ * @covers Message::bitrateParams
*/
public function testMessageParamTypes() {
$lang = Language::factory( 'en' );
);
}
+ /**
+ * @covers Message::inContentLanguage
+ */
public function testInContentLanguageDisabled() {
$this->setMwGlobals( 'wgLang', Language::factory( 'fr' ) );
$this->assertEquals( 'Main Page', wfMessage( 'mainpage' )->inContentLanguage()->plain(), 'ForceUIMsg disabled' );
}
+ /**
+ * @covers Message::inContentLanguage
+ */
public function testInContentLanguageEnabled() {
$this->setMwGlobals( array(
'wgLang' => Language::factory( 'fr' ),
/**
* @expectedException MWException
+ * @covers Message::inLanguage
*/
public function testInLanguageThrows() {
wfMessage( 'foo' )->inLanguage( 123 );
*
* @group Output
*
+ * @todo factor tests in this class into providers and test methods
+ *
*/
class OutputPageTest extends MediaWikiTestCase {
const SCREEN_MEDIA_QUERY = 'screen and (min-width: 982px)';
/**
* Tests print requests
+ * @covers OutputPage::transformCssMedia
*/
public function testPrintRequests() {
$this->assertTransformCssMediaCase( array(
/**
* Tests screen requests, without either query parameter set
+ * @covers OutputPage::transformCssMedia
*/
public function testScreenRequests() {
$this->assertTransformCssMediaCase( array(
/**
* Tests handheld behavior
+ * @covers OutputPage::transformCssMedia
*/
public function testHandheld() {
$this->assertTransformCssMediaCase( array(
<?php
+
/**
* Tests for the PathRouter parsing.
*
- * @todo Add covers tags.
+ * @covers PathRouter
*/
-
class PathRouterTest extends MediaWikiTestCase {
/**
--- /dev/null
+<?php
+
+/**
+ * @author Adam Shorland
+ */
+class StatusTest extends MediaWikiTestCase {
+
+ public function testCanConstruct(){
+ new Status();
+ $this->assertTrue( true );
+ }
+
+ /**
+ * @dataProvider provideValues
+ * @covers Status::newGood
+ * @covers Status::getValue
+ * @covers Status::isGood
+ * @covers Status::isOK
+ */
+ public function testNewGood( $value = null ){
+ $status = Status::newGood( $value );
+ $this->assertTrue( $status->isGood() );
+ $this->assertTrue( $status->isOK() );
+ $this->assertEquals( $value, $status->getValue() );
+ }
+
+ public static function provideValues(){
+ return array(
+ array(),
+ array( 'foo' ),
+ array( array( 'foo' => 'bar' ) ),
+ array( new Exception() ),
+ array( 1234 ),
+ );
+ }
+
+ /**
+ * @covers Status::newFatal
+ * @covers Status::isGood
+ * @covers Status::isOK
+ * @covers Status::getMessage
+ */
+ public function testNewFatalWithMessage() {
+ $message = $this->getMockBuilder( 'Message' )
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $status = Status::newFatal( $message );
+ $this->assertFalse( $status->isGood() );
+ $this->assertFalse( $status->isOK() );
+ $this->assertEquals( $message, $status->getMessage() );
+ }
+
+ /**
+ * @covers Status::newFatal
+ * @covers Status::isGood
+ * @covers Status::isOK
+ * @covers Status::getMessage
+ */
+ public function testNewFatalWithString() {
+ $message = 'foo';
+ $status = Status::newFatal( $message );
+ $this->assertFalse( $status->isGood() );
+ $this->assertFalse( $status->isOK() );
+ $newMessage = $status->getMessage();
+ $this->assertEquals( $message, $newMessage->getKey() );
+ }
+
+ /**
+ * @dataProvider provideSetResult
+ * @covers Status::getValue
+ * @covers Status::isOK
+ */
+ public function testSetResult( $ok, $value = null ) {
+ $status = new Status();
+ $status->setResult( $ok, $value );
+ $this->assertEquals( $ok, $status->isOK() );
+ $this->assertEquals( $value, $status->getValue() );
+ }
+
+ public static function provideSetResult() {
+ return array(
+ array( true ),
+ array( false ),
+ array( true, 'value' ),
+ array( false, 'value' ),
+ );
+ }
+
+ /**
+ * @dataProvider provideMockMessageDetails
+ * @covers Status::warning
+ * @covers Status::getWarningsArray
+ */
+ public function testWarningWithMessage( $mockDetails ) {
+ $status = new Status();
+ $messages = $this->getMockMessages( $mockDetails );
+
+ foreach( $messages as $message ){
+ $status->warning( $message );
+ }
+ $warnings = $status->getWarningsArray();
+
+ $this->assertEquals( count( $messages ), count( $warnings ) );
+ foreach( $messages as $key => $message ) {
+ $expectedArray = array_merge( array( $message->getKey() ), $message->getParams() );
+ $this->assertEquals( $warnings[$key], $expectedArray );
+ }
+ }
+
+ /**
+ * @dataProvider provideMockMessageDetails
+ * @covers Status::error
+ * @covers Status::getErrorsArray
+ */
+ public function testErrorWithMessage( $mockDetails ) {
+ $status = new Status();
+ $messages = $this->getMockMessages( $mockDetails );
+
+ foreach( $messages as $message ){
+ $status->error( $message );
+ }
+ $errors = $status->getErrorsArray();
+
+ $this->assertEquals( count( $messages ), count( $errors ) );
+ foreach( $messages as $key => $message ) {
+ $expectedArray = array_merge( array( $message->getKey() ), $message->getParams() );
+ $this->assertEquals( $errors[$key], $expectedArray );
+ }
+ }
+
+ protected function getMockMessage( $key = 'key', $params = array() ) {
+ $message = $this->getMockBuilder( 'Message' )
+ ->disableOriginalConstructor()
+ ->getMock();
+ $message->expects( $this->atLeastOnce() )
+ ->method( 'getKey' )
+ ->will( $this->returnValue( $key ) );
+ $message->expects( $this->atLeastOnce() )
+ ->method( 'getParams' )
+ ->will( $this->returnValue( $params ) );
+ return $message;
+ }
+
+ /**
+ * @param array $messageDetails eg. array( 'KEY' => array(/PARAMS/) )
+ * @return Message[]
+ */
+ protected function getMockMessages( $messageDetails ){
+ $messages = array();
+ foreach( $messageDetails as $key => $paramsArray ){
+ $messages[] = $this->getMockMessage( $key, $paramsArray );
+ }
+ return $messages;
+ }
+
+ public static function provideMockMessageDetails(){
+ return array(
+ array( array( 'key1' => array( 'foo' => 'bar' ) ) ),
+ array( array( 'key1' => array( 'foo' => 'bar' ), 'key2' => array( 'foo2' => 'bar2' ) ) ),
+ );
+ }
+
+ /**
+ * @covers Status::merge
+ * @todo test merge with $overwriteValue true
+ */
+ public function testMerge(){
+ $status1 = new Status();
+ $status2 = new Status();
+ $message1 = $this->getMockMessage( 'warn1' );
+ $message2 = $this->getMockMessage( 'error2' );
+ $status1->warning( $message1 );
+ $status2->error( $message2 );
+
+ $status1->merge( $status2 );
+ $this->assertEquals( 2, count( $status1->getWarningsArray() ) + count( $status1->getErrorsArray() ) );
+ }
+
+ /**
+ * @covers Status::hasMessage
+ */
+ public function testHasMessage() {
+ $status = new Status();
+ $status->fatal( 'bad' );
+ $this->assertTrue( $status->hasMessage( 'bad' ) );
+ $this->assertFalse( $status->hasMessage( 'good' ) );
+
+ }
+
+ //todo test cleanParams
+ //todo test getWikiText
+ //todo test getMessage
+ //todo test getErrorMessage
+ //todo test getHTML
+ //todo test getErrorMessageArray
+ //todo test getStatusArray
+ //todo test getErrorsByType
+ //todo test replaceMessage
+ //todo test replaceMessage
+
+}
/**
* @group Database
- * @todo covers tags
+ *
+ * @covers Title::getUserPermissionsErrors
+ * @covers Title::getUserPermissionsErrorsInternal
*/
class TitlePermissionTest extends MediaWikiLangTestCase {
);
}
- /**
- * @todo Test needs database! Should be done by a test class in the Database group.
- */
- /*
- public function getRedirectChain() {
- $text = $this->getNativeData();
- return Title::newFromRedirectArray( $text );
- }
- */
-
- /**
- * @todo Test needs database! Should be done by a test class in the Database group.
- */
- /*
- public function getUltimateRedirectTarget() {
- $text = $this->getNativeData();
- return Title::newFromRedirectRecurse( $text );
- }
- */
-
public static function dataIsCountable() {
return array(
array( '',
* @author Jeroen De Dauw < jeroendedauw@gmail.com >
* @author Daniel Kinzler
*/
+
+/**
+ * @covers PageORMTableForTesting
+ */
class ORMTableTest extends MediaWikiTestCase {
/**
*/
require_once __DIR__ . "/ORMRowTest.php";
+/**
+ * @covers TestORMRow
+ */
class TestORMRowTest extends ORMRowTest {
/**
parent::tearDown();
}
+ /**
+ * @covers MWDebug::log
+ */
public function testAddLog() {
MWDebug::log( 'logging a string' );
$this->assertEquals(
);
}
+ /**
+ * @covers MWDebug::warning
+ */
public function testAddWarning() {
MWDebug::warning( 'Warning message' );
$this->assertEquals(
);
}
+ /**
+ * @covers MWDebug::deprecated
+ */
public function testAvoidDuplicateDeprecations() {
MWDebug::deprecated( 'wfOldFunction', '1.0', 'component' );
MWDebug::deprecated( 'wfOldFunction', '1.0', 'component' );
);
}
+ /**
+ * @covers MWDebug::deprecated
+ */
public function testAvoidNonConsecutivesDuplicateDeprecations() {
MWDebug::deprecated( 'wfOldFunction', '1.0', 'component' );
MWDebug::warning( 'some warning' );
/**
* @dataProvider provider_queueLists
+ * @covers JobQueue::getWiki
*/
- public function testProperties( $queue, $recycles, $desc ) {
+ public function testGetWiki( $queue, $recycles, $desc ) {
$queue = $this->$queue;
if ( !$queue ) {
$this->markTestSkipped( $desc );
}
-
$this->assertEquals( wfWikiID(), $queue->getWiki(), "Proper wiki ID ($desc)" );
+ }
+
+ /**
+ * @dataProvider provider_queueLists
+ * @covers JobQueue::getType
+ */
+ public function testGetType( $queue, $recycles, $desc ) {
+ $queue = $this->$queue;
+ if ( !$queue ) {
+ $this->markTestSkipped( $desc );
+ }
$this->assertEquals( 'null', $queue->getType(), "Proper job type ($desc)" );
}
/**
* @dataProvider provider_queueLists
+ * @covers JobQueue
*/
public function testBasicOperations( $queue, $recycles, $desc ) {
$queue = $this->$queue;
/**
* @dataProvider provider_queueLists
+ * @covers JobQueue
*/
public function testBasicDeduplication( $queue, $recycles, $desc ) {
$queue = $this->$queue;
/**
* @dataProvider provider_queueLists
+ * @covers JobQueue
*/
public function testRootDeduplication( $queue, $recycles, $desc ) {
$queue = $this->$queue;
/**
* @dataProvider provider_fifoQueueLists
+ * @covers JobQueue
*/
public function testJobOrder( $queue, $recycles, $desc ) {
$queue = $this->$queue;
<?php
+/**
+ * @covers FormatJson
+ */
class FormatJsonTest extends MediaWikiTestCase {
public function testEncoderPrettyPrinting() {
123,
456,
),
+ // Nested json works without problems
'"7":["8",{"9":"10"}]',
+ // Whitespace clean up doesn't touch strings that look alike
+ "{\n\t\"emptyObject\": {\n\t},\n\t\"emptyArray\": [ ]\n}",
),
);
// 4 space indent, no trailing whitespace, no trailing linefeed
$json = '{
- "emptyObject": {
- },
- "emptyArray": [
- ],
+ "emptyObject": {},
+ "emptyArray": [],
"string": "foobar\\\\",
"filledArray": [
[
123,
456
],
- "\"7\":[\"8\",{\"9\":\"10\"}]"
+ "\"7\":[\"8\",{\"9\":\"10\"}]",
+ "{\n\t\"emptyObject\": {\n\t},\n\t\"emptyArray\": [ ]\n}"
]
}';
$json = str_replace( "\r", '', $json ); // Windows compat
- $this->assertSame( $json, str_replace("\n\n", "\n", FormatJson::encode( $obj, true ) ));
+ $this->assertSame( $json, FormatJson::encode( $obj, true ) );
}
public static function provideEncodeDefault() {
/**
* @dataProvider provideMinifyCases
+ * @covers CSSMin::minify
*/
public function testMinify( $code, $expectedOutput ) {
$minified = CSSMin::minify( $code );
/**
* @dataProvider provideRemapCases
+ * @covers CSSMin::remap
*/
public function testRemap( $message, $params, $expectedOutput ) {
$remapped = call_user_func_array( 'CSSMin::remap', $params );
*
* @group Broken
* @dataProvider provideStringCases
+ * @covers CSSMin::remap
*/
public function testMinifyWithCSSStringValues( $code, $expectedOutput ) {
$this->testMinifyOutput( $code, $expectedOutput );
* @since 1.20
*
* @param array $elements
+ *
+ * @covers GenericArrayObject::__construct
*/
public function testConstructor( array $elements ) {
$arrayObject = $this->getNew( $elements );
* @since 1.20
*
* @param array $elements
+ *
+ * @covers GenericArrayObject::isEmpty
*/
public function testIsEmpty( array $elements ) {
$arrayObject = $this->getNew( $elements );
* @since 1.20
*
* @param GenericArrayObject $list
+ *
+ * @covers GenericArrayObject::offsetUnset
*/
public function testUnset( GenericArrayObject $list ) {
if ( $list->isEmpty() ) {
* @since 1.20
*
* @param array $elements
+ *
+ * @covers GenericArrayObject::append
*/
public function testAppend( array $elements ) {
$list = $this->getNew();
* @since 1.20
*
* @param callback $function
+ *
+ * @covers GenericArrayObject::getObjectType
*/
protected function checkTypeChecks( $function ) {
$excption = null;
* @since 1.20
*
* @param array $elements
+ *
+ * @covers GenericArrayObject::offsetSet
*/
public function testOffsetSet( array $elements ) {
if ( $elements === array() ) {
* @since 1.21
*
* @param GenericArrayObject $list
+ *
+ * @covers GenericArrayObject::getSerializationData
+ * @covers GenericArrayObject::serialize
+ * @covers GenericArrayObject::unserialize
*/
public function testSerialization( GenericArrayObject $list ) {
$serialization = serialize( $list );
/**
* Tests for IEUrlExtension::findIE6Extension
+ * @todo tests below for findIE6Extension should be split into...
+ * ...a dataprovider and test method.
*/
class IEUrlExtensionTest extends MediaWikiTestCase {
+ /**
+ * @covers IEUrlExtension::findIE6Extension
+ */
public function testSimple() {
$this->assertEquals(
'y',
);
}
+ /**
+ * @covers IEUrlExtension::findIE6Extension
+ */
public function testSimpleNoExt() {
$this->assertEquals(
'',
);
}
+ /**
+ * @covers IEUrlExtension::findIE6Extension
+ */
public function testEmpty() {
$this->assertEquals(
'',
);
}
+ /**
+ * @covers IEUrlExtension::findIE6Extension
+ */
public function testQuestionMark() {
$this->assertEquals(
'',
);
}
+ /**
+ * @covers IEUrlExtension::findIE6Extension
+ */
public function testExtQuestionMark() {
$this->assertEquals(
'x',
);
}
+ /**
+ * @covers IEUrlExtension::findIE6Extension
+ */
public function testQuestionMarkExt() {
$this->assertEquals(
'x',
);
}
+ /**
+ * @covers IEUrlExtension::findIE6Extension
+ */
public function testInvalidChar() {
$this->assertEquals(
'',
);
}
+ /**
+ * @covers IEUrlExtension::findIE6Extension
+ */
public function testInvalidCharThenExtension() {
$this->assertEquals(
'x',
);
}
+ /**
+ * @covers IEUrlExtension::findIE6Extension
+ */
public function testMultipleQuestionMarks() {
$this->assertEquals(
'c',
);
}
+ /**
+ * @covers IEUrlExtension::findIE6Extension
+ */
public function testExeException() {
$this->assertEquals(
'd',
);
}
+ /**
+ * @covers IEUrlExtension::findIE6Extension
+ */
public function testExeException2() {
$this->assertEquals(
'exe',
);
}
+ /**
+ * @covers IEUrlExtension::findIE6Extension
+ */
public function testHash() {
$this->assertEquals(
'',
);
}
+ /**
+ * @covers IEUrlExtension::findIE6Extension
+ */
public function testHash2() {
$this->assertEquals(
'',
);
}
+ /**
+ * @covers IEUrlExtension::findIE6Extension
+ */
public function testDotAtEnd() {
$this->assertEquals(
'',
);
}
+ /**
+ * @covers IEUrlExtension::findIE6Extension
+ */
public function testTwoDots() {
$this->assertEquals(
'z',
/**
* @dataProvider provideCases
+ * @covers JavaScriptMinifier::minify
*/
public function testJavaScriptMinifierOutput( $code, $expectedOutput ) {
$minified = JavaScriptMinifier::minify( $code );
/**
* @dataProvider provideBug32548
+ * @covers JavaScriptMinifier::minify
*/
public function testBug32548Exponent( $num ) {
// Long line breaking was being incorrectly done between the base and
return $logEntry;
}
+ /**
+ * @covers LogFormatter::newFromEntry
+ */
public function testNormalLogParams() {
$entry = $this->newLogEntry( 'test', array() );
$formatter = LogFormatter::newFromEntry( $entry );
$this->assertEquals( $titleLink, $paramsWithoutTools[2]['raw'] );
}
+ /**
+ * @covers LogFormatter::newFromEntry
+ * @covers LogFormatter::getActionText
+ */
public function testLogParamsTypeRaw() {
$params = array( '4:raw:raw' => Linker::link( $this->title, null, array(), array() ) );
$expected = Linker::link( $this->title, null, array(), array() );
$this->assertEquals( $expected, $logParam );
}
+ /**
+ * @covers LogFormatter::newFromEntry
+ * @covers LogFormatter::getActionText
+ */
public function testLogParamsTypeMsg() {
$params = array( '4:msg:msg' => 'log-description-phpunit' );
$expected = wfMessage( 'log-description-phpunit' )->text();
$this->assertEquals( $expected, $logParam );
}
+ /**
+ * @covers LogFormatter::newFromEntry
+ * @covers LogFormatter::getActionText
+ */
public function testLogParamsTypeMsgContent() {
$params = array( '4:msg-content:msgContent' => 'log-description-phpunit' );
$expected = wfMessage( 'log-description-phpunit' )->inContentLanguage()->text();
$this->assertEquals( $expected, $logParam );
}
+ /**
+ * @covers LogFormatter::newFromEntry
+ * @covers LogFormatter::getActionText
+ */
public function testLogParamsTypeNumber() {
global $wgLang;
$this->assertEquals( $expected, $logParam );
}
+ /**
+ * @covers LogFormatter::newFromEntry
+ * @covers LogFormatter::getActionText
+ */
public function testLogParamsTypeUserLink() {
$params = array( '4:user-link:userLink' => $this->user->getName() );
$expected = Linker::userLink(
$this->assertEquals( $expected, $logParam );
}
+ /**
+ * @covers LogFormatter::newFromEntry
+ * @covers LogFormatter::getActionText
+ */
public function testLogParamsTypeTitleLink() {
$params = array( '4:title-link:titleLink' => $this->title->getText() );
$expected = Linker::link( $this->title, null, array(), array() );
$this->assertEquals( $expected, $logParam );
}
+ /**
+ * @covers LogFormatter::newFromEntry
+ * @covers LogFormatter::getActionText
+ */
public function testLogParamsTypePlain() {
$params = array( '4:plain:plain' => 'Some plain text' );
$expected = 'Some plain text';
$this->assertEquals( $expected, $logParam );
}
+ /**
+ * @covers LogFormatter::newFromEntry
+ * @covers LogFormatter::getComment
+ */
public function testLogComment() {
$entry = $this->newLogEntry( 'test', array() );
$formatter = LogFormatter::newFromEntry( $entry );
<?php
+
+/**
+ * @covers Exif
+ */
class ExifTest extends MediaWikiTestCase {
/** @var string */
* @ingroup UtfNormal
* @group Large
*
+ * @todo covers tags, will be UtfNormal::cleanUp once the below is resolved
+ * @todo split me into test methods and providers per the below comment
+ *
* We ignore code coverage for this test suite until they are rewritten
* to use data providers (bug 46561).
* @codeCoverageIgnore
$out = $parser->getPreloadText( $input, $title, $options );
} else {
$output = $parser->parse( $input, $title, $options, true, true, 1337 );
+ $output->setTOCEnabled( !isset( $opts['notoc'] ) );
$out = $output->getText();
if ( isset( $opts['showtitle'] ) ) {
/**
* @dataProvider provideValidNames
+ * @covers Parser::setHook
*/
public function testTagHooks( $tag ) {
global $wgParserConf, $wgContLang;
/**
* @dataProvider provideBadNames
* @expectedException MWException
+ * @covers Parser::setHook
*/
public function testBadTagHooks( $tag ) {
global $wgParserConf, $wgContLang;
/**
* @dataProvider provideValidNames
+ * @covers Parser::setFunctionTagHook
*/
public function testFunctionTagHooks( $tag ) {
global $wgParserConf, $wgContLang;
/**
* @dataProvider provideBadNames
* @expectedException MWException
+ * @covers Parser::setFunctionTagHook
*/
public function testBadFunctionTagHooks( $tag ) {
global $wgParserConf, $wgContLang;
--- /dev/null
+<?php
+
+/**
+ * @group Parser
+ */
+class TidyTest extends MediaWikiTestCase {
+ public function setUp() {
+ parent::setUp();
+ $check = MWTidy::tidy( '' );
+ if ( strpos( $check, '<!--' ) !== false ) {
+ $this->markTestSkipped( 'Tidy not found' );
+ }
+ }
+
+ /**
+ * @dataProvider provideTestWrapping
+ */
+ public function testTidyWrapping( $expected, $text, $msg = '' ) {
+ $text = MWTidy::tidy( $text );
+ // We don't care about where Tidy wants to stick is <p>s
+ $text = trim( preg_replace( '#</?p>#', '', $text ) );
+ // Windows, we love you!
+ $text = str_replace( "\r", '', $text );
+ $this->assertEquals( $expected, $text, $msg );
+ }
+
+ public function provideTestWrapping() {
+ return array(
+ array(
+ '<mw:editsection page="foo" section="bar">foo</mw:editsection>',
+ '<mw:editsection page="foo" section="bar">foo</mw:editsection>',
+ '<mw:editsection> should survive tidy'
+ ),
+ array(
+ '<editsection page="foo" section="bar">foo</editsection>',
+ '<editsection page="foo" section="bar">foo</editsection>',
+ '<editsection> should survive tidy'
+ ),
+ array( '<mw:toc>foo</mw:toc>', '<mw:toc>foo</mw:toc>', '<mw:toc> should survive tidy' ),
+ array( "<link foo=\"bar\" />\nfoo", '<link foo="bar"/>foo', '<link> should survive tidy' ),
+ array( "<meta foo=\"bar\" />\nfoo", '<meta foo="bar"/>foo', '<meta> should survive tidy' ),
+ );
+ }
+}
\ No newline at end of file
/**
* @group Search
* @group Database
+ *
+ * @covers SearchEngine<extended>
+ * @note Coverage will only ever show one of on of the Search* classes
*/
class SearchEngineTest extends MediaWikiLangTestCase {
- protected $search, $pageList;
+ /**
+ * @var SearchEngine
+ */
+ protected $search;
+ protected $pageList;
/**
* Checks for database type & version.
return trim( SearchUpdate::updateText( $text ) );
}
+ /**
+ * @covers SearchUpdate::updateText
+ */
public function testUpdateText() {
$this->assertEquals(
'test',
);
}
+ /**
+ * @covers SearchUpdate::updateText
+ */
public function testBug32712() {
$text = "text „http://example.com“ text";
$result = $this->updateText( $text );
global $IP;
require_once "$IP/includes/QueryPage.php"; // Needed to populate $wgQueryPages
+/**
+ * @covers QueryPage<extended>
+ */
class QueryAllSpecialPagesTest extends MediaWikiTestCase {
/** List query pages that can not be tested automatically */
*
*/
+/**
+ * @covers SpecialPreferences
+ */
class SpecialPreferencesTest extends MediaWikiTestCase {
/**
*
* @author Antoine Musso
* @group Database
+ *
+ * @covers SpecialRecentChanges
*/
class SpecialRecentchangesTest extends MediaWikiTestCase {
* @group Broken
* @group Upload
* @group Database
+ *
+ * @covers UploadFromUrl
*/
class UploadFromUrlTest extends ApiTestCase {
protected function setUp() {
}
/**
- * @todo Document why we test login, since the $wgUser hack used doesn't
- * require login
- */
- public function testLogin() {
- $data = $this->doApiRequest( array(
- 'action' => 'login',
- 'lgname' => $this->user->userName,
- 'lgpassword' => $this->user->passWord ) );
- $this->assertArrayHasKey( "login", $data[0] );
- $this->assertArrayHasKey( "result", $data[0]['login'] );
- $this->assertEquals( "NeedToken", $data[0]['login']['result'] );
- $token = $data[0]['login']['token'];
-
- $data = $this->doApiRequest( array(
- 'action' => 'login',
- "lgtoken" => $token,
- 'lgname' => $this->user->userName,
- 'lgpassword' => $this->user->passWord ) );
-
- $this->assertArrayHasKey( "login", $data[0] );
- $this->assertArrayHasKey( "result", $data[0]['login'] );
- $this->assertEquals( "Success", $data[0]['login']['result'] );
- $this->assertArrayHasKey( 'lgtoken', $data[0]['login'] );
-
- return $data;
- }
-
- /**
- * @depends testLogin
* @depends testClearQueue
*/
public function testSetupUrlDownload( $data ) {
}
/**
- * @depends testLogin
* @depends testClearQueue
*/
public function testAsyncUpload( $data ) {
}
/**
- * @depends testLogin
* @depends testClearQueue
*/
public function testAsyncUploadWarning( $data ) {
}
/**
- * @depends testLogin
* @depends testClearQueue
*/
public function testSyncDownload( $data ) {
return $data;
}
- /**
- *
- */
protected function deleteFile( $name ) {
$t = Title::newFromText( $name, NS_FILE );
$this->assertTrue( $t->exists(), "File '$name' exists" );
<?php
/**
* @group Database
+ *
+ * @covers UploadStash
*/
class UploadStashTest extends MediaWikiTestCase {
/**
* - Emperyan
* @see http://en.wikipedia.org/wiki/Dotted_and_dotless_I
* @dataProvider provideDottedAndDotlessI
+ * @covers Language::ucfirst
+ * @covers Language::lcfirst
*/
public function testDottedAndDotlessI( $func, $input, $inputCase, $expected ) {
if ( $func == 'ucfirst' ) {
* @file
*/
+/**
+ * @covers CLDRPluralRuleEvaluator
+ */
class CLDRPluralRuleEvaluatorTest extends MediaWikiTestCase {
/**
* @dataProvider validTestCases
<?php
class AutoLoaderTest extends MediaWikiTestCase {
+ protected function setUp() {
+ global $wgAutoloadLocalClasses, $wgAutoloadClasses;
+
+ parent::setUp();
+
+ // Fancy dance to trigger a rebuild of AutoLoader::$autoloadLocalClassesLower
+ $this->testLocalClasses = array(
+ 'TestAutoloadedLocalClass' => __DIR__ . '/../data/autoloader/TestAutoloadedLocalClass.php',
+ 'TestAutoloadedCamlClass' => __DIR__ . '/../data/autoloader/TestAutoloadedCamlClass.php',
+ 'TestAutoloadedSerializedClass' => __DIR__ . '/../data/autoloader/TestAutoloadedSerializedClass.php',
+ );
+ $this->setMwGlobals( 'wgAutoloadLocalClasses', $this->testLocalClasses + $wgAutoloadLocalClasses );
+ InstrumentedAutoLoader::resetAutoloadLocalClassesLower();
+
+ $this->testExtensionClasses = array(
+ 'TestAutoloadedClass' => __DIR__ . '/../data/autoloader/TestAutoloadedClass.php',
+ );
+ $this->setMwGlobals( 'wgAutoloadClasses', $this->testExtensionClasses + $wgAutoloadClasses );
+ }
+
/**
* Assert that there were no classes loaded that are not registered with the AutoLoader.
*
'actual' => $actual,
);
}
+
+ function testCoreClass() {
+ $this->assertTrue( class_exists( 'TestAutoloadedLocalClass' ) );
+ }
+
+ function testExtensionClass() {
+ $this->assertTrue( class_exists( 'TestAutoloadedClass' ) );
+ }
+
+ function testWrongCaseClass() {
+ $this->assertTrue( class_exists( 'testautoLoadedcamlCLASS' ) );
+ }
+
+ function testWrongCaseSerializedClass() {
+ $dummyCereal = 'O:29:"testautoloadedserializedclass":0:{}';
+ $uncerealized = unserialize( $dummyCereal );
+ $this->assertFalse( $uncerealized instanceof __PHP_Incomplete_Class,
+ "unserialize() can load classes case-insensitively.");
+ }
+}
+
+/**
+ * Cheater to poke protected members
+ */
+class InstrumentedAutoLoader extends AutoLoader {
+ static function resetAutoloadLocalClassesLower() {
+ self::$autoloadLocalClassesLower = null;
+ }
}
assert.equal( title.getUrl(), '/wiki/User_talk:John_Doe', 'Escaping in title and namespace for urls' );
} );
- QUnit.test( 'newFromImg', 28, function ( assert ) {
+ QUnit.test( 'newFromImg', 36, function ( assert ) {
var title, i, thisCase, prefix,
cases = [
{
prefixedText: 'File:Anticlockwise heliotrope\'s.jpg'
},
+ {
+ url: '/wiki/images/thumb/8/80/Wikipedia-logo-v2.svg/langde-150px-Wikipedia-logo-v2.svg.png',
+ typeOfUrl: 'Normal hashed directory thumbnail with complex thumbnail parameters',
+ nameText: 'Wikipedia-logo-v2',
+ prefixedText: 'File:Wikipedia-logo-v2.svg'
+ },
+
{
url: '//upload.wikimedia.org/wikipedia/commons/thumb/8/80/Wikipedia-logo-v2.svg/150px-Wikipedia-logo-v2.svg.png',
typeOfUrl: 'Commons thumbnail',
prefixedText: 'File:Wikipedia-logo-v2.svg'
},
+ {
+ url: '/wikipedia/commons/thumb/Wikipedia-logo-v2.svg/langde-150px-Wikipedia-logo-v2.svg.png',
+ typeOfUrl: 'Commons unhashed thumbnail with complex thumbnail parameters',
+ nameText: 'Wikipedia-logo-v2',
+ prefixedText: 'File:Wikipedia-logo-v2.svg'
+ },
+
{
url: '/wiki/images/Anticlockwise_heliotrope%27s.jpg',
typeOfUrl: 'Unhashed local file',