include:
# On Trusty, mysql user 'travis' doesn't have create database rights
# Postgres has no user called 'root'.
+ - env: dbtype=mysql dbuser=root
+ php: 7.3
- env: dbtype=mysql dbuser=root
php: 7.2
- env: dbtype=mysql dbuser=root
- env: dbtype=mysql dbuser=root
php: hhvm-3.18
allow_failures:
+ - php: 7.3
- php: hhvm-3.18
- php: hhvm-3.21
- php: hhvm-3.24
* Added a new hook, 'UserGetRightsRemove', which can be used to remove rights
from user. Unlike the 'UserGetRights' it will ensure that removed rights
will not be reinserted.
+* (T197535) Extensions can now specify PHP versions and PHP extensions they
+ depend on.
=== External library changes in 1.32 ===
* (T96041) __EXPECTUNUSEDCATEGORY__ on a category page causes the category
to be hidden on Special:UnusedCategories.
* Add PasswordPolicy to check the password isn't in the large blacklist.
+* The AuthManagerLoginAuthenticateAudit hook has a new parameter for
+ additional information about the authentication event.
* …
=== External library changes in 1.33 ===
==== Changed external libraries ====
* Updated wikimedia/xmp-reader from 0.6.0 to 0.6.1.
* Updated wikimedia/scoped-callback from 2.0.0 to 3.0.0.
+* Updated wikimedia/ip-set from 1.2.0 to 2.0.0.
+ * The deprecated IPSet\IPSet alias was removed, Wikimedia\IPSet must be
+ used instead.
* …
==== Removed external libraries ====
exceptions will now include the "Wikimedia\Rdbms\" prefix in the class name.
* The code including an exception class name is deprecated. In the future,
all internal errors will use code "internal_api_error".
-* …
+* (T212356) When using action=delete on pages with many revisions, the module
+ may return a boolean-true 'scheduled' and no 'logid'. This signifies that the
+ deletion will be processed via the job queue.
=== Action API internal changes in 1.33 ===
* A number of deprecated methods for API documentation, intended for overriding
domain ID as a key component and use makeGlobalKey().
* (T202094) Title::getUserCaseDBKey() is deprecated; instead, please use
Title::getDBKey(), which doesn't vary case.
+* User::getPasswordValidity() is now deprecated. User::checkPasswordValidity()
+ returns the same information in a more useful format.
+* For Linker::generateTOC() and Linker::tocList(), passing strings or booleans
+ as the $lang parameter was deprecated. The same applies to DummyLinker.
* …
=== Other changes in 1.33 ===
* (T208871) The hard-coded Google search form on the database error page was
removed.
+* (T201747) Html::openElement() warns if given an element name wiht a space
+ in it.
* …
== Compatibility ==
"wikimedia/cldr-plural-rule-parser": "1.0.0",
"wikimedia/composer-merge-plugin": "1.4.1",
"wikimedia/html-formatter": "1.0.2",
- "wikimedia/ip-set": "1.2.0",
+ "wikimedia/ip-set": "2.0.0",
"wikimedia/less.php": "1.8.0",
"wikimedia/object-factory": "1.0.0",
"wikimedia/password-blacklist": "0.1.4",
$user: The User object being authenticated against, or null if authentication
failed before getting that far.
$username: A guess at the user name being authenticated, or null if we can't
- even determine that.
+ even determine that. When $user is not null, it can be in the form of
+ <username>@<more info> (e.g. for bot passwords).
+$extraData: An array (string => string) with extra information, intended to be
+ added to log contexts. Fields it might include:
+ - appId: the application ID, only if the login was with a bot password
'AuthPluginAutoCreate': DEPRECATED since 1.27! Use the 'LocalUserCreated' hook
instead. Called when creating a local account for an user logged in from an
$wgCentralIdLookupProvider = 'local';
/**
- * Password policy for local wiki users. A user's effective policy
- * is the superset of all policy statements from the policies for the
- * groups where the user is a member. If more than one group policy
- * include the same policy statement, the value is the max() of the
- * values. Note true > false. The 'default' policy group is required,
- * and serves as the minimum policy for all users. New statements can
- * be added by appending to $wgPasswordPolicy['checks'].
- * Statements:
- * - MinimalPasswordLength - minimum length a user can set
- * - MinimumPasswordLengthToLogin - passwords shorter than this will
+ * Password policy for the wiki.
+ * Structured as
+ * [
+ * 'policies' => [ <group> => [ <policy> => <value>, ... ], ... ],
+ * 'checks' => [ <policy> => <callback>, ... ],
+ * ]
+ * where <group> is a user group, <policy> is a password policy name
+ * (arbitrary string) defined in the 'checks' part, <callback> is the
+ * PHP callable implementing the policy check, <value> is a number,
+ * boolean or null that gets passed to the callback.
+ *
+ * A user's effective policy is the superset of all policy statements
+ * from the policies for the groups where the user is a member. If more
+ * than one group policy include the same policy statement, the value is
+ * the max() of the values. Note true > false. The 'default' policy group
+ * is required, and serves as the minimum policy for all users.
+ *
+ * Callbacks receive three arguments: the policy value, the User object
+ * and the password; and must return a StatusValue. A non-good status
+ * means the password will not be accepted for new accounts, and existing
+ * accounts will be prompted for password change or barred from logging in
+ * (depending on whether the status is a fatal or merely error/warning).
+ *
+ * The checks supported by core are:
+ * - MinimalPasswordLength - Minimum length a user can set.
+ * - MinimumPasswordLengthToLogin - Passwords shorter than this will
* not be allowed to login, regardless if it is correct.
* - MaximalPasswordLength - maximum length password a user is allowed
* to attempt. Prevents DoS attacks with pbkdf2.
- * - PasswordCannotMatchUsername - Password cannot match username to
+ * - PasswordCannotMatchUsername - Password cannot match the username.
* - PasswordCannotMatchBlacklist - Username/password combination cannot
- * match a specific, hardcoded blacklist.
+ * match a blacklist of default passwords used by MediaWiki in the past.
* - PasswordCannotBePopular - Blacklist passwords which are known to be
* commonly chosen. Set to integer n to ban the top n passwords.
* If you want to ban all common passwords on file, use the
* PHP_INT_MAX constant.
* - PasswordNotInLargeBlacklist - Password not in best practices list of
- * 100,000 commonly used passwords.
+ * 100,000 commonly used passwords. Due to the size of the list this
+ * is a probabilistic test.
+ *
* @since 1.26
+ * @see PasswordPolicyChecks
+ * @see User::checkPasswordValidity()
*/
$wgPasswordPolicy = [
'policies' => [
$wgGrantPermissions['editmycssjs']['editmyuserjs'] = true;
$wgGrantPermissions['editmyoptions']['editmyoptions'] = true;
+$wgGrantPermissions['editmyoptions']['editmyuserjson'] = true;
$wgGrantPermissions['editinterface'] = $wgGrantPermissions['editpage'];
$wgGrantPermissions['editinterface']['editinterface'] = true;
return Linker::tocLineEnd();
}
- public function tocList( $toc, $lang = false ) {
+ public function tocList( $toc, $lang = null ) {
return Linker::tocList( $toc, $lang );
}
- public function generateTOC( $tree, $lang = false ) {
+ public function generateTOC( $tree, $lang = null ) {
return Linker::generateTOC( $tree, $lang );
}
// consistency and better compression.
$element = strtolower( $element );
+ // Some people were abusing this by passing things like
+ // 'h1 id="foo" to $element, which we don't want.
+ if ( strpos( $element, ' ' ) !== false ) {
+ wfWarn( __METHOD__ . " given element name with space '$element'" );
+ }
+
// Remove invalid input types
if ( $element == 'input' ) {
$validTypes = [
*
* @since 1.16.3
* @param string $toc Html of the Table Of Contents
- * @param string|Language|bool $lang Language for the toc title, defaults to user language
+ * @param string|Language|bool|null $lang Language for the toc title, defaults to user language.
+ * The types string and bool are deprecated.
* @return string Full html of the TOC
*/
- public static function tocList( $toc, $lang = false ) {
- $lang = wfGetLangObj( $lang );
+ public static function tocList( $toc, $lang = null ) {
+ global $wgLang;
+ $lang = $lang ?? $wgLang;
+ if ( !is_object( $lang ) ) {
+ wfDeprecated( __METHOD__ . ' with type other than Language for $lang', '1.33' );
+ $lang = wfGetLangObj( $lang );
+ }
+
$title = wfMessage( 'toc' )->inLanguage( $lang )->escaped();
return '<div id="toc" class="toc">'
*
* @since 1.16.3. $lang added in 1.17
* @param array $tree Return value of ParserOutput::getSections()
- * @param string|Language|bool $lang Language for the toc title, defaults to user language
+ * @param string|Language|bool|null $lang Language for the toc title, defaults to user language.
+ * The types string and bool are deprecated.
* @return string HTML fragment
*/
- public static function generateTOC( $tree, $lang = false ) {
+ public static function generateTOC( $tree, $lang = null ) {
$toc = '';
$lastLevel = 0;
foreach ( $tree as $section ) {
'parameters' => $this->parameters,
'format' => $this->format,
'useDatabase' => $this->useDatabase,
- 'title' => $this->title,
'titlestr' => $this->title ? $this->title->getFullText() : null,
] );
}
use MediaWiki\Revision\RevisionStoreRecord;
use MediaWiki\Revision\SlotRecord;
use MediaWiki\Storage\SqlBlobStore;
+use Wikimedia\Assert\Assert;
use Wikimedia\Rdbms\IDatabase;
use MediaWiki\Linker\LinkTarget;
use MediaWiki\MediaWikiServices;
'$row must be a row object, an associative array, or a RevisionRecord'
);
}
+
+ Assert::postcondition( $this->mRecord !== null, 'Failed to construct a RevisionRecord' );
}
/**
$rec = self::getRevisionStore()->insertRevisionOn( $this->mRecord, $dbw );
$this->mRecord = $rec;
-
- // Avoid PHP 7.1 warning of passing $this by reference
- $revision = $this;
+ Assert::postcondition( $this->mRecord !== null, 'Failed to acquire a RevisionRecord' );
return $rec->getId();
}
*/
private $options = [
'changed' => true,
+ // newrev is true if prepareUpdate is handling the creation of a new revision,
+ // as opposed to a null edit or a forced update.
+ 'newrev' => false,
'created' => false,
'moved' => false,
'restored' => false,
// Override fields defined in $this->options with values from $options.
$this->options = array_intersect_key( $options, $this->options ) + $this->options;
- if ( isset( $this->pageState['oldId'] ) ) {
- $oldId = $this->pageState['oldId'];
+ if ( $this->revision ) {
+ $oldId = $this->pageState['oldId'] ?? 0;
+ $this->options['newrev'] = ( $revision->getId() !== $oldId );
} elseif ( isset( $this->options['oldrevision'] ) ) {
/** @var Revision|RevisionRecord $oldRev */
$oldRev = $this->options['oldrevision'];
$oldId = $oldRev->getId();
+ $this->options['newrev'] = ( $revision->getId() !== $oldId );
} else {
$oldId = $revision->getParentId();
}
// Save it to the parser cache. Use the revision timestamp in the case of a
// freshly saved edit, as that matches page_touched and a mismatch would trigger an
// unnecessary reparse.
- $timestamp = $this->options['changed'] ? $this->revision->getTimestamp()
- : $output->getTimestamp();
+ $timestamp = $this->options['newrev'] ? $this->revision->getTimestamp()
+ : $output->getCacheTime();
$this->parserCache->save(
$output, $wikiPage, $this->getCanonicalParserOptions(),
$timestamp, $this->revision->getId()
}
$errors = [];
- while ( count( $checks ) > 0 &&
- !( $short && count( $errors ) > 0 ) ) {
- $method = array_shift( $checks );
+ foreach ( $checks as $method ) {
$errors = $this->$method( $action, $user, $errors, $rigor, $short );
+
+ if ( $short && $errors !== [] ) {
+ break;
+ }
}
return $errors;
* indicating who can move or edit the page from the page table, (pre 1.10) rows.
* Edit and move sections are separated by a colon
* Example: "edit=autoconfirmed,sysop:move=sysop"
+ * @param bool $readLatest When true, skip replicas and read from the master DB.
*/
- public function loadRestrictionsFromRows( $rows, $oldFashionedRestrictions = null ) {
- $dbr = wfGetDB( DB_REPLICA );
+ public function loadRestrictionsFromRows(
+ $rows, $oldFashionedRestrictions = null, $readLatest = false
+ ) {
+ $whichDb = $readLatest ? DB_MASTER : DB_REPLICA;
+ $dbr = wfGetDB( $whichDb );
$restrictionTypes = $this->getRestrictionTypes();
* indicating who can move or edit the page from the page table, (pre 1.10) rows.
* Edit and move sections are separated by a colon
* Example: "edit=autoconfirmed,sysop:move=sysop"
+ * @param bool $readLatest When true, skip replicas and read from the master DB.
*/
- public function loadRestrictions( $oldFashionedRestrictions = null ) {
- if ( $this->mRestrictionsLoaded ) {
+ public function loadRestrictions( $oldFashionedRestrictions = null, $readLatest = false ) {
+ if ( $this->mRestrictionsLoaded && !$readLatest ) {
return;
}
$fname = __METHOD__;
$rows = $cache->getWithSetCallback(
// Page protections always leave a new null revision
- $cache->makeKey( 'page-restrictions', $id, $this->getLatestRevID() ),
+ $cache->makeKey( 'page-restrictions', $id, $this->getLatestRevID(), $readLatest ),
$cache::TTL_DAY,
- function ( $curValue, &$ttl, array &$setOpts ) use ( $fname ) {
- $dbr = wfGetDB( DB_REPLICA );
+ function ( $curValue, &$ttl, array &$setOpts ) use ( $fname, $readLatest ) {
+ $whichDb = $readLatest ? DB_MASTER : DB_REPLICA;
+ $dbr = wfGetDB( $whichDb );
$setOpts += Database::getCacheSetOptions( $dbr );
}
);
- $this->loadRestrictionsFromRows( $rows, $oldFashionedRestrictions );
+ $this->loadRestrictionsFromRows( $rows, $oldFashionedRestrictions, $readLatest );
} else {
$title_protection = $this->getTitleProtectionInternal();
if ( MWNamespace::hasSubpages( $this->mNamespace ) ) {
// Optional notice for page itself and any parent page
- $parts = explode( '/', $this->mDbkeyform );
$editnotice_base = $editnotice_ns;
- while ( count( $parts ) > 0 ) {
- $editnotice_base .= '-' . array_shift( $parts );
+ foreach ( explode( '/', $this->mDbkeyform ) as $part ) {
+ $editnotice_base .= '-' . $part;
$msg = wfMessage( $editnotice_base );
if ( $msg->exists() ) {
$html = $msg->parseAsBlock();
return $s;
}
- function doBatchLookups() {
+ protected function doBatchLookups() {
if ( !Hooks::run( 'PageHistoryPager::doBatchLookups', [ $this, $this->mResult ] ) ) {
return;
}
*
* @return string HTML output
*/
- function getStartBody() {
+ protected function getStartBody() {
$this->lastRow = false;
$this->counter = 1;
$this->oldIdChecked = 0;
return $element;
}
- function getEndBody() {
+ protected function getEndBody() {
if ( $this->lastRow ) {
$latest = $this->counter == 1 && $this->mIsFirst;
$firstInList = $this->counter == 1;
* @since 1.29
* @param StatusValue $status
* @param string[] $types 'warning' and/or 'error'
+ * @param string[] $filter Message keys to filter out (since 1.33)
*/
- public function addMessagesFromStatus( StatusValue $status, $types = [ 'warning', 'error' ] ) {
- $this->getErrorFormatter()->addMessagesFromStatus( $this->getModulePath(), $status, $types );
+ public function addMessagesFromStatus(
+ StatusValue $status, $types = [ 'warning', 'error' ], array $filter = []
+ ) {
+ $this->getErrorFormatter()->addMessagesFromStatus(
+ $this->getModulePath(), $status, $types, $filter
+ );
}
/**
$editingRestriction = 'sitewide';
$pageRestrictions = '';
if ( $this->getConfig()->get( 'EnablePartialBlocks' ) ) {
- if ( $params['pagerestrictions'] ) {
- $count = count( $params['pagerestrictions'] );
- if ( $count > 10 ) {
- $this->dieWithError(
- $this->msg(
- 'apierror-integeroutofrange-abovebotmax',
- 'pagerestrictions',
- 10,
- $count
- )
- );
- }
- }
-
if ( $params['partial'] ) {
$editingRestriction = 'partial';
}
- $pageRestrictions = implode( "\n", $params['pagerestrictions'] );
+ $pageRestrictions = implode( "\n", (array)$params['pagerestrictions'] );
}
if ( $params['userid'] !== null ) {
$params['partial'] = false;
$params['pagerestrictions'] = [
ApiBase::PARAM_ISMULTI => true,
+ ApiBase::PARAM_ISMULTI_LIMIT1 => 10,
+ ApiBase::PARAM_ISMULTI_LIMIT2 => 10,
];
}
switch ( $params['torelative'] ) {
case 'prev':
// Swap 'from' and 'to'
- list( $toRev, $toRelRev2, $toValsRev ) = [ $fromRev, $fromRelRev, $fromValsRev ];
- $fromRev = $this->revisionStore->getPreviousRevision( $fromRelRev );
+ list( $toRev, $toRelRev, $toValsRev ) = [ $fromRev, $fromRelRev, $fromValsRev ];
+ $fromRev = $this->revisionStore->getPreviousRevision( $toRelRev );
$fromRelRev = $fromRev;
$fromValsRev = $fromRev;
+ if ( !$fromRev ) {
+ $title = Title::newFromLinkTarget( $toRelRev->getPageAsLinkTarget() );
+ $this->addWarning( [
+ 'apiwarn-compare-no-prev',
+ wfEscapeWikiText( $title->getPrefixedText() ),
+ $toRelRev->getId()
+ ] );
+
+ // (T203433) Create an empty dummy revision as the "previous".
+ // The main slot has to exist, the rest will be handled by DifferenceEngine.
+ $fromRev = $this->revisionStore->newMutableRevisionFromArray( [
+ 'title' => $title ?: Title::makeTitle( NS_SPECIAL, 'Badtitle/' . __METHOD__ )
+ ] );
+ $fromRev->setContent(
+ SlotRecord::MAIN,
+ $toRelRev->getContent( SlotRecord::MAIN, RevisionRecord::RAW )
+ ->getContentHandler()
+ ->makeEmptyContent()
+ );
+ }
break;
case 'next':
$toRev = $this->revisionStore->getNextRevision( $fromRelRev );
$toRelRev = $toRev;
$toValsRev = $toRev;
+ if ( !$toRev ) {
+ $title = Title::newFromLinkTarget( $fromRelRev->getPageAsLinkTarget() );
+ $this->addWarning( [
+ 'apiwarn-compare-no-next',
+ wfEscapeWikiText( $title->getPrefixedText() ),
+ $fromRelRev->getId()
+ ] );
+
+ // (T203433) The web UI treats "next" as "cur" in this case.
+ // Avoid repeating metadata by making a MutableRevisionRecord with no changes.
+ $toRev = MutableRevisionRecord::newFromParentRevision( $fromRelRev );
+ }
break;
case 'cur':
list( $toRev, $toRelRev, $toValsRev ) = $this->getDiffRevision( 'to', $params );
}
- // Handle missing from or to revisions
+ // Handle missing from or to revisions (should never happen)
+ // @codeCoverageIgnoreStart
if ( !$fromRev || !$toRev ) {
$this->dieWithError( 'apierror-baddiff' );
}
+ // @codeCoverageIgnoreEnd
// Handle revdel
if ( !$fromRev->audienceCan(
$status = self::delete( $pageObj, $user, $reason, $params['tags'] );
}
- if ( !$status->isGood() ) {
+ if ( !$status->isOk() ) {
$this->dieStatus( $status );
}
+ $this->addMessagesFromStatus( $status, [ 'warning' ], [ 'delete-scheduled' ] );
// Deprecated parameters
if ( $params['watch'] ) {
$r = [
'title' => $titleObj->getPrefixedText(),
'reason' => $reason,
- 'logid' => $status->value
];
+ if ( $status->hasMessage( 'delete-scheduled' ) ) {
+ $r['scheduled'] = true;
+ }
+ if ( $status->value !== null ) {
+ // Scheduled deletions don't currently have a log entry available at this point
+ $r['logid'] = $status->value;
+ }
$this->getResult()->addValue( null, $this->getModuleName(), $r );
}
* @param string|null $modulePath
* @param StatusValue $status
* @param string[]|string $types 'warning' and/or 'error'
+ * @param string[] $filter Messages to filter out (since 1.33)
*/
public function addMessagesFromStatus(
- $modulePath, StatusValue $status, $types = [ 'warning', 'error' ]
+ $modulePath, StatusValue $status, $types = [ 'warning', 'error' ], array $filter = []
) {
if ( $status->isGood() || !$status->getErrors() ) {
return;
->inLanguage( $this->lang )
->title( $this->getDummyTitle() )
->useDatabase( $this->useDB );
- $this->addWarningOrError( $tag, $modulePath, $msg );
+ if ( !in_array( $msg->getKey(), $filter, true ) ) {
+ $this->addWarningOrError( $tag, $modulePath, $msg );
+ }
}
}
'dnt',
'origin',
/* MediaWiki whitelist */
+ 'user-agent',
'api-user-agent',
] );
foreach ( $requestedHeaders as $rHeader ) {
"apiwarn-badurlparam": "تعذر تحليل <var>$1urlparam</var> لـ$2، باستخدام العرض والطول فقط.",
"apiwarn-badutf8": "تحتوي القيمة التي تم تمريرها لـ<var>$1</var> على بيانات غير صالحة أو غير طبيعية، يجب أن تكون البيانات النصية صالحة، NFC-normalized Unicode بدون أحرف تحكم C0 غير HT (\\t) وLF (\\n) وCR (\\r).",
"apiwarn-checktoken-percentencoding": "تحقق من أن الرموز مثل \"+\" في الرمز المميز يتم ترميزها بشكل صحيح في المسار.",
+ "apiwarn-compare-no-next": "المراجعة $2 هي أحدث مراجعة من $1، ولا توجد مراجعة لـ<kbd>torelative=next</kbd> للمقارنة بها.",
+ "apiwarn-compare-no-prev": "المراجعة $2 هي أقدم مراجعة من $1، ولا توجد مراجعة لـ<kbd>torelative=next</kbd> للمقارنة بها.",
"apiwarn-compare-nocontentmodel": "لا يمكن تحديد نموذج محتوى، على افتراض $1.",
"apiwarn-deprecation-deletedrevs": "تم إيقاف <kbd>list=deletedrevs</kbd>; الرجاء استخدام <kbd>prop=deletedrevisions</kbd> or <kbd>list=alldeletedrevisions</kbd> بدلا من ذلك.",
"apiwarn-deprecation-httpsexpected": "HTTP المستخدمة عند توقع HTTPS.",
"apierror-unknownerror-nocode": "Unbekannter Fehler.",
"apierror-unknownerror": "Unbekannter Fehler: „$1“.",
"apierror-unknownformat": "Nicht erkanntes Format „$1“.",
+ "apiwarn-compare-no-next": "Die Version $2 ist die aktuelle Version von $1. Es gibt keine zu vergleichende Version für <kbd>torelative=next</kbd>.",
+ "apiwarn-compare-no-prev": "Die Version $2 ist die aktuelle Version von $1. Es gibt keine zu vergleichende Version für <kbd>torelative=prev</kbd>.",
"apiwarn-deprecation-missingparam": "Da <var>$1</var> nicht angegeben wurde, wurde ein veraltetes Format für die Ausgabe verwendet. Dieses Format ist veraltet und in Zukunft wird immer das neue Format benutzt.",
"apiwarn-ignoring-invalid-templated-value": "Ignorieren des Wertes <kbd>$2</kbd> in <var>$1</var> bei der Verarbeitung von Vorlagenparametern.",
"apiwarn-invalidcategory": "„$1“ ist keine Kategorie.",
"apiwarn-badurlparam": "Could not parse <var>$1urlparam</var> for $2. Using only width and height.",
"apiwarn-badutf8": "The value passed for <var>$1</var> contains invalid or non-normalized data. Textual data should be valid, NFC-normalized Unicode without C0 control characters other than HT (\\t), LF (\\n), and CR (\\r).",
"apiwarn-checktoken-percentencoding": "Check that symbols such as \"+\" in the token are properly percent-encoded in the URL.",
+ "apiwarn-compare-no-next": "Revision $2 is the latest revision of $1, there is no revision for <kbd>torelative=next</kbd> to compare to.",
+ "apiwarn-compare-no-prev": "Revision $2 is the earliest revision of $1, there is no revision for <kbd>torelative=prev</kbd> to compare to.",
"apiwarn-compare-nocontentmodel": "No content model could be determined, assuming $1.",
"apiwarn-deprecation-deletedrevs": "<kbd>list=deletedrevs</kbd> has been deprecated. Please use <kbd>prop=deletedrevisions</kbd> or <kbd>list=alldeletedrevisions</kbd> instead.",
"apiwarn-deprecation-httpsexpected": "HTTP used when HTTPS was expected.",
"apiwarn-badurlparam": "Impossible d'analyser <var>$1urlparam</var> pour $2. En utilisant seulement la largeur et la hauteur.",
"apiwarn-badutf8": "La valeur passée pour <var>$1</var> contient des données non valides ou non normalisées. Les données textuelles doivent être de l’Unicode valide normalisé en NFC sans caractères de contrôle c0 autres que HT (\\t), LF (\\n) et CR (\\r).",
"apiwarn-checktoken-percentencoding": "Vérifier que les symboles tels que \"+\" dans le jeton sont correctement codés avec des pourcents dans l'URL.",
+ "apiwarn-compare-no-next": "La version $2 est la dernière version de $1, il n'existe pas de version <kbd>torelative=next</kbd> à comparer.",
+ "apiwarn-compare-no-prev": "La version $2 est la plus ancienne de $1, il n'existe pas de version <kbd>torelative=prev</kbd> à comparer.",
"apiwarn-compare-nocontentmodel": "Aucun modèle de contenu n’a pu être déterminé, $1 est supposé.",
"apiwarn-deprecation-deletedrevs": "<kbd>list=deletedrevs</kbd> est devenu désuet. Veuillez utiliser <kbd>prop=deletedrevisions</kbd> ou <kbd>list=alldeletedrevisions</kbd> à la place.",
"apiwarn-deprecation-httpsexpected": "HTTP est utilisé alors que HTTPS est attendu.",
"apihelp-block-param-reblock": "אם המשתמש כבר חסום, לדרוס את החסימה הנוכחית.",
"apihelp-block-param-watchuser": "לעקוב אחרי דף המשתמש ודף השיחה של המשתמש או של כתובת ה־IP.",
"apihelp-block-param-tags": "תגי שינוי שיחולו על העיול ביומן החסימה.",
+ "apihelp-block-param-partial": "חסימת משתמש מעריכת דפים או מרחבי שם מסוימים ולא מכל האתר.",
+ "apihelp-block-param-pagerestrictions": "רשימת כותרות שהמשתמש ייחסם מלערוך. חל רק כאשר \"partial\" מוגדל ל־true.",
"apihelp-block-example-ip-simple": "חסימת כתובת ה־IP <kbd>192.0.2.5</kbd> לשלושה ימים עם הסיבה <kbd>First strike</kbd>.",
"apihelp-block-example-user-complex": "חסימת המשתמש <kbd>Vandal</kbd> ללא הגבלת זמן עם הסיבה <kbd>Vandalism</kbd>, ומניעת יצירת חשבונות חדשים ושליחת דוא\"ל.",
"apihelp-changeauthenticationdata-summary": "שינוי נתוני אימות עבור המשתמש הנוכחי.",
"apihelp-compare-param-fromtitle": "כותרת ראשונה להשוואה.",
"apihelp-compare-param-fromid": "מס׳ זיהוי של הדף הראשון להשוואה.",
"apihelp-compare-param-fromrev": "גרסה ראשונה להשוואה.",
- "apihelp-compare-param-frompst": "לעשות התמרה לפני שמירה ב־<var>fromtext</var>.",
- "apihelp-compare-param-fromtext": "להשתמש בטקסט הזה במקום תוכן הגרסה שהוגדרה על־ידי <var dir=\"ltr\">fromtitle</var>, <var dir=\"ltr\">fromid</var> או <var dir=\"ltr\">fromrev</var>.",
- "apihelp-compare-param-fromcontentmodel": "מודל התוכן של <var>fromtext</var>. אם זה לא סופק, ייעשה ניחוש על סמך פרמטרים אחרים.",
- "apihelp-compare-param-fromcontentformat": "תסדיר הסדרת תוכן של <var>fromtext</var>.",
+ "apihelp-compare-param-frompst": "לעשות התמרה לפני שמירה ב־<var>romtext-{slot}</var>.",
+ "apihelp-compare-param-fromslots": "דריסת תוכן הגרסה שצוינה ב־<var>fromtitle</var>, ב־<var>fromid</var>, או ב־<var>fromrev</var>.\n\nהפרמטר הזה מציין את המשבצות שישונו. יש להשתמש ב־<var>fromtext-{slot}</var>, ב־<var>fromcontentmodel-{slot}</var>, וב־<var>fromcontentformat-{slot}</var> לציון תוכן עבור כל משבצת.",
+ "apihelp-compare-param-fromtext-{slot}": "הטקסט של המשבצת שמצוינת. אם זה מושמט, המשבצת מוּסרת מהגרסה.",
+ "apihelp-compare-param-fromsection-{slot}": "כאשר <var>fromtext-{slot}</var> הוא התוכן של פסקה אחת, זהו מספר הפסקה. הוא ימוזג לתוך הגרסה שמצוינת ב־<var>fromtitle</var>, ב־<var>fromid</var>, או ב־<var>fromrev</var> כמו בעריכת פסקה.",
+ "apihelp-compare-param-fromcontentmodel-{slot}": "מודל התוכן של <var>fromtext-{slot}</var>. אם זה לא סופק, זה ינוחש לפי הפרמטרים האחרים.",
+ "apihelp-compare-param-fromcontentformat-{slot}": "תסדיר להסדרת תוכן של <var>fromtext-{slot}</var>.",
+ "apihelp-compare-param-fromtext": "יש לציין <kbd>fromslots=main</kbd> ולהשתמש ב־<var>fromtext-main</var> במקום זה.",
+ "apihelp-compare-param-fromcontentmodel": "יש לציין <kbd>fromslots=main</kbd> ולהשתמש ב־<var>fromcontentmodel-main</var> במקום זה.",
+ "apihelp-compare-param-fromcontentformat": "יש לציין <kbd>fromslots=main</kbd> ולהשתמש ב־<var>fromcontentformat-main</var> במקום זה.",
"apihelp-compare-param-fromsection": "יש להשתמש רק בפסקה שצוינה בתוכן של הפרמטר 'from'.",
"apihelp-compare-param-totitle": "כותרת שנייה להשוואה.",
"apihelp-compare-param-toid": "מס׳ מזהה של הדף השני להשוואה.",
"apihelp-compare-param-torev": "גרסה שנייה להשוואה.",
"apihelp-compare-param-torelative": "להשתמש בגרסה יחסית לגרסה שהוסקה מ<var dir=\"ltr\">fromtitle</var>, <var dir=\"ltr\">fromid</var> או <var dir=\"ltr\">fromrev</var>. לכל אפשריות ה־\"to\" האחרות לא תהיה השפעה.",
"apihelp-compare-param-topst": "לעשות התמרה לפני שמירה ב־<var>totext</var>.",
- "apihelp-compare-param-totext": "להשתמש בטקסט הזה במקום התוכן של הגרסה שהוגדר ב־<var dir=\"ltr\">totitle</var>, <var dir=\"ltr\">toid</var> or <var dir=\"ltr\">torev</var>.",
- "apihelp-compare-param-tocontentmodel": "מודל התוכן של <var>totext</var>. אם זה לא סופק, ייעשה ניחוש על סמך פרמטרים אחרים.",
- "apihelp-compare-param-tocontentformat": "תסדיר הסדרת תוכן של <var>fromtext</var>.",
+ "apihelp-compare-param-toslots": "דריסת תוכן הגרסה שצוינה ב־<var>totitle</var>, ב־<var>toid</var>, או ב־<var>torev</var>.\n\nהפרמטר הזה מציין את המשבצות שישונו. יש להשתמש ב־<var>totext-{slot}</var>, ב־<var>tocontentmodel-{slot}</var>, וב־<var>tocontentformat-{slot}</var> לציון תוכן עבור כל משבצת.",
+ "apihelp-compare-param-totext-{slot}": "הטקסט של המשבצת שמצוינת. אם זה מושמט, המשבצת מוּסרת מהגרסה.",
+ "apihelp-compare-param-tosection-{slot}": "כאשר <var>totext-{slot}</var> הוא התוכן של פסקה אחת, זהו מספר הפסקה. הוא ימוזג לתוך הגרסה שמצוינת ב־<var>totitle</var>, ב־<var>toid</var>, או ב־<var>torev</var> כמו בעריכת פסקה.",
+ "apihelp-compare-param-tocontentmodel-{slot}": "מודל התוכן של <var>totext-{slot}</var>. אם זה לא סופק, זה ינוחש לפי הפרמטרים האחרים.",
+ "apihelp-compare-param-tocontentformat-{slot}": "תסדיר להסדרת תוכן של <var>totext-{slot}</var>.",
+ "apihelp-compare-param-totext": "יש לציין <kbd>toslots=main</kbd> ולהשתמש ב־<var>totext-main</var> במקום זה.",
+ "apihelp-compare-param-tocontentmodel": "יש לציין <kbd>toslots=main</kbd> ולהשתמש ב־<var>tocontentmodel-main</var> במקום זה.",
+ "apihelp-compare-param-tocontentformat": "יש לציין <kbd>toslots=main</kbd> ולהשתמש ב־<var>tocontentformat-main</var> במקום זה.",
"apihelp-compare-param-tosection": "יש להשתמש רק בפסקה שצוינה בתוכן של הפרמטר 'to'.",
"apihelp-compare-param-prop": "אילו פריטי מידע לקבל.",
"apihelp-compare-paramvalue-prop-diff": "ה־HTML של ההשוואה.",
"apihelp-compare-paramvalue-prop-comment": "התקציר על גרסאות ה־\"from\" וה־\"to\".",
"apihelp-compare-paramvalue-prop-parsedcomment": "התקציר המפוענח על גרסאות ה־\"from\" וה־\"to\".",
"apihelp-compare-paramvalue-prop-size": "הגודל של גרסאות ה־\"from\" וה־\"to\".",
+ "apihelp-compare-param-slots": "החזרת השוואות פרטניו למשבצות האלה, ולא השוואה אחת משולבת לכל המשבצות.",
"apihelp-compare-example-1": "יצירת תיעוד שינוי בין גרסה 1 ל־2.",
"apihelp-createaccount-summary": "יצירת חשבון משתמש חדש.",
"apihelp-createaccount-param-preservestate": "אם <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> החזיר true עבור <samp>hasprimarypreservedstate</samp>, בקשות שמסומנות בתור <samp>primary-required</samp> אמורות להיות מושמטות. אם מוחזר ערך לא ריק ל־<samp>preservedusername</samp>, שם המשתמש הזה ישמש לפרמטר <var>username</var>.",
"apihelp-query+blocks-paramvalue-prop-reason": "הוספת הסיבה שניתנה לחסימה.",
"apihelp-query+blocks-paramvalue-prop-range": "הוספת טווח כתובות ה־IP שהחסימה משפיעה עליהן.",
"apihelp-query+blocks-paramvalue-prop-flags": "מתייג את ההחרמה (autoblock, anononly, וכו'.).",
+ "apihelp-query+blocks-paramvalue-prop-restrictions": "הוספת הגבלות החסימה החלקית אם החסימה אינה לכל האתר.",
"apihelp-query+blocks-param-show": "להציג רק פריטים שמתאימים לאמות המידה האלו.\nלמשל, כדי לראות רק חסימות ללא לצמיתות על כתובות IP יש להגדיר <kbd>$1show=ip|!temp</kbd>.",
"apihelp-query+blocks-example-simple": "רשימת חסימות.",
"apihelp-query+blocks-example-users": "רשימת חסימות של המשתמשים <kbd>Alice</kbd> ו־<kbd>Bob</kbd>.",
"apihelp-query+info-paramvalue-prop-notificationtimestamp": "חותם־זמן של הודעת רשימת מעקב של כל דף.",
"apihelp-query+info-paramvalue-prop-subjectid": "מזהה הדף של הדף העיקרי של כל דף שיחה.",
"apihelp-query+info-paramvalue-prop-url": "נותן URL מלא, URL לעריכה ו־URL קנוני לכל דף.",
- "apihelp-query+info-paramvalue-prop-readable": "×\94×\90×\9d ×\94×\9eשת×\9eש ×\99×\9b×\95×\9c ×\9c×\94צ×\99×\92 ×\93×£ זה.",
+ "apihelp-query+info-paramvalue-prop-readable": "×\94×\90×\9d ×\94×\9eשת×\9eש ×\99×\9b×\95×\9c ×\9cקר×\95×\90 ×\90ת ×\94×\93×£ ×\94×\96×\94. ×\99ש ×\9c×\94שת×\9eש ×\91Ö¾<kbd>intestactions=read</kbd> ×\91×\9eק×\95×\9d זה.",
"apihelp-query+info-paramvalue-prop-preload": "נותן את הטקסט שמוחזר על־ידי EditFormPreloadText.",
"apihelp-query+info-paramvalue-prop-displaytitle": "נותן את האופן שבה שם הדף באמת מוצג.",
"apihelp-query+info-paramvalue-prop-varianttitles": "כותרת התצוגה בכל הגרסאות של שפת התוכן של האתר.",
"apihelp-query+info-param-testactions": "בדיקה האם המשתמש הנוכחי יכול לבצע פעולות מסוימות על הדף.",
+ "apihelp-query+info-param-testactionsdetail": "רמת פירוט של <var>$1testactions</var>. יש להשתמש בפרמטרים <var>errorformat</var> ו־<var>errorlang</var> של [[Special:ApiHelp/main|המודול הראשי]] כדי לשלוט בתסדיר את ההודעות המוחזרות.",
+ "apihelp-query+info-paramvalue-testactionsdetail-boolean": "החזרת ערך בוליאני עבור כל פעולה.",
+ "apihelp-query+info-paramvalue-testactionsdetail-full": "החזרת הודעות שמתארות למה הפעולה אינה מותרת, או מערך ריק אם היא מותרת.",
+ "apihelp-query+info-paramvalue-testactionsdetail-quick": "כמו <kbd>full</kbd>, אבל בלי בדיקות יקרות.",
"apihelp-query+info-param-token": "להשתמש ב־[[Special:ApiHelp/query+tokens|action=query&meta=tokens]] במקום.",
"apihelp-query+info-example-simple": "קבלת מידע על הדף <kbd>Main Page</kbd>",
"apihelp-query+info-example-protection": "קבלת מידע כללי ומידע על הגנה של הדף <kbd>Main Page</kbd>.",
"apihelp-json-param-callback": "אם זה צוין, עוטף את הפלט לתוך קריאת פונקציה נתונה. למען הבטיחות, כל הנתונים הייחודיים למשתמש יוגבלו.",
"apihelp-json-param-utf8": "אם זה צוין, רוב התווים שאינם ASCII (אבל לא כולם) יקודדו בתור UTF-8 במקום להתחלף בסדרות חילוף הקסדצימליות. זאת בררת המחדל אם הערך של <var>formatversion</var> הוא לא <kbd>1</kbd>.",
"apihelp-json-param-ascii": "אם זה צוין, לקודד את כל מה שאינו ASCII בסדרות חילוף הקסדצימליות. זאת בררת המחדל כש־<var>formatversion</var> היא <kbd>1</kbd>.",
- "apihelp-json-param-formatversion": "תסדיר הפלט:\n;1:תסדיר עם תאימות אחורה (ערכים בוליאניים בסגנון XML, מפתחות <samp>*</samp> לצומתי תוכן, וכו').\n;2:תסדיר מודרני ניסיוני. הפרטים יכולים להשתנות!\n;latest:להשתמש בתסדיר החדש ביותר (כרגע <kbd>2</kbd>), יכול להשתנות ללא התראה.",
+ "apihelp-json-param-formatversion": "תסדיר הפלט:\n;1:תסדיר עם תאימות אחורה (ערכים בוליאניים בסגנון XML, מפתחות <samp>*</samp> לצומתי תוכן, וכו').\n;2:תסדיר מודרני.\n;latest:להשתמש בתסדיר החדש ביותר (כרגע <kbd>2</kbd>), יכול להשתנות ללא התראה.",
"apihelp-jsonfm-summary": "לפלוט נתונים בתסדיר JSON (עם הדפסה יפה ב־HTML).",
"apihelp-none-summary": "לא לפלוט שום דבר.",
"apihelp-php-summary": "לפלוט נתונים בתסדיר PHP מוסדר.",
- "apihelp-php-param-formatversion": "תסדיר הפלט:\n;1:תסדיר עם תאימות אחורה (ערכים בוליאניים בסגנון XML, מפתחות <samp>*</samp> לצומתי תוכן, וכו').\n;2:תסדיר מודרני ניסיוני. הפרטים יכולים להשתנות!\n;latest:להשתמש בתסדיר החדש ביותר (כרגע <kbd>2</kbd>), יכול להשתנות ללא התראה.",
+ "apihelp-php-param-formatversion": "תסדיר הפלט:\n;1:תסדיר עם תאימות אחורה (ערכים בוליאניים בסגנון XML, מפתחות <samp>*</samp> לצומתי תוכן, וכו').\n;2:תסדיר מודרני.\n;latest:להשתמש בתסדיר החדש ביותר (כרגע <kbd>2</kbd>), יכול להשתנות ללא התראה.",
"apihelp-phpfm-summary": "לפלוט נתונים בתסדיר PHP מוסדר (עם הדפסה יפה ב־HTML).",
"apihelp-rawfm-summary": "לפלוט את הנתונים, כולל אלמנטים לניפוי שגיאות, בתסדיר JSON (עם הדפסה יפה ב־HTML).",
"apihelp-xml-summary": "לפלוט נתונים בתסדיר XML.",
"apierror-assertnameduserfailed": "הבדיקה שהמשתמש הוא \"$1\" נכשלה.",
"apierror-assertuserfailed": "הבדיקה שהמשתמש נכנס לחשבון נכשלה.",
"apierror-autoblocked": "כתובת ה־IP שלך נחסמה אוטומטית, כי היא שימשה משתמש חסום.",
+ "apierror-bad-badfilecontexttitle": "כותרת בלתי־תקינה בפרמטר <var>$1badfilecontexttitle</var>.",
"apierror-badconfig-resulttoosmall": "הערך של <code dir=\"ltr\">$wgAPIMaxResultSize</code> בוויקי הזה קטן מלהחזיק מידע בסיסי על תוצאה.",
"apierror-badcontinue": "פרמטר continue בלתי־תקין. יש להעביר את הערך המקורי שהחזירה השאילתה הקודמת.",
"apierror-baddiff": "לא ניתן לאחזר את ההשוואה. גרסה אחת לא קיימת או ששתיהן לא קיימות, או שאין לך הרשאה להציג אותן.",
"apierror-bad-watchlist-token": "סופק אסימון רשימת מעקב בלתי־תקין. נא להשתמש באסימון תקין ב־[[Special:Preferences]].",
"apierror-blockedfrommail": "נחסמת משליחת דוא״ל.",
"apierror-blocked": "נחסמת מעריכה.",
+ "apierror-blocked-partial": "נחסמת מעריכת הדף הזה.",
"apierror-botsnotsupported": "הממשק הזה לא נתמך עבור בוטים.",
"apierror-cannot-async-upload-file": "הפרמטרים <var>async</var> ו־<var>file</var> אינם יכולים להיות משולבים. אם ברצונך לבצע עיבוד אסינכרוני של הקובץ המועלה שלך, יש להעלות אותו תחילה לסליק (באמצעות הפרמטר <var>stash</var>) ואז לפרסם את הקובץ המוסלק באופן אסינכרוני (באמצעות <var>filekey</var> ו־<var>async</var>).",
"apierror-cannotreauthenticate": "הפעולה הזאת אינה זמינה, כי הזהות שלך לא יכולה להיות מאומתת.",
"apierror-changeauth-norequest": "יצירת בקשת השינוי נכשלה.",
"apierror-chunk-too-small": "גודל הפלח המזערי הוא {{PLURAL:$1|בית אחד|$1 בתים}} בשביל פלחים לא סופיים.",
"apierror-cidrtoobroad": "טווחי CIDR של $1 שרחבים יותר מ־/$2 אינם קבילים.",
+ "apierror-compare-maintextrequired": "הפרמטר <var>$1text-main</var> נדרש כאשר <var>$1slots</var> מכיל <kbd>main</kbd> (לא ניתן למחוק את המשבצת הראשית).",
"apierror-compare-no-title": "לא ניתן לעשות התמרה לפני שמירה ללא כותרת. נא לנסות לציין <var>fromtitle</var> או <var>totitle</var>.",
"apierror-compare-nosuchfromsection": "הפסקה $1 אינה קיימת בתוכן של 'from'.",
"apierror-compare-nosuchtosection": "הפסקה $1 אינה קיימת בתוכן של 'to'.",
+ "apierror-compare-nofromrevision": "אין גרסת \"from\". יש לציין <var>fromrev</var>, <var>fromtitle</var>, או <var>fromid</var>.",
+ "apierror-compare-notext": "הפרמטר <var>$1</var> אינו יכול לשמש ללא <var>$2</var>.",
+ "apierror-compare-notorevision": "אין גרסת \"to\". יש לציין <var>torev</var>, <var>totitle</var>, או <var>toid</var>.",
+ "apierror-compare-relative-to-deleted": "לא ניתן להשתמש ב־<kbd>torelative=$1</kbd> יחסית לגרסה מחוקה.",
"apierror-compare-relative-to-nothing": "אין גרסת \"from\" עבור <var>torelative</var> שתהיה יחסית.",
"apierror-contentserializationexception": "הסדרת התוכן נכשלה: $1",
"apierror-contenttoobig": "התוכן שסיפקת חורג מגודל הערך המרבי של {{PLURAL:$1|קילובייט אחד|$1 קילובייטים}}.",
"apierror-invalidexpiry": "זמן תפוגה בלתי־תקין \"$1\".",
"apierror-invalid-file-key": "לא מפתח קובץ תקין.",
"apierror-invalidlang": "קוד שפה בלתי־תקין לפרמטר <var>$1</var>.",
+ "apierror-invalidmethod": "שיטת HTTP בלתי־תקינה. נא לשקול להשתמש ב־GET או ב־POST.",
"apierror-invalidoldimage": "הפרמטר <var>oldimage</var> נשלח בתסדיר בלתי־תקין.",
"apierror-invalidparammix-cannotusewith": "הפרמטר <kbd>$1</kbd> אינו יכול לשמש עם <kbd>$2</kbd>.",
"apierror-invalidparammix-mustusewith": "הפרמטר <kbd>$1</kbd> יכול לשמש רק עם <kbd>$2</kbd>.",
"apierror-mimesearchdisabled": "חיפוש MIME כבוי במצב קמצן.",
"apierror-missingcontent-pageid": "תוכן חסר עבור מזהה הדף $1.",
"apierror-missingcontent-revid": "תוכן חסר עבור מזהה הגרסה $1.",
+ "apierror-missingcontent-revid-role": "תוכן חסר כבור מזהה גרסה $1 לתפקיד $2.",
"apierror-missingparam-at-least-one-of": "דרוש {{PLURAL:$2|הפרמטר|לפחות אחד מהפרמטרים}} $1.",
"apierror-missingparam-one-of": "דרוש {{PLURAL:$2|הפרמטר|אחד מהפרמטרים}} $1.",
"apierror-missingparam": "הפרמטר <var>$1</var> צריך להיות מוגדר.",
"apiwarn-badurlparam": "לא היה אפשר לפענח את <var>$1urlparam</var> עבור $2. משתמשים רק ב־width ו־height.",
"apiwarn-badutf8": "הערך שהועבר ל־<var>$1</var> מכיל נתונים בלתי־תקינים או בלתי־מנורמלים. נתונים טקסט אמורים להיות תקינים, מנורמלי NFC וללא תווי בקרה C0 למעט <span dir=\"ltr\">HT (\\t)</span>‏, <span dir=\"ltr\">LF (\\n)</span>‏ ו־<span dir=\"ltr\">CR (\\r)</span>.",
"apiwarn-checktoken-percentencoding": "נא לבדוק שסימנים כמו \"+\" באסימון מקודדים עם אחוזים בצורה נכונה ב־URL.",
+ "apiwarn-compare-no-next": "הגרסה $2 היא הגרסה האחרונה של $1, אין גרסה עבור <kbd>torelative=next</kbd> להשוואה.",
+ "apiwarn-compare-no-prev": "הגרסה $2 היא הגרסה המוקדמת ביותר של $1, אין גרסה עבור <kbd>torelative=prev</kbd> להשוואה.",
"apiwarn-compare-nocontentmodel": "לא היה אפשר לקבוע את מודל התוכן, נניח שזה $1.",
"apiwarn-deprecation-deletedrevs": "<kbd>list=deletedrevs</kbd> הוצהר בתור מיושן. נא להשתמש ב־ <kbd>prop=deletedrevisions</kbd> או ב־<kbd>list=alldeletedrevisions</kbd> במקום זה.",
"apiwarn-deprecation-httpsexpected": "משמש HTTP כשהיה צפוי HTTPS.",
"apihelp-edit-param-tags": "Ознаки за измена што се однесуваат на преработката.",
"apihelp-edit-param-minor": "Ситно уредување.",
"apihelp-edit-param-notminor": "Неситно уредување.",
- "apihelp-edit-param-bot": "Означи го уредувањево како ботовско.",
+ "apihelp-edit-param-bot": "Означи го уредувањето како ботовско.",
"apihelp-edit-param-basetimestamp": "Датум и време на преработката на базата, кои се користат за утврдување на спротиставености во уредувањето. Може да се добие преку [[Special:ApiHelp/query+revisions|action=query&prop=revisions&rvprop=timestamp]].",
"apihelp-edit-param-starttimestamp": "Датум и време кога сте почнало уредувањето, кои се користат за утврдување на спротиставености во уредувањата. Соодветната вредност се добива користејќи <var>[[Special:ApiHelp/main|curtimestamp]]</var> кога ќе почнете со уредување (на пр. кога ќе се вчита содржината што ќе ја уредувате).",
"apihelp-edit-param-recreate": "Занемари ги грешките што се појавуваат во врска со страницата што е избришана во меѓувреме.",
"apihelp-query+iwbacklinks-param-limit": "Łączna liczba stron do zwrócenia.",
"apihelp-query+iwbacklinks-paramvalue-prop-iwprefix": "Dodaje prefiks interwiki.",
"apihelp-query+iwbacklinks-paramvalue-prop-iwtitle": "Dodaje tytuł interwiki.",
- "apihelp-query+iwlinks-summary": "Wyświetla wszystkie liki interwiki z danych stron.",
+ "apihelp-query+iwlinks-summary": "Wyświetla wszystkie linki interwiki z danych stron.",
"apihelp-query+iwlinks-paramvalue-prop-url": "Dodaje pełny adres URL.",
"apihelp-query+iwlinks-param-limit": "Łączna liczba linków interwiki do zwrócenia.",
"apihelp-query+langbacklinks-param-limit": "Łączna liczba stron do zwrócenia.",
"apiwarn-badurlparam": "Não foi possível analisar <var>$1urlparam</var> por $2. Usando apenas largura e altura.",
"apiwarn-badutf8": "O valor passado para <var>$1</var> contém dados inválidos ou não normalizados. Os dados textuais devem ser válidos, NFC-normalizado Unicode sem caracteres de controle C0 diferentes de HT (\\t), LF (\\n) e CR (\\r).",
"apiwarn-checktoken-percentencoding": "Verificar se os símbolos, como \"+\" no token, estão codificados corretamente na URL.",
+ "apiwarn-compare-no-next": "A revisão $2 é a revisão mais recente de $1, não há nenhuma revisão seguinte para comparar com <kbd>torelative=next</kbd>.",
+ "apiwarn-compare-no-prev": "A revisão $2 é a revisão mais antiga de $1, não há nenhuma revisão anterior para comparar com <kbd>torelative=prev</kbd>.",
"apiwarn-compare-nocontentmodel": "Nenhum modelo de conteúdo pode ser determinado, assumindo $1.",
"apiwarn-deprecation-deletedrevs": "<kbd>list=deletedrevs</kbd> foi depreciado. Por favor, use <kbd>prop=deletedrevisions</kbd> ou <kbd>list=alldeletedrevisions</kbd> em vez.",
"apiwarn-deprecation-httpsexpected": "HTTP usado quando o HTTPS era esperado.",
"apiwarn-badurlparam": "Não foi possível analisar <var>$1urlparam</var> para $2. Serão utilizadas somente a largura e a altura.",
"apiwarn-badutf8": "O valor passado para <var>$1</var> contém dados inválidos ou não normalizados. Os dados textuais devem estar em formato Unicode válido, normalizado em NFC, sem caracteres de controlo C0 exceto HT (\\t), LF (\\n) e CR (\\r).",
"apiwarn-checktoken-percentencoding": "Verifique que símbolos como \"+\" na chave estão devidamente codificados com percentagem no URL.",
+ "apiwarn-compare-no-next": "A revisão $2 é a revisão mais recente de $1, não há nenhuma revisão seguinte para comparar com <kbd>torelative=next</kbd>.",
+ "apiwarn-compare-no-prev": "A revisão $2 é a revisão mais antiga de $1, não há nenhuma revisão anterior para comparar com <kbd>torelative=prev</kbd>.",
"apiwarn-compare-nocontentmodel": "Não foi possível determinar nenhum modelo de conteúdo; será assumido $1.",
"apiwarn-deprecation-deletedrevs": "<kbd>list=deletedrevs</kbd> foi descontinuado. Em substituição, use <kbd>prop=deletedrevisions</kbd> ou <kbd>list=alldeletedrevisions</kbd>, por favor.",
"apiwarn-deprecation-httpsexpected": "Foi usado HTTP quando era esperado HTTPS.",
"apiwarn-badurlparam": "{{doc-apierror}}\n\nParameters:\n* $1 - Module parameter prefix, e.g. \"bl\".\n* $2 - Image title.",
"apiwarn-badutf8": "{{doc-apierror}}\n\nParameters:\n* $1 - Parameter name.\n{{doc-important|Do not translate \"\\t\", \"\\n\", and \"\\r\"}}",
"apiwarn-checktoken-percentencoding": "{{doc-apierror}}",
+ "apiwarn-compare-no-next": "{{doc-apierror}}\n\nParameters:\n* $1 - Title of the page.\n* $2 - Revision ID.",
+ "apiwarn-compare-no-prev": "{{doc-apierror}}\n\nParameters:\n* $1 - Title of the page.\n* $2 - Revision ID.",
"apiwarn-compare-nocontentmodel": "{{doc-apierror}}\n\nParameters:\n* $1 - Content model being assumed.",
"apiwarn-deprecation-deletedrevs": "{{doc-apierror}}",
"apiwarn-deprecation-httpsexpected": "{{doc-apierror}}",
"apihelp-expandtemplates-param-includecomments": "輸出裡是否包含 HTML 註解。",
"apihelp-expandtemplates-param-generatexml": "產生 XML 解析樹狀(以 $1prop=parsetree 取代)。",
"apihelp-expandtemplates-example-simple": "展開 wiki 文字<kbd><nowiki>{{Project:Sandbox}}</nowiki></kbd>。",
- "apihelp-feedcontributions-summary": "回傳使用者貢獻 Feed。",
- "apihelp-feedcontributions-param-feedformat": "Feed 的格式。",
+ "apihelp-feedcontributions-summary": "回傳使用者貢獻摘要。",
+ "apihelp-feedcontributions-param-feedformat": "摘要的格式。",
"apihelp-feedcontributions-param-user": "要取得哪些使用者的貢獻。",
"apihelp-feedcontributions-param-year": "起始年份(更早之前)。",
"apihelp-feedcontributions-param-month": "起始月份(更早之前)。",
"apihelp-feedcontributions-param-hideminor": "隱藏小編輯。",
"apihelp-feedcontributions-param-showsizediff": "顯示修訂版本之間的差異大小。",
"apihelp-feedcontributions-example-simple": "返回使用者<kbd>Example</kbd>的貢獻。",
- "apihelp-feedrecentchanges-summary": "返回最近變更摘要。",
+ "apihelp-feedrecentchanges-summary": "返回近期變更摘要。",
"apihelp-feedrecentchanges-param-feedformat": "摘要格式。",
"apihelp-feedrecentchanges-param-namespace": "用於限制結果的命名空間。",
"apihelp-feedrecentchanges-param-invert": "除所選定者外的所有命名空間。",
"apihelp-feedrecentchanges-param-target": "僅顯示從該頁面所連結頁面上的變更。",
"apihelp-feedrecentchanges-example-simple": "顯示近期變更。",
"apihelp-feedrecentchanges-example-30days": "顯示近期30天內的變動",
- "apihelp-feedwatchlist-summary": "返回監視清單 feed。",
- "apihelp-feedwatchlist-param-feedformat": "Feed 的格式。",
+ "apihelp-feedwatchlist-summary": "返回監視清單摘要。",
+ "apihelp-feedwatchlist-param-feedformat": "摘要的格式。",
"apihelp-feedwatchlist-param-hours": "列出在幾小時內的頁面變動。",
"apihelp-feedwatchlist-param-linktosections": "若可以的話,直接連結至更改過的段落。",
+ "apihelp-feedwatchlist-example-default": "顯示監視清單摘要。",
"apihelp-feedwatchlist-example-all6hrs": "顯示過去 6 小時在監視頁面的所有更改。",
"apihelp-filerevert-summary": "回退檔案至舊的版本。",
"apihelp-filerevert-param-filename": "目標檔案名稱,不需包含「File:」這樣的前綴字元。",
"apihelp-parse-param-disablepp": "請改用<var>$1disablelimitreport</var>。",
"apihelp-parse-param-disableeditsection": "從解析輸出內容省略編輯段落連結。",
"apihelp-parse-param-disabletidy": "不要在解析輸出裡執行 HTML 內容清理(例如使用 tidy 軟體工具)",
+ "apihelp-parse-param-disablestylededuplication": "不要在解析結果去除重複的行內樣式表。",
"apihelp-parse-param-generatexml": "產生 XML 解析樹狀(需要被 <kbd>$2prop=parsetree</kbd> 給取代的 <code>$1</code> 內容模組)。",
"apihelp-parse-param-preview": "在預覽模式下解析。",
+ "apihelp-parse-param-sectionpreview": "在段落預覽模式下解析(要同時啟用預覽模式)。",
"apihelp-parse-param-disabletoc": "在輸出裡忽略目錄。",
"apihelp-parse-param-useskin": "套用所選的外觀至解析輸出。可能會影響以下參數:<kbd>langlinks</kbd>、<kbd>headitems</kbd>、<kbd>modules</kbd>、<kbd>jsconfigvars</kbd>、<kbd>indicators</kbd>。",
"apihelp-parse-example-page": "解析頁面。",
"apihelp-patrol-param-rcid": "要巡查的最近變更 ID。",
"apihelp-patrol-param-revid": "要巡查的修訂 ID。",
"apihelp-patrol-param-tags": "在巡查日誌裡更改套用到項目的標籤。",
- "apihelp-patrol-example-rcid": "巡查一次最近變更。",
+ "apihelp-patrol-example-rcid": "巡查一次近期變更。",
"apihelp-patrol-example-revid": "巡查一個修訂。",
"apihelp-protect-summary": "變更頁面的保護層級。",
"apihelp-protect-param-title": "要(解除)保護頁面的標題。 不能與 $1pageid 一起使用。",
"apihelp-query+allcategories-param-prop": "要取得的屬性。",
"apihelp-query+allcategories-paramvalue-prop-size": "在分類裡添加頁面數。",
"apihelp-query+allcategories-paramvalue-prop-hidden": "標記由 <code>__HIDDENCAT__</code> 隱藏的分類。",
+ "apihelp-query+allcategories-example-size": "列出分類以及各包含多少頁面的資訊。",
+ "apihelp-query+allcategories-example-generator": "替以 <kbd>List</kbd> 開頭的分類索取該分類頁面本身的資訊。",
"apihelp-query+alldeletedrevisions-summary": "依使用者或所在命名空間來列出所有已刪除的修訂。",
"apihelp-query+alldeletedrevisions-paraminfo-useronly": "僅與 <var>$3user</var> 一同使用。",
"apihelp-query+alldeletedrevisions-paraminfo-nonuseronly": "不能與 <var>$3user</var> 一同使用。",
"apihelp-query+allusers-param-excludegroup": "排除指定群組中的使用者",
"apihelp-query+allusers-param-prop": "要包含的資訊部份:",
"apihelp-query+allusers-paramvalue-prop-blockinfo": "添加有關使用者目前封鎖的資訊。",
+ "apihelp-query+allusers-paramvalue-prop-groups": "列出使用者所在的群組。這會使用到較多伺服器資源,並且可能會回傳少於限制條件的結果。",
"apihelp-query+allusers-paramvalue-prop-implicitgroups": "列出使用者自動列入的所有群組。",
"apihelp-query+allusers-paramvalue-prop-rights": "列出使用者所擁有的權限。",
"apihelp-query+allusers-paramvalue-prop-editcount": "添加使用者的編輯次數。",
"apihelp-query+categorymembers-paramvalue-prop-ids": "添加頁面 ID。",
"apihelp-query+categorymembers-paramvalue-prop-title": "添加標題與頁面的命名空間 ID。",
"apihelp-query+categorymembers-paramvalue-prop-sortkey": "添加使用來在分類裡排序的排序鍵(十六進位字串)。",
+ "apihelp-query+categorymembers-paramvalue-prop-type": "添加頁面已被分類的類型(<samp>page</samp>、<samp>subcat</samp> 或 <samp>file</samp>)。",
"apihelp-query+categorymembers-paramvalue-prop-timestamp": "添加在頁面有被包含時的時間戳記。",
+ "apihelp-query+categorymembers-param-namespace": "僅包含在這些命名空間的頁面。請注意可能會使用 <kbd>$1type=subcat</kbd> 或 <kbd>$1type=file</kbd>,而非 <kbd>$1namespace=14</kbd> 或 <kbd>6</kbd>。",
"apihelp-query+categorymembers-param-type": "包含的分類成員類型。當有設定 <kbd>$1sort=timestamp</kbd> 時忽略。",
"apihelp-query+categorymembers-param-limit": "回傳的頁面數量上限。",
"apihelp-query+categorymembers-param-sort": "作為排序順序的屬性。",
"apihelp-query+categorymembers-param-endsortkey": "請改用 $1endhexsortkey。",
"apihelp-query+categorymembers-example-simple": "取得在 <kbd>Category:Physics</kbd> 裡前 10 項的頁面。",
"apihelp-query+categorymembers-example-generator": "取得在 <kbd>Category:Physics</kbd> 裡前 10 個頁面的頁面資訊。",
+ "apihelp-query+contributors-summary": "取得頁面上登入貢獻者以及匿名貢獻者數量的清單。",
"apihelp-query+contributors-param-limit": "要回傳的貢獻人員數量。",
"apihelp-query+contributors-example-simple": "顯示頁面 <kbd>Main Page</kbd> 的貢獻者。",
"apihelp-query+deletedrevisions-summary": "取得已刪除修訂的資訊。",
"apihelp-query+deletedrevs-param-excludeuser": "不要列出由該使用者作出的修訂。",
"apihelp-query+deletedrevs-param-namespace": "僅列出此命名空間的頁面。",
"apihelp-query+deletedrevs-param-limit": "修訂能列出的最大數量。",
+ "apihelp-query+deletedrevs-example-mode1": "以帶有內容(模式 1)列出頁面 <kbd>Main Page</kbd> 與 <kbd>Talk:Main Page</kbd> 的最新刪除修訂。",
"apihelp-query+deletedrevs-example-mode2": "列出最近前 50 個已刪除掉由 <kbd>Bob</kbd> 所做出的貢獻(模式 2)。",
"apihelp-query+deletedrevs-example-mode3-main": "列出在主命名空間的前 50 個已刪除修訂(模式 3)。",
"apihelp-query+deletedrevs-example-mode3-talk": "列出在{{ns:talk}}命名空間的前 50 個已刪除頁面(模式 3)。",
"apihelp-query+extlinks-param-limit": "要回傳的連結數量。",
"apihelp-query+extlinks-param-protocol": "URL 協定。若為空且有設定 <var>$1query</var>,會是 <kbd>http</kbd> 協定。將此與 <var>$1query</var> 一同留空會列出所有外部連結。",
"apihelp-query+extlinks-param-query": "不以協議來搜尋字串,對於檢查某頁面是否包含某個外部 URL 時很有用。",
+ "apihelp-query+extlinks-param-expandurl": "以規範協議的擴充協議關聯 URL。",
"apihelp-query+extlinks-example-simple": "取得 <kbd>Main Page</kbd> 的外部連結清單。",
"apihelp-query+exturlusage-summary": "列舉包含指定 URL 的頁面。",
"apihelp-query+exturlusage-param-prop": "要包含的資訊部份:",
"apihelp-query+exturlusage-param-query": "不帶協定的搜尋字串。請查看 [[Special:LinkSearch]]。請留空以列出所有外部連結。",
"apihelp-query+exturlusage-param-namespace": "要列舉的頁面命名空間。",
"apihelp-query+exturlusage-param-limit": "要回傳的頁面數量。",
+ "apihelp-query+exturlusage-param-expandurl": "以規範協議的擴充協議關聯 URL。",
"apihelp-query+exturlusage-example-simple": "顯示連結至 <kbd>https://www.mediawiki.org</kbd> 的頁面。",
"apihelp-query+filearchive-summary": "依序列舉所有已刪除檔案。",
"apihelp-query+filearchive-param-from": "起始列舉的圖片標題。",
"apihelp-query+random-param-filterredir": "如何過濾重新導向。",
"apihelp-query+random-example-simple": "從主命名空間回傳兩個隨機頁面。",
"apihelp-query+random-example-generator": "從主命名空間回傳兩個隨機頁面的相關頁面資訊。",
- "apihelp-query+recentchanges-summary": "列舉出最近變更。",
+ "apihelp-query+recentchanges-summary": "列舉出近期變更。",
"apihelp-query+recentchanges-param-start": "起始列舉的時間戳記。",
"apihelp-query+recentchanges-param-end": "結束列舉的時間戳記。",
"apihelp-query+recentchanges-param-namespace": "篩選僅為這些命名空間的更改。",
"apihelp-query+recentchanges-paramvalue-prop-flags": "添加編輯的標籤。",
"apihelp-query+recentchanges-paramvalue-prop-timestamp": "添加編輯的時間戳記。",
"apihelp-query+recentchanges-paramvalue-prop-title": "添加編輯的頁面標題。",
- "apihelp-query+recentchanges-paramvalue-prop-ids": "添加頁面 ID、最近更改 ID 以及新舊修訂 ID。",
+ "apihelp-query+recentchanges-paramvalue-prop-ids": "添加頁面 ID、近期變更 ID 以及新舊修訂 ID。",
"apihelp-query+recentchanges-paramvalue-prop-sizes": "添加新舊頁面長度(位元組)。",
"apihelp-query+recentchanges-paramvalue-prop-redirect": "若頁面為重新導向則標記編輯。",
"apihelp-query+recentchanges-paramvalue-prop-patrolled": "標記可巡查編輯為已巡查或未巡查。",
"apihelp-query+recentchanges-param-type": "要顯示的更改類型。",
"apihelp-query+recentchanges-param-toponly": "僅列出最新修訂的更改。",
"apihelp-query+recentchanges-param-title": "篩選與這些頁面關聯的項目。",
- "apihelp-query+recentchanges-example-simple": "最近變更清單",
+ "apihelp-query+recentchanges-example-simple": "近期變更清單",
"apihelp-query+recentchanges-example-generator": "取得有關近期尚未巡查更改的頁面資訊。",
"apihelp-query+redirects-summary": "回傳連結至指定頁面的所有重新導向。",
"apihelp-query+redirects-param-prop": "要取得的屬性。",
"apihelp-query+siteinfo-paramvalue-prop-namespacealiases": "已註冊命名空間別名清單。",
"apihelp-query+siteinfo-paramvalue-prop-specialpagealiases": "特殊頁面別名清單。",
"apihelp-query+siteinfo-paramvalue-prop-magicwords": "魔術字及其別名清單。",
+ "apihelp-query+siteinfo-paramvalue-prop-statistics": "回傳網站統計。",
"apihelp-query+siteinfo-paramvalue-prop-interwikimap": "回傳內部 wiki 對應(篩選可選用,也可透過 <var>$1inlanguagecode</var> 來選用本地化)。",
"apihelp-query+siteinfo-paramvalue-prop-dbrepllag": "回傳有最高複製延遲的資料庫伺服器。",
"apihelp-query+siteinfo-paramvalue-prop-usergroups": "回傳使用者群組以及所分配權限。",
"apihelp-query+watchlist-paramvalue-type-categorize": "分類成員更改。",
"apihelp-query+watchlist-param-owner": "與 $1token 一起使用以存取不同使用者的監視清單。",
"apihelp-query+watchlist-param-token": "允許存取其他使用者監視清單的安全權杖(可在使用者的[[Special:Preferences#mw-prefsection-watchlist|偏好設定]]找到)。",
+ "apihelp-query+watchlist-example-simple": "列出在目前使用者監視清單裡近期變更頁面的最新修訂。",
+ "apihelp-query+watchlist-example-props": "索取在目前使用者監視清單裡近期變更頁面的最新修訂額外資訊。",
+ "apihelp-query+watchlist-example-allrev": "索取在目前使用者監視清單裡所有近期變更頁面的資訊。",
"apihelp-query+watchlist-example-generator": "索取在目前使用者監視清單裡近期變更頁面的頁面資訊。",
+ "apihelp-query+watchlist-example-generator-rev": "索取在目前使用者監視清單裡近期變更頁面的修訂資訊。",
"apihelp-query+watchlistraw-summary": "列出在目前使用者的監視清單裡頭所有頁面。",
"apihelp-query+watchlistraw-param-namespace": "僅列出在指定命名空間的頁面。",
"apihelp-query+watchlistraw-param-limit": "每個請求要回傳的結果總數。",
"apihelp-stashedit-param-baserevid": "基本修訂的修訂 ID。",
"apihelp-stashedit-param-summary": "更改摘要。",
"apihelp-tag-summary": "從各別修訂或日誌項目添加或移除變更標籤。",
+ "apihelp-tag-param-rcid": "要添加或移除標籤的一個或多個近期變更 ID。",
"apihelp-tag-param-revid": "要添加或移除標籤的一個或多個修訂 ID。",
"apihelp-tag-param-logid": "要添加或移除標籤的一個或多個日誌項目 ID。",
"apihelp-tag-param-add": "要添加的標籤。僅有手動定義的標籤可被添加。",
"apihelp-tag-param-reason": "變更的原因。",
+ "apihelp-tag-param-tags": "套用到日誌項目的標籤會被建立為此操作的結果。",
"apihelp-tag-example-rev": "不指明原因將 ID 為 123 的修訂添加 <kbd>vandalism</kbd> 標籤",
"apihelp-tag-example-log": "將 ID 為 123 的日誌項目移除 <kbd>spam</kbd> 標籤,原因:<kbd>Wrongly applied</kbd>",
"apihelp-tokens-summary": "取得資料修改動作的權杖。",
"apierror-cantundelete": "無法取消刪除:請求的修訂可能不存在,或是可能已被取消刪除。",
"apierror-changeauth-norequest": "建立更改請求失敗。",
"apierror-cidrtoobroad": "不能接受超出 /$2 的 $1 CIDR 範圍。",
+ "apierror-compare-maintextrequired": "當 <var>$1slots</var> 包含 <kbd>main</kbd> 時,需要參數 <var>$1text-main</var>(不能刪除主要部份)。",
"apierror-compare-no-title": "無法在不帶標題之下預先儲存轉換。請嘗試指定 <var>fromtitle</var> 或 <var>totitle</var>。",
"apierror-compare-nosuchfromsection": "在 'from' 內容裡沒有段落$1。",
"apierror-compare-nosuchtosection": "在 'to' 內容裡沒有段落$1。",
+ "apierror-compare-nofromrevision": "沒有「from」修訂。請指定 <var>fromrev</var>、<var>fromtitle</var>、或 <var>fromid</var>。",
"apierror-compare-notext": "參數 <var>$1</var> 不能在缺少 <var>$2</var> 的情況下使用。",
+ "apierror-compare-notorevision": "沒有「to」修訂。請指定 <var>torev</var>、<var>totitle</var>、或 <var>toid</var>。",
+ "apierror-compare-relative-to-deleted": "相關已刪除修訂時不能使用 <kbd>torelative=$1</kbd>。",
"apierror-contentserializationexception": "內容序列化失敗:$1",
"apierror-copyuploadbaddomain": "不允許從此網域來透過 URL 上傳。",
"apierror-copyuploadbadurl": "不允許從此 URL 來上傳。",
"apierror-revdel-needtarget": "此 RevDel 類型需要目標標題。",
"apierror-revdel-paramneeded": "至少需要 <var>hide</var> 與/或 <var>show</var> 其中的值。",
"apierror-revisions-badid": "查無參數 <var>$1</var> 的修訂。",
+ "apierror-revisions-norevids": "<var>revids</var> 參數不能與清單選項(<var>$1limit</var>、<var>$1startid</var>、<var>$1endid</var>、<kbd>$1dir=newer</kbd>、<var>$1user</var>、<var>$1excludeuser</var>、<var>$1start</var>、和 <var>$1end</var>)一起使用。",
"apierror-revwrongpage": "r$1 不是$2的修訂。",
"apierror-searchdisabled": "<var>$1</var>搜尋已停用。",
"apierror-sectionreplacefailed": "無法合併更新的章節。",
$this->setSessionDataForUser( $user );
$this->callMethodOnProviders( 7, 'postAuthentication', [ $user, $ret ] );
$session->remove( 'AuthManager::authnState' );
- \Hooks::run( 'AuthManagerLoginAuthenticateAudit', [ $ret, $user, $user->getName() ] );
+ \Hooks::run( 'AuthManagerLoginAuthenticateAudit', [ $ret, $user, $user->getName(), [] ] );
return $ret;
}
$this->callMethodOnProviders( 7, 'postAuthentication',
[ User::newFromName( $guessUserName ) ?: null, $ret ]
);
- \Hooks::run( 'AuthManagerLoginAuthenticateAudit', [ $ret, null, $guessUserName ] );
+ \Hooks::run( 'AuthManagerLoginAuthenticateAudit', [ $ret, null, $guessUserName, [] ] );
return $ret;
}
}
[ User::newFromName( $guessUserName ) ?: null, $res ]
);
$session->remove( 'AuthManager::authnState' );
- \Hooks::run( 'AuthManagerLoginAuthenticateAudit', [ $res, null, $guessUserName ] );
+ \Hooks::run( 'AuthManagerLoginAuthenticateAudit', [ $res, null, $guessUserName, [] ] );
return $res;
case AuthenticationResponse::ABSTAIN;
// Continue loop
[ User::newFromName( $guessUserName ) ?: null, $res ]
);
$session->remove( 'AuthManager::authnState' );
- \Hooks::run( 'AuthManagerLoginAuthenticateAudit', [ $res, null, $guessUserName ] );
+ \Hooks::run( 'AuthManagerLoginAuthenticateAudit', [ $res, null, $guessUserName, [] ] );
return $res;
case AuthenticationResponse::REDIRECT;
case AuthenticationResponse::UI;
);
$this->callMethodOnProviders( 7, 'postAuthentication', [ $user, $ret ] );
$session->remove( 'AuthManager::authnState' );
- \Hooks::run( 'AuthManagerLoginAuthenticateAudit', [ $ret, $user, $user->getName() ] );
+ \Hooks::run( 'AuthManagerLoginAuthenticateAudit', [ $ret, $user, $user->getName(), [] ] );
return $ret;
}
}
$this->logger->debug( "Login failed in secondary authentication by $id" );
$this->callMethodOnProviders( 7, 'postAuthentication', [ $user, $res ] );
$session->remove( 'AuthManager::authnState' );
- \Hooks::run( 'AuthManagerLoginAuthenticateAudit', [ $res, $user, $user->getName() ] );
+ \Hooks::run( 'AuthManagerLoginAuthenticateAudit', [ $res, $user, $user->getName(), [] ] );
return $res;
case AuthenticationResponse::REDIRECT;
case AuthenticationResponse::UI;
$this->callMethodOnProviders( 7, 'postAuthentication', [ $user, $ret ] );
$session->remove( 'AuthManager::authnState' );
$this->removeAuthenticationSessionData( null );
- \Hooks::run( 'AuthManagerLoginAuthenticateAudit', [ $ret, $user, $user->getName() ] );
+ \Hooks::run( 'AuthManagerLoginAuthenticateAudit', [ $ret, $user, $user->getName(), [] ] );
return $ret;
} catch ( \Exception $ex ) {
$session->remove( 'AuthManager::authnState' );
$value = null;
if ( is_null( $key ) ) {
- $itemKey = array_keys( array_slice( $this->cachedChunks, 0, 1 ) );
- $itemKey = array_shift( $itemKey );
+ reset( $this->cachedChunks );
+ $itemKey = key( $this->cachedChunks );
if ( !is_int( $itemKey ) ) {
wfWarn( "Attempted to get item with non-numeric key while " .
* Encodes a value into an array format
*
* @param mixed $value
- * @return array
+ * @return array|mixed
* @throws RuntimeException
*/
public static function encode( $value ) {
- if ( is_scalar( $value ) || $value === null ) {
- // [V]alue
- return [ 'v', $value ];
+ if ( is_array( $value ) ) {
+ // [a]rray
+ return [ 'a', array_map( 'LCStoreStaticArray::encode', $value ) ];
}
if ( is_object( $value ) ) {
- // [S]erialized
+ // [s]erialized
return [ 's', serialize( $value ) ];
}
- if ( is_array( $value ) ) {
- // [A]rray
- return [ 'a', array_map( 'LCStoreStaticArray::encode', $value ) ];
+ if ( is_scalar( $value ) || $value === null ) {
+ // Scalar value, written directly without array
+ return $value;
}
throw new RuntimeException( 'Cannot encode ' . var_export( $value, true ) );
/**
* Decode something that was encoded with encode
*
- * @param array $encoded
+ * @param mixed $encoded
* @return array|mixed
* @throws RuntimeException
*/
- public static function decode( array $encoded ) {
+ public static function decode( $encoded ) {
+ if ( !is_array( $encoded ) ) {
+ // Scalar values are written directly without array
+ return $encoded;
+ }
+
$type = $encoded[0];
$data = $encoded[1];
switch ( $type ) {
- case 'v':
- return $data;
- case 's':
- return unserialize( $data );
case 'a':
return array_map( 'LCStoreStaticArray::decode', $data );
+ case 's':
+ return unserialize( $data );
+ case 'v':
+ // Support: MediaWiki 1.32 and earlier
+ // Backward compatibility with older file format
+ return $data;
default:
throw new RuntimeException(
'Unable to decode ' . var_export( $encoded, true ) );
);
}
if ( $rc->mAttribs['rc_type'] == RC_CATEGORIZE ) {
- $diffhist = $diffLink . $this->message['pipe-separator'] . $this->message['hist'];
+ $histLink = $this->message['hist'];
} else {
- $diffhist = $diffLink . $this->message['pipe-separator'];
- # History link
- $diffhist .= $this->linkRenderer->makeKnownLink(
+ $histLink = $this->linkRenderer->makeKnownLink(
$rc->getTitle(),
new HtmlArmor( $this->message['hist'] ),
[ 'class' => 'mw-changeslist-history' ],
);
}
- // @todo FIXME: Hard coded ". .". Is there a message for this? Should there be?
- $s .= $this->msg( 'parentheses' )->rawParams( $diffhist )->escaped() .
- ' <span class="mw-changeslist-separator">. .</span> ';
+ $s .= Html::rawElement( 'div', [ 'class' => 'mw-changeslist-links' ],
+ Html::rawElement( 'span', [], $diffLink ) .
+ Html::rawElement( 'span', [], $histLink )
+ ) .
+ ' <span class="mw-changeslist-separator"></span> ';
}
/**
htmlspecialchars( $this->getLanguage()->userTime(
$rc->mAttribs['rc_timestamp'],
$this->getUser()
- ) ) . '</span> <span class="mw-changeslist-separator">. .</span> ';
+ ) ) . '</span> <span class="mw-changeslist-separator"></span> ';
}
/**
if ( $this->getConfig()->get( 'RCShowChangedSize' ) ) {
$cd = $this->formatCharacterDifference( $rc );
if ( $cd !== '' ) {
- $html .= $cd . ' <span class="mw-changeslist-separator">. .</span> ';
+ $html .= $cd . ' <span class="mw-changeslist-separator"></span> ';
}
}
$setSection =& $loadedDescriptor;
if ( $section ) {
- $sectionParts = explode( '/', $section );
-
- while ( count( $sectionParts ) ) {
- $newName = array_shift( $sectionParts );
-
+ foreach ( explode( '/', $section ) as $newName ) {
if ( !isset( $setSection[$newName] ) ) {
$setSection[$newName] = [];
}
for ( $i = count( $thisKeys ) - 1; $i >= 0; $i-- ) {
$keys = array_merge( array_slice( $thisKeys, 0, $i ), $nameKeys );
$data = $alldata;
- while ( $keys ) {
- $key = array_shift( $keys );
+ foreach ( $keys as $key ) {
if ( !is_array( $data ) || !array_key_exists( $key, $data ) ) {
continue 2;
}
[ 'addIndex', 'recentchanges', 'rc_name_type_patrolled_timestamp',
'patch-add-rc_name_type_patrolled_timestamp_index.sql' ],
[ 'addField', 'change_tag', 'ct_id', 'patch-change_tag-ct_id.sql' ],
- [ 'addField', 'tag_summary', 'ts_id', 'patch-tag_summary-ts_id.sql' ],
// 1.29
[ 'addField', 'externallinks', 'el_index_60', 'patch-externallinks-el_index_60.sql' ],
// 1.33
[ 'dropField', 'change_tag', 'ct_tag', 'patch-drop-ct_tag.sql' ],
+ [ 'dropTable', 'valid_tag' ],
+ [ 'dropTable', 'tag_summary' ],
];
}
// 1.15
[ 'addTable', 'change_tag', 'patch-change_tag.sql' ],
- [ 'addTable', 'tag_summary', 'patch-tag_summary.sql' ],
- [ 'addTable', 'valid_tag', 'patch-valid_tag.sql' ],
// 1.16
[ 'addTable', 'user_properties', 'patch-user_properties.sql' ],
[ 'doLogUsertextPopulation' ],
[ 'doLogSearchPopulation' ],
[ 'addTable', 'l10n_cache', 'patch-l10n_cache.sql' ],
- [ 'addIndex', 'tag_summary', 'tag_summary_rc_id', 'patch-change_tag-indexes.sql' ],
+ [ 'dropIndex', 'change_tag', 'ct_rc_id', 'patch-change_tag-indexes.sql' ],
[ 'addField', 'redirect', 'rd_interwiki', 'patch-rd_interwiki.sql' ],
[ 'doUpdateMimeMinorField' ],
[ 'doRevisionPageRevIndexNonUnique' ],
[ 'doNonUniquePlTlIl' ],
[ 'addField', 'change_tag', 'ct_id', 'patch-change_tag-ct_id.sql' ],
- [ 'addField', 'tag_summary', 'ts_id', 'patch-tag_summary-ts_id.sql' ],
[ 'modifyField', 'recentchanges', 'rc_ip', 'patch-rc_ip_modify.sql' ],
[ 'addIndex', 'archive', 'usertext_timestamp', 'patch-rename-ar_usertext_timestamp.sql' ],
// 1,33
[ 'dropField', 'change_tag', 'ct_tag', 'patch-drop-ct_tag.sql' ],
+ [ 'dropTable', 'valid_tag' ],
+ [ 'dropTable', 'tag_summary' ],
];
}
[ 'table' => 'change_tag', 'field' => 'ct_log_id' ],
[ 'table' => 'change_tag', 'field' => 'ct_rev_id' ],
[ 'table' => 'page_restrictions', 'field' => 'pr_user' ],
- [ 'table' => 'tag_summary', 'field' => 'ts_log_id' ],
- [ 'table' => 'tag_summary', 'field' => 'ts_rev_id' ],
[ 'table' => 'user_newtalk', 'field' => 'user_id' ],
[ 'table' => 'user_properties', 'field' => 'up_user' ],
];
[ 'addIndex', 'recentchanges', 'rc_name_type_patrolled_timestamp',
'patch-add-rc_name_type_patrolled_timestamp_index.sql' ],
[ 'addField', 'change_tag', 'ct_id', 'patch-change_tag-ct_id.sql' ],
- [ 'addField', 'tag_summary', 'ts_id', 'patch-tag_summary-ts_id.sql' ],
// 1.29
[ 'addField', 'externallinks', 'el_index_60', 'patch-externallinks-el_index_60.sql' ],
// 1.33
[ 'dropField', 'change_tag', 'ct_tag', 'patch-drop-ct_tag.sql' ],
+ [ 'dropTable', 'valid_tag' ],
+ [ 'dropTable', 'tag_summary' ],
// KEEP THIS AT THE BOTTOM!!
[ 'doRebuildDuplicateFunction' ],
[ 'addSequence', 'externallinks', false, 'externallinks_el_id_seq' ],
[ 'addSequence', 'watchlist', false, 'watchlist_wl_id_seq' ],
[ 'addSequence', 'change_tag', false, 'change_tag_ct_id_seq' ],
- [ 'addSequence', 'tag_summary', false, 'tag_summary_ts_id_seq' ],
# new tables
[ 'addTable', 'category', 'patch-category.sql' ],
[ 'addTable', 'redirect', 'patch-redirect.sql' ],
[ 'addTable', 'updatelog', 'patch-updatelog.sql' ],
[ 'addTable', 'change_tag', 'patch-change_tag.sql' ],
- [ 'addTable', 'tag_summary', 'patch-tag_summary.sql' ],
- [ 'addTable', 'valid_tag', 'patch-valid_tag.sql' ],
[ 'addTable', 'user_properties', 'patch-user_properties.sql' ],
[ 'addTable', 'log_search', 'patch-log_search.sql' ],
[ 'addTable', 'l10n_cache', 'patch-l10n_cache.sql' ],
'( rc_namespace, rc_type, rc_patrolled, rc_timestamp )' ],
[ 'addPgField', 'change_tag', 'ct_id',
"INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('change_tag_ct_id_seq')" ],
- [ 'addPgField', 'tag_summary', 'ts_id',
- "INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('tag_summary_ts_id_seq')" ],
// 1.29
[ 'addPgField', 'externallinks', 'el_index_60', "BYTEA NOT NULL DEFAULT ''" ],
[ 'setSequenceOwner', 'job', 'job_id', 'job_job_id_seq' ],
[ 'setSequenceOwner', 'category', 'cat_id', 'category_cat_id_seq' ],
[ 'setSequenceOwner', 'change_tag', 'ct_id', 'change_tag_ct_id_seq' ],
- [ 'setSequenceOwner', 'tag_summary', 'ts_id', 'tag_summary_ts_id_seq' ],
[ 'setSequenceOwner', 'sites', 'site_id', 'sites_site_id_seq' ],
// 1.32
// 1.33
[ 'dropField', 'change_tag', 'ct_tag', 'patch-drop-ct_tag.sql' ],
+ [ 'dropTable', 'valid_tag' ],
+ [ 'dropTable', 'tag_summary' ],
];
}
// 1.15
[ 'addTable', 'change_tag', 'patch-change_tag.sql' ],
- [ 'addTable', 'tag_summary', 'patch-tag_summary.sql' ],
- [ 'addTable', 'valid_tag', 'patch-valid_tag.sql' ],
// 1.16
[ 'addTable', 'user_properties', 'patch-user_properties.sql' ],
[ 'doLogUsertextPopulation' ],
[ 'doLogSearchPopulation' ],
[ 'addTable', 'l10n_cache', 'patch-l10n_cache.sql' ],
- [ 'addIndex', 'tag_summary', 'tag_summary_rc_id', 'patch-change_tag-indexes.sql' ],
+ [ 'dropIndex', 'change_tag', 'ct_rc_id', 'patch-change_tag-indexes.sql' ],
[ 'addField', 'redirect', 'rd_interwiki', 'patch-rd_interwiki.sql' ],
[ 'sqliteSetupSearchindex' ],
[ 'addIndex', 'recentchanges', 'rc_name_type_patrolled_timestamp',
'patch-add-rc_name_type_patrolled_timestamp_index.sql' ],
[ 'addField', 'change_tag', 'ct_id', 'patch-change_tag-ct_id.sql' ],
- [ 'addField', 'tag_summary', 'ts_id', 'patch-tag_summary-ts_id.sql' ],
// 1.29
[ 'addField', 'externallinks', 'el_index_60', 'patch-externallinks-el_index_60.sql' ],
// 1.33
[ 'dropField', 'change_tag', 'ct_tag', 'patch-drop-ct_tag.sql' ],
+ [ 'dropTable', 'valid_tag' ],
+ [ 'dropTable', 'tag_summary' ],
];
}
"config-skins-help": "Kavet eo bet ar gwiskadurioù renablet a-us en ho kavlec'h <code>./skins</code>. Ret eo deoc'h gweredekaat unan da nebeutañ, ha dibab an hini dre ziouer.",
"config-skins-use-as-default": "Implijout ar gwiskadur-mañ dre ziouer",
"config-skins-missing": "N'eus bet kavet gwiskadur ebet : ober a raio MediaWiki gant unan dre ziouer betek ma vo staliet reoù a zegouezh.",
- "config-skins-must-enable-some": "Ret eo deoc'h dibab da nebautañ ur gwiskadur da weredekaat.",
+ "config-skins-must-enable-some": "Ret eo deoc'h dibab ur gwiskadur da weredekaat da nebeutañ.",
"config-skins-must-enable-default": "Ar gwiskadur dre ziouer dibabet a rank bezañ gweredekaet.",
"config-install-alreadydone": "'''Diwallit''': Staliet hoc'h eus MediaWiki dija war a seblant hag emaoc'h o klask e staliañ c'hoazh.\nKit d'ar bajenn war-lerc'h, mar plij.",
"config-install-begin": "Pa vo bet pouezet ganeoc'h war \"{{int:config-continue}}\" e krogo staliadur MediaWiki.\nPouezit war \"{{int:config-back}}\" mar fell deoc'h cheñch tra pe dra.",
"config-sqlite-cant-create-db": "Nepodařilo se vytvořit databázový soubor <code>$1</code>.",
"config-sqlite-fts3-downgrade": "PHP neobsahuje podporu FTS3, downgradují se tabulky",
"config-can-upgrade": "V této databázi jsou tabulky MediaWiki.\nPokud je chcete aktualizovat na MediaWiki $1, klikněte na '''Pokračovat'''.",
+ "config-upgrade-error": "Při aktualizaci tabulek MediaWiki ve vaší databázi došlo k chybě.\n\nVíce informací najdete v protokolu výše, znovu to můžete zkusit kliknutím na <strong>Pokračovat</strong>.",
"config-upgrade-done": "Aktualizace byla dokončena.\n\nSvou wiki teď můžete [$1 začít používat].\n\nPokud chcete přegenerovat soubor <code>LocalSettings.php</code>, klikněte na tlačítko níže.\nTo se ale '''nedoporučuje''', pokud s wiki nemáte problémy.",
"config-upgrade-done-no-regenerate": "Aktualizace byla dokončena.\n\nSvou wiki teď můžete [$1 začít používat].",
"config-regenerate": "Přegenerovat LocalSettings.php →",
"config-help-restart": "Vil du rydde alle gemte data, du har indtastet og genstarte installationen?",
"config-restart": "Ja, genstart den",
"config-env-php": "PHP $1 er installeret.",
+ "config-env-hhvm": "HHVM $1 er installeret.",
+ "config-apc": "[https://secure.php.net/apc APC] er installeret",
+ "config-apcu": "[https://secure.php.net/apcu APCu] er installeret",
"config-db-type": "Databasetype:",
"config-db-host": "Databasevært:",
"config-db-name": "Databasenavn (ingen bindestreg):",
"config-ns-generic": "Projekt",
"config-ns-site-name": "Samme som wikinavnet: $1",
"config-ns-other": "Andet (angiv)",
+ "config-ns-other-default": "MyWiki",
"config-admin-box": "Administratorkonto",
"config-admin-name": "Dit brugernavn:",
"config-admin-password": "Adgangskode:",
"config-admin-password-confirm": "Tast adgangskoden igen:",
+ "config-admin-name-blank": "Indtast et administratorbrugernavn.",
"config-admin-email": "E-postadresse:",
"config-admin-error-bademail": "Du har indtastet en ugyldig e-mailadresse.",
"config-optional-continue": "Stil mig flere spørgsmål.",
"config-extensions": "Udvidelser",
"config-install-step-done": "udført",
"config-install-step-failed": "mislykkedes",
+ "config-install-extensions": "Inkluderer udvidelser",
"config-install-database": "Opsætter database",
"config-install-user-alreadyexists": "Brugeren \"$1\" findes allerede",
"config-install-user-create-failed": "Oprettelse af brugeren \"$1\" mislykkedes: $2",
"config-install-tables": "Opretter tabeller",
+ "config-install-keys": "Genererer hemmelige nøgler",
"config-install-mainpage-exists": "Forsiden findes allerede, springer over",
"config-install-mainpage-failed": "Kunne ikke indsætte forside: $1",
"config-help": "hjælp",
"config-logo": "URL'ey Logoy:",
"config-extensions": "Olekeni",
"config-skins": "Temey",
- "config-install-step-done": "qeyd ke",
+ "config-install-step-done": "temam",
"config-install-step-failed": "ebe ser nêkewt",
"config-install-schema": "Şema dek",
"config-install-pg-commit": "Vırnayışa cemaati",
"Suchichi02",
"Omotecho",
"Yusuke1109",
- "Aefgh39622"
+ "Aefgh39622",
+ "Tomri5"
]
},
"config-desc": "MediaWiki のインストーラー",
"config-db-host-oracle": "データベース TNS:",
"config-db-host-oracle-help": "有効な[http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm ローカル接続名]を入力してください。tnsnames.ora ファイルは、このインストール先から参照できる場所に置いてください。<br />ご使用中のクライアント ライブラリが 10g 以降の場合、[http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm Easy Connect] ネーミング メソッドを使用できます。",
"config-db-wiki-settings": "このウィキの識別情報",
- "config-db-name": "ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹å\90\8d (ã\83\8fã\82¤ã\83\95ã\83³ã\81¯ä¸\8dè¦\81):",
+ "config-db-name": "ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹å\90\8d (ã\83\8fã\82¤ã\83\95ã\83³ã\81¯ä½¿ç\94¨ä¸\8då\8f¯):",
"config-db-name-help": "このウィキを識別する名前を入力してください。\n空白を含めることはできません。\n\n共有ウェブホストを利用している場合、ホスティングプロバイダーが特定の使用可能なデータベース名を提供するか、あるいは管理パネルからデータベースを作成できるようにしているでしょう。",
"config-db-name-oracle": "データベースのスキーマ:",
"config-db-account-oracle-warn": "バックエンドのデータベースとして Oracle をインストールする場合、3つのシナリオが考えられます。\n\nデータベース用のアカウントをインストールのプロセス途中で作成したい場合、インストールに使うデータベース用のアカウントしては SYSDBAロール付きのアカウントを指定し、ウェブアクセス用アカウントには必要なログイン情報を指定してください。あるいは、ウェブアクセス用のアカウントを手動で作成して、そのアカウント(スキーマオブジェクトの作成のパーミッションを要求する場合)だけを使うか、二つの異なるアカウントを用意して一つは特権を付与できるもの、もう一つをウェブアクセス用の制限アカウントとしてください。\n\n要求された特権でアカウントを作成するスクリプトは、このインストール環境では、\"maintenance/oracle/\" にあります。制限アカウントを使用することは、デフォルトアカウントでのすべてのメンテナンス特権を無効にすることにご注意ください。",
"config-sqlite-cant-create-db": "Used as SQLite error message. Parameters:\n* $1 - filename",
"config-sqlite-fts3-downgrade": "Status message in the MediaWiki installer when SQLite is used without the FTS3 module. The FTS3 feature allows users to create special tables with a built-in full-text index.",
"config-can-upgrade": "Parameters:\n* $1 - Version or Revision indicator.",
- "config-upgrade-error": "Used as error message.",
+ "config-upgrade-error": "Used as error message. See also {{msg-mw|Config-continue}}",
"config-upgrade-done": "Used as success message. Parameters:\n* $1 - full URL of index.php\nSee also:\n* {{msg-mw|config-upgrade-done-no-regenerate}}",
"config-upgrade-done-no-regenerate": "Used as success message. Parameters:\n* $1 - full URL of index.php\nSee also:\n* {{msg-mw|config-upgrade-done}}",
"config-regenerate": "This message appears in a button after LocalSettings.php is generated and downloaded at the end of the MediaWiki installation process.",
"config-no-session": "Ваши подаци о сесији су изгубљени!\nПроверите датотеку php.ini и уверите се да је параметар <code>session.save_path</code> постављен на одговарајући директоријум.",
"config-your-language": "Ваш језик:",
"config-your-language-help": "Изаберите језик који желите да користите током процеса инсталације.",
- "config-wiki-language": "Wiki језик:",
- "config-wiki-language-help": "Изаберите језик на ком ће wiki бити претежно написан.",
+ "config-wiki-language": "Вики језик:",
+ "config-wiki-language-help": "Изаберите језик на ком ће вики бити претежно написан.",
"config-back": "← Назад",
"config-continue": "Настави →",
"config-page-language": "Језик",
"config-page-releasenotes": "Напомене о издању",
"config-page-copying": "Копирање",
"config-page-upgradedoc": "Надоградња",
- "config-page-existingwiki": "Постојећи wiki",
+ "config-page-existingwiki": "Постојећи вики",
"config-help-restart": "Желите ли да обришете све сачуване податке које сте унели и поново покренете процес инсталације?",
"config-restart": "Да, покрени поново",
- "config-welcome": "=== Провера окружења ===\nСада ће се извршити основна провера како би се утврдило да ли је ово окружење погодно за MediaWiki инсталацију.\nНе заборавите да укључите ове информације ако тражите подршку како завршити инсталацију.",
- "config-sidebar": "* [https://www.mediawiki.org MediaWiki почетна]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Водич за кориснике]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents Водич за администраторе]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ ЧПП]\n----\n* <doclink href=Readme>Прочитај ме</doclink>\n* <doclink href=ReleaseNotes>Напомене о издању</doclink>\n* <doclink href=Copying>Копирање</doclink>\n* <doclink href=UpgradeDoc>Надоградња</doclink>",
+ "config-welcome": "=== Провера окружења ===\nСада ће се извршити основна провера како би се утврдило да ли је ово окружење погодно за инсталацију MediaWiki-ја.\nНе заборавите да укључите ове информације ако тражите подршку како завршити инсталацију.",
+ "config-sidebar": "* [https://www.mediawiki.org Почетна страна MediaWiki-ја]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Водич за кориснике]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents Водич за администраторе]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ ЧПП]\n----\n* <doclink href=Readme>Прочитај ме</doclink>\n* <doclink href=ReleaseNotes>Напомене о издању</doclink>\n* <doclink href=Copying>Копирање</doclink>\n* <doclink href=UpgradeDoc>Надоградња</doclink>",
"config-env-good": "Окружење је проверено.\nМожете да инсталирате MediaWiki.",
"config-env-bad": "Окружење је проверено.\nНе можете да инсталирате MediaWiki.",
"config-env-php": "PHP $1 је инсталиран.",
"config-db-type": "Тип базе података:",
"config-db-host": "Хост базе података",
"config-db-host-oracle": "TNS базе података:",
- "config-db-wiki-settings": "Идентификуј овај wiki",
+ "config-db-wiki-settings": "Идентификуј овај вики",
"config-db-name": "Име базе података (без цртица):",
- "config-db-name-help": "Одаберите име које идентификује ваш wiki.\nОно не треба да садржи размаке.\n\nАко користите дељени веб-хостинг, ваш добављач услуге хостинга ће вам дати одређено име базе података за коришћење или ће вас пустити да правите базе података путем контролне табле.",
+ "config-db-name-help": "Одаберите име које идентификује ваш вики.\nОно не треба да садржи размаке.\n\nАко користите дељени веб-хостинг, ваш добављач услуге хостинга ће вам дати одређено име базе података за коришћење или ће вас пустити да правите базе података путем контролне табле.",
"config-db-name-oracle": "Шема базе података:",
"config-db-install-account": "Кориснички налог за инсталацију",
"config-db-username": "Корисничко име базе података:",
"config-db-sys-user-exists-oracle": "Кориснички налог „$1” већ постоји. SYSDBA се само може користити за отварање новог налога!",
"config-postgres-old": "Неопходан је PostgreSQL $1 или новији. Ви имате $2.",
"config-mssql-old": "Неопходан је Microsoft SQL Server $1 или новији. Ви имате $2.",
- "config-sqlite-name-help": "Одаберите име које идентификује ваш wiki.\nНе користите размаке или цртице.\nОво ће се користити за име датотеке SQLite података.",
+ "config-sqlite-name-help": "Одаберите име које идентификује ваш вики.\nНе користите размаке или цртице.\nОво ће се користити за име датотеке SQLite података.",
"config-sqlite-mkdir-error": "Грешка при прављењу директоријума са подацима „$1”.\nПроверите локацију, па покушајте поново.",
"config-sqlite-dir-unwritable": "Није могуће уписати у директоријум „$1”.\nПромените му дозволе, тако да веб-сервер може да уписује у њему, па покушајте поново.",
"config-sqlite-connection-error": "$1.\n\nПроверите директоријум са подацима и име базе података испод, па покушајте поново.",
"config-sqlite-fts3-downgrade": "PHP-у недостаје FTS3 подршка, поништавање надоградње табела.",
"config-can-upgrade": "Постоје MediaWiki табеле у овој бази података.\nДа бисте их надоградили на MediaWiki $1, кликните на <strong>Настави</strong>.",
"config-upgrade-error": "Дошло је до грешке при надоградњи MediaWiki табела у бази података.\n\nЗа више информација, погледајте евиденцију изнад, да бисте покушали поново, кликните на <strong>Настави</strong>.",
- "config-upgrade-done": "Надоградња је завршена.\n\nСада можете да [$1 почнете да користите свој wiki].\n\nАко желите да поново генеришете датотеку <code>LocalSettings.php</code>, кликните на дугме испод.\nОво се <strong>не препоручује</strong> осим ако имате проблеме са wiki-јем.",
- "config-upgrade-done-no-regenerate": "Надоградња је завршена.\n\nСада можете да [$1 почнете да користите свој wiki].",
+ "config-upgrade-done": "Надоградња је завршена.\n\nСада можете да [$1 почнете да користите свој вики].\n\nАко желите да поново генеришете датотеку <code>LocalSettings.php</code>, кликните на дугме испод.\nОво се <strong>не препоручује</strong> осим ако имате проблеме са викијем.",
+ "config-upgrade-done-no-regenerate": "Надоградња је завршена.\n\nСада можете да [$1 почнете да користите свој вики].",
"config-regenerate": "Регенериши LocalSettings.php →",
"config-show-table-status": "Упит <code>SHOW TABLE STATUS</code> није успео!",
"config-unknown-collation": "<strong>Упозорење:</strong> База података користи непрепозната правила поређења.",
"config-db-web-account": "Налог базе података за веб-приступ",
- "config-db-web-help": "Изаберите кориснички име и лозинку коју ће веб-сервер користити за повезивање са сервером базе података, током свакодневног рада на wiki-ју.",
+ "config-db-web-help": "Изаберите кориснички име и лозинку коју ће веб-сервер користити за повезивање са сервером базе података, током свакодневног рада на викију.",
"config-db-web-account-same": "Користи исти налог као и за инсталацију",
"config-db-web-create": "Отвори налог ако већ не постоји.",
"config-db-web-no-create-privs": "Налог који сте навели за инсталацију нема довољне привилегије да отвори налог.\nНалог који овде наведете већ мора да постоји.",
"config-mssql-auth": "Тип потврде идентитета:",
"config-mssql-sqlauth": "SQL Server потврда идентитета",
"config-mssql-windowsauth": "Windows потврда идентитета",
- "config-site-name": "Име wiki-ја:",
+ "config-site-name": "Име викија:",
"config-site-name-help": "Ово ће се појавити у насловној траци прегледача и на разним другим местима.",
- "config-site-name-blank": "Унесите име сајта.",
+ "config-site-name-blank": "Унесите име локације.",
"config-project-namespace": "Именски простор пројекта:",
"config-ns-generic": "Пројекат",
- "config-ns-site-name": "Исти као wiki име: $1",
+ "config-ns-site-name": "Исти као вики име: $1",
"config-ns-other": "Друго (наведите)",
"config-ns-other-default": "MyWiki",
"config-ns-invalid": "Наведени именски простор „<nowiki>$1</nowiki>” није важећи.\nНаведите други именски простор пројекта.",
"config-admin-name": "Ваше корисничко име:",
"config-admin-password": "Лозинка:",
"config-admin-password-confirm": "Поновите лозинку:",
- "config-admin-help": "Овде унесите жељено корисничко име; на пример, „Александар Живковић”.\nОво име ћете користити за пријаву на wiki.",
+ "config-admin-help": "Овде унесите жељено корисничко име; на пример, „Александар Живковић”.\nОво име ћете користити за пријаву на вики.",
"config-admin-name-blank": "Унесите корисничко име администратора.",
"config-admin-name-invalid": "Наведено корисничко име „<nowiki>$1</nowiki>” није важеће.\nНаведите друго.",
"config-admin-password-blank": "Унесите лозинку за налог администратора.",
"config-subscribe": "Претплатите се на [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce release announcements дописну листу].",
"config-subscribe-noemail": "Покушали сте да се претплатите на дописну листу за објаве о новим издањима без пружања адресе е-поште.\nПружите адресу е-поште ако желите да се претплатите на њу.",
"config-pingback": "Дели податке о овој инсталацији са MediaWiki програмерима.",
- "config-almost-done": "Скоро сте готови!\nСада можете прескочити преосталу конфигурацију и одмах инсталирати wiki.",
+ "config-almost-done": "Скоро сте готови!\nСада можете прескочити преосталу конфигурацију и одмах инсталирати вики.",
"config-optional-continue": "Постави ми још питања.",
- "config-optional-skip": "Већ ми је досадно, само инсталирај wiki.",
+ "config-optional-skip": "Већ ми је досадно, само инсталирај вики.",
"config-profile": "Профил корисничких група:",
- "config-profile-wiki": "Отворен wiki",
+ "config-profile-wiki": "Отворен вики",
"config-profile-no-anon": "Неопходно је отворити налог",
"config-profile-fishbowl": "Само овлашћени уредници",
- "config-profile-private": "Приватан wiki",
- "config-profile-help": "Wiki-ји најбоље функционишу када дозвољавате што више корисника да уређују како је то могуће.\nУ MediaWiki-ју, лако је прегледати недавне промене и вратити сваку штету коју почине наивни или злонамерни корисници.\n\nМеђутим, многи су пронашли MediaWiki да је користан у широкој разноликости улога, а понекад није лако уверити се у све предности начина wiki-ја.\nТако да имате избор.\n\nМодел <strong>{{int:config-profile-wiki}}</strong> дозвољава свима да уређују, без пријављивања.\nWiki-ји са <strong>{{int:config-profile-no-anon}}</strong> пружају додатну одговорност, али може спречити случајне доприносе.\n\n<strong>{{int:config-profile-fishbowl}}</strong> сценарио дозвољава одобреним корисницима да уређују, али сви могу видети странице, укључујући историју.\n<strong>{{int:config-profile-private}}</strong> само дозвољава одобреним корисницима да виде странице, са истом групом дозвољеном да уређује.\n\nСложене конфигурације корисничких права су доступне након инсталације, погледајте [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights одговарајући ручни унос].",
+ "config-profile-private": "Приватан вики",
+ "config-profile-help": "Викији најбоље функционишу када дозвољавате што више корисника да уређују како је то могуће.\nУ MediaWiki-ју, лако је прегледати недавне промене и вратити сваку штету коју почине наивни или злонамерни корисници.\n\nМеђутим, многи су пронашли MediaWiki да је користан у широкој разноликости улога, а понекад није лако уверити се у све предности начина викија.\nТако да имате избор.\n\nМодел <strong>{{int:config-profile-wiki}}</strong> дозвољава свима да уређују, без пријављивања.\nВикији са <strong>{{int:config-profile-no-anon}}</strong> пружају додатну одговорност, али може спречити случајне доприносе.\n\n<strong>{{int:config-profile-fishbowl}}</strong> сценарио дозвољава одобреним корисницима да уређују, али сви могу видети странице, укључујући историју.\n<strong>{{int:config-profile-private}}</strong> само дозвољава одобреним корисницима да виде странице, са истом групом дозвољеном да уређује.\n\nСложене конфигурације корисничких права су доступне након инсталације, погледајте [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights одговарајући ручни унос].",
"config-license": "Ауторска права и лиценца:",
"config-license-none": "Без подножја за лиценцу",
"config-license-cc-by-sa": "Creative Commons Ауторство-Делити под истим условима",
"config-cc-not-chosen": "Одаберите коју Creative Commons лиценцу желите и кликните на „настави”.",
"config-advanced-settings": "Напредна конфигурација",
"config-cache-options": "Подешавања за кеширање објекта:",
- "config-cache-none": "Нема кеширања (функционалност није уклоњена, али брзина може утицати на веће wiki сајтове)",
+ "config-cache-none": "Нема кеширања (функционалност није уклоњена, али брзина може утицати на веће вики локације)",
"config-cache-accel": "Кеширање PHP објекта (APC, APCu or WinCache)",
"config-cache-memcached": "Користи Memcached (захтева додатно подешавање и конфигурацију)",
"config-memcached-servers": "Memcached сервери:",
"config-install-mainpage-exists": "Главна страна већ постоји, прескакање",
"config-install-extension-tables": "Прављење табела за омогућене додатке",
"config-install-mainpage-failed": "Није могуће уметнути главну страну: $1",
- "config-install-done": "<strong>Честитамо!</strong>\nИнсталирали сте MediaWiki.\n\nИнсталациони програм је генерисао датотеку <code>LocalSettings.php</code>.\nОна садржи сву вашу конфигурацију.\n\nМораћете да је преузмете и ставите у базу ваше wiki инсталације (исти директоријум као index.php). Преузимање би аутоматски требало почети.\n\nАко преузимање није понуђено, или ако га откажете, можете поново покренути преузимање тако што ћете кликнути на доленаведену везу:\n\n$3\n\n<strong>Напомена:</strong> Ако то одмах не урадите, ова генерисана конфигурациона датотека неће вам бити доступна касније ако изађете из инсталације без преузимања.\n\nКада је то учињено, можете да <strong>[$2 посетите свој wiki]</strong>.",
- "config-install-done-path": "<strong>Честитамо!</strong>\nИнсталирали сте MediaWiki.\n\nИнсталациони програм је генерисао датотеку <code>LocalSettings.php</code>.\nОна садржи сву вашу конфигурацију.\n\nМораћете да је преузмете и ставите у <code>$4</code>. Преузимање би аутоматски требало почети.\n\nАко преузимање није понуђено, или ако га откажете, можете поново покренути преузимање тако што ћете кликнути на доленаведену везу:\n\n$3\n\n<strong>Напомена:</strong> Ако то одмах не урадите, ова генерисана конфигурациона датотека неће вам бити доступна касније ако изађете из инсталације без преузимања.\n\nКада је то учињено, можете да <strong>[$2 посетите свој wiki]</strong>.",
- "config-install-success": "MediaWiki је успешно инсталиран. Сада можете посетити <$1$2> да бисте видели свој wiki.\nАко имате питања, погледајте нашу листу често постављаних питања: <https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ> или користите један од форума за подршку који су повезани на тој страници.",
+ "config-install-done": "<strong>Честитамо!</strong>\nИнсталирали сте MediaWiki.\n\nИнсталациони програм је генерисао датотеку <code>LocalSettings.php</code>.\nОна садржи сву вашу конфигурацију.\n\nМораћете да је преузмете и ставите у базу ваше вики инсталације (исти директоријум као index.php). Преузимање би аутоматски требало почети.\n\nАко преузимање није понуђено, или ако га откажете, можете поново покренути преузимање тако што ћете кликнути на доленаведену везу:\n\n$3\n\n<strong>Напомена:</strong> Ако то одмах не урадите, ова генерисана конфигурациона датотека неће вам бити доступна касније ако изађете из инсталације без преузимања.\n\nКада је то учињено, можете да <strong>[$2 посетите свој вики]</strong>.",
+ "config-install-done-path": "<strong>Честитамо!</strong>\nИнсталирали сте MediaWiki.\n\nИнсталациони програм је генерисао датотеку <code>LocalSettings.php</code>.\nОна садржи сву вашу конфигурацију.\n\nМораћете да је преузмете и ставите у <code>$4</code>. Преузимање би аутоматски требало почети.\n\nАко преузимање није понуђено, или ако га откажете, можете поново покренути преузимање тако што ћете кликнути на доленаведену везу:\n\n$3\n\n<strong>Напомена:</strong> Ако то одмах не урадите, ова генерисана конфигурациона датотека неће вам бити доступна касније ако изађете из инсталације без преузимања.\n\nКада је то учињено, можете да <strong>[$2 посетите свој вики]</strong>.",
+ "config-install-success": "MediaWiki је успешно инсталиран. Сада можете посетити <$1$2> да бисте видели свој вики.\nАко имате питања, погледајте нашу листу често постављаних питања: <https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ> или користите један од форума за подршку који су повезани на тој страници.",
"config-download-localsettings": "Преузми датотеку <code>LocalSettings.php</code>",
"config-help": "помоћ",
"config-help-tooltip": "кликните да бисте проширили",
"config-nofile": "Није могуће пронаћи датотеку „$1”. Није ли избрисана?",
- "config-extension-link": "Јесте ли знали да ваш wiki подржава [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions додатке]?\n\nМожете их прегледати [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category по категорији].",
+ "config-extension-link": "Јесте ли знали да ваш вики подржава [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions додатке]?\n\nМожете их прегледати [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category по категорији].",
"config-skins-screenshots": "„$1” (снимци екрана: $2)",
"config-skins-screenshot": "$1 ($2)",
"config-extensions-requires": "$1 (захтева $2)",
"config-extension-not-found": "Није могуће пронаћи датотеку регистрације за додатак „$1”",
"config-extension-dependency": "Дошло је до грешке зависности при инсталирању додатка „$1”: $2",
"mainpagetext": "<strong>MediaWiki је инсталиран.</strong>",
- "mainpagedocfooter": "Погледајте [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Водич за кориснике] за информације о томе како користити wiki софтвер.\n\n== Увод ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Листа поставки конфигурације]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki ЧПП]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Дописна листа о MediaWiki издањима]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Научите како да се борите против непожељног садржаја на свом wiki-ју]"
+ "mainpagedocfooter": "Погледајте [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Водич за кориснике] за информације о томе како користити вики софтвер.\n\n== Увод ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Листа поставки конфигурације]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki ЧПП]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Дописна листа о MediaWiki издањима]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Научите како да се борите против непожељног садржаја на свом викију]"
}
* expired for this specified time. This is useful if adaptiveTTL() is used on the old
* value's as-of time when it is verified as still being correct.
* Default: WANObjectCache::STALE_TTL_NONE
+ * - touchedCallback: A callback that takes the current value and returns a timestamp that
+ * indicates the last time a dynamic dependency changed. Null can be returned if there
+ * are no relevant dependency changes to check. This can be used to check against things
+ * like last-modified times of files or DB timestamp fields. This should generally not be
+ * used for small and easily queried values in a DB if the callback itself ends up doing
+ * a similarly expensive DB query to check a timestamp. Usages of this option makes the
+ * most sense for values that are moderately to highly expensive to regenerate and easy
+ * to query for dependency timestamps. The use of "pcTTL" reduces timestamp queries.
+ * Default: null.
* @return mixed Value found or written to the key
* @note Options added in 1.28: version, busyValue, hotTTR, ageNew, pcGroup, minAsOf
* @note Options added in 1.31: staleTTL, graceTTL
+ * @note Options added in 1.33: touchedCallback
* @note Callable type hints are not used to avoid class-autoloading
*/
final public function getWithSetCallback( $key, $ttl, $callback, array $opts = [] ) {
$ageNew = $opts['ageNew'] ?? self::AGE_NEW;
$minTime = $opts['minAsOf'] ?? self::MIN_TIMESTAMP_NONE;
$versioned = isset( $opts['version'] );
+ $touchedCallback = $opts['touchedCallback'] ?? null;
// Get a collection name to describe this class of key
$kClass = $this->determineKeyClass( $key );
$cValue = $this->get( $key, $curTTL, $checkKeys, $asOf ); // current value
$value = $cValue; // return value
+ // Apply additional dynamic expiration logic if supplied
+ $curTTL = $this->applyTouchedCallback( $value, $asOf, $curTTL, $touchedCallback );
+
$preCallbackTime = $this->getCurrentTime();
// Determine if a cached value regeneration is needed or desired
if ( $value !== false
return $value;
}
+ /**
+ * @param mixed $value
+ * @param float $asOf
+ * @param float $curTTL
+ * @param callable|null $callback
+ * @return float
+ */
+ protected function applyTouchedCallback( $value, $asOf, $curTTL, $callback ) {
+ if ( $callback === null ) {
+ return $curTTL;
+ }
+
+ if ( !is_callable( $callback ) ) {
+ throw new InvalidArgumentException( "Invalid expiration callback provided." );
+ }
+
+ if ( $value !== false ) {
+ $touched = $callback( $value );
+ if ( $touched !== null && $touched >= $asOf ) {
+ $curTTL = min( $curTTL, self::TINY_NEGATIVE, $asOf - $touched );
+ }
+ }
+
+ return $curTTL;
+ }
+
/**
* @param string $key
* @param bool $versioned
use Wikimedia;
use InvalidArgumentException;
use Exception;
+use RuntimeException;
use stdClass;
/**
// given that the isolation level will typically be REPEATABLE-READ
$this->queryLogger->warning(
"Using cached lag value for {db_server} due to active transaction",
- $this->getLogContext( [ 'method' => __METHOD__, 'age' => $staleness ] )
+ $this->getLogContext( [
+ 'method' => __METHOD__,
+ 'age' => $staleness,
+ 'trace' => ( new RuntimeException() )->getTraceAsString()
+ ] )
);
}
function defaultValue() {
if ( is_string( $this->info->dflt_value ) ) {
// Typically quoted
- if ( preg_match( '/^\'(.*)\'$', $this->info->dflt_value ) ) {
- return str_replace( "''", "'", $this->info->dflt_value );
+ if ( preg_match( '/^\'(.*)\'$/', $this->info->dflt_value, $matches ) ) {
+ return str_replace( "''", "'", $matches[1] );
}
}
return 'log_timestamp';
}
- public function getStartBody() {
+ protected function getStartBody() {
# Do a link batch query
if ( $this->getNumRows() > 0 ) {
$lb = new LinkBatch;
*/
protected $editor;
+ /**
+ * Extensions that have hooks for
+ * UpdateUserMailerFormattedPageStatus (to provide additional
+ * pageStatus indicators) need a way to make sure that, when their
+ * hook is called in SendWatchlistemailNotification, they only
+ * handle notifications using their pageStatus indicator.
+ *
+ * @since 1.33
+ * @return string
+ */
+ public function getPageStatus() {
+ return $this->pageStatus;
+ }
+
/**
* @deprecated since 1.27 use WatchedItemStore::updateNotificationTimestamp directly
*
$attribs = [
'alt' => $alt,
'src' => $this->url,
+ 'decoding' => 'async',
];
if ( !empty( $options['custom-url-link'] ) ) {
* Needless to say, it's really not a good idea to use a non-unique index
* for this! That won't page right.
*
- * @return string|array
+ * @return string|string[]
*/
abstract function getIndexField();
* page_len,page_id avoids temp tables (given a page_len index). This would
* also work if page_id was non-unique but we had a page_len,page_id index.
*
- * @return array
+ * @return string[]|array[]
*/
protected function getExtraSortFields() {
return [];
* @protected
* @return string
*/
- function getStartBody() {
+ protected function getStartBody() {
$sortClass = $this->getSortHeaderClass();
$s = '';
* @protected
* @return string
*/
- function getEndBody() {
+ protected function getEndBody() {
return "</tbody></table>\n";
}
use Wikimedia\PasswordBlacklist;
/**
- * Functions to check passwords against a policy requirement
+ * Functions to check passwords against a policy requirement.
+ *
+ * $policyVal is the value configured in $wgPasswordPolicy. If the return status is fatal,
+ * the user won't be allowed to login. If the status is not good but not fatal, the user
+ * will not be allowed to set the given password (on registration or password change),
+ * but can still log in after bypassing a warning.
+ *
* @since 1.26
+ * @see $wgPasswordPolicy
*/
class PasswordPolicyChecks {
/**
- * Check password is longer than minimum, not fatal
+ * Check password is longer than minimum, not fatal.
* @param int $policyVal minimal length
* @param User $user
* @param string $password
}
/**
- * Check password is longer than minimum, fatal
+ * Check password is longer than minimum, fatal.
* @param int $policyVal minimal length
* @param User $user
* @param string $password
}
/**
- * Check password is shorter than maximum, fatal
+ * Check password is shorter than maximum, fatal.
+ * Intended for preventing DoS attacks when using a more expensive password hash like PBKDF2.
* @param int $policyVal maximum length
* @param User $user
* @param string $password
}
/**
- * Check if username and password match
+ * Check if username and password are a (case-insensitive) match.
* @param bool $policyVal true to force compliance.
* @param User $user
* @param string $password
}
/**
- * Check if username and password are on a blacklist
+ * Check if username and password are on a blacklist of past MediaWiki default passwords.
* @param bool $policyVal true to force compliance.
* @param User $user
* @param string $password
}
/**
- * Ensure that password isn't in top X most popular passwords
+ * Ensure that password isn't in top X most popular passwords, as defined by
+ * $wgPopularPasswordFile.
*
* @param int $policyVal Cut off to use. Will automatically shrink to the max
* supported for error messages if set to more than max number of passwords on file,
* @param string $password
* @since 1.27
* @return Status
+ * @see $wgPopularPasswordFile
*/
public static function checkPopularPasswordBlacklist( $policyVal, User $user, $password ) {
global $wgPopularPasswordFile, $wgSitename;
/**
* Ensure the password isn't in the list of passwords blacklisted by the
- * wikimedia/password-blacklist library
+ * wikimedia/password-blacklist library, which contains (as of 0.1.4) the
+ * 100.000 top passwords from SecLists (as a Bloom filter, with an
+ * 0.000001 false positive ratio).
*
* @param bool $policyVal Whether to apply this policy
* @param User $user
private $realProf;
private $period;
+ /**
+ * @param array $params Associative array of parameters:
+ * - period: The sampling period
+ * - maxDepth: The maximum stack depth collected
+ * - cpuProfiler: A pre-started ExcimerProfiler instance for CPU
+ * profiling of the entire request including configuration.
+ * - realProfiler: A pre-started ExcimerProfiler instance for wall
+ * clock profiling of the entire request.
+ */
public function __construct( array $params = [] ) {
parent::__construct( $params );
$this->period = $params['period'] ?? 0.01;
$maxDepth = $params['maxDepth'] ?? 100;
- $this->cpuProf = new ExcimerProfiler;
- $this->cpuProf->setEventType( EXCIMER_CPU );
- $this->cpuProf->setPeriod( $this->period );
- $this->cpuProf->setMaxDepth( $maxDepth );
-
- $this->realProf = new ExcimerProfiler;
- $this->realProf->setEventType( EXCIMER_REAL );
- $this->realProf->setPeriod( $this->period );
- $this->realProf->setMaxDepth( $maxDepth );
+ if ( isset( $params['cpuProfiler'] ) ) {
+ $this->cpuProf = $params['cpuProfiler'];
+ } else {
+ $this->cpuProf = new ExcimerProfiler;
+ $this->cpuProf->setEventType( EXCIMER_CPU );
+ $this->cpuProf->setPeriod( $this->period );
+ $this->cpuProf->setMaxDepth( $maxDepth );
+ $this->cpuProf->start();
+ }
- $this->cpuProf->start();
- $this->realProf->start();
+ if ( isset( $params['realProfiler'] ) ) {
+ $this->realProf = $params['realProfiler'];
+ } else {
+ $this->realProf = new ExcimerProfiler;
+ $this->realProf->setEventType( EXCIMER_REAL );
+ $this->realProf->setPeriod( $this->period );
+ $this->realProf->setMaxDepth( $maxDepth );
+ $this->realProf->start();
+ }
}
public function scopedProfileIn( $section ) {
// TODO replace with clear_last_error when requirements are bumped to PHP7
set_error_handler( function () {
}, 0 );
- // phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged
- @trigger_error( '' );
+ \MediaWiki\suppressWarnings();
+ trigger_error( '' );
+ \MediaWiki\restoreWarnings();
restore_error_handler();
$readPipes = array_filter( $pipes, function ( $fd ) use ( $desc ) {
}
$status = $currentBlock->update();
+ // TODO handle failure
$logaction = 'reblock';
if ( (bool)$currentBlock->mHideName ) {
$data['HideUser'] = true;
}
+
+ $block = $currentBlock;
}
} else {
$logaction = 'block';
$logEntry->setComment( $data['Reason'][0] );
$logEntry->setPerformer( $performer );
$logEntry->setParameters( $logParams );
- # Relate log ID to block IDs (T27763)
- $blockIds = array_merge( [ $status['id'] ], $status['autoIds'] );
- $logEntry->setRelations( [ 'ipb_id' => $blockIds ] );
+ # Relate log ID to block ID (T27763)
+ $logEntry->setRelations( [ 'ipb_id' => $block->getId() ] );
$logId = $logEntry->insert();
if ( !empty( $data['Tags'] ) ) {
if ( isset( $data['Tags'] ) ) {
$logEntry->setTags( $data['Tags'] );
}
+ $logEntry->setRelations( [ 'ipb_id' => $block->getId() ] );
$logId = $logEntry->insert();
$logEntry->publish( $logId );
];
}
- function doBatchLookups() {
+ protected function doBatchLookups() {
parent::doBatchLookups();
$uids = [];
return $result;
}
- function getStartBody() {
+ protected function getStartBody() {
$tableClass = $this->getTableClass();
return Xml::openElement( 'table', [
'class' => "mw-datatable $tableClass",
<th>" .
$this->msg( 'allmessagescurrent' )->escaped() .
"</th>
- </tr></thead><tbody>\n";
+ </tr></thead>\n";
+ }
+
+ function getEndBody() {
+ return Html::closeElement( 'table' );
}
function formatValue( $field, $value ) {
// But if there's a customised message, add that too.
if ( $row->am_customised ) {
- $s .= Xml::openElement( 'tr', $this->getRowAttrs( $row, true ) );
+ $s .= Html::openElement( 'tr', $this->getRowAttrs( $row, true ) );
$formatted = strval( $this->formatValue( 'am_actual', $row->am_actual ) );
if ( $formatted === '' ) {
$formatted = "\u{00A0}";
}
- $s .= Xml::tags( 'td', $this->getCellAttrs( 'am_actual', $row->am_actual ), $formatted )
- . "</tr>\n";
+ $s .= Html::element( 'td', $this->getCellAttrs( 'am_actual', $row->am_actual ), $formatted )
+ . Html::closeElement( 'tr' );
}
- return $s;
+ return Html::rawElement( 'tbody', [], $s );
}
function getRowAttrs( $row ) {
class ContribsPager extends RangeChronologicalPager {
- public $mDefaultDirection = IndexPager::DIR_DESCENDING;
- public $messages;
- public $target;
- public $namespace = '';
- public $mDb;
- public $preventClickjacking = false;
+ /**
+ * @var string[] Local cache for escaped messages
+ */
+ private $messages;
+
+ /**
+ * @var string User name, or a string describing an IP address range
+ */
+ private $target;
+
+ /**
+ * @var string Set to "newbie" to list contributions from the most recent 1% registered users.
+ * $this->target is ignored then. Defaults to "users".
+ */
+ private $contribs;
+
+ /**
+ * @var string|int A single namespace number, or an empty string for all namespaces
+ */
+ private $namespace = '';
+
+ /**
+ * @var string|false Name of tag to filter, or false to ignore tags
+ */
+ private $tagFilter;
+
+ /**
+ * @var bool Set to true to invert the namespace selection
+ */
+ private $nsInvert;
+
+ /**
+ * @var bool Set to true to show both the subject and talk namespace, no matter which got
+ * selected
+ */
+ private $associated;
+
+ /**
+ * @var bool Set to true to show only deleted revisions
+ */
+ private $deletedOnly;
+
+ /**
+ * @var bool Set to true to show only latest (a.k.a. current) revisions
+ */
+ private $topOnly;
+
+ /**
+ * @var bool Set to true to show only new pages
+ */
+ private $newOnly;
+
+ /**
+ * @var bool Set to true to hide edits marked as minor by the user
+ */
+ private $hideMinor;
+
+ private $preventClickjacking = false;
/** @var IDatabase */
- public $mDbSecondary;
+ private $mDbSecondary;
/**
* @var array
*/
- protected $mParentLens;
+ private $mParentLens;
/**
* @var TemplateParser
*/
- protected $templateParser;
+ private $templateParser;
- function __construct( IContextSource $context, array $options ) {
+ public function __construct( IContextSource $context, array $options ) {
parent::__construct( $context );
$msgs = [
}
$this->getDateRangeCond( $startTimestamp, $endTimestamp );
- // This property on IndexPager is set by $this->getIndexField() in parent::__construct().
- // We need to reassign it here so that it is used when the actual query is ran.
- $this->mIndexField = $this->getIndexField();
-
// Most of this code will use the 'contributions' group DB, which can map to replica DBs
// with extra user based indexes or partioning by user. The additional metadata
// queries should use a regular replica DB since the lookup pattern is not all by user.
$ipRangeConds = $user->isAnon() ? $this->getIpRangeConds( $this->mDb, $this->target ) : null;
if ( $ipRangeConds ) {
$queryInfo['tables'][] = 'ip_changes';
+ /**
+ * These aliases make `ORDER BY rev_timestamp, rev_id` from {@see getIndexField} and
+ * {@see getExtraSortFields} use the replicated `ipc_rev_timestamp` and `ipc_rev_id`
+ * columns from the `ip_changes` table, for more efficient queries.
+ * @see https://phabricator.wikimedia.org/T200259#4832318
+ */
+ $queryInfo['fields'] = array_merge(
+ [
+ 'rev_timestamp' => 'ipc_rev_timestamp',
+ 'rev_id' => 'ipc_rev_id',
+ ],
+ array_diff( $queryInfo['fields'], [
+ 'rev_timestamp',
+ 'rev_id',
+ ] )
+ );
$queryInfo['join_conds']['ip_changes'] = [
'LEFT JOIN', [ 'ipc_rev_id = rev_id' ]
];
}
/**
- * Override of getIndexField() in IndexPager.
- * For IP ranges, it's faster to use the replicated ipc_rev_timestamp
- * on the `ip_changes` table than the rev_timestamp on the `revision` table.
- * @return string Name of field
+ * @return string
*/
public function getIndexField() {
- if ( $this->isQueryableRange( $this->target ) ) {
- return 'ipc_rev_timestamp';
- } else {
- return 'rev_timestamp';
- }
+ // Note this is run via parent::__construct() *before* $this->target is set!
+ return 'rev_timestamp';
+ }
+
+ /**
+ * @return string[]
+ */
+ protected function getExtraSortFields() {
+ // Note this is run via parent::__construct() *before* $this->target is set!
+ return [ 'rev_id' ];
}
- function doBatchLookups() {
+ protected function doBatchLookups() {
# Do a link batch query
$this->mResult->seek( 0 );
$parentRevIds = [];
/**
* @return string
*/
- function getStartBody() {
+ protected function getStartBody() {
return "<ul class=\"mw-contributions-list\">\n";
}
/**
* @return string
*/
- function getEndBody() {
+ protected function getEndBody() {
return "</ul>\n";
}
return 'ar_timestamp';
}
- function getStartBody() {
+ protected function getStartBody() {
return "<ul>\n";
}
- function getEndBody() {
+ protected function getEndBody() {
return "</ul>\n";
}
}
}
- function doBatchLookups() {
+ protected function doBatchLookups() {
$userIds = [];
$this->mResult->seek( 0 );
foreach ( $this->mResult as $row ) {
parent::__construct( $form->getContext() );
}
- function getStartBody() {
+ protected function getStartBody() {
# Do a link batch query
$this->mResult->seek( 0 );
$batch = new LinkBatch();
return 'img_timestamp';
}
- function getStartBody() {
+ protected function getStartBody() {
if ( !$this->gallery ) {
// Note that null for mode is taken to mean use default.
$mode = $this->getRequest()->getVal( 'gallerymode', null );
return '';
}
- function getEndBody() {
+ protected function getEndBody() {
return $this->gallery->toHTML();
}
return $this->mForm->formatRow( $row );
}
- function getStartBody() {
+ protected function getStartBody() {
# Do a batch existence check on pages
$linkBatch = new LinkBatch();
foreach ( $this->mResult as $row ) {
return '<ul>';
}
- function getEndBody() {
+ protected function getEndBody() {
return '</ul>';
}
}
parent::__construct( $form->getContext() );
}
- function getStartBody() {
+ protected function getStartBody() {
# Do a link batch query
$this->mResult->seek( 0 );
$lb = new LinkBatch;
return Html::rawElement( 'li', [], "{$item}{$edits}{$created}{$blocked}" );
}
- function doBatchLookups() {
+ protected function doBatchLookups() {
$batch = new LinkBatch();
$userIds = [];
# Give some pointers to make user links
// Split name into name+appId
$sep = self::getSeparator();
if ( strpos( $username, $sep ) === false ) {
- return self::loginHook( $username, Status::newFatal( 'botpasswords-invalid-name', $sep ) );
+ return self::loginHook( $username, null, Status::newFatal( 'botpasswords-invalid-name', $sep ) );
}
list( $name, $appId ) = explode( $sep, $username, 2 );
// Find the named user
$user = User::newFromName( $name );
if ( !$user || $user->isAnon() ) {
- return self::loginHook( $user ?: $name, Status::newFatal( 'nosuchuser', $name ) );
+ return self::loginHook( $user ?: $name, null, Status::newFatal( 'nosuchuser', $name ) );
}
if ( $user->isLocked() ) {
$result = $throttle->increase( $user->getName(), $request->getIP(), __METHOD__ );
if ( $result ) {
$msg = wfMessage( 'login-throttled' )->durationParams( $result['wait'] );
- return self::loginHook( $user, Status::newFatal( $msg ) );
+ return self::loginHook( $user, null, Status::newFatal( $msg ) );
}
}
// Get the bot password
$bp = self::newFromUser( $user, $appId );
if ( !$bp ) {
- return self::loginHook( $user, Status::newFatal( 'botpasswords-not-exist', $name, $appId ) );
+ return self::loginHook( $user, $bp,
+ Status::newFatal( 'botpasswords-not-exist', $name, $appId ) );
}
// Check restrictions
$status = $bp->getRestrictions()->check( $request );
if ( !$status->isOK() ) {
- return self::loginHook( $user, Status::newFatal( 'botpasswords-restriction-failed' ) );
+ return self::loginHook( $user, $bp, Status::newFatal( 'botpasswords-restriction-failed' ) );
}
// Check the password
$passwordObj = $bp->getPassword();
if ( $passwordObj instanceof InvalidPassword ) {
- return self::loginHook( $user, Status::newFatal( 'botpasswords-needs-reset', $name, $appId ) );
+ return self::loginHook( $user, $bp,
+ Status::newFatal( 'botpasswords-needs-reset', $name, $appId ) );
}
if ( !$passwordObj->equals( $password ) ) {
- return self::loginHook( $user, Status::newFatal( 'wrongpassword' ) );
+ return self::loginHook( $user, $bp, Status::newFatal( 'wrongpassword' ) );
}
// Ok! Create the session.
if ( $throttle ) {
$throttle->clear( $user->getName(), $request->getIP() );
}
- return self::loginHook(
- $user,
- Status::newGood( $provider->newSessionForRequest( $user, $bp, $request ) )
- );
+ return self::loginHook( $user, $bp,
+ Status::newGood( $provider->newSessionForRequest( $user, $bp, $request ) ) );
}
/**
* AuthManager, call the AuthManagerLoginAuthenticateAudit hook.
*
* @param User|string $user User being logged in
+ * @param BotPassword|null $bp Bot sub-account, if it can be identified
* @param Status $status Login status
* @return Status The passed-in status
*/
- private static function loginHook( $user, Status $status ) {
+ private static function loginHook( $user, $bp, Status $status ) {
+ $extraData = [];
if ( $user instanceof User ) {
$name = $user->getName();
+ if ( $bp ) {
+ $extraData['appId'] = $name . self::getSeparator() . $bp->getAppId();
+ }
} else {
$name = $user;
$user = null;
} else {
$response = AuthenticationResponse::newFail( $status->getMessage() );
}
- Hooks::run( 'AuthManagerLoginAuthenticateAudit', [ $response, $user, $name ] );
+ Hooks::run( 'AuthManagerLoginAuthenticateAudit', [ $response, $user, $name, $extraData ] );
return $status;
}
* @return bool
*/
public function isValidPassword( $password ) {
- // simple boolean wrapper for getPasswordValidity
- return $this->getPasswordValidity( $password ) === true;
+ // simple boolean wrapper for checkPasswordValidity
+ return $this->checkPasswordValidity( $password )->isGood();
}
/**
*
* @param string $password Desired password
* @return bool|string|array True on success, string or array of error message on failure
+ * @deprecated since 1.33, use checkPasswordValidity
*/
public function getPasswordValidity( $password ) {
+ wfDeprecated( __METHOD__, '1.33' );
+
$result = $this->checkPasswordValidity( $password );
if ( $result->isGood() ) {
return true;
"Macofe",
"Archaeodontosaurus",
"Neriman2003",
- "Fitoschido"
+ "Fitoschido",
+ "Toghrul Rahimli"
]
},
"tog-underline": "Keçidlərin altını xətlə:",
"editingsection": "Redaktə $1 (bölmə)",
"editingcomment": "Redaktə et $1 (yeni bölmə)",
"editconflict": "Eyni vaxtda redaktə: $1",
+ "explainconflict": "Siz məqaləni redaktə etməyə başlamazdan əvvəl başqa bir istifadəçi onu redaktə etmişdir. Yuxarıdakı mətn bölməsində hazırda mövcud olan səhifə mətni göstərilmişdir. Sizin düzəlişləriniz aşağıdakı mətn bölməsində göstərilmişdir. Siz dəyişiklikləri mövcud mətn ilə birləşdirməli olacaqsınız. \"$1\" düyməsini sıxdıqda <strong>yalnız</strong> yuxarıdakı mətn yayımlanacaq.",
"yourtext": "Mətniniz",
"storedversion": "Qeyd edilmiş versiya",
"editingold": "'''DİQQƏT! Siz bu səhifənin köhnə versiyasını redaktə edirsiniz. Məqaləni yaddaşda saxlayacağınız halda bu versiyadan sonra edilmiş hər bir dəyişiklik itiriləcək.'''",
"prefs-personal": "İstifadəçi profili",
"prefs-rc": "Son dəyişikliklər",
"prefs-watchlist": "İzləmə siyahısı",
+ "prefs-editwatchlist": "İzləmə siyahısını redaktə et",
+ "prefs-editwatchlist-label": "İzləmə siyahısındakıları redaktə et",
+ "prefs-editwatchlist-edit": "İzləmə siyahısındakı başlıqlara bax və ləğv et",
+ "prefs-editwatchlist-raw": "Mətn kimi redaktə et",
+ "prefs-editwatchlist-clear": "İzləmə siyahısını təmizlə",
"prefs-watchlist-days": "İzləmə siyahısında göstərilən maksimal günlərin sayı:",
"prefs-watchlist-days-max": "Maksimum $1 {{PLURAL:$1|gün|gün}}",
"prefs-watchlist-edits": "İzləmə siyahısında göstərilən maksimal redaktələrin sayı:",
"prefs-watchlist-edits-max": "Maksimum say: 1000",
"prefs-watchlist-token": "İzləmə siyahısı nişanı:",
+ "prefs-watchlist-managetokens": "Tokenləri idarə et",
"prefs-misc": "Digər seçimlər",
"prefs-resetpass": "Parolu dəyiş",
"prefs-changeemail": "E-poçtu dəyiş və ya sil",
"prefs-advancedwatchlist": "Ətraflı variantlar",
"prefs-displayrc": "Görüntü variantları",
"prefs-displaywatchlist": "Görüntü variantları",
+ "prefs-changesrc": "Dəyişikliklərin göstərişi",
+ "prefs-pageswatchlist": "İzlənilmiş səhifələr",
"prefs-diffs": "Fərqlər",
"userrights": "İstifadəçi haqları",
"userrights-lookup-user": "İstifadəçi seçimi",
"sp-contributions-username": "IP-ünvanı və ya istifadəçi adı:",
"sp-contributions-toponly": "Son redaktə olan dəyişiklikləri göstər",
"sp-contributions-newonly": "Yalnız yeni səhifə yaradılan dəyişiklikləri göstər",
+ "sp-contributions-hideminor": "Kiçik redaktələri gizlət",
"sp-contributions-submit": "Axtar",
"whatlinkshere": "Bu səhifəyə bağlantılar",
"whatlinkshere-title": "\"$1\" məqaləsinə keçid verən səhifələr",
"special-characters-group-thai": "Tay",
"special-characters-group-lao": "Lao",
"special-characters-group-khmer": "Khmer",
- "mw-widgets-usersmultiselect-placeholder": "Əlavə et..."
+ "mw-widgets-dateinput-no-date": "Tarix seçilməyib",
+ "mw-widgets-usersmultiselect-placeholder": "Əlavə et...",
+ "date-range-from": "Tarixindən:",
+ "date-range-to": "Tarixədək:"
}
"rcfilters-group-results-by-page": "دییشیکلیکلری صفحهلرینه گؤره سیرالا",
"rcfilters-activefilters": "چالیشقان فیلترلر",
"rcfilters-activefilters-hide": "گیزلت",
+ "rcfilters-activefilters-hide-tooltip": "چالیشقان فیترلر بؤلومونو گیزلت",
"rcfilters-advancedfilters": "گئنیش فیلترلر",
"rcfilters-limit-title": "دَییشدیرمه ساییسی",
"rcfilters-date-popup-title": "آختاریش چاغی",
"rcfilters-filtergroup-userExpLevel": "ایشلدن آدیازدیرما و تجروبهسی",
"rcfilters-filter-user-experience-level-registered-label": "آدیازدیریلمیش",
"rcfilters-filter-user-experience-level-unregistered-label": "آدیازدیریلمامیش",
+ "rcfilters-filter-user-experience-level-newcomer-label": "یئنی گلنلر",
"rcfilters-filter-user-experience-level-learner-label": "اؤیرننلر",
"rcfilters-filter-user-experience-level-experienced-label": "تجروبهلی ایشلدنلر",
"rcfilters-filtergroup-automated": "اوْتوماتیک دییشدیرمهلر",
"rcfilters-filter-major-label": "کیچیک اوْلمایان دییشدیرمهلر",
"rcfilters-filtergroup-watchlist": "ایزلنمیش صفحهلر",
"rcfilters-filter-watchlist-watched-label": "ایزلنمیش",
+ "rcfilters-filter-watchlist-notwatched-label": "ایزلنمهمیش",
"rcfilters-filtergroup-changetype": "دَییشیکلیک نوعو",
"rcfilters-filter-pageedits-label": "صفحه دییشدیرمهلری",
"rcfilters-filter-newpages-label": "صفحه یاراتما",
"filedelete-reason-otherlist": "Іншая прычына",
"filedelete-reason-dropdown": "* Звычайныя прычыны выдаленьня\n** парушэньне аўтарскіх правоў\n** файл-дублікат",
"filedelete-edit-reasonlist": "Рэдагаваць прычыны выдаленьня",
- "filedelete-maintenance": "Выдаленьне і аднаўленьне файлаў часова забароненае па прычыне падтрымкі.",
+ "filedelete-maintenance": "Выдаленьне і аднаўленьне файлаў часова забароненае праз тэхнічныя працы.",
"filedelete-maintenance-title": "Немагчыма выдаліць файл",
"mimesearch": "Пошук па MIME",
"mimesearch-summary": "Гэта старонка дазваляе адбор файлаў па іх MIME-тыпе.\nФармат уводу: тып_зьместу/падтып або тып_зьместу/*, напрыклад, <code>image/jpeg</code>.",
"prefs-advancedwatchlist": "Разширени настройки",
"prefs-displayrc": "Настройки за показване на списъка",
"prefs-displaywatchlist": "Видими настройки",
+ "prefs-changesrc": "Показвани промени",
"prefs-tokenwatchlist": "Маркер",
"prefs-diffs": "Разлики",
"prefs-help-prefershttps": "Това предпочитание ще бъде активирано при следващото влизане.",
"ns-specialprotected": "N'haller ket kemmañ ar pajennoù en esaouenn anv {{ns:special}}.",
"titleprotected": "Gwarezet eo bet an titl-mañ p'eo bet krouet gant [[User:$1|$1]].\nSetu amañ perak <em>$2</em>.",
"filereadonlyerror": "Dibosupl kemmañ ar restr \"$1\" abalamour m'emañ ar c'havlec'h restroù \"$2\" e mod lenn nemetken.\n\n\"$3\" eo an abeg roet gant merour ar reizhiad en deus prennet anezhi.",
+ "invalidtitle": "Titl direizh",
"invalidtitle-knownnamespace": "Titl direizh gant an esaouenn anv \"$2\" hag an destenn \"$3\"",
"invalidtitle-unknownnamespace": "Titl direizh gant an niverenn esaouenn anv $1 hag an destenn \"$2\" dianav",
"exception-nologin": "N'oc'h ket kevreet",
"subject-preview": "Rakwelet an danvez :",
"previewerrortext": "C'hoarvezet ez eus ur fazi e-ser klask rakwelet ho kemmoù",
"blockedtitle": "Implijer stanket",
- "blockedtext": "'''Stanket eo bet ho kont implijer pe ho chomlec'h IP'''\n\nGant $1 eo bet graet.\nSetu an abeg evit se : ''$2''.\n\n* Stanket adalek : $8\n* Stanket betek : $6\n* Pad ar stankadenn : $7\n\nGallout a rit mont e darempred gant $1 pe gant unan eus ar [[{{MediaWiki:Grouppage-sysop}}|verourien]] all evit eskemm ganto war se. N'hallit implijout an arc'hwel 'kas ur postel d'an implijer-mañ' nemet ma'z eus bet spisaet ganeoc'h ur chomlec'h postel reizh en ho [[Special:Preferences|penndibaboù kont]] ha ma n'eo ket bet stanket.\n$3 eo ho chomlec'h IP, ha #$5 eo niverenn an identelezh stanket.\nMerkit anezho en ho koulennoù bep tro.",
+ "blockedtext": "<strong>Stanket eo bet ho kont implijer pe ho chomlec'h IP</strong>\n\nGant $1 eo bet graet.\nSetu an abeg evit se : <em>$2</em>.\n\n* Stanket adalek : $8\n* Stanket betek : $6\n* Kont stanket : $7\n\nGallout a rit mont e darempred gant $1 pe gant unan eus ar [[{{MediaWiki:Grouppage-sysop}}|verourien]] all evit eskemm ganto war se. N'hallit implijout an arc'hwel ''{{int:emailuser}} nemet ma'z eus bet spisaet ganeoc'h ur chomlec'h postel reizh en ho [[Special:Preferences|penndibaboù kont]] ha ma n'eo ket bet stanket.\n$3 eo ho chomlec'h IP, ha #$5 eo niverenn an identelezh stanket.\nMerkit anezho en ho koulennoù bep tro.",
"autoblockedtext": "Stanket eo bet ho chomlec'h IP ent emgefreek rak implijet e veze gant un implijer all bet stanket gant $1.\nSetu aze an abeg :\n\n: ''$2''\n\n* Deroù ar stankadenn : $8\n* Termen ar stankadenn : $6\n* Kont stanket : $7\n\nGallout a rit mont e darempred gant $1 pe gant unan eus ar\n[[{{MediaWiki:Grouppage-sysop}}|verourien]] all ma kavit abeg er stankadenn.\n\nNotennit mat ne c'hallot implijout an dibarzh \"kas ur postel d'an implijer\" nemet ma'z eus bet merket ganeoc'h ur chomlec'h postel reizh en ho [[Special:Preferences|penndibaboù implijer]] ha ma n'eo ket bet stanket ivez.\n\n$3 eo ho chomlec'h IP evit poent ha #$5 ho niverenn stankadenn.\nMerkit mat an titouroù-se war kement goulenn savet ganeoc'h.\n\n$5 eo ho niverenn stankadenn. Merkit mat an niverenn-se pa rit goulennoù.",
"systemblockedtext": "Stanket eo bet hoc'h anv implijer pe ho chomlec'h IP ent emgefre gant MediaWiki.\nSetu perak :\n\n:<em>$2</em>\n\n* Deroù ar stankadenn : $8\n* Termen ar stankadenn : $6\n* Hinienn a sell ar stankadenn outi : $7\n\n$3 eo ho chomlec'h IP diouzhtu.\nMerkit mat ar munudoù skrivet a-us er c'hlemmoù a c'halljec'h ober.",
"blockednoreason": "n'eus bet roet abeg ebet",
"diff-paragraph-moved-toold": "Ar rannbennad azo bet fiñvet. Klikit evit mont davet al lec'hiadur gozh.",
"difference-missing-revision": "!!{{PLURAL:$2|Un adweladur|$2 adweladurioù}} eus an disheñvelder ($1) {{PLURAL:$2|n'eo ket bet kavet|n'int ket bet adkavet}}.\n\nC'hoarvezout a ra peurliesañ pa vez heuliet ul liamm disheñvel dispredet war-zu ur bajenn zo bet dilamet.\nGallout a reot kavout munudoù e [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} renabl an dilamadurioù].",
"searchresults": "Disoc'hoù enklask",
+ "search-filter-title-prefix-reset": "Klask an holl bajennoù",
"searchresults-title": "Disoc'hoù klask evit \"$1\"",
"titlematches": "Klotadurioù gant an titloù",
"textmatches": "Klotadurioù en testennoù",
"prefs-watchlist-edits": "Niver a gemmoù da ziskouez er roll evezhiañ astennet :",
"prefs-watchlist-edits-max": "Niver brasañ : 1000",
"prefs-watchlist-token": "Jedouer evit ar roll evezhiañ :",
+ "prefs-watchlist-managetokens": "Merañ ar jedoueroù",
"prefs-misc": "Penndibaboù liesseurt",
"prefs-resetpass": "Cheñch ar ger-tremen",
"prefs-changeemail": "Cheñch ar chomlec'h postel pe dilemel anezhañ",
"right-edituserjs": "Kemmañ restroù JS implijerien all",
"right-editmyusercss": "Aozañ ho restroù implijer CSS deoc'h-c'hwi",
"right-editmyuserjson": "Aozañ ho restroù implijer JSON deoc'h-c'hwi",
- "right-editmyuserjs": "Aoazañ ho restroù JavaScript implijer deoc'h-c'hwi",
+ "right-editmyuserjs": "Aozañ ho restroù JavaScript implijer deoc'h-c'hwi",
"right-viewmywatchlist": "Gwelet ho roll-evezhiañ deoc'h-c'hwi",
"right-editmywatchlist": "Kemmañ ho roll evezhiañ deoc'h-c'hwi. Notit mat e vo c'hoazh ouzhpennet pajennoù hep ar gwir-mañ gant obererezhioù zo.",
"right-viewmyprivateinfo": "Gwelet ho roadennoù prevez deoc'h-c'hwi (da sk. chomlec'h postel, anv gwirion)",
"recentchangeslinked-feed": "Heuliañ ar pajennoù liammet",
"recentchangeslinked-toolbox": "Heuliañ ar pajennoù liammet",
"recentchangeslinked-title": "Kemmoù a denn da \"$1\"",
- "recentchangeslinked-summary": "Merkañ anv ur bajenn evit gwelet ar c'hemmoù war ar pajennoù liammet da pe adalek ar bajenn-se (evit gwelet izili ur rummad bennak, skrivañ Rummad:anv ar rummad).\nE <strong>tev</strong> emañ kemmoù ar pajennoù zo war ho [[Special:Watchlist|roll evezhiañ]].",
+ "recentchangeslinked-summary": "Merkañ anv ur bajenn evit gwelet ar c'hemmoù war ar pajennoù liammet da pe adalek ar bajenn-se (evit gwelet izili ur rummad bennak, skrivañ {{ns:category}}:Anv ar rummad).\nE <strong>tev</strong> emañ kemmoù ar pajennoù zo war ho [[Special:Watchlist|roll evezhiañ]].",
"recentchangeslinked-page": "Anv ar bajenn :",
"recentchangeslinked-to": "Diskouez ar c'hemmoù war-du ar pajennoù liammet kentoc'h eget re ar bajenn lakaet",
"recentchanges-page-added-to-category": "[[:$1]] ouzhpennet d'ar rummad",
"filehist-filesize": "Ment ar restr",
"filehist-comment": "Notenn",
"imagelinks": "Implij ar restr",
- "linkstoimage": "Liammet eo {{PLURAL:$1|ar bajenn-mañ|an $1 pajenn-mañ}} ouzh ar restr-mañ :",
- "linkstoimage-more": "Ouzhpenn $1 {{PLURAL:$1|bajenn zo liammet ouzh|pajenn zo liammet ouzh}} ar restr-mañ.\nNe laka ar roll-mañ war wel nemet {{PLURAL:$1|ar bajenn gentañ liammet ouzh|an $1 pajenn gentañ liammet ouzh}} ar rest-mañ.\nUr [[Special:WhatLinksHere/$2|roll klok]] a c'haller da gaout.",
- "nolinkstoimage": "N'eus liamm ebet war-du ar skeudenn-mañ war pajenn ebet.",
+ "linkstoimage": "Implijout a ra {{PLURAL:$1|ar bajenn da heul|an $1 pajenn da heul}} ar restr-mañ :",
+ "linkstoimage-more": "Ouzhpenn $1 {{PLURAL:$1|bajenn zo liammet ouzh|pajenn zo liammet ouzh}} ar restr-mañ.\nNe ziskwel ar roll-mañ nemet {{PLURAL:$1|ar bajenn gentañ|an $1 pajenn gentañ}} a implij ar restr-mañ.\nUr [[Special:WhatLinksHere/$2|roll klok]] a c'haller da gaout.",
+ "nolinkstoimage": "Pajenn ebet ne implij ar restr-mañ.",
"morelinkstoimage": "Gwelet [[Special:WhatLinksHere/$1|liammoù ouzhpenn]] war-du ar restr-mañ.",
"linkstoimage-redirect": "$1 (adkas restr) $2",
"duplicatesoffile": "Un eil eus ar restr-mañ eo {{PLURAL:$1|ar restr da-heul|ar restroù da-heul}}, ([[Special:FileDuplicateSearch/$2|evit gouzout hiroc'h]]) :",
"deadendpages": "Pajennoù dall (hep liamm diabarzh)",
"deadendpagestext": "Ar pajennoù da-heul n'int ket liammet ouzh pajenn ebet all eus {{SITENAME}}.",
"protectedpages": "Pajennoù gwarezet",
+ "protectedpages-filters": "Siloù :",
"protectedpages-indef": "Gwarezoù da badout hepken",
"protectedpages-summary": "Rollañ a ra ar bajenn-mañ ar pajennoù zo gwarezet evit ar mare. Evit kaout roll ar pajennoù n'haller ket krouiñ, sellet ouzh [[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]].",
"protectedpages-cascade": "Gwarez dre skalierad hepken",
"ipb-disableusertalk": "Mirout ouzh an implijer-mañ da implijout e bajenn gaozeal dezhañ e-unan e-keit hag emañ stanket",
"ipb-change-block": "Adstankañ an implijer-mañ gant an hevelep arventennoù",
"ipb-confirm": "Kadarnaat ar stankadenn",
+ "ipb-type-label": "Seurt",
+ "ipb-pages-label": "Pajennoù",
"badipaddress": "Kamm eo ar chomlec'h IP.",
"blockipsuccesssub": "Stankadenn deuet da benn vat",
"blockipsuccesstext": "Stanket eo bet [[Special:Contributions/$1|$1]].<br />\nSellit ouzh [[Special:BlockList|roll ar chomlec'hioù IP ha kontoù stanket]] evit gwiriañ ar stankadennoù.",
"createaccountblock": "Harzet eo ar c'hrouiñ kontoù",
"emailblock": "Postel stanket",
"blocklist-nousertalk": "n'hall ket kemmañ e bajenn gaozeal dezhañ e-unan",
+ "blocklist-editing": "O kemmañ",
+ "blocklist-editing-sitewide": "o kemmañ (al lec'hienn a-bezh)",
"ipblocklist-empty": "Goullo eo roll ar stankadennoù.",
"ipblocklist-no-results": "An anv implijer pe ar chomlec'h IP goulennet n'eo ket stanket anezhañ.",
"blocklink": "stankañ",
"pageinfo-display-title": "Titl diskwelet",
"pageinfo-default-sort": "Alc'hwez rummañ dre ziouer",
"pageinfo-length": "Ment ar bajenn (en oktedoù)",
+ "pageinfo-namespace": "Esaouenn anv",
"pageinfo-article-id": "Niverenn ar bajenn",
"pageinfo-language": "Yezh ar bajenn",
"pageinfo-language-change": "kemmañ",
"confirm-unwatch-top": "Lemel ar bajenn-mañ a-ziwar ho roll evezhiañ",
"confirm-rollback-button": "Mat eo",
"confirm-rollback-top": "Disteurel ar c'hemmoù graet er bajenn-mañ ?",
+ "confirm-mcrundo-title": "Dizober ur c'hemm",
+ "mcrundofailed": "Dizober c'hwitet",
+ "mcrundo-missingparam": "Arventennoù rekis d'ar reked a vank.",
"quotation-marks": "« $1 »",
"imgmultipageprev": "← pajenn gent",
"imgmultipagenext": "pajenn war-lerc'h →",
"tag-mw-contentmodelchange": "cheñch ar patrom danvez",
"tag-mw-contentmodelchange-description": "KEmmoù a [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel cheñch patrom danvez] ur bajenn",
"tag-mw-new-redirect": "Adkas nevez",
+ "tag-mw-removed-redirect": "Nullañ an adkas",
+ "tag-mw-blank": "Goullonderiñ",
+ "tag-mw-replace": "Erlerc'hiet",
+ "tag-mw-rollback": "Dizober",
"tag-mw-undo": "Dizober",
"tags-title": "Tikedennoù",
"tags-intro": "Rollañ a ra ar bajenn-mañ an tikedennoù a c'hall ar meziant implijout da verkañ kemmoù hag o zalvoudegezh.",
"mw-widgets-titleinput-description-redirect": "adkas war-zu $1",
"mw-widgets-categoryselector-add-category-placeholder": "Ouzhpennañ ur rummad...",
"mw-widgets-usersmultiselect-placeholder": "Ouzhpennañ muioc'h...",
+ "mw-widgets-titlesmultiselect-placeholder": "Ouzhpennañ muioc'h...",
"date-range-from": "Adalek deiziañ an :",
"date-range-to": "Betek deiziad an :",
"sessionmanager-tie": "N'hallet ket kevrediñ meur a seurt reked dilesañ : $1.",
"accmailtext": "S'ha enviat una contrasenya aleatòria a $2 per a {{GENDER:$1|l'usuari|la usuària}} [[User talk:$1|$1]].\n\nLa contrasenya per aquest nou compte pot ser canviada a la pàgina de ''[[Special:ChangePassword|canvi de contrasenya]]'' un cop connectat.",
"newarticle": "(Nou)",
"newarticletext": "Heu seguit un enllaç a una pàgina que encara no existeix.\nPer a crear-la, comenceu a escriure en l'espai de sota\n(vegeu l'[$1 ajuda] per a més informació).\nSi sou ací per error, simplement cliqueu al botó «Enrere» del vostre navegador.",
- "anontalkpagetext": "----\n<em>Aquesta és la pàgina de discussió d'un usuari anònim que encara no ha creat un compte o que no fa servir el seu nom registrat. Per tant, hem de fer servir la seua adreça IP numèrica per a identificar-lo. Una adreça IP pot ser compartida per diversos usuaris. Si sou un usuari anònim i trobeu que us han adreçat comentaris no apropiats, [[Special:CreateAccount|creeu un compte]] o [[Special:UserLogin|inicieu sessió]] per a evitar futures confusions amb altres usuaris anònims.",
+ "anontalkpagetext": "----\n<em>Aquesta és la pàgina de discussió d'un usuari anònim que encara no ha creat un compte o que no fa servir el seu nom registrat.</em>\nPer tant, hem de fer servir l'adreça IP numèrica per a identificar-lo. \nUna adreça IP pot ser compartida per diversos usuaris. \nSi sou un usuari anònim i trobeu que us han adreçat comentaris no apropiats, [[Special:CreateAccount|creeu un compte]] o [[Special:UserLogin|inicieu sessió]] per a evitar futures confusions amb altres usuaris anònims.",
"noarticletext": "Actualment no hi ha text en aquesta pàgina.\nPodeu [[Special:Search/{{PAGENAME}}|cercar aquest títol]] en altres pàgines,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cercar en els registres]\no [{{fullurl:{{FULLPAGENAME}}|action=edit}} crear-la ara]</span>.",
"noarticletext-nopermission": "Actualment no hi ha text en aquesta pàgina.\nPodeu [[Special:Search/{{PAGENAME}}|cercar aquest títol]] en altres pàgines o bé <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cercar en els registres relacionats]</span>, però no teniu permisos per crear la pàgina.",
"missing-revision": "La revisió núm. $1 de la pàgina anomenada «{{FULLPAGENAME}}» no existeix.\n\nNormalment això ocorre quan seguiu un enllaç d’historial desactualitzat que apunta a una pàgina que s’ha suprimit.\nPodeu trobar detalls en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre de supressions].",
"uploadstash-zero-length": "El fitxer té mida zero.",
"invalid-chunk-offset": "El desplaçament del fragment no és vàlid",
"img-auth-accessdenied": "Accés denegat",
- "img-auth-nopathinfo": "Hi manca PATH_INFO.\nEl servidor no està configurat per passar aquesta informació.\nPot estar basat en CGI i no ser compatible amb img_auth.\nConsulteu https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization",
+ "img-auth-nopathinfo": "Hi manca la informació del camí.\nCal configurar el servidor per passar les variables REQUEST_URI i/o PATH_INFO.\nConsulteu https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization",
"img-auth-notindir": "No s'ha trobat la ruta sol·licitada al directori de càrrega configurat.",
"img-auth-badtitle": "No s'ha pogut construir un títol vàlid a partir de \"$1\".",
"img-auth-nologinnWL": "No has iniciat sessió i \"$1\" no està a la llista blanca.",
"recentchangescount": "ژمارەی گۆڕانکارییەکان کە نیشان ئەدرێن لە حاڵەتی دیفاڵت:",
"prefs-help-recentchangescount": "زۆرترین ژمارە: ١٠٠٠",
"prefs-help-watchlist-token2": "ئەمە کلیلێکی تایبەتیی پێڕستی چاودێرییەکەتە. ھەرکەسێک بیزانێت دەتوانێت پێڕستی چاودێرییەکەت ببینێت، بۆیە لای خۆت بیپارێزە.\nئەگەر پێویستی کرد، [[Special:ResetTokens|دەتوانیت بیگۆڕیت]].",
+ "prefs-help-tokenmanagement": "دەتوانیت کلیلی نهێنی هەژمارەکەت ببینیت و بگۆڕیت، کە پێڕستی چاودێریتی پێ دەبینرێت. هەرکەسێک ئەم کلیلە بزانێت دەتوانێت پێڕستی چاودێریت ببینێت، بۆیە مەیدە بە کەس.",
"savedprefs": "ھەڵبژاردەکانت پاشەکەوت کران",
"savedrights": "گرووپەکانی بەکارھێنەر بۆ $1 پاشەکەوت کران.",
"timezonelegend": "ناوچەی کاتی:",
"prefs-advancedwatchlist": "هەڵبژاردە پێشکەوتووەکان",
"prefs-displayrc": "ھەڵبژاردەکانی نیشاندان",
"prefs-displaywatchlist": "ھەڵبژاردەکانی نیشاندان",
+ "prefs-changesrc": "ئەو گۆڕانکارییانەی نیشان دەدرێن",
+ "prefs-changeswatchlist": "ئەو گۆڕانکارییانەی نیشان دەدرێن",
+ "prefs-pageswatchlist": "پەڕە چاودێریکراوەکان",
"prefs-tokenwatchlist": "نیشانە",
"prefs-diffs": "جیاوازییەکان",
"prefs-help-prefershttps": "بەکارخستنی ئەم تایبەتمەندییە کاریگەری لەسەر چوونەژوورەوەی داھاتووت دروست دەکات",
"changecontentmodel-reason-label": "هۆکار:",
"changecontentmodel-submit": "گۆڕین",
"log-name-contentmodel": "لۆگی گۆڕینی مۆدێلی ناوەڕۆک",
+ "logentry-contentmodel-new": "$1 پەڕەی $3ی بە مۆدێلی ناوەڕۆکی نابنچینەیی «$5» دروست کرد.",
"logentry-contentmodel-change": "$1 {{GENDER:$2|مۆدێلی}} ناوەڕۆکی پەڕەی $3ی لە «$4» گۆڕی بە «$5»",
"logentry-contentmodel-change-revertlink": "گەڕاندنەوە",
"logentry-contentmodel-change-revert": "گەڕاندنەوە",
"grant-delete": "Mazat stránky, revize a protokolovací záznamy",
"grant-editinterface": "Editovat jmenný prostor MediaWiki a celoprojektový/uživatelský JSON",
"grant-editmycssjs": "Editovat váš uživatelský CSS/JSON/JavaScript",
- "grant-editmyoptions": "Změna vašich uživatelských nastavení",
+ "grant-editmyoptions": "Změna vašich uživatelských nastavení a konfigurace JSON",
"grant-editmywatchlist": "Upravovat váš seznam sledovaných stránek",
"grant-editsiteconfig": "Editovat celoprojektové a uživatelské CSS/JS",
"grant-editpage": "Editovat existující stránky",
"rcfilters-watchlist-edit-watchlist-button": "Editovat seznam sledovaných stránek",
"rcfilters-watchlist-showupdated": "Změny stránek, které jste od provedení změn nenavštívili, jsou zobrazeny <strong>tučně</strong> s vyplněnou značkou.",
"rcfilters-preference-label": "Používat rozhraní bez JavaScriptu",
- "rcfilters-preference-help": "Načte poslední změny bez filtrů či zvýrazňování.",
+ "rcfilters-preference-help": "Načte poslední změny bez vyhledávání filtrů či zvýrazňování.",
"rcfilters-watchlist-preference-label": "Používat rozhraní bez JavaScriptu",
- "rcfilters-watchlist-preference-help": "Načte sledované stránky bez filtrů či zvýrazňování.",
+ "rcfilters-watchlist-preference-help": "Načte sledované stránky bez vyhledávání filtrů či zvýrazňování.",
"rcfilters-filter-showlinkedfrom-label": "Zobrazit změny stránek, na které se odkazuje",
"rcfilters-filter-showlinkedfrom-option-label": "<strong>Stránky odkazované z</strong> vybrané stránky",
"rcfilters-filter-showlinkedto-label": "Zobrazit změny stránek, které sem odkazují",
"mcrundofailed": "Vrácení editace zpět se nezdařilo",
"mcrundo-missingparam": "V požadavku chybí povinné parametry.",
"mcrundo-changed": "Od chvíle, kdy jste si prohlédli rozdíl, se stránka změnila. Zkontrolujte prosím novou změnu.",
+ "mcrundo-parse-failed": "Nepodařilo se analyzovat novou revizi: $1",
"ellipsis": "…",
"percent": "$1 %",
"quotation-marks": "„$1“",
"Saederup92",
"Fitoschido",
"Jorn Ari",
- "Fnielsen"
+ "Fnielsen",
+ "Weblars"
]
},
"tog-underline": "Understreg henvisninger:",
"prefs-editwatchlist-clear": "Ryd din overvågningsliste",
"prefs-watchlist-days": "Antal dage der skal vises i overvågningslisten:",
"prefs-watchlist-days-max": "Højst $1 {{PLURAL:$1|dag|dage}}",
- "prefs-watchlist-edits": "Maksimalt antal redigeringer der vises i overvågningsliste:",
+ "prefs-watchlist-edits": "Maksimalt antal redigeringer der vises i overvågningslisten:",
"prefs-watchlist-edits-max": "Maks. 1000",
- "prefs-watchlist-token": "Overvågningslistenøgle:",
+ "prefs-watchlist-token": "Nøgle til overvågningsliste:",
+ "prefs-watchlist-managetokens": "Håndtér nøgler",
"prefs-misc": "Forskelligt",
"prefs-resetpass": "Skift adgangskode",
"prefs-changeemail": "Skift eller fjern e-mailadresse",
"stub-threshold-disabled": "Deaktiveret",
"recentchangesdays": "Antal dage som skal vises i seneste ændringer:",
"recentchangesdays-max": "(maks. $1 {{PLURAL:$1|dag|dage}})",
- "recentchangescount": "Antal redigeringer som skal vises som standard i sidste ændringer, sidehistorikker og logger:",
+ "recentchangescount": "Antal redigeringer der som standard vises i seneste ændringer, sidehistorikker og logger:",
"prefs-help-recentchangescount": "Maksimalt antal: 1000",
"prefs-help-watchlist-token2": "Dette er den hemmelige nøgle til web-feed af din overvågningsliste.\nHvis andre kender den, vil man være i stand til at læse din overvågningsliste, så del den ikke.\n[[Special:ResetTokens|Klik her]] hvis du har brug at nulstille den.",
+ "prefs-help-tokenmanagement": "Du kan se og nulstille den hemmelige nøgle for din konto som kan få tilgang til din overvågningsliste via feeds. Alle som har nøglen vil kunne læse din overvågningsliste, så del den derfor ikke.",
"savedprefs": "Dine indstillinger er blevet gemt.",
"savedrights": "Brugergrupperne for {{GENDER:$1|$1}} er blevet gemt.",
"timezonelegend": "Tidszone:",
"prefs-changesrc": "Ændringer vist",
"prefs-changeswatchlist": "Ændringer vist",
"prefs-pageswatchlist": "Overvågede sider",
- "prefs-tokenwatchlist": "Mærke",
+ "prefs-tokenwatchlist": "Nøgle",
"prefs-diffs": "Forskelle",
"prefs-help-prefershttps": "Denne indstilling træder i kraft næste gang du logger på.",
"prefswarning-warning": "Du har foretaget ændringer af dine indstillinger, som ikke er gemt endnu.\nHvis du forlader denne side uden at klikke \"$1\", vil dine indstillinger ikke blive opdateret.",
"rcfilters-watchlist-edit-watchlist-button": "Rediger din liste med overvågede sider",
"rcfilters-watchlist-showupdated": "Ændringer til sider du ikke har besøgt siden ændringerne blev gjort vises med <strong>fed</strong>, med faste markører.",
"rcfilters-preference-label": "Brug grænsefladesnittet uden JavaScript",
+ "rcfilters-watchlist-preference-label": "Brug grænsefladesnittet uden JavaScript",
+ "rcfilters-watchlist-preference-help": "Indlæser overvågningslisten uden mulighed for søgning med filter eller fremhævelse.",
"rcfilters-filter-showlinkedto-label": "Vis ændringer på sider der linker til",
"rcfilters-target-page-placeholder": "Indtast et sidenavn (eller en kategori)",
"rcnotefrom": "Nedenfor er op til '''$1''' {{PLURAL:$5|ændring|ændringer}} siden '''$2''' vist.",
"tags-delete": "slet",
"tags-activate": "aktiver",
"tags-deactivate": "deaktiver",
- "tags-hitcount": "{{PLURAL:$1|en ændring|$1 ændringer}}",
+ "tags-hitcount": "{{PLURAL:$1|1 ændring|$1 ændringer}}",
"tags-create-heading": "Opret et nyt mærke",
"tags-create-explanation": "Som standard vil nye mærker blive gjort tilgængelige for brugere og robotter.",
"tags-create-tag-name": "Mærkenavn:",
"date-range-to": "Til dato:",
"sessionmanager-tie": "Kan ikke kombinere flere forespørgselgodkendelsetyper: $1.",
"sessionprovider-generic": "$1 sessioner",
+ "sessionprovider-mediawiki-session-cookiesessionprovider": "cookie-baserede sessioner",
"randomrootpage": "Tilfældig stamside",
"log-action-filter-block": "Blokeringstype:",
"log-action-filter-delete": "Sletningstype:",
"authmanager-create-from-login": "For at oprette din konto, så udfyld venligst felterne.",
"authmanager-authplugin-setpass-failed-title": "Ændring af adgangskode mislykkedes",
"authmanager-authplugin-setpass-bad-domain": "Ugyldig domæne.",
+ "authmanager-autocreate-noperm": "Automatisk kontooprettelse er ikke tilladt.",
"authmanager-userdoesnotexist": "Brugerkontoen \"$1\" er ikke registreret.",
"authmanager-email-label": "E-post",
"authmanager-email-help": "E-postadresse",
"grant-delete": "Seiten, Versionen und Logbucheinträge löschen",
"grant-editinterface": "Den MediaWiki-Namensraum und wikiweites/Benutzer-JSON bearbeiten",
"grant-editmycssjs": "Dein Benutzer-CSS/JSON/JavaScript bearbeiten",
- "grant-editmyoptions": "Deine Benutzereinstellungen bearbeiten",
+ "grant-editmyoptions": "Deine Benutzereinstellungen und JSON-Konfiguration bearbeiten",
"grant-editmywatchlist": "Deine Beobachtungsliste bearbeiten",
"grant-editsiteconfig": "Wikiweites und Benutzer-CSS/JS bearbeiten",
"grant-editpage": "Vorhandene Seiten bearbeiten",
"subject": "Mewzu:",
"minoredit": "No yew vırnayışo werdiyo",
"watchthis": "Şıma bewnê ena perre",
- "savearticle": "Perre qeyd ke",
+ "savearticle": "Pele qeyd ke",
"savechanges": "Vırnayışan qeyd kerê",
"publishpage": "Riperri bare ke",
"publishchanges": "Vırnayışan qeyd ke",
"explainconflict": "Wexta ke şıma pel vurneyene yewna ten zi pel vurna.\nNuşteyo corin; halê pelo nıkayin mocneno.\nVurnayişê şıma cêr de mocya ( musya).\nVurnayişanê peyinan şıma gani qayd bıkeri.\nWexta ke şıma butonê \"$1\" tıkna '''teyna''' nuşteyo corin qayd beno.",
"yourtext": "nuşteyê şıma",
"storedversion": "Nuşteyo qaydbiyaye",
- "editingold": "'''İqaz: Şıma ena perre sera yew çım ra viyarnayışê kıhani vırnenê.'''\nEger şıma ey qeyd kerê, pêro vırnayışê ke çım ra viyarnayış ra heta ewro biy, ê benê vıni.",
+ "editingold": "'''İqaz: Şıma ena pele sera yew çım ra viyarnayışê kıhani vurnenê.'''\nEger şıma ey qeyd kerê, pêro vurnayışê ke çımraviyarnayış ra heta ewro biy, ê benê vıni.",
"yourdiff": "pêverronayiş",
"copyrightwarning": "'''Recay iqazi:'''Sitey {{SITENAME}} ra iştıraki pêro umışiya $2 zerre deyo (teferuatan rê $1 bıvênê).\n\nİştırakê şıma, şıma qayıl niyê ke yewna merdımi kerpeyina bıvurnê ya zi yewna cayi ra vıla kerê ke, iştırakiştıraq = iştırak. mekewê.<br />\nFına zi qayılê ke iştıraq kewê, şıma qayılê ke şar vaco eno nuşte fılan kesi nusnayo ya zi meqemanê resmiyan ra zanayışê cı û malumatê cı esto / cayanê xoseran ra gırewtışi rê şıma garanti danê. '''Tiya de şıma werê telifi ra ke mısade nêgırewto, eserê cı tiya vıla mekerê! '''",
"copyrightwarning2": "Ney bızanê ke nuşteyê ke şıma ruşnenê (şawenê) keyepela {{SITENAME}} herkes eşkeno nê nuşteyanê şıma ser kay bıkero. Eke şıma qayil niyê kes bıvurno, nuşteyanê xo meerzê ita. <br />\nWexto ke şıma nuşteyi zi erzenê ita; şıma gani teahud bıdê koti ra ardo (qandê teferuati ra referans: $1).",
"defaultmessagetext": "Metnê mesacê hesabiyayey",
"content-failed-to-parse": "Qandê madela $3 zereyê $1, $2 sero nêagozyayo",
"invalid-content-data": "Zerrey malumati nêravêrdeyo",
- "content-not-allowed-here": "\"$1\" sero per da [[:$2]] rê mısade nêdeyêno",
+ "content-not-allowed-here": "Zerreki rê „$1“ punıkê „$3“ pela [[:$2]] de mısade nêdayo",
"editwarning-warning": "Wexto ke şıma na pele ra veciyê, beno ke vurnayışê şıma vindi bê.\nEke şıma kewtê hesabê xo, şıma şenê nê balantışi qısmê \"{{int:prefs-editing}}\"i de tercihanê xo ra bıvındarnê.",
"editpage-notsupportedcontentformat-title": "Formatê zerreki qebul nêbeno",
+ "slot-name-main": "Ser",
"content-model-wikitext": "wikimetin",
"content-model-text": "metno pan",
"content-model-javascript": "JavaScript",
"timezonelegend": "Warey saete:",
"localtime": "saeta mehelliye:",
"timezoneuseserverdefault": "Zey karkerdışê Wiki ($1)",
- "timezoneuseoffset": "Zewbina (offseti beli bıke)",
+ "timezoneuseoffset": "Zewbina (ferqo cêrên areze ke)",
"servertime": "Wextê serveri:",
"guesstimezone": "Browser ra pırr ke",
"timezoneregion-africa": "Afrika",
"mimesearch": "MIME bigêre",
"mimesearch-summary": "Na perre, dosyayanê MIME gorey tewran ra parzûn kena. Cıkewtış: tewrê zerreki/tewro bınên ya zi tewrê zerreki/*, nımune: <code>image/jpeg</code>.",
"mimetype": "Babetê NIME",
- "download": "Bıselagnê",
+ "download": "biya war",
"unwatchedpages": "Pelanê seyrnibiyeyî",
"listredirects": "Lista serşıkıtışan",
"listduplicatedfiles": "Lista dosyeyanê ke kopyaya cı vêniyena",
"protectedtitles": "Sernameyê pawıteyi",
"protectedtitlesempty": "pê ney parametreyan sernuşteyê pawite çinê",
"protectedtitles-submit": "Sereki bımotne",
- "listusers": "Listeyê Karberan",
+ "listusers": "Lista karberan",
"listusers-editsonly": "Teyna karberanê vırnayış kerdoğan bımotne",
"listusers-creationsort": "goreyê wextê vıraştışi rêz ker",
"listusers-desc": "Kemeyen rézed ratn",
"sp-contributions-uploads": "Barkerdışi",
"sp-contributions-logs": "qeydi",
"sp-contributions-talk": "werênayış",
- "sp-contributions-userrights": "idareyê heqanê karberan",
+ "sp-contributions-userrights": "idareyê heqanê {{GENDER:$1|karberan}}",
"sp-contributions-blocked-notice": "verniyê no/na karber/e geriyayo/a\nqê referansi qeydê vernigrewtışi cêr de eşkera biyo:",
"sp-contributions-blocked-notice-anon": "Eno adresê IPi bloke biyo.\nCıkewtışo tewr peyêno ke bloke biyo, cêr seba referansi belikerdeyo:",
"sp-contributions-search": "Dekerdena cı geyrê",
"ipblocklist-empty": "Listay kılit kerdışi venga.",
"ipblocklist-no-results": "Adresa IPya waştiye ya zi nameyê karberi kılit nêbiyo.",
"blocklink": "kılit ke",
- "unblocklink": "blokey wedare",
- "change-blocklink": "kılit kerdışi bıvurne",
+ "unblocklink": "kılitkerdışi wedare",
+ "change-blocklink": "kılitkerdışi bıvurne",
"contribslink": "iştıraki",
"emaillink": "e-poste bırışe",
"autoblocker": "Şıma otomatikmen kılit biy, çıke adresa şımaya ''IP''y terefê \"[[User:$1|$1]]\" gureniyena.\nSebebê kılitbiyayışê $1'i \"$2\"o",
"feedback-bugnew": "Mı kontrol kı. Xetay newi xeber kı.",
"feedback-bugornote": "Jew mersela teferruato teknik esta şıma reca malumatê şıma hazıro se [ $1 jew xırab rapor] bıvinê.Zewbi zi, formê cerê xo rê şenê karfiyê. Vatışê xo pela da \"[ $3 $2 ]\", namey karber dê xoya piya u wasteriya karfiye.",
"feedback-cancel": "Peyd kı",
- "feedback-close": "Biya star",
+ "feedback-close": "Temam",
"feedback-error1": "Xeta: APIi ra peyniyê nêşınasiyay",
"feedback-error2": "Xeta: Timar kerdış nebı",
"feedback-error3": "Xeta: API ra cewab çıno",
"grant-delete": "Delete pages, revisions, and log entries",
"grant-editinterface": "Edit the MediaWiki namespace and sitewide/user JSON",
"grant-editmycssjs": "Edit your user CSS/JSON/JavaScript",
- "grant-editmyoptions": "Edit your user preferences",
+ "grant-editmyoptions": "Edit your user preferences and JSON configuration",
"grant-editmywatchlist": "Edit your watchlist",
"grant-editsiteconfig": "Edit sitewide and user CSS/JS",
"grant-editpage": "Edit existing pages",
"istemplate": "inkludo",
"isimage": "ligilo al dosiero",
"whatlinkshere-prev": "{{PLURAL:$1|antaŭan|antaŭajn $1}}",
- "whatlinkshere-next": "{{PLURAL:$1|postan|postajn $1}}",
+ "whatlinkshere-next": "{{PLURAL:$1|sekvan|sekvajn $1}}",
"whatlinkshere-links": "← ligiloj",
"whatlinkshere-hideredirs": "$1 alidirektilojn",
"whatlinkshere-hidetrans": "$1 inkludojn",
"ديفيد",
"LittlePuppers",
"Theklan",
- "Laura Ospina"
+ "Laura Ospina",
+ "Pipino-pumuki"
]
},
- "tog-underline": "Subrayar los enlaces:",
+ "tog-underline": "Enlaces a subrayar:",
"tog-hideminor": "Ocultar las ediciones menores en cambios recientes",
"tog-hidepatrolled": "Ocultar las ediciones verificadas de cambios recientes",
"tog-newpageshidepatrolled": "Ocultar, de la lista de páginas nuevas, las páginas verificadas",
"grant-delete": "Supprimer les pages, les révisions et les entrées du journal",
"grant-editinterface": "Modifier l’espace de noms MediaWiki et le JSON du site/utilisateur",
"grant-editmycssjs": "Modifier votre CSS/JSON/JavaScript utilisateur",
- "grant-editmyoptions": "Modifier vos préférences utilisateur",
+ "grant-editmyoptions": "Modifier vos préférences utilisateur et votre configuration JSON",
"grant-editmywatchlist": "Modifier votre liste de suivi",
"grant-editsiteconfig": "Modifier les CSS/JS du site et ceux de l'utilisateur",
"grant-editpage": "Modifier des pages existantes",
"pageinfo-category-files": "Taal faan datein",
"markaspatrolleddiff": "Üs kontroliaret kääntiakne",
"markaspatrolledtext": "Sidj üs kontroliaret kääntiakne",
+ "markaspatrolledtext-file": "Detdiar dateiwerjuun üs kontroliaret kääntiakne",
"markedaspatrolled": "Üs kontroliaret kääntiakne",
"markedaspatrolledtext": "Detdiar werjuun faan [[:$1]] as üs kontroliaret kääntiakent wurden.",
"rcpatroldisabled": "A leetst feranrangen kön ei kontroliaret wurd.",
"grant-delete": "מחיקת דפים, גרסאות ורשומות יומן",
"grant-editinterface": "עריכת מרחב השם מדיה ויקי וקובצי JSON של האתר כולו ושל משתמשים",
"grant-editmycssjs": "עריכת CSS/JSON/JavaScript שלך",
- "grant-editmyoptions": "עריכת העדפות המשתמש שלך",
+ "grant-editmyoptions": "ער×\99×\9bת ×\94×¢×\93פ×\95ת ×\94×\9eשת×\9eש ×\95תצ×\95רת ×\94Ö¾JSON ש×\9c×\9a",
"grant-editmywatchlist": "עריכת רשימת המעקב שלך",
"grant-editsiteconfig": "עריכת קובצי CSS/JS של האתר כולו ושל משתמשים",
"grant-editpage": "עריכת דפים קיימים",
"limitreport-postexpandincludesize": "Uključena veličina nakon proširenja",
"limitreport-postexpandincludesize-value": "$1/$2 {{PLURAL:$2|bajt|bajta|bajtova}}",
"limitreport-templateargumentsize": "Veličina argumenta predloška",
+ "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|bajt|bajta|bajtova}}",
"limitreport-expansiondepth": "Najveća dubina proširenja",
"limitreport-expensivefunctioncount": "Broj složenih funkcija raščlanjivača",
"limitreport-unstrip-depth": "Dubina rekurzije unstrip",
"limitreport-unstrip-size": "Veličina nakon proširenja unstrip",
+ "limitreport-unstrip-size-value": "$1/$2 {{PLURAL:$2|bajt|bajta|bajtova}}",
"expandtemplates": "Prikaz sadržaja predložaka",
"expand_templates_intro": "Ova posebna stranica omogućuje unos wikiteksta i prikazuje njegov rezultat,\nuključujući i (rekurzivno, tj. potpuno) sve uključene predloške u wikitekstu.\nPrikazuje i rezultate funkcija kao <nowiki>{{</nowiki>#language:...}} i varijabli\nkao <nowiki>{{</nowiki>CURRENTDAY}}. Funkcionira pozivanjem parsera same MedijeWiki.",
"expand_templates_title": "Kontekstni naslov stranice, za {{FULLPAGENAME}} i sl.:",
"userlogin-createanother": "Másik felhasználói fiók létrehozása",
"createacct-emailrequired": "E-mail-cím",
"createacct-emailoptional": "E-mail-cím (opcionális)",
- "createacct-email-ph": "Add meg e-mail címed",
+ "createacct-email-ph": "Add meg e-mail-címed",
"createacct-another-email-ph": "Add meg az e-mail-címet",
"createaccountmail": "Átmeneti, véletlenszerű jelszó beállítása és kiküldése a megadott e-mail-címre",
"createaccountmail-help": "A jelszó megismerése nélkül készíthető valaki másnak fiók.",
"move": "Átnevezés",
"movethispage": "Nevezd át ezt a lapot",
"unusedimagestext": "Az alábbi fájlokat nem használjuk egyetlen oldalon sem.\nVedd figyelembe, hogy más weboldalak közvetlenül hivatkozhatnak egy fájl URL-jére, ezért szerepelhet itt annak ellenére, hogy aktívan használják.",
+ "unusedimagestext-categorizedimgisused": "Az alábbi fájlok léteznek, de egyetlen lapon sincsenek beillesztve. A kategorizált fájlok használtként jelennek meg, még ha nincsenek is beillesztve.\n\nVedd figyelembe, hogy más weboldalak közvetlenül hivatkozhatnak egy fájl URL-jére, ezért szerepelhet itt annak ellenére, hogy aktívan használják.",
"unusedcategoriestext": "A következő kategóriákban egyetlen szócikk, illetve alkategória sem szerepel.",
"notargettitle": "Nincs cél",
"notargettext": "Nem adtad meg annak a lapnak vagy szerkesztőnek a nevét, amin a műveletet végre akartad hajtani.",
"sp-contributions-logs": "registrari",
"sp-contributions-talk": "diskutez",
"sp-contributions-userrights": "yuri dil {{GENDER:$1|uzero}} pri administrado",
+ "sp-contributions-blocked-notice": "Ca uzero nun esas blokusata.\nVu povas vidar la lasta etiketo pri blokuso adinfre:",
"sp-contributions-blocked-notice-anon": "Ica IP-adreso esas nune blokusita.\nLa maxim recenta etiketo pri blokuso esas videbla adinfre, por refero:",
"sp-contributions-search": "Serchar kontributadi",
"sp-contributions-username": "IP-adreso od uzantonomo:",
"cannotchangeemail": "На ова вики не може да се менува е-пошта на сметките.",
"emaildisabled": "Ова мреж. место не може да праќа е-пошта.",
"accountcreated": "Корисничката сметка е направена",
- "accountcreatedtext": "Корисничкта сметка за [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|разговор]]) е направена.",
+ "accountcreatedtext": "Корисничката сметка за [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|разговор]]) е направена.",
"createaccount-title": "Создавање на сметка за {{SITENAME}}",
"createaccount-text": "Некој направил сметка со вашата е-поштенска адреса на {{SITENAME}} ($4) со име „$2“ и лозинка „$3“.\nБи требало сега да се пријавите и да ја промените вашата лозинка.\n\nМожете да ја занемарите оваа порака ако сметката била направена по грешка.",
"login-throttled": "Имате премногу обиди за најава за кратко време.\nПочекајте $1 пред да се обидете повторно.",
"returnto": "$1 എന്ന താളിലേക്ക് മടങ്ങുക.",
"tagline": "{{SITENAME}} സംരംഭത്തിൽ നിന്ന്",
"help": "സഹായം",
+ "help-mediawiki": "മീഡിയവിക്കി സംബന്ധിച്ച സഹായം",
"search": "തിരയൂ",
"search-ignored-headings": " #<!-- ഈ വരി ഇതേ പോലെ വിടുക --> <pre>\n# തിരച്ചിലിൽ അവഗണിക്കപ്പെടുന്ന തലക്കെട്ടുകൾ.\n# താളിന്റെ തലക്കെട്ടുകളുടെ സൂചികവത്കരണം നടന്നാലുടൻ ഇവിടെ വരുത്തുന്ന മാറ്റങ്ങൾ ഫലത്തിൽ വരുന്നതാണ്.\n# ശൂന്യമായ തിരുത്ത് ചെയ്ത് താൾ വീണ്ടും സൂചികാവത്കരിക്കാവുന്നതാണ്.\n# എഴുത്തുരീതി ഇനി കൊടുക്കുന്നു:\n# * \"#\" അക്ഷരത്തിൽ തുടങ്ങി വരിയുടെ അവസാനം വരെയുള്ള എന്തും സൂചനാക്കുറിപ്പ് ആയിരിക്കും.\n# * ശൂന്യമല്ലാത്ത ഓരോ വരിയും അക്ഷരവ്യത്യാസമില്ലാതെ അവഗണിക്കപ്പെടാനുള്ള തലക്കെട്ടായിരിക്കും\nഅവലംബം\nപുറത്തേക്കുള്ള കണ്ണികൾ\nഇതും കാണുക\n #</pre> <!-- ഈ വരി ഇതേ പോലെ വിടുക-->",
"searchbutton": "തിരയൂ",
"badarticleerror": "താങ്കൾ ചെയ്യാനുദ്ദേശിക്കുന്നത് ഈ താളിൽ സാദ്ധ്യമല്ല",
"cannotdelete": "\"$1\" എന്ന താൾ അഥവാ പ്രമാണം നീക്കം ചെയ്യാൻ കഴിഞ്ഞില്ല.\nഅതു മിക്കവാറും മറ്റാരെങ്കിലും നീക്കം ചെയ്തിട്ടുണ്ടാവാം.",
"cannotdelete-title": "\"$1\" എന്ന താൾ മായ്ക്കാൻ കഴിയില്ല",
+ "delete-scheduled": "\"$1\" താൾ മായ്ക്കാൻ നിശ്ചയിച്ചിരിക്കുന്നു.\nദയവായി കാത്തിരിക്കുക.",
"delete-hook-aborted": "മായ്ക്കൽ കൊളുത്തിനാൽ റദ്ദാക്കിയിരിക്കുന്നു.\nവിശദീകരണമൊന്നും നൽകിയിട്ടില്ല.",
"no-null-revision": "\"$1\" എന്ന താളിന് പുതിയ ശൂന്യമായ മാറ്റമുള്ള നാൾപ്പതിപ്പ് സൃഷ്ടിക്കാൻ കഴിഞ്ഞില്ല",
"badtitle": "അസാധുവായ തലക്കെട്ട്",
"cascadeprotected": "\"നിർഝരിത\" (cascading) സൗകര്യം ഉപയോഗിച്ച് തിരുത്തൽ നടത്തുന്നതിനു സംരക്ഷണം ഏർപ്പെടുത്തിയിട്ടുള്ള {{PLURAL:$1|താഴെ കൊടുത്തിട്ടുള്ള താളിന്റെ|താഴെ കൊടുത്തിട്ടുള്ള താളുകളുടെ}} ഭാഗമാണ് ഈ താൾ. അതിനാൽ ഈ താൾ തിരുത്താൻ സാധിക്കില്ല:\n$2",
"namespaceprotected": "'''$1''' നാമമേഖലയിലുള്ള താളുകൾ തിരുത്താൻ താങ്കൾക്ക് അനുവാദമില്ല.",
"customcssprotected": "ഈ സി.എസ്.എസ്. താളിൽ മറ്റൊരു ഉപയോക്താവിന്റെ സ്വകാര്യസജ്ജീകരണങ്ങൾ ഉൾക്കൊള്ളുന്നു, അതിനാൽ താങ്കൾക്ക് ഈ താൾ തിരുത്താൻ അനുവാദമില്ല.",
+ "customjsonprotected": "ഈ ജെസൺ താളിൽ മറ്റൊരു ഉപയോക്താവിന്റെ സ്വകാര്യസജ്ജീകരണങ്ങൾ ഉൾക്കൊള്ളുന്നു, അതിനാൽ താങ്കൾക്ക് ഈ താൾ തിരുത്താൻ അനുവാദമില്ല.",
"customjsprotected": "ഈ ജാവാസ്ക്രിപ്റ്റ് താളിൽ മറ്റൊരു ഉപയോക്താവിന്റെ സ്വകാര്യസജ്ജീകരണങ്ങൾ ഉൾക്കൊള്ളുന്നു, അതിനാൽ താങ്കൾക്ക് ഈ താൾ തിരുത്താൻ അനുവാദമില്ല.",
+ "sitecssprotected": "എല്ലാ സന്ദർശകരേയും ബാധിക്കാനിടയുള്ളതിനാൽ ഈ സി.എസ്.എസ്. താൾ തിരുത്താൻ താങ്കൾക്ക് അനുമതി ഇല്ല.",
+ "sitejsonprotected": "എല്ലാ സന്ദർശകരേയും ബാധിക്കാനിടയുള്ളതിനാൽ ഈ ജെസൺ താൾ തിരുത്താൻ താങ്കൾക്ക് അനുമതി ഇല്ല.",
+ "sitejsprotected": "എല്ലാ സന്ദർശകരേയും ബാധിക്കാനിടയുള്ളതിനാൽ ഈ ജാവാസ്ക്രിപ്റ്റ് താൾ തിരുത്താൻ താങ്കൾക്ക് അനുമതി ഇല്ല.",
"mycustomcssprotected": "ഈ സി.എസ്.എസ്. താൾ തിരുത്താനുള്ള അനുമതി താങ്കൾക്കില്ല.",
+ "mycustomjsonprotected": "ഈ ജെസൺ താൾ തിരുത്താനുള്ള അനുമതി താങ്കൾക്കില്ല.",
"mycustomjsprotected": "ഈ ജാവാസ്ക്രിപ്റ്റ് താൾ തിരുത്താനുള്ള അനുമതി താങ്കൾക്കില്ല.",
"myprivateinfoprotected": "താങ്കൾക്ക് സ്വന്തം സ്വകാര്യവിവരങ്ങൾ തിരുത്താനുള്ള അനുമതിയില്ല.",
"mypreferencesprotected": "താങ്കൾക്ക് സ്വന്തം ക്രമീകരണങ്ങൾ തിരുത്താനുള്ള അനുമതിയില്ല.",
"passwordtooshort": "രഹസ്യവാക്കിൽ കുറഞ്ഞതു {{PLURAL:$1|ഒരു അക്ഷരം|$1 അക്ഷരങ്ങൾ}} ഉണ്ടായിരിക്കണം.",
"passwordtoolong": "രഹസ്യവാക്കിൽ പരമാവധി {{PLURAL:$1|ഒരു അക്ഷരം|$1 അക്ഷരങ്ങൾ}} മാത്രമേ പാടുള്ളു.",
"passwordtoopopular": "പരക്കെ ഉപയോഗിക്കുന്ന രഹസ്യവാക്കുകൾ ഉപയോഗിക്കരുത്. ദയവായി ഊഹിച്ചെടുക്കാൻ ബുദ്ധിമുട്ടുള്ള രഹസ്യവാക്ക് തിരഞ്ഞെടുക്കുക.",
+ "passwordinlargeblacklist": "വളരെ സാധാരണമായി ഉപയോഗിക്കപ്പെടുന്ന രഹസ്യവാക്കുകളുടെ പട്ടികയിൽ പെട്ട രഹസ്യവാക്കാണ് നൽകിയത്. ദയവായി ഒരു അനന്യമായ രഹസ്യവാക്ക് തിരഞ്ഞെടുക്കുക.",
"password-name-match": "താങ്കളുടെ രഹസ്യവാക്ക് ഉപയോക്തൃനാമത്തിൽ നിന്നും വ്യത്യസ്തമായിരിക്കണം.",
"password-login-forbidden": "ഈ ഉപയോക്തൃനാമത്തിന്റെയും രഹസ്യവാക്കിന്റെയും ഉപയോഗം നിരോധിച്ചിരിക്കുന്നു.",
"mailmypassword": "രഹസ്യവാക്ക് പുനഃക്രമീകരിക്കുക",
"changepassword-throttled": "കുറഞ്ഞ സമയത്തിനുള്ളിൽ താങ്കൾ നിരവധി തവണ പ്രവേശിക്കാൻ ശ്രമിച്ചിരിക്കുന്നു.\nവീണ്ടും ശ്രമിക്കുന്നതിനു മുമ്പ് ദയവായി $1 കാത്തിരിക്കുക.",
"botpasswords": "യന്ത്രത്തിനുള്ള രഹസ്യവാക്കുകൾ",
"botpasswords-disabled": "യാന്ത്രിക രഹസ്യവാക്കുകൾ അനുവദനീയമല്ല.",
+ "botpasswords-label-needsreset": "(രഹസ്യവാക്ക് പുനഃസജ്ജീകരിക്കേണ്ടതുണ്ട്)",
"botpasswords-label-appid": "യന്ത്രത്തിന്റെ പേര്:",
"botpasswords-label-create": "സൃഷ്ടിക്കുക",
"botpasswords-label-update": "പുതുക്കുക",
"passwordreset-emailsentemail": "താങ്കളുടെ അംഗത്വത്തിന് നൽകിയിട്ടുള്ള ഇമെയിൽ വിലാസം ഇതാണെങ്കിൽ, രഹസ്യവാക്ക് പുനർസജ്ജീകരണ ഇമെയിൽ അയക്കുന്നതാണ്.",
"passwordreset-emailsentusername": "ഈ ഉപയോക്തൃനാമത്തിന് ഒരു ഇമെയിൽ വിലാസം ചേർത്തിട്ടുണ്ടെങ്കിൽ, രഹസ്യവാക്ക് പുനർസജ്ജീകരണ ഇമെയിൽ അയക്കുന്നതാണ്.",
"passwordreset-invalidemail": "അസാധുവായ ഇമെയിൽ വിലാസം",
+ "passwordreset-nodata": "ഉപയോക്തൃനാമമോ ഇമെയിൽ വിലാസമോ നൽകിയിട്ടില്ല",
"changeemail": "ഇമെയിൽ വിലാസം മാറ്റുക അല്ലെങ്കിൽ നീക്കംചെയ്യുക",
"changeemail-header": "താങ്കളുടെ ഇമെയിൽ വിലാസത്തിൽ മാറ്റംവരുത്താൻ ഈ ഫോം പൂരിപ്പിച്ചു നൽകുക.താങ്കളുടെ അംഗത്വവുമായി ഏതെങ്കിലുമൊരു ഇമെയിൽ വിലാസത്തിനുള്ള ബന്ധം ഒഴിവാക്കാൻ ഫോം പൂരിപ്പിക്കുമ്പോൾ പുതിയ ഇമെയിൽ വിലാസത്തിനുള്ള ഭാഗം ഒഴിച്ചിടുക.",
"changeemail-no-info": "ഈ താൾ നേരിട്ടു കാണുന്നതിന് താങ്കൾ ലോഗിൻ ചെയ്തിരിക്കണം.",
"subject-preview": "വിഷയം എങ്ങനെയുണ്ടെന്ന് കാണുക:",
"previewerrortext": "താങ്കളുടെ മാറ്റങ്ങൾ എങ്ങനെയുണ്ടെന്ന് കാണാൻ ശ്രമിച്ചപ്പോൾ പിഴവുണ്ടായി.",
"blockedtitle": "ഉപയോക്താവിനെ തടഞ്ഞിരിക്കുന്നു",
+ "blocked-email-user": "<strong>ഇമെയിൽ അയക്കുന്നതിൽ നിന്നും താങ്കളുടെ ഉപയോക്തൃനാമത്തെ തടഞ്ഞിരിക്കുന്നു. ഈ വിക്കിയിലെ മറ്റ് താളുകൾ താങ്കൾക്ക് തിരുത്താവുന്നതാണ്.</strong> [[Special:MyContributions|അംഗത്വത്തിന്റെ സംഭാവനകളിൽ]] ഈ തടയലിന്റെ പൂർണ്ണവിവരങ്ങൾ താങ്കൾക്ക് കാണാവുന്നതാണ്.\n\nതടയൽ നടപ്പിലാക്കിയത് $1 ആണ്.\n\nനൽകിയിട്ടുള്ള കാരണം <em>$2</em> എന്നാണ്.\n\n* തടയൽ തുടങ്ങിയത്: $8\n* തടയൽ അവസാനിക്കുന്നത്: $6\n* തടയാൻ ഉദ്ദേശിച്ചത്: $7\n* തടയൽ ഐ.ഡി. #$5",
+ "blockedtext-partial": "<strong>താങ്കളുടെ ഉപയോക്തൃനാമത്തെ അല്ലെങ്കിൽ ഐ.പി. വിലാസത്തെ ഈ താളിൽ മാറ്റങ്ങൾ വരുത്തുന്നതിൽ നിന്നും തടഞ്ഞിരിക്കുന്നു. ഈ വിക്കിയിലെ മറ്റ് താളുകൾ താങ്കൾക്ക് തിരുത്താവുന്നതാണ്.</strong> [[Special:MyContributions|അംഗത്വത്തിന്റെ സംഭാവനകളിൽ]] ഈ തടയലിന്റെ പൂർണ്ണവിവരങ്ങൾ താങ്കൾക്ക് കാണാവുന്നതാണ്.\n\nതടയൽ നടപ്പിലാക്കിയത് $1 ആണ്.\n\nനൽകിയിട്ടുള്ള കാരണം <em>$2</em> എന്നാണ്.\n\n* തടയൽ തുടങ്ങിയത്: $8\n* തടയൽ അവസാനിക്കുന്നത്: $6\n* തടയാൻ ഉദ്ദേശിച്ചത്: $7\n* തടയൽ ഐ.ഡി. #$5",
"blockedtext": "<strong>താങ്കളുടെ ഉപയോക്തൃനാമത്തേയോ താങ്കൾ ഇപ്പോൾ ലോഗിൻ ചെയ്തിട്ടുള്ള ഐ.പി. വിലാസത്തേയോ ഈ വിക്കി തിരുത്തുന്നതിൽ നിന്നു തടഞ്ഞിരിക്കുന്നു</strong>\n\n$1 ആണ് ഈ തടയൽ നടത്തിയത്. <em>$2</em> എന്നതാണു് അതിനു രേഖപ്പെടുത്തിയിട്ടുള്ള കാരണം.\n\n* തടയലിന്റെ തുടക്കം: $8\n* തടയലിന്റെ കാലാവധി: $6\n* തടയപ്പെട്ട ഉപയോക്താവ്: $7\n\nഈ തടയലിനെ പറ്റി ചർച്ച ചെയ്യാൻ താങ്കൾക്ക് $1 എന്ന ഉപയോക്താവിനേയോ മറ്റ് [[{{MediaWiki:Grouppage-sysop}}|കാര്യനിർവാഹകരെയോ]] സമീപിക്കാവുന്നതാണ്. [[Special:Preferences|താങ്കളുടെ ക്രമീകരണങ്ങളിൽ]] താങ്കൾ സാധുവായ ഇമെയിൽ വിലാസം കൊടുത്തിട്ടുണ്ടെങ്കിൽ, അതു അയക്കുന്നതിൽ നിന്നു താങ്കൾ തടയപ്പെട്ടിട്ടില്ലെങ്കിൽ, \"{{int:emailuser}}\" എന്ന സംവിധാനം ഉപയോഗിച്ച് താങ്കൾക്ക് മറ്റുപയോക്താക്കളുമായി ബന്ധപ്പെടാം. താങ്കളുടെ നിലവിലുള്ള ഐ.പി. വിലാസം $3 ഉം, താങ്കളുടെ തടയൽ ഐ.ഡി. #$5 ഉം ആണ്. ഇവ രണ്ടും താങ്കൾ കാര്യനിർവാഹകനെ ബന്ധപ്പെടുമ്പോൾ ചേർക്കുക.",
"autoblockedtext": "താങ്കളുടെ ഐ.പി. വിലാസം സ്വയം തടയപ്പെട്ടിരിക്കുന്നു, മറ്റൊരു ഉപയോക്താവ് ഉപയോഗിച്ച കാരണത്താൽ $1 എന്ന കാര്യനിർവാഹകനാണ് തടഞ്ഞുവെച്ചത്.\nഇതിനു കാരണമായി നൽകിയിട്ടുള്ളത്:\n\n:<em>$2</em>\n\n* തടയൽ തുടങ്ങിയത്: $8\n* തടയൽ അവസാനിക്കുന്നത്: $6\n* തടയാൻ ഉദ്ദേശിച്ചത്: $7\n\nഈ തടയലിനെ കുറിച്ച് ചർച്ച ചെയ്യാൻ താങ്കൾക്കു $1 എന്ന കാര്യനിവാഹകനേയോ മറ്റു [[{{MediaWiki:Grouppage-sysop}}|കാര്യനിർവാഹകരെയോ]] ബന്ധപ്പെടാവുന്നതാണ്.\n\nശ്രദ്ധിക്കുക [[Special:Preferences|താങ്കളുടെ ക്രമീകരണങ്ങളിൽ]] സാധുവായ ഇമെയിൽ വിലാസം രേഖപ്പെടുത്താതിരിക്കുകയോ, അത് ഉപയോഗിക്കുന്നതിൽ നിന്ന് താങ്കളെ തടയുകയോ ചെയ്തിട്ടുണ്ടെങ്കിൽ \"{{int:emailuser}}\" എന്ന സംവിധാനം പ്രവർത്തന രഹിതമായിരിക്കും.\n\nതാങ്കളുടെ നിലവിലുള്ള ഐ.പി. വിലാസം $3 ആണ്, താങ്കളുടെ തടയലിന്റെ ഐ.ഡി. #$5 ആകുന്നു.\nദയവായി മുകളിൽ കൊടുത്തിരിക്കുന്ന വിവരങ്ങളെല്ലാം താങ്കൾ നടത്തുന്ന അന്വേഷണങ്ങളിൽ ഉൾപ്പെടുത്തുവാൻ ശ്രദ്ധിക്കുക.",
"systemblockedtext": "താങ്കളുടെ ഉപയോക്തൃനാമം അല്ലെങ്കിൽ ഐ.പി. വിലാസം മീഡിയവിക്കി സ്വയം തടഞ്ഞിരിക്കുന്നു.\nതടയാനുള്ള കാരണം:\n\n:<em>$2</em>\n\n* തടയൽ തുടങ്ങിയത്: $8\n* തടയൽ കാലഹരണപ്പെടുന്നത്: $6\n* തടയാനുദ്ദേശിച്ചയാൾ: $7\n\nതാങ്കളുടെ നിലവിലെ ഐ.പി. വിലാസം $3 ആണ്.\nതാങ്കൾക്കെന്തെങ്കിലും ചോദ്യങ്ങളുണ്ടെങ്കിൽ മുകളിലെ എല്ലാ വിവരങ്ങളും ഉൾപ്പെടുത്തുക.",
"editpage-invalidcontentmodel-title": "ഉള്ളടക്ക രീതി പിന്തുണയ്ക്കുന്നില്ല",
"editpage-notsupportedcontentformat-title": "ഉള്ളടക്ക ഫോർമാറ്റ് പിന്തുണയ്ക്കുന്നില്ല",
"editpage-notsupportedcontentformat-text": "ഉള്ളടക്കത്തിന്റെ ഫോർമാറ്റ് ആയ $1 ഉള്ളടക്ക രീതിയായ $2 പിന്തുണയ്ക്കുന്നില്ല.",
+ "slot-name-main": "മുഖ്യം",
"content-model-wikitext": "വിക്കിഎഴുത്ത്",
"content-model-text": "വെറും എഴുത്ത്",
"content-model-javascript": "ജാവാസ്ക്രിപ്റ്റ്",
"timezonelegend": "സമയ മേഖല:",
"localtime": "പ്രാദേശിക സമയം:",
"timezoneuseserverdefault": "വിക്കിയിൽ സ്വതേയുള്ളത് ഉപയോഗിക്കുക ($1)",
- "timezoneuseoffset": "മറ്റുള്ളത് (എന്താണെന്നു നൽകുക)",
+ "timezoneuseoffset": "മറ്റുള്ളവ (എന്താണ് വ്യത്യാസമെന്ന് നൽകുക)",
+ "timezone-useoffset-placeholder": "ഉദാഹരണമായിട്ടുള്ള വിലകൾ: \"-07:00\" അല്ലെങ്കിൽ \"01:00\"",
"servertime": "സെർവർ സമയം:",
"guesstimezone": "സമയവ്യത്യാസം ബ്രൗസറിൽ നിന്നും ശേഖരിക്കൂ",
"timezoneregion-africa": "ആഫ്രിക്ക",
"grant-group-high-volume": "ഉയർന്ന തോതിലുള്ള പ്രവൃത്തികൾ നടത്തുക",
"grant-group-customization": "ഇച്ഛാനുസരണമാക്കലുകളും ക്രമീകരണങ്ങളും",
"grant-group-administration": "കാര്യനിർവ്വാഹക ജോലികൾ നടത്തുക",
+ "grant-group-private-information": "താങ്കളെക്കുറിച്ചുള്ള സ്വകാര്യവിവരങ്ങൾ എടുക്കുന്നു",
"grant-group-other": "വിവിധ പ്രവൃത്തികൾ",
"grant-blockusers": "ഉപയോക്താക്കളെ തടയുക, തടയൽ നീക്കുക",
"grant-createaccount": "അംഗത്വങ്ങൾ സൃഷ്ടിക്കുക",
"rcfilters-watchlist-edit-watchlist-button": "താങ്കൾ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടിക തിരുത്തുക",
"rcfilters-watchlist-showupdated": "മാറ്റങ്ങൾ ഉണ്ടായ ശേഷം താങ്കൾ സന്ദർശിക്കാത്ത താളുകളിലെ മാറ്റങ്ങൾ, തളിക അടയാളത്തോടൊപ്പം <strong>കടുപ്പിച്ച്</strong> കാണിച്ചിരിക്കുന്നു.",
"rcfilters-preference-label": "ജാവാസ്ക്രിപ്റ്റ്-രഹിത സമ്പർക്കമുഖം ഉപയോഗിക്കുക",
- "rcfilters-preference-help": "à´\85à´°à´¿à´ªàµ\8dà´ªà´\95à´³ും പ്രമുഖമാക്കിക്കാട്ടൽ സൗകര്യവും ഇല്ലാതെ സമീപകാലമാറ്റങ്ങൾ എടുക്കുക",
+ "rcfilters-preference-help": "à´\85à´°à´¿à´ªàµ\8dà´ªà´\95ൾ തിരയലും പ്രമുഖമാക്കിക്കാട്ടൽ സൗകര്യവും ഇല്ലാതെ സമീപകാലമാറ്റങ്ങൾ എടുക്കുക",
"rcfilters-watchlist-preference-label": "ജാവാസ്ക്രിപ്റ്റ്-രഹിത സമ്പർക്കമുഖം ഉപയോഗിക്കുക",
- "rcfilters-watchlist-preference-help": "à´\85à´°à´¿à´ªàµ\8dà´ªà´\95à´³ും പ്രമുഖമാക്കിക്കാട്ടൽ സൗകര്യവും ഇല്ലാതെ ശ്രദ്ധിക്കുന്നവയുടെ പട്ടിക എടുക്കുക.",
+ "rcfilters-watchlist-preference-help": "à´\85à´°à´¿à´ªàµ\8dà´ªà´\95ൾ തിരയലും പ്രമുഖമാക്കിക്കാട്ടൽ സൗകര്യവും ഇല്ലാതെ ശ്രദ്ധിക്കുന്നവയുടെ പട്ടിക എടുക്കുക.",
"rcfilters-filter-showlinkedfrom-label": "കണ്ണി ചേർക്കപ്പെട്ട താളുകളിലെ മാറ്റങ്ങൾ കാണിക്കുക",
"rcfilters-filter-showlinkedfrom-option-label": "തിരഞ്ഞെടുത്ത താളിൽ <strong>കണ്ണി ചേർക്കപ്പെട്ട താളുകൾ</strong>",
"rcfilters-filter-showlinkedto-label": "കണ്ണി ചേർക്കപ്പെട്ട താളുകളിലെ മാറ്റങ്ങൾ കാണിക്കുക",
"protectedtitles-submit": "തലക്കെട്ടുകൾ പ്രദർശിപ്പിക്കുക",
"listusers": "ഉപയോക്താക്കളുടെ പട്ടിക",
"listusers-editsonly": "തിരുത്തുകൾ ചെയ്തിട്ടുള്ള ഉപയോക്താക്കളെ മാത്രം കാണിക്കുക",
+ "listusers-temporarygroupsonly": "താത്കാലിക ഉപയോക്തൃസംഘങ്ങളിലുള്ള ഉപയോക്താക്കളെ മാത്രം പ്രദർശിപ്പിക്കുക",
"listusers-creationsort": "സൃഷ്ടിക്കപ്പെട്ട തീയതി അനുസരിച്ച് ക്രമീകരിക്കുക",
"listusers-desc": "അവരോഹണക്രമത്തിൽ ആക്കുക",
"usereditcount": "{{PLURAL:$1|ഒരു തിരുത്തൽ|$1 തിരുത്തലുകൾ}}",
"listgrouprights-namespaceprotection-namespace": "നാമമേഖല",
"listgrouprights-namespaceprotection-restrictedto": "ഉപയോക്താവിന് ഉപയോഗിക്കാവുന്ന അവകാശം (അവകാശങ്ങൾ)",
"listgrants": "അനുമതികൾ",
+ "listgrants-summary": "ഉപയോക്തൃ അവകാശങ്ങളുമായി ബന്ധപ്പെടുത്തിയുള്ള അനുമതികളുടെ പട്ടികയാണ് ഇനിക്കൊടുക്കുന്നത്. ഉപയോക്താക്കൾക്ക് ലഭ്യമായ അനുമതികൾ വീണ്ടും പരിമിതപ്പെടുത്തി, തങ്ങൾക്ക് വേണ്ടി ആപ്ലിക്കേഷനുകൾ പ്രവർത്തിപ്പിക്കാൻ ഉപയോക്താക്കൾക്ക് കഴിയുന്നതാണ്. ഒരു ഉപയോക്താവിന് വേണ്ടി പ്രവർത്തിക്കുന്ന ആപ്ലിക്കേഷന് ഉപയോക്താവിന് ലഭ്യമല്ലാത്ത ഒരു ഉപയോക്തൃ അവകാശം ഉപയോഗിക്കാൻ കഴിയുന്നതല്ല.\nവ്യക്തിഗത അവകാശങ്ങളെ കുറിച്ച് [[{{MediaWiki:Listgrouprights-helppage}}|അധിക വിവരങ്ങൾ]] ലഭ്യമായേക്കാവുന്നതാണ്.",
"listgrants-grant": "അനുമതി",
"listgrants-rights": "അവകാശങ്ങൾ",
"trackingcategories": "പിന്തുടരൽ വർഗ്ഗങ്ങൾ",
"pageinfo-display-title": "പ്രദർശിപ്പിക്കേണ്ട തലക്കെട്ട്",
"pageinfo-default-sort": "സ്വതേയുള്ള ക്രമപ്പെടുത്തൽ ചാവി",
"pageinfo-length": "താളിന്റെ നീളം (ബൈറ്റിൽ)",
+ "pageinfo-namespace": "നാമമേഖല",
"pageinfo-article-id": "താളിന്റെ ഐ.ഡി.",
"pageinfo-language": "താളിന്റെ ഉള്ളടക്കത്തിന്റെ ഭാഷ",
"pageinfo-language-change": "മാറ്റുക",
"version-specialpages": "പ്രത്യേക താളുകൾ",
"version-parserhooks": "പാഴ്സർ കൊളുത്തുകൾ",
"version-variables": "ചരങ്ങൾ",
+ "version-editors": "എഡിറ്റർമാർ",
"version-antispam": "പാഴെഴുത്ത് തടയൽ",
"version-other": "മറ്റുള്ളവ",
"version-mediahandlers": "മീഡിയ കൈകാര്യോപകരണങ്ങൾ",
"redirect-file": "പ്രമാണത്തിന്റെ പേര്",
"redirect-logid": "രേഖയുടെ ഐ.ഡി.",
"redirect-not-exists": "വില കണ്ടെത്താൻ കഴിഞ്ഞില്ല",
+ "redirect-not-numeric": "വില അക്കത്തിലല്ല",
"fileduplicatesearch": "ഒരേ പ്രമാണത്തിന്റെ പലപകർപ്പുകളുണ്ടോയെന്നു തിരയുക",
"fileduplicatesearch-summary": "ഒരേ പ്രമാണം തന്നെ വിവിധ പേരിലുണ്ടോയെന്നു ഹാഷ് വാല്യൂവധിഷ്ഠിതമായി തിരയുക.",
"fileduplicatesearch-filename": "പ്രമാണത്തിന്റെ പേര്:",
"log-action-filter-delete": "മായ്ക്കലിന്റെ തരം:",
"log-action-filter-import": "ഇറക്കുമതിയുടെ തരം:",
"log-action-filter-move": "മാറ്റലിന്റെ തരം:",
+ "log-action-filter-newusers": "അംഗത്വസൃഷ്ടിയുടെ തരം:",
+ "log-action-filter-patrol": "റോന്തുചുറ്റലിന്റെ തരം:",
+ "log-action-filter-protect": "സംരക്ഷണത്തിന്റെ തരം:",
+ "log-action-filter-rights": "അവകാശമാറ്റത്തിന്റെ തരം:",
+ "log-action-filter-suppress": "ഒതുക്കലിന്റെ തരം:",
+ "log-action-filter-upload": "അപ്ലോഡിന്റെ തരം:",
"log-action-filter-all": "എല്ലാം",
"log-action-filter-block-block": "തടയൽ",
"log-action-filter-block-reblock": "തടയലിൽ വരുത്തുന്ന മാറ്റം",
"log-action-filter-delete-revision": "നാൾപ്പതിപ്പ് മായ്ക്കൽ",
"log-action-filter-import-interwiki": "ട്രാൻസ്വിക്കി ഇറക്കുമതി",
"log-action-filter-import-upload": "എക്സ്.എം.എൽ. അപ്ലോഡ് വഴിയുള്ള ഇറക്കുമതി",
+ "log-action-filter-managetags-create": "ടാഗ് സൃഷ്ടി",
"log-action-filter-protect-protect": "സംരക്ഷണം",
"log-action-filter-protect-unprotect": "സംരക്ഷണമൊഴിവാക്കൽ",
"log-action-filter-protect-move_prot": "സംരക്ഷണം മാറ്റി",
"login": "सनोंद-प्रवेश(लॉग-ईन)",
"login-security": "तुमची ओळख पटवा",
"nav-login-createaccount": "सनोंद-प्रवेश / सदस्यखाते उघडा",
- "logout": "सनà¥\8bà¤\82द-निरà¥\8dà¤\97म",
- "userlogout": "सनà¥\8bà¤\82द-निरà¥\8dà¤\97म",
+ "logout": "बाहà¥\87र पडा",
+ "userlogout": "बाहà¥\87र पडा",
"notloggedin": "आपण सनोंद-प्रवेशित नाहीत",
"userlogin-noaccount": "आपले खाते नाही?",
"userlogin-joinproject": "{{SITENAME}}मध्ये सहभागी व्हा",
"defaultmessagetext": "अविचल संदेश मजकूर",
"content-failed-to-parse": "$2 चा आशय(कंटेंट) $1 साठी पार्स करण्यात असफलता - नमुना: $3",
"invalid-content-data": "अवैध माहिती",
- "content-not-allowed-here": "\"$1\" हा आशय [[:$2]] लेखावर टाकण्याची अनुमती नाही.",
+ "content-not-allowed-here": "\"$1\" हा आशय [[:$2]] लेखावर \"$3\" मध्ये टाकण्याची अनुमती नाही.",
"editwarning-warning": "या पानावरुन दुसर्या पानावर गेल्यास, तुम्ही येथे केलेले बदल जतन होणार नाहीत.\nजर आपण सनोंद-प्रवेशित असाल तर, ही सूचना घालवण्यासाठी ''{{int:prefs-editing}}'' मधील संपादनपसंतीत बदल करा.",
"editpage-invalidcontentmodel-title": "आशय प्रारुप सहाय्यीकृत नाही",
"editpage-invalidcontentmodel-text": "आशय प्रारुप \"$1\" हे सहाय्यीकृत नाही.",
"pageinfo-display-title": "दृश्य शीर्षक",
"pageinfo-default-sort": "डिफॉल्ट निवड-कळ (सॉर्ट कि)",
"pageinfo-length": "पानाचा आकार (बाइट्समध्ये)",
+ "pageinfo-namespace": "नामविश्व",
"pageinfo-article-id": "पृष्ठ-ओळखण",
"pageinfo-language": "पान-आशय भाषा",
"pageinfo-language-change": "बदल",
"log-action-filter-suppress-revision": "आवृत्ती दडपणे",
"log-action-filter-suppress-delete": "पान दडपणे",
"log-action-filter-suppress-block": "रोधामार्फत सदस्य दाबणे",
+ "authmanager-provider-password": "परवलीच्या शब्दाधारीत (पासवर्ड) अधिप्रमाणन",
"changecredentials": "अधिकारपत्रे (क्रेडेंटियल्स) बदला",
"changecredentials-submit": "अधिकारपत्रे (क्रेडेंटियल्स) बदला",
"removecredentials": "अधिकारपत्रे (क्रेडेंटियल्स) हटवा",
"removecredentials-submit": "अधिकारपत्रे (क्रेडेंटियल्स) हटवा",
+ "credentialsform-provider": "अधिकारपत्राचा प्रकार:",
+ "credentialsform-account": "खात्याचे नाव:",
"edit-error-short": "त्रुटी: $1",
"edit-error-long": "त्रुट्या:\n\n$1",
"revid": "आवृत्ती $1",
+ "gotointerwiki-invalid": "नमूद केलेले शीर्षक अवैध आहे.",
"passwordpolicies": "परवलीच्या शब्दांची नीती",
"passwordpolicies-summary": "ही, या विकिवरील व्याख्यिकृत सदस्य गटांसाठी असलेली व सध्या प्रभावात असलेल्या परवलीच्या शब्दांच्या नीतींची यादी आहे.",
"passwordpolicies-group": "गट",
"passwordpolicies-policy-passwordcannotmatchusername": "परवलीचा शब्द हा सदस्यनाव असू शकत नाही",
"passwordpolicies-policy-passwordcannotmatchblacklist": "परवलीच्या शब्दाचे,विशिष्ट काळ्या यादीत टाकलेल्या परवलीच्या शब्दाशी अनुरूपन (मॅच) असू शकत नाही.",
"passwordpolicies-policy-maximalpasswordlength": "परवलीचा शब्द हा $1 {{PLURAL:$1|अक्षरापेक्षा|अक्षरांपेक्षा}} कमी लांबीचा हवा",
- "passwordpolicies-policy-passwordcannotbepopular": "परवलीचा शब्द हा {{PLURAL:$1|the popular password|$1 प्रसिद्ध शब्दांच्या यादीतील असू शकत नाही}}"
+ "passwordpolicies-policy-passwordcannotbepopular": "परवलीचा शब्द हा {{PLURAL:$1|the popular password|$1 प्रसिद्ध शब्दांच्या यादीतील असू शकत नाही}}",
+ "passwordpolicies-policy-passwordnotinlargeblacklist": "परवलीचा शब्द हा १,००,००० सामान्यरित्या वापरण्यात येणाऱ्या परवलीच्या शब्दांच्या यादीत नको."
}
"nstab-project": "Проектэнь лопа",
"nstab-image": "Файла",
"nstab-mediawiki": "Сёрмине",
- "nstab-template": "Лопа парцун",
+ "nstab-template": "Лопапарцун",
"nstab-help": "Лезкс лопа",
"nstab-category": "Категория",
"mainpage-nstab": "Прявтлопа",
"copyrightwarning": "Инескеть кирдть мельсэ {{SITENAME}}-сэ весе путовкстнэнь, лововить нолдазекс ало $2 конёвонть коряс (вант $1 педе пес). Арась мелеть витневтемс-петневтемс сёрмадовксот педе пес, иляк сестэ путо сонзэ тезэнь.<br />\nИстяжо тезэнь материалонь максомсот, кемекстат тон тонсь сёрмадык сонзэ, али саик сонзэ вейсэнь ёнксто али олячинь порталсто.\n'''ИЛЯ МАКСО ВАНСТОНЬ ВИДЕЧИСЭ ЛОМАНЕНЬ ВАЖОДЕМАНТЬ АПАК КЕВКСТНЕ!'''",
"titleprotectedwarning": "'''ВАНОК: Те лопась пекстазь, сонзэ шкамга-теемга эрявить [[Special:ListGroupRights|башка видечить]].'''\nЖурналонь меельце сёрмадовксось максозь ало, эрявиндеряй сонзэ ваномс.",
"templatesused": "Те лопасонть тевс нолдазь {{PLURAL:$1|лопапарцун|лопапарцунт}}:",
- "templatesusedpreview": "Те икелькс вановкссонть тевс нолдазь {{PLURAL:$1|лопа парцун|лопа парцунт}}:",
+ "templatesusedpreview": "Те икелькс вановкссонть тевс нолдазь {{PLURAL:$1|лопапарцун|лопапарцунт}}:",
"templatesusedsection": "Те пелькссэнть тевс нолдазь {{PLURAL:$1|лопа парцунось|лопа парцунтнэ}}:",
"template-protected": "(ванстозь)",
"template-semiprotected": "(пельс ванстозь)",
"action-sendemail": "кучомс е-сёрмат",
"nchanges": "$1 {{PLURAL:$1|полавтнема|полавтнемат}}",
"enhancedrc-history": "путовксонзо-юронзо",
- "recentchanges": "Чияконь полавтнемат-лиякстомтомат",
+ "recentchanges": "Чиень полавтнемат-лиякстомтомат",
"recentchanges-legend": "Улконь полавтнематнень аравтнемаст",
"recentchanges-summary": "",
"recentchanges-feed-description": "Мельга ваннынк кода ульнесть витьнемат-петнемат wiki-сэ те максовксонть.",
"tooltip-n-randompage": "Макста ловномс кодамо понгсь лопа",
"tooltip-n-help": "Превс путыть косо.",
"tooltip-t-whatlinkshere": "Викинь весе лопатне, конат тезэнь сюлмазь",
- "tooltip-t-recentchangeslinked": "Чияконь полавтнемат сеть лопатнесэ, конат сюлмазь те лопанть марто",
+ "tooltip-t-recentchangeslinked": "Чиень полавтнемат сеть лопатнесэ, конат сюлмазь те лопанть марто",
"tooltip-feed-rss": "\"RSS\" чидикерькске те лопантень",
"tooltip-feed-atom": "Атом лезкс те лопантень",
"tooltip-t-contributions": "Невтть мезе {{GENDER:$1|те теицясь}} полавтсь",
"tooltip-ca-nstab-special": "Те башка тевень лопась, те лопанть а витнесак-петнесак",
"tooltip-ca-nstab-project": "Ваннынк проетной лопанть",
"tooltip-ca-nstab-image": "Ванык файлань лопанть",
- "tooltip-ca-nstab-mediawiki": "Ваномс системань пачтямнэнть",
- "tooltip-ca-nstab-template": "Ванномс лопа парцунонть",
+ "tooltip-ca-nstab-mediawiki": "Ваномс системань пачтямненть",
+ "tooltip-ca-nstab-template": "Ванномс лопапарцунонть",
"tooltip-ca-nstab-help": "Ванномс лездамонь лопанть",
"tooltip-ca-nstab-category": "Варштынк категориянь лопатьнень",
"tooltip-minoredit": "Тешкстынк тень, сон вишкинесте витнезь-петнезь",
"spambot_username": "MediaWiki-нь шукшто ванькскавтома",
"pageinfo-header-basic": "Васень информациязо",
"pageinfo-header-edits": "Витнемс-петнемс юронзо-путовксонзо",
+ "pageinfo-header-restrictions": "Лопанть ванстоманзо",
"pageinfo-header-properties": "Лопанть уликсчинзэ",
"pageinfo-display-title": "Коняксонть таргамс лангс",
+ "pageinfo-article-id": "Лопа ID",
+ "pageinfo-robot-index": "Маштови",
+ "pageinfo-few-watchers": "$1 эли седе ламо {{PLURAL:$1|ваныцянзо}} арасть",
"pageinfo-subpages-name": "Те лопанть явкслопанзо",
+ "pageinfo-firstuser": "Лопанть шкицязо",
+ "pageinfo-firsttime": "Лопась шказель",
+ "pageinfo-lastuser": "Меельцеде витнизе-петнизе",
+ "pageinfo-lasttime": "Меельцеде витнезель-петнезель",
"pageinfo-edits": "Зяроксть витнезь-петнезь",
"pageinfo-authors": "Весемезэ зяро авторонзо",
"pageinfo-toolboxlink": "Лопадо иформация",
+ "pageinfo-contentpage": "Текст марто лопакс ловови",
+ "pageinfo-contentpage-yes": "Истя",
"markaspatrolleddiff": "Тешкстамс ванстнемань ютазекс",
"markaspatrolledtext": "Тешкстамс те лопанть ванстнемань ютазекс",
"markedaspatrolled": "Тешкстазь ванстнемань ютазекс",
"htmlform-reset": "Саемс мекев полавтоматнень",
"htmlform-selectorother-other": "Лия",
"logentry-delete-delete": "$1 {{GENDER:$2|нардызе}} $3 лопанть",
+ "revdelete-content-hid": "текстэнзэ-фотокувонзо кекшезь",
"logentry-move-move": "$1 {{GENDER:$2|печтявтызе}} $3 лопанть $4 лопакс",
"logentry-newusers-create": "Совамо тарка $1 {{GENDER:$2|шказь}}",
"logentry-upload-upload": "$1 {{GENDER:$2|ёвкстызе}} $3 файланть",
"loginlanguagelabel": "Gí-giân: $1",
"pt-login": "Teng-ji̍p",
"pt-login-button": "Teng-ji̍p",
+ "pt-login-continue-button": "Kè-sio̍k teng-ji̍p",
"pt-createaccount": "Khui sin kháu-chō",
"pt-userlogout": "Teng-chhut",
"user-mail-no-addy": "Siūⁿ beh kià tiān-chú-phoe, m̄-koh bô siá tē-chí.",
"Telaneo",
"Jon Harald Søby",
"Fitoschido",
- "Orf3us"
+ "Orf3us",
+ "Pyscowicz"
]
},
"tog-underline": "Strek under lenker:",
"expansion-depth-exceeded-warning": "De pagina bevat te veel sjablonen",
"parser-unstrip-loop-warning": "Er is een \"unstrip\"-lus gedetecteerd",
"unstrip-depth-warning": "De recursielimiet ($1) voor \"unstrip\" is overschreden",
- "unstrip-depth-category": "Pagina's waar de \"unstrip\" dieptelimiet is overschreden.",
+ "unstrip-depth-category": "Pagina's waar de \"unstrip\"-dieptelimiet is overschreden",
"unstrip-size-warning": "De groottelimiet ($1) voor \"unstrip\" is overschreden",
- "unstrip-size-category": "Pagina's waar de \"unstrip\" groottelimiet is overschreden",
+ "unstrip-size-category": "Pagina's waar de \"unstrip\"-groottelimiet is overschreden",
"converter-manual-rule-error": "Er is een fout gedetecteerd in een handmatig toegevoegde taalconversieregel.",
"undo-success": "Deze bewerking kan ongedaan gemaakt worden.\nHieronder staat de tekst waarin de wijziging ongedaan is gemaakt.\nControleer voor het opslaan of het resultaat gewenst is.",
"undo-failure": "De wijziging kan niet ongedaan gemaakt worden vanwege andere strijdige wijzigingen.",
"limitreport-templateargumentsize-value": "$1 / $2 {{PLURAL:$2|byte|bytes}}",
"limitreport-expansiondepth": "Hoogste uitbreidingsdiepte",
"limitreport-expensivefunctioncount": "Aantal kostbare parserfuncties",
- "limitreport-unstrip-depth": "\"Unstrip\" recursiediepte",
- "limitreport-unstrip-size": "\"Unstrip\" grootte na uitbreiden",
+ "limitreport-unstrip-depth": "\"Unstrip\"-recursiediepte",
+ "limitreport-unstrip-size": "\"Unstrip\"-grootte na uitbreiden",
"limitreport-unstrip-size-value": "$1/$2 {{PLURAL:$2|byte|bytes}}",
"expandtemplates": "Sjablonen substitueren",
"expand_templates_intro": "Deze speciale pagina leest de opgegeven wikitekst in en substitueert recursief alle sjablonen in de wikitekst.\nHet substitueert ook alle parserfuncties zoals\n<code><nowiki>{{</nowiki>#language:…}}</code> en\nvariabelen als <code><nowiki>{{</nowiki>CURRENTDAY}}</code>.\nVrijwel alles tussen dubbele accolades wordt gesubstitueerd.",
"userlogout": "Logg ut",
"notloggedin": "Ikkje innlogga",
"userlogin-noaccount": "Har du ingen konto?",
- "userlogin-joinproject": "Vert med på {{SITENAME}}",
+ "userlogin-joinproject": "Ta del i {{SITENAME}}",
"createaccount": "Opprett ny konto",
"userlogin-resetpassword-link": "Gløymt passordet ditt?",
"userlogin-helplink2": "Hjelp med innlogging",
"sp-contributions-newbies-title": "Brukarbidrag av nye brukarar",
"sp-contributions-blocklog": "blokkeringslogg",
"sp-contributions-deleted": "sletta brukarbidrag",
- "sp-contributions-uploads": "↓opplastingar",
+ "sp-contributions-uploads": "opplastingar",
"sp-contributions-logs": "loggar",
"sp-contributions-talk": "diskusjon",
"sp-contributions-userrights": "administrering av brukartilgang",
"search-error": "د لټون په وخت کې یوه تېروتنه رامنځته شوه: $1",
"search-warning": "د لټون کولو په وخت کې یو خبرداری راغلی دی:$1",
"preferences": "غوره توبونه",
- "mypreferences": "غÙ\88رÙ\87 تÙ\88بÙ\88Ù\86Ù\87",
+ "mypreferences": "تÙ\86ظÙ\8aÙ\85ات",
"prefs-edits": "د سمونو شمېر:",
"prefsnologintext2": "د غوره توبونو بدلولو لپاره مو غونډال ته ننوځئ.",
"prefs-skin": "پوښۍ",
"rcfilters-other-review-tools": "د بیاکتنې نور وسايل",
"rcfilters-group-results-by-page": "د ګروپ پایلې د پاڼې لخوا",
"rcfilters-activefilters": "فعال فيلټرونه",
+ "rcfilters-activefilters-hide": "پټول",
+ "rcfilters-activefilters-show": "ښکاره کول",
"rcfilters-advancedfilters": "پرمختللي فلټرونه",
"rcfilters-limit-title": "د ښودلو لپاره بدلونونه",
"rcfilters-limit-and-date-label": "{{PLURAL:$1|بدلونونه|$1 بدلونونه}}، $2",
"createaccountblock": "په گڼون جوړولو بنديز لگېدلی",
"emailblock": "پر برېښليک بنديز ولگېد",
"blocklist-nousertalk": "د خبرواترو خپل مخ نه شی سمولای",
+ "blocklist-editing": "سمېدنې کې دی",
"ipblocklist-empty": "د بنديز لړليک تش دی",
"ipblocklist-no-results": "پر غوښتل شوي آي پي پتې باندې بنديز نه دي لګول شوي.",
"blocklink": "بنديز لگول",
"confirm-unwatch-button": "ښه",
"confirm-unwatch-top": "همدا مخ خپل کتنلړ څخه لرې کوې؟",
"confirm-rollback-button": "هوکې",
+ "comma-separator": "، ",
"percent": "$1%",
"parentheses": "($1)",
"brackets": "[$1]",
"hidden-category-category": "Categorias ocultas",
"category-subcat-count": "{{PLURAL:$2|Esta categoria possui apenas a seguinte subcategoria.|Esta categoria possui {{PLURAL:$1|a seguinte subcategoria|as seguintes $1 subcategorias}}, de um total de $2.}}",
"category-subcat-count-limited": "Esta categoria possui {{PLURAL:$1|a seguinte subcategoria|as $1 subcategorias a seguir}}.",
- "category-article-count": "{{PLURAL:$2|Esta categoria contém apenas a seguinte página.|{{PLURA:$1|A seguinte página pertence|As seguintes $1 páginas pertencem}} a esta categoria, de um total de $2.}}",
+ "category-article-count": "{{PLURAL:$2|Esta categoria contém apenas a seguinte página.|{{PLURAL:$1|A seguinte página pertence|As seguintes $1 páginas pertencem}} a esta categoria, de um total de $2.}}",
"category-article-count-limited": "Esta categoria possui {{PLURAL:$1|a seguinte página|as $1 páginas a seguir}}.",
"category-file-count": "{{PLURAL:$2|Esta categoria possui apenas o seguinte arquivo.|Esta categoria possui {{PLURAL:$1|o seguinte arquivo|os $1 arquivos a seguir}}, de um total de $2.}}",
"category-file-count-limited": "Esta categoria possui {{PLURAL:$1|um arquivo|$1 arquivos}}.",
"changepassword-success": "'A password toje ha state cangiate!",
"changepassword-throttled": "Tu è pruvate 'nu sacche de vote a trasè.\nPe piacere aspitte $1 apprime de pruvà arrete.",
"botpasswords": "Password d'u bot",
+ "botpasswords-summary": "<em>Passuord bot</em> permette l'ause a 'nu cunde ausanne le API, senze ausà le credenziale de accesse prengepàle. Le deritte de l'utende disponibbele quanne se ave trasute cu 'na passuord bot ponne essere limitate.\n\nCe non ge canusce 'u mutive purcé puè fa sta cose, allore probbabbilmende non ge l'ha fà. Nisciune t'addà cercà de generà 'na passuord bot pe pò darle a otre crestiane.",
"botpasswords-disabled": "Le passuord bot so disabbilitate.",
"botpasswords-no-central-id": "Pe ausà 'na passuor bot, a trasè a 'nu utende cendralizzate.",
"botpasswords-existing": "Passuord de le bot esistende",
"usercssyoucanpreview": "'''Conziglie:''' Ause 'u buttone \"{{int:showpreview}}\" pe condrollà 'u CSS nuève apprime de reggistrà.",
"userjsyoucanpreview": "'''Conziglie:''' Ause 'u buttone \"{{int:showpreview}}\" pe condrollà 'u JavaScript nuève apprime de reggistrà.",
"usercsspreview": "'''Arrecuerdete ca tu ste vide sulamende in andeprime 'u CSS tue.'''\n'''Non g'à state angore reggistrete ninde!'''",
+ "userjsonpreview": "<strong>Arrecuerdete ca tu ste teste/'ndruche sulamende in andeprime 'a configurazione JSON tue.\nNon g'à state angore reggistrete ninde!</strong>",
"userjspreview": "'''Arrecuerdete ca tu ste vide/teste sulamende in andeprime 'u JavaScript tue.'''\n'''Non g'à state angore reggistrete ninde!'''",
"sitecsspreview": "'''Arrecuerdete ca tu ste vide sulamende in andeprime 'u CSS tune.'''\n'''Non g'à state angore reggistrate ninde!'''",
+ "sitejsonpreview": "<strong>Arrecuerdete ca tu ste 'ndruche sulamende in andeprime 'a configurazione JSON tue.\nNon g'à state angore reggistrete ninde!</strong>",
"sitejspreview": "'''Arrecuerdete ca tu ste vide sulamende in andeprime 'u codece JavaScript tune.'''\n'''Non g'à state angore reggistrate ninde!'''",
"userinvalidconfigtitle": "<strong>Attenziò:</strong> Non ge stè 'nu skin \"$1\".\nArrecuerdete ca jndr'à le file personalizzete .css, .json e .js s'ause scrivere le titele cu le lettere piccenne, pe esembie {{ns:user}}:Foo/vector.css è diverse da {{ns:user}}:Foo/Vector.css.",
"updated": "(Cangiete)",
]
},
"tog-underline": "Подчёркивание ссылок:",
- "tog-hideminor": "СкÑ\80Ñ\8bваÑ\82Ñ\8c малÑ\8bе пÑ\80авки из поÑ\81ледниÑ\85 изменений",
+ "tog-hideminor": "СкÑ\80Ñ\8bваÑ\82Ñ\8c малÑ\8bе изменениÑ\8f из Ñ\81пиÑ\81ка Ñ\81вежиÑ\85 пÑ\80авок",
"tog-hidepatrolled": "Скрывать патрулированные правки в списке свежих правок",
"tog-newpageshidepatrolled": "Скрывать отпатрулированные страницы в списке новых страниц",
"tog-hidecategorization": "Скрывать категоризацию страниц",
"tog-showhiddencats": "Показывать скрытые категории",
"tog-norollbackdiff": "Не показывать разницу версий после выполнения отката",
"tog-useeditwarning": "Предупреждать, когда я покидаю страницу с несохранёнными изменениями",
- "tog-prefershttps": "\nВсегда используйте безопасное соединение при входе в систему",
+ "tog-prefershttps": "Всегда использовать защищённое соединение после представления системе",
"underline-always": "Всегда",
"underline-never": "Никогда",
"underline-default": "Использовать настройки браузера",
"helppage-top-gethelp": "Помощь",
"mainpage": "Заглавная страница",
"mainpage-description": "Заглавная страница",
- "policy-url": "Project:Политика вики",
+ "policy-url": "Project:Правила",
"portal": "Портал сообщества",
"portal-url": "Project:Портал сообщества",
"privacy": "Политика конфиденциальности",
"pagetitle": "$1 — {{SITENAME}}",
"pagetitle-view-mainpage": "{{SITENAME}}",
"backlinksubtitle": "← $1",
- "retrievedfrom": "Ð\9fолÑ\83Ñ\87ено оÑ\82 \"$1\"",
+ "retrievedfrom": "Ð\98Ñ\81Ñ\82оÑ\87ник â\80\94 $1",
"youhavenewmessages": "{{PLURAL:$3|Вы получили}} $1 ($2).",
"youhavenewmessagesfromusers": "{{PLURAL:$4|Вы получили}} $1 от {{PLURAL:$3|$3 участника|$3 участников|1=другого участника}} ($2).",
"youhavenewmessagesmanyusers": "Вы получили $1 от множества пользователей ($2).",
"collapsible-expand": "развернуть",
"confirmable-confirm": "{{GENDER:$1|Вы}} уверены?",
"confirmable-yes": "Да",
- "confirmable-no": "нет",
+ "confirmable-no": "Ð\9dет",
"thisisdeleted": "Просмотреть или восстановить $1?",
"viewdeleted": "Просмотреть $1?",
"restorelink": "{{PLURAL:$1|$1 удалённую правку|$1 удалённые правки|$1 удалённых правок|1=удалённую правку}}",
"sort-descending": "Упорядочить по убыванию",
"sort-ascending": "Упорядочить по возрастанию",
"nstab-main": "Статья",
- "nstab-user": "\nСтраница пользователя",
+ "nstab-user": "{{GENDER:{{ROOTPAGENAME}}|Участник|Участница}}",
"nstab-media": "Мультимедиа",
"nstab-special": "Служебная страница",
"nstab-project": "О проекте",
"accmailtext": "Сгенерированный случайным образом пароль для [[User talk:$1|$1]] выслан на адрес $2.\n\nПосле авторизации можно будет сменить пароль для этой учётной записи на ''[[Special:ChangePassword|специальной странице смены пароля]]''.",
"newarticle": "(Новая)",
"newarticletext": "Вы перешли по ссылке на страницу, которой пока не существует.\nЧтобы её создать, наберите текст в окне, расположенном ниже (подробнее см. [$1 справочную страницу]).\nЕсли вы оказались здесь по ошибке, просто нажмите кнопку '''назад''' своего браузера.",
- "anontalkpagetext": "----\n<em>Эта страница обсуждения анонимного участника, который ещё не создал учётной записи или не использует её.</em>\nПоэтому мы вынуждены для его/её идентификации использовать цифровой IP-адрес.\nЭтот же адрес может использоваться нескольким другим участникам.\nЕсли вы анонимный участник и полагаете, что получили сообщения, адресованные не вам, пожалуйста, [[Special:CreateAccount|создайте учётную запись]] или [[Special:UserLogin|представьтесь системе]], чтобы впредь избежать возможной путаницы с другими анонимными участниками.",
+ "anontalkpagetext": "----\n<em>Эта страница обсуждения анонимного участника, который ещё не создал учётной записи или не использует её.</em>\nПоэтому мы вынуждены для его/её идентификации использовать цифровой IP-адрес.\nЭтот же адрес может использоваться несколькими участниками.\nЕсли вы анонимный участник и полагаете, что получили сообщения, адресованные не вам, пожалуйста, [[Special:CreateAccount|создайте учётную запись]] или [[Special:UserLogin|представьтесь системе]], чтобы впредь избежать возможной путаницы с другими анонимными участниками.",
"noarticletext": "В настоящий момент текст на данной странице отсутствует.\nВы можете [[Special:Search/{{PAGENAME}}|найти упоминание данного названия]] на других страницах,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} найти соответствующие записи журналов]\nили '''[{{fullurl:{{FULLPAGENAME}}|action=edit}} создать страницу с таким названием]'''</span>.",
"noarticletext-nopermission": "В настоящее время на этой странице нет текста.\nВы можете [[Special:Search/{{PAGENAME}}|найти упоминание данного названия]] на других страницах,\nили <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} найти соответствующие записи журналов].</span> У вас нет разрешения создать данную страницу.",
"missing-revision": "Версия $1 страницы «{{FULLPAGENAME}}» не существует.\n\nОбычно это бывает, если проследовать по устаревшей ссылке на удалённую страницу.\nПодробности могут быть в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале удалений].",
"showingresultsinrange": "Ниже показано до {{PLURAL:$1|<strong>1</strong> результата|<strong>$1</strong> результата|<strong>$1</strong> результатов}} в диапазоне от <strong>$2</strong> до <strong>$3</strong>.",
"search-showingresults": "{{PLURAL:$4|1=Результат <strong>$1</strong> из <strong>$3</strong>|Результаты <strong>$1—$2</strong> из <strong>$3</strong>}}",
"search-nonefound": "Соответствий запросу не найдено.",
- "search-nonefound-thiswiki": "Нет результатов, соответствующих запросу на этом сайте.",
+ "search-nonefound-thiswiki": "Нет результатов, соответствующих запросу, на этом сайте.",
"powersearch-legend": "Расширенный поиск",
"powersearch-ns": "Поиск в пространствах имён:",
"powersearch-togglelabel": "Отметить:",
"pool-servererror": "ဢၼ်ပဵၼ်ၼႃႈၵၢၼ် တူဝ်ဢၢၼ်ႇၼွင်ၼၼ်ႉ မၼ်းဢမ်ႇႁဵတ်းၵၢၼ် ($1).",
"poolcounter-usage-error": "ၵၢၼ်ၸႂ်ႉၸိုဝ်း ၽိတ်းပိူင်ႈ: $1",
"aboutsite": "လွင်ႈတၢင်း {{SITENAME}}",
- "aboutpage": "Project: လွင်ႈဝႅပ်ႉသႆႉ",
+ "aboutpage": "Project:လွင်ႈဝႅပ်ႉသၢႆႉ",
"copyright": "ၸိူဝ်းၶဝ်ႈပႃးဝႆႉၼႆႉ မၼ်းတေၸၢင်ႈၸႂ်ႉလႆႈ ၵႃႈတီႈ ဝႂ် $1",
"copyrightpage": "{{ns:project}}:သုၼ်ႇထုတ်ႇ",
"currentevents": "ၵၢၼ်ႁဵတ်းသၢင်ႈယၢမ်းလဵဝ်",
"tog-minordefault": "Подразумевано означавај све измене као мање",
"tog-previewontop": "Прикажи претпреглед пре оквира за уређивање",
"tog-previewonfirst": "Прикажи претпреглед при првој измени",
- "tog-enotifwatchlistpages": "Ð\9fоÑ\88аÑ\99и ми имеÑ\98л када се промени страница или датотека са мог списка надгледања",
- "tog-enotifusertalkpages": "Ð\9fоÑ\88аÑ\99и ми имеÑ\98л кад се промени моја корисничка страница за разговор",
- "tog-enotifminoredits": "ТакоÑ\92е ми поÑ\88аÑ\99и имеÑ\98л код мањих измена страница и датотека",
- "tog-enotifrevealaddr": "Ð\9eÑ\82кÑ\80иÑ\98 моÑ\98Ñ\83 имеÑ\98л-адÑ\80еÑ\81Ñ\83 Ñ\83 имеÑ\98ловима обавеÑ\88Ñ\82еÑ\9aа",
+ "tog-enotifwatchlistpages": "Ð\9fоÑ\88аÑ\99и ми е-поÑ\80Ñ\83кÑ\83 када се промени страница или датотека са мог списка надгледања",
+ "tog-enotifusertalkpages": "Ð\9fоÑ\88аÑ\99и ми е-поÑ\80Ñ\83кÑ\83 кад се промени моја корисничка страница за разговор",
+ "tog-enotifminoredits": "Ð\9fоÑ\88аÑ\99и ми е-поÑ\80Ñ\83кÑ\83 и код мањих измена страница и датотека",
+ "tog-enotifrevealaddr": "Ð\9eÑ\82кÑ\80иÑ\98 моÑ\98Ñ\83 адÑ\80еÑ\81Ñ\83 е-поÑ\88Ñ\82е Ñ\83 е-поÑ\80Ñ\83кама за обавеÑ\88Ñ\82аваÑ\9aе",
"tog-shownumberswatching": "Прикажи број корисника који надгледају",
"tog-oldsig": "Ваш постојећи потпис:",
"tog-fancysig": "Сматрај потпис као викитекст (без аутоматског повезивања)",
"tog-watchlisthideanons": "Сакриј измене анонимних корисника са списка надгледања",
"tog-watchlisthidepatrolled": "Сакриј патролиране измене са списка надгледања",
"tog-watchlisthidecategorization": "Сакриј категоризацију страница",
- "tog-ccmeonemails": "Ð\9fоÑ\88аÑ\99и ми копиÑ\98е имеÑ\98лова које пошаљем другим корисницима",
+ "tog-ccmeonemails": "Ð\9fоÑ\88аÑ\99и ми копиÑ\98е е-поÑ\80Ñ\83ка које пошаљем другим корисницима",
"tog-diffonly": "Не приказуј садржај странице испод разлика",
"tog-showhiddencats": "Прикажи скривене категорије",
"tog-norollbackdiff": "Не приказуј разлику након извршеног враћања",
"navigation-heading": "Мени за навигацију",
"errorpagetitle": "Грешка",
"returnto": "Назад на страницу „$1”.",
- "tagline": "Из {{GRAMMAR:генитив|{{SITENAME}}}}",
+ "tagline": "Извор: {{SITENAME}}",
"help": "Помоћ",
"help-mediawiki": "Помоћ о MediaWiki-ју",
"search": "Претрага",
"toolbox": "Алатке",
"tool-link-userrights": "Промена {{GENDER:$1|корисничких}} група",
"tool-link-userrights-readonly": "Приказ {{GENDER:$1|корисничких}} група",
- "tool-link-emailuser": "СлаÑ\9aе имеÑ\98ла {{GENDER:$1|коÑ\80иÑ\81никÑ\83|коÑ\80иÑ\81ници}}",
+ "tool-link-emailuser": "СлаÑ\9aе е-поÑ\80Ñ\83ке {{GENDER:$1|коÑ\80иÑ\81никÑ\83|коÑ\80иÑ\81ниÑ\86и|коÑ\80иÑ\81никÑ\83/ци}}",
"imagepage": "Прикажи страницу датотеке",
"mediawikipage": "Прикажи страницу поруке",
"templatepage": "Прикажи страницу шаблона",
"pool-errorunknown": "Непозната грешка",
"pool-servererror": "Услуга бројача редова није доступна ($1).",
"poolcounter-usage-error": "Грешка при употреби: $1",
- "aboutsite": "О {{GRAMMAR:датив|{{SITENAME}}}}",
- "aboutpage": "Project:О_{{GRAMMAR:датив|{{SITENAME}}}}",
+ "aboutsite": "О пројекту {{SITENAME}}",
+ "aboutpage": "Project:О_пројекту_{{SITENAME}}",
"copyright": "Садржај је доступан под лиценцом $1 осим ако је другачије наведено.",
"copyrightpage": "{{ns:project}}:Ауторска права",
"currentevents": "Актуелности",
"protectedpagetext": "Ова страница је закључана за измене и друге радње.",
"viewsourcetext": "Можете да видите и копирате извор ове странице.",
"viewyourtext": "Можете да видите и копирате извор <strong>ваших измена</strong> на овој страници.",
- "protectedinterface": "Ова страница садржи текст интерфејса за софтвер на овом викију и заштићена је ради спречавања злоупотребе.\nДа бисте додали или променили преводе било којег викија, посетите [https://translatewiki.net/ translatewiki.net], пројекат за локализацију Медијавикија.",
- "editinginterface": "<strong>Упозорење:</strong> уређујете страницу која се користи за приказивање текста корисничког окружења.\nИзмене на овој страници ће утицати на све кориснике овог викија.",
+ "protectedinterface": "Ова страница обезбеђује текст интерфејса за софтвер на овом викију и заштићена је ради спречавања злоупотребе.\nДа бисте додали или променили преводе свих викија, посетите [https://translatewiki.net/ translatewiki.net], пројекат за локализацију MediaWiki-ја.",
+ "editinginterface": "<strong>Упозорење:</strong> Уређујете страницу која се користи за обезбеђивање текста интерфејса за софтвер.\nПромене на овој страници утицаће на изглед корисничког интерфејса других корисника овог викија.",
"translateinterface": "Да бисте додали или променили преводе за све викије, посетите [https://translatewiki.net/ translatewiki.net], пројекат за локализацију Медијавикија.",
"cascadeprotected": "Ова страница је закључана јер садржи {{PLURAL:$1|следећу страницу која је заштићена|следеће странице које су заштићене}} „преносивом“ заштитом:\n$2",
"namespaceprotected": "Немате дозволу да уређујете странице у именском простору: <strong>$1</strong>.",
"userlogout": "Одјава",
"notloggedin": "Нисте пријављени",
"userlogin-noaccount": "Немате налог?",
- "userlogin-joinproject": "Придружите се {{GRAMMAR:датив|{{SITENAME}}}}",
+ "userlogin-joinproject": "Придружите се пројекту {{SITENAME}}",
"createaccount": "Отварање налога",
"userlogin-resetpassword-link": "Заборавили сте лозинку?",
"userlogin-helplink2": "Помоћ при пријављивању",
"userlogin-loggedin": "Већ сте пријављени као {{GENDER:$1|$1}}.\nКористите доњи образац да бисте се пријавили као други корисник.",
"userlogin-reauth": "Морате да се поново пријавите да бисте верификовали да сте {{GENDER:$1|$1}}.",
"userlogin-createanother": "Отвори још један налог",
- "createacct-emailrequired": "Ð\98меÑ\98л-адÑ\80еÑ\81а",
- "createacct-emailoptional": "Ð\98меÑ\98л-адÑ\80еÑ\81а (опционално)",
- "createacct-email-ph": "УнеÑ\81иÑ\82е имеÑ\98л-адÑ\80еÑ\81Ñ\83",
- "createacct-another-email-ph": "УнеÑ\81иÑ\82е имеÑ\98л-адÑ\80еÑ\81Ñ\83",
- "createaccountmail": "Ð\9aоÑ\80иÑ\81Ñ\82и пÑ\80ивÑ\80еменÑ\83, наÑ\81Ñ\83миÑ\87нÑ\83 лозинкÑ\83 и поÑ\88аÑ\99и Ñ\98е на наведенÑ\83 имеÑ\98л-адÑ\80еÑ\81Ñ\83",
+ "createacct-emailrequired": "Ð\90дÑ\80еÑ\81а е-поÑ\88Ñ\82е",
+ "createacct-emailoptional": "Ð\90дÑ\80еÑ\81а е-поÑ\88Ñ\82е (опционално)",
+ "createacct-email-ph": "УнеÑ\81иÑ\82е адÑ\80еÑ\81Ñ\83 е-поÑ\88Ñ\82е",
+ "createacct-another-email-ph": "УнеÑ\81иÑ\82е адÑ\80еÑ\81Ñ\83 е-поÑ\88Ñ\82е",
+ "createaccountmail": "Ð\9aоÑ\80иÑ\81Ñ\82и пÑ\80ивÑ\80еменÑ\83, наÑ\81Ñ\83миÑ\87нÑ\83 лозинкÑ\83 и поÑ\88аÑ\99и Ñ\98е на наведенÑ\83 адÑ\80еÑ\81Ñ\83 е-поÑ\88Ñ\82е",
"createaccountmail-help": "Може се користити да се некоме отвори налог без сазнања лозинке.",
"createacct-realname": "Право име (опционално)",
"createacct-reason": "Разлог",
"password-name-match": "Лозинка се мора разликовати од корисничког имена.",
"password-login-forbidden": "Коришћење овог корисничког имена и лозинке је забрањено.",
"mailmypassword": "Ресетуј лозинку",
- "passwordremindertitle": "Нова привремена лозинка за {{GRAMMAR:акузатив|{{SITENAME}}}}",
+ "passwordremindertitle": "{{SITENAME}} — привремена лозинка",
"passwordremindertext": "Неко са IP адресе $1 је затражио нову лозинку на викију {{SITENAME}} ($4).\nСтворена је привремена лозинка за {{GENDER:$2|корисника|корисницу|корисника}} $2 која гласи $3.\nУколико је ово ваш захтев, сада се пријавите и поставите нову лозинку.\nПривремена лозинка истиче за {{PLURAL:$5|један дан|$5 дана}}.\n\nАко је неко други затражио промену лозинке, или сте се сетили ваше лозинке и не желите да је мењате, занемарите ову поруку.",
- "noemail": "Не постоји имејл-адреса за {{GENDER:$1|корисника|корисницу}} $1.",
- "noemailcreate": "Ð\9cоÑ\80аÑ\82е да наведеÑ\82е важеÑ\9bÑ\83 имеÑ\98л-адÑ\80еÑ\81Ñ\83.",
- "passwordsent": "Ð\9dова лозинка Ñ\98е поÑ\81лаÑ\82а на имеÑ\98л-адÑ\80еÑ\81Ñ\83 {{GENDER:$1|коÑ\80иÑ\81ника|коÑ\80иÑ\81нице}} $1.\nПоново се пријавите након што је примите.",
+ "noemail": "{{GENDER:$1|Корисник „$1” није навео|Корисница „$1” није навела|Корисник/ца „$1” није навео/ла}} адресу е-поште.",
+ "noemailcreate": "Ð\9cоÑ\80аÑ\82е да наведеÑ\82е важеÑ\9bÑ\83 адÑ\80еÑ\81Ñ\83 е-поÑ\88Ñ\82е.",
+ "passwordsent": "Ð\9dова лозинка Ñ\98е поÑ\81лаÑ\82а на адÑ\80еÑ\81Ñ\83 е-поÑ\88Ñ\82е {{GENDER:$1|коÑ\80иÑ\81ника|коÑ\80иÑ\81ниÑ\86е|коÑ\80иÑ\81ника/це}} $1.\nПоново се пријавите након што је примите.",
"blocked-mailpassword": "Уређивање са ваше IP адресе је блокирано. Ради спречавања злоупотребе, забрањена је и функција враћања лозинке са ње.",
- "eauthentsent": "Ð\98меÑ\98л о поÑ\82вÑ\80ди Ñ\98е поÑ\81лаÑ\82 на наведенÑ\83 имеÑ\98л-адÑ\80еÑ\81Ñ\83.\nÐ\9fÑ\80е било коÑ\98иÑ\85 дÑ\80Ñ\83гиÑ\85 Ñ\81лаÑ\9aа имеÑ\98лова на налог, моÑ\80аÑ\9bеÑ\82е пÑ\80аÑ\82иÑ\82и Ñ\83пÑ\83Ñ\82Ñ\81Ñ\82ва Ñ\83 имеÑ\98лÑ\83 да бисте потврдили да је налог заиста ваш.",
+ "eauthentsent": "Ð\95-поÑ\80Ñ\83ка о поÑ\82вÑ\80ди Ñ\98е поÑ\81лаÑ\82а на наведенÑ\83 адÑ\80еÑ\81Ñ\83 е-поÑ\88Ñ\82е.\nÐ\9fÑ\80е било коÑ\98иÑ\85 дÑ\80Ñ\83гиÑ\85 Ñ\81лаÑ\9aа е-поÑ\80Ñ\83ка на налог, моÑ\80аÑ\9bеÑ\82е пÑ\80аÑ\82иÑ\82и Ñ\83пÑ\83Ñ\82Ñ\81Ñ\82ва Ñ\83 е-поÑ\80Ñ\83Ñ\86и да бисте потврдили да је налог заиста ваш.",
"throttled-mailpassword": "Порука за промену лозинке је послата у {{PLURAL:$1|1=последњих сат времена|последња $1 сата|последњих $1 сати}}.\nДа бисмо спречили злоупотребу, подсетник шаљемо само једном у року од {{PLURAL:$1|1=сат времена|$1 сата|$1 сати}}.",
"mailerror": "Грешка при слању поруке: $1",
- "acct_creation_throttle_hit": "Ð\9fоÑ\81еÑ\82иоÑ\86и овог викиÑ\98а коÑ\98и коÑ\80иÑ\81Ñ\82е ваÑ\88Ñ\83 IP адÑ\80еÑ\81Ñ\83 Ñ\81Ñ\83 веÑ\9b оÑ\82воÑ\80или {{PLURAL:$1|1=Ñ\98едан налог|$1 налога}} пÑ\80еÑ\82Ñ\85одни $2, Ñ\88Ñ\82о Ñ\98е наÑ\98веÑ\9bи дозвоÑ\99ени бÑ\80оÑ\98 Ñ\83 Ñ\82ом вÑ\80еменÑ\81ком пеÑ\80иодÑ\83.\nÐ\97бог Ñ\82ога поÑ\81еÑ\82иоÑ\86и Ñ\81 ове IP адÑ\80еÑ\81е Ñ\82Ñ\80енÑ\83Ñ\82но не могÑ\83 оÑ\82воÑ\80ити више налога.",
- "emailauthenticated": "Ð\92аÑ\88а имеÑ\98л-адÑ\80еÑ\81а је потврђена на дан $2 у $3 ч.",
- "emailnotauthenticated": "Ð\92аÑ\88а имеÑ\98л-адÑ\80еÑ\81а Ñ\98оÑ\88 ниÑ\98е поÑ\82вÑ\80Ñ\92ена.\nÐ\9dиÑ\98едан имеÑ\98л неÑ\9bе да бÑ\83де поÑ\81лаÑ\82 ни у једном од следећих случајева.",
- "noemailprefs": "Ð\9dаведиÑ\82е имеÑ\98л-адÑ\80еÑ\81Ñ\83 у подешавањима за оспособљавање ових функција.",
- "emailconfirmlink": "Потврдите своју имејл-адресу",
- "invalidemailaddress": "Ð\98меÑ\98л-адÑ\80еÑ\81а не може да бÑ\83де пÑ\80иÑ\85ваÑ\9bена Ñ\98еÑ\80 Ñ\98е Ñ\83 неважеÑ\9bем обликÑ\83.\nУнеÑ\81иÑ\82е иÑ\81пÑ\80авну адресу или оставите празно поље.",
- "cannotchangeemail": "Ð\9dа овом викиÑ\98Ñ\83 ниÑ\98е могÑ\83Ñ\9bе пÑ\80омениÑ\82и имеÑ\98л-адÑ\80еÑ\81е налога.",
- "emaildisabled": "Овај сајт не може да шаље имејлове.",
+ "acct_creation_throttle_hit": "Ð\9fоÑ\81еÑ\82иоÑ\86и овог викиÑ\98а коÑ\98и коÑ\80иÑ\81Ñ\82е ваÑ\88Ñ\83 IP адÑ\80еÑ\81Ñ\83 Ñ\81Ñ\83 оÑ\82воÑ\80или {{PLURAL:$1|1=Ñ\98едан налог|$1 налога}} Ñ\83 пÑ\80еÑ\82Ñ\85одниÑ\85 $2, Ñ\88Ñ\82о Ñ\98е наÑ\98веÑ\9bа дозвоÑ\99ена вÑ\80едноÑ\81Ñ\82 Ñ\83 овом вÑ\80еменÑ\81ком пеÑ\80иодÑ\83.\nÐ\9aао Ñ\80езÑ\83лÑ\82аÑ\82 Ñ\82ога, Ñ\82и поÑ\81еÑ\82иоÑ\86и Ñ\82Ñ\80енÑ\83Ñ\82но не могÑ\83 оÑ\82ваÑ\80ати више налога.",
+ "emailauthenticated": "Ð\92аÑ\88а адÑ\80еÑ\81а е-поÑ\88Ñ\82е је потврђена на дан $2 у $3 ч.",
+ "emailnotauthenticated": "Ð\92аÑ\88а адÑ\80еÑ\81а е-поÑ\88Ñ\82е Ñ\98оÑ\88 ниÑ\98е поÑ\82вÑ\80Ñ\92ена.\nÐ\9dиÑ\98една е-поÑ\80Ñ\83ка неÑ\9bе биÑ\82и поÑ\81лаÑ\82а ни у једном од следећих случајева.",
+ "noemailprefs": "Ð\9dаведиÑ\82е адÑ\80еÑ\81Ñ\83 е-поÑ\88Ñ\82е у подешавањима за оспособљавање ових функција.",
+ "emailconfirmlink": "Потврдите адресу е-поште",
+ "invalidemailaddress": "Ð\9dиÑ\98е могÑ\83Ñ\9bе пÑ\80иÑ\85ваÑ\82иÑ\82и адÑ\80еÑ\81Ñ\83 е-поÑ\88Ñ\82е Ñ\98еÑ\80 Ñ\98е Ñ\83 неважеÑ\9bем Ñ\84оÑ\80маÑ\82Ñ\83.\nУнеÑ\81иÑ\82е добÑ\80о Ñ\84оÑ\80маÑ\82иÑ\80ану адресу или оставите празно поље.",
+ "cannotchangeemail": "Ð\90дÑ\80еÑ\81е е-поÑ\88Ñ\82е налога не могÑ\83 Ñ\81е пÑ\80омениÑ\82и на овом викиÑ\98Ñ\83.",
+ "emaildisabled": "Ова локација не може да шаље е-поруке.",
"accountcreated": "Налог је отворен",
"accountcreatedtext": "Кориснички налог [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) је отворен.",
"createaccount-title": "Отварање корисничког налога за {{SITENAME}}",
- "createaccount-text": "Ð\9dеко Ñ\98е оÑ\82воÑ\80ио налог Ñ\81а ваÑ\88ом имеÑ\98л-адÑ\80еÑ\81ом на пÑ\80оÑ\98екÑ\82Ñ\83 {{SITENAME}} ($4) под именом â\80\9e$2â\80\9c и Ñ\81а лозинком â\80\9e$3â\80\9c.\nОдмах требате да се пријавите и промените своју лозинку.\n\nМожете да занемарите ову поруку, ако је овај налог отворен грешком.",
+ "createaccount-text": "Ð\9dеко Ñ\98е оÑ\82воÑ\80ио налог Ñ\81а ваÑ\88ом адÑ\80еÑ\81ом е-поÑ\88Ñ\82е на пÑ\80оÑ\98екÑ\82Ñ\83 {{SITENAME}} ($4) под именом â\80\9e$2â\80\9d и Ñ\81а лозинком â\80\9e$3â\80\9d.\nОдмах требате да се пријавите и промените своју лозинку.\n\nМожете да занемарите ову поруку, ако је овај налог отворен грешком.",
"login-throttled": "Превише пута сте покушали да се пријавите.\nСачекајте $1 пре него што покушате поново.",
"login-abort-generic": "Неуспешна пријава – прекинуто",
- "login-migrated-generic": "Ваш налог је мигриран и ваше корисничко више не постоји на овом викију.",
+ "login-migrated-generic": "Ваш налог је мигриран. Ваше корисничко више не постоји на овом викију.",
"loginlanguagelabel": "Језик: $1",
"suspicious-userlogout": "Ваш захтев за одјаву је одбијен јер изгледа да га је послао покварени прегледач или кеширани прокси.",
"createacct-another-realname-tip": "Право име је опционално.\nАко одаберете да га наведете, биће коришћено за приписивање вашег рада.",
"pt-createaccount": "Отварање налога",
"pt-userlogout": "Одјави ме",
"php-mail-error-unknown": "Непозната грешка у функцији PHP mail().",
- "user-mail-no-addy": "Ð\9fокÑ\83Ñ\88али Ñ\81Ñ\82е да поÑ\88аÑ\99еÑ\82е имеÑ\98л без имеÑ\98л-адÑ\80еÑ\81е.",
- "user-mail-no-body": "Ð\9fокÑ\83Ñ\88ано Ñ\81лаÑ\9aе имеÑ\98ла Ñ\81 празним или неразумно кратким садржајем.",
+ "user-mail-no-addy": "Ð\9fокÑ\83Ñ\88али Ñ\81Ñ\82е да поÑ\88аÑ\99еÑ\82е е-поÑ\80Ñ\83кÑ\83 без адÑ\80еÑ\81е е-поÑ\88Ñ\82е.",
+ "user-mail-no-body": "Ð\9fокÑ\83Ñ\88али Ñ\81Ñ\82е да поÑ\88аÑ\99еÑ\82е е-поÑ\80Ñ\83кÑ\83 Ñ\81а празним или неразумно кратким садржајем.",
"changepassword": "Промена лозинке",
"resetpass_announce": "Да бисте завршили пријаву, подесите нову лозинку овде.",
"resetpass_text": "<!-- Овде унесите текст -->",
"resetpass-submit-cancel": "Откажи",
"resetpass-wrong-oldpass": "Неважећа привремена или тренутна лозинка.\nМожда сте већ променили лозинку или сте захтевали нову привремену лозинку.",
"resetpass-recycled": "Унели сте садашњу лозинку, да бисте променили лозинку морате унети нову.",
- "resetpass-temp-emailed": "Ð\9fÑ\80иÑ\98авили Ñ\81Ñ\82е Ñ\81е Ñ\81а пÑ\80ивÑ\80еменим кодом из имеÑ\98ла.\nÐ\94а биÑ\81Ñ\82е завÑ\80Ñ\88или пÑ\80иÑ\98авÑ\99иваÑ\9aе морате поставити нову лозинку овде:",
+ "resetpass-temp-emailed": "Ð\9fÑ\80иÑ\98авили Ñ\81Ñ\82е Ñ\81е Ñ\81а пÑ\80ивÑ\80еменим кодом из е-поÑ\80Ñ\83ке.\nÐ\94а биÑ\81Ñ\82е завÑ\80Ñ\88или пÑ\80иÑ\98авÑ\99иваÑ\9aе, морате поставити нову лозинку овде:",
"resetpass-temp-password": "Привремена лозинка:",
"resetpass-abort-generic": "Промену лозинке је прекинуо додатак.",
"resetpass-expired": "Ваша лозинка је истекла. Поставите нову лозинку да бисте се пријавили.",
"resetpass-expired-soft": "Ваша лозинка је истекла и морате је променити. Поставите нову лозинку или кликните „{{int:authprovider-resetpass-skip-label}}“ да је промените касније.",
"resetpass-validity-soft": "Ваша лозинка није важећа: $1\n\nИзаберите нову одмах или кликните на „{{int:authprovider-resetpass-skip-label}}“ да је промените касније.",
"passwordreset": "Ресетовање лозинке",
- "passwordreset-text-one": "Ð\9fопÑ\83ниÑ\82е оваÑ\98 обÑ\80азаÑ\86 да биÑ\81Ñ\82е добили пÑ\80ивÑ\80еменÑ\83 лозинкÑ\83 на имеÑ\98л.",
- "passwordreset-text-many": "{{PLURAL:$1|Ð\98Ñ\81пÑ\83ниÑ\82е Ñ\98едно од поÑ\99а како биÑ\81Ñ\82е добили пÑ\80ивÑ\80еменÑ\83 лозинкÑ\83 пÑ\83Ñ\82ем имеÑ\98ла.}}",
+ "passwordreset-text-one": "Ð\9fопÑ\83ниÑ\82е оваÑ\98 обÑ\80азаÑ\86 да биÑ\81Ñ\82е пÑ\80имили пÑ\80ивÑ\80еменÑ\83 лозинкÑ\83 пÑ\83Ñ\82ем е-поÑ\88Ñ\82е.",
+ "passwordreset-text-many": "{{PLURAL:$1|Ð\98Ñ\81пÑ\83ниÑ\82е Ñ\98едно од поÑ\99а да биÑ\81Ñ\82е пÑ\80имили пÑ\80ивÑ\80еменÑ\83 лозинкÑ\83 пÑ\83Ñ\82ем е-поÑ\88Ñ\82е.}}",
"passwordreset-disabled": "Ресетовање лозинке је онемогућено на овом викију.",
- "passwordreset-emaildisabled": "Ð\98меÑ\98л Ñ\98е онемогÑ\83Ñ\9bен на овом викију.",
+ "passwordreset-emaildisabled": "ФÑ\83нкÑ\86иÑ\98а е-поÑ\88Ñ\82е Ñ\98е онемогÑ\83Ñ\9bена на овом викију.",
"passwordreset-username": "Корисничко име:",
"passwordreset-domain": "Домен:",
- "passwordreset-email": "Ð\98меÑ\98л-адÑ\80еÑ\81а:",
+ "passwordreset-email": "Ð\90дÑ\80еÑ\81а е-поÑ\88Ñ\82е:",
"passwordreset-emailtitle": "Детаљи налога на викију {{SITENAME}}",
- "passwordreset-emailtext-ip": "Ð\9dеко (веÑ\80оваÑ\82но ви, Ñ\81а IP адÑ\80еÑ\81е $1) заÑ\82Ñ\80ажио Ñ\98е Ñ\80еÑ\81еÑ\82оваÑ\9aе ваÑ\88е \nлозинке за пÑ\80оÑ\98екаÑ\82 {{SITENAME}} ($4). СледеÑ\9bи коÑ\80иÑ\81ниÑ\87ки {{PLURAL:$3|налог Ñ\98е повезан|налози Ñ\81Ñ\83 повезани}} \nÑ\81а овом имеÑ\98л адÑ\80еÑ\81ом:\n\n$2\n\n{{PLURAL:$3|Ð\9eва пÑ\80ивÑ\80емена лозинка|Ð\9eве пÑ\80ивÑ\80емене лозинке}} Ñ\9bе иÑ\81Ñ\82еÑ\9bи за {{PLURAL:$5|Ñ\98едан дан|$5 дана}}.\nÐ\9eдмаÑ\85 Ñ\82Ñ\80ебаÑ\82е да Ñ\81е пÑ\80иÑ\98авиÑ\82е и одабеÑ\80иÑ\82е новÑ\83 лозинкÑ\83. Ð\90ко Ñ\98е неко дÑ\80Ñ\83ги напÑ\80авио оваÑ\98 \nзаÑ\85Ñ\82ев или Ñ\81Ñ\82е Ñ\81е Ñ\81еÑ\82или Ñ\81воÑ\98е пÑ\80вобиÑ\82не лозинке, а не \nжелиÑ\82е да Ñ\98е пÑ\80омениÑ\82е, можеÑ\82е да занемаÑ\80иÑ\82е овÑ\83 поÑ\80Ñ\83кÑ\83 и наÑ\81Ñ\82авиÑ\82е да коÑ\80иÑ\81Ñ\82иÑ\82е Ñ\81воÑ\98Ñ\83 Ñ\81Ñ\82аÑ\80Ñ\83 \nлозинку.",
- "passwordreset-emailtext-user": "{{GENDER:$1|Корисник је затражио|Корисница је затражила}} подсетник о подацима за пријаву на викију {{SITENAME}} ($4).\nСледећи {{PLURAL:$3|кориснички налог је повезан|кориснички налози су повезани}} са овом имејл-адресом:\n\n$2\n\n{{PLURAL:$3|Привремена лозинка истиче|Привремене лозинке истичу}} за {{PLURAL:$5|један дан|$5 дана}}.\nПријавите се и изаберите нову лозинку. Ако је неко други захтевао ову радњу или сте се сетили лозинке и не желите да је мењате, занемарите ову поруку.",
+ "passwordreset-emailtext-ip": "Ð\9dеко (веÑ\80оваÑ\82но ви, Ñ\81а IP адÑ\80еÑ\81е $1) заÑ\82Ñ\80ажио Ñ\98е Ñ\80еÑ\81еÑ\82оваÑ\9aе ваÑ\88е \nлозинке за пÑ\80оÑ\98екаÑ\82 {{SITENAME}} ($4). СледеÑ\9bи коÑ\80иÑ\81ниÑ\87ки {{PLURAL:$3|налог Ñ\98е повезан|налози Ñ\81Ñ\83 повезани}} \nÑ\81а овом адÑ\80еÑ\81ом е-поÑ\88Ñ\82е:\n\n$2\n\n{{PLURAL:$3|Ð\9eва пÑ\80ивÑ\80емена лозинка|Ð\9eве пÑ\80ивÑ\80емене лозинке}} иÑ\81Ñ\82еÑ\9bи Ñ\9bе за {{PLURAL:$5|Ñ\98едан дан|$5 дана}}.\nÐ\9eдмаÑ\85 Ñ\82Ñ\80ебаÑ\82е да Ñ\81е пÑ\80иÑ\98авиÑ\82е и одабеÑ\80иÑ\82е новÑ\83 лозинкÑ\83. \nÐ\90ко Ñ\98е неко дÑ\80Ñ\83ги напÑ\80авио оваÑ\98 заÑ\85Ñ\82ев или Ñ\81Ñ\82е Ñ\81е Ñ\81еÑ\82или \nоÑ\80игиналне лозинке, а не желиÑ\82е да Ñ\98е пÑ\80омениÑ\82е, \nможеÑ\82е да занемаÑ\80иÑ\82е овÑ\83 поÑ\80Ñ\83кÑ\83 и наÑ\81Ñ\82авиÑ\82е да \nкоÑ\80иÑ\81Ñ\82иÑ\82е Ñ\81воÑ\98Ñ\83 Ñ\81Ñ\82аÑ\80Ñ\83 лозинку.",
+ "passwordreset-emailtext-user": "Корисник/ца $1 затражио/ла је ресетовање ваше лозинке на пројекту {{SITENAME}} ($4).\nСледећи кориснички {{PLURAL:$3|налог је повезан|налози су повезани}} са овом адресом е-поште:\n\n$2\n\n{{PLURAL:$3|Привремена лозинка истиче|Привремене лозинке истичу}} за {{PLURAL:$5|један дан|$5 дана}}.\nОдмах требате да се пријавите и одаберите нову лозинку. \nАко је неко други направио овај захтев или сте се сетили \nоригиналне лозинке, а не желите да је промените, \nможете да занемарите ову поруку и наставите да \nкористите своју стару лозинку.",
"passwordreset-emailelement": "Корисничко име: \n$1\n\nПривремена лозинка: \n$2",
- "passwordreset-emailsentemail": "Ð\90ко Ñ\98е ова имеÑ\98л-адÑ\80еÑ\81а повезана Ñ\81а ваÑ\88им налогом, онда Ñ\9bе имеÑ\98л о Ñ\80еÑ\81еÑ\82оваÑ\9aÑ\83 лозинке биÑ\82и поÑ\81лаÑ\82.",
- "passwordreset-emailsentusername": "Ð\90ко поÑ\81Ñ\82оÑ\98и имеÑ\98л-адÑ\80еÑ\81а повезана Ñ\81а овим коÑ\80иÑ\81ниÑ\87ким именом, онда Ñ\9bе имеÑ\98л о Ñ\80еÑ\81еÑ\82оваÑ\9aÑ\83 лозинке биÑ\82и поÑ\81лаÑ\82.",
+ "passwordreset-emailsentemail": "Ð\90ко Ñ\98е ова адÑ\80еÑ\81а е-поÑ\88Ñ\82е повезана Ñ\81а ваÑ\88им налогом, онда Ñ\9bе е-поÑ\80Ñ\83ка о Ñ\80еÑ\81еÑ\82оваÑ\9aÑ\83 лозинке биÑ\82и поÑ\81лаÑ\82а.",
+ "passwordreset-emailsentusername": "Ð\90ко поÑ\81Ñ\82оÑ\98и адÑ\80еÑ\81а е-поÑ\88Ñ\82е повезана Ñ\81а овим коÑ\80иÑ\81ниÑ\87ким именом, онда Ñ\9bе е-поÑ\80Ñ\83ка о Ñ\80еÑ\81еÑ\82оваÑ\9aÑ\83 лозинке биÑ\82и поÑ\81лаÑ\82а.",
"passwordreset-nocaller": "Позивалац се мора навести",
"passwordreset-nosuchcaller": "Позивалац не постоји: $1",
"passwordreset-ignored": "Ресетовање лозинке није успело. Можда послужилац није конфигурисан?",
- "passwordreset-invalidemail": "Ð\9dеважеÑ\9bа имеÑ\98л-адÑ\80еÑ\81а",
+ "passwordreset-invalidemail": "Ð\9dеважеÑ\9bа адÑ\80еÑ\81а е-поÑ\88Ñ\82е",
"passwordreset-nodata": "Корисничко име и адреса е-поште нису наведени",
- "changeemail": "Ð\9fÑ\80омена или Ñ\83клаÑ\9aаÑ\9aе имеÑ\98л-адÑ\80еÑ\81е",
- "changeemail-header": "Ð\9fопÑ\83ниÑ\82е оваÑ\98 обÑ\80азаÑ\86 да би Ñ\81Ñ\82е пÑ\80оменили ваÑ\88Ñ\83 имеÑ\98л-адÑ\80еÑ\81Ñ\83. Ð\90ко биÑ\81Ñ\82е желели да Ñ\83клониÑ\82е повезаноÑ\81Ñ\82 било коÑ\98е имеÑ\98л-адÑ\80еÑ\81е Ñ\81а ваÑ\88ег налога, оÑ\81Ñ\82авиÑ\82е пÑ\80азно поÑ\99е за новÑ\83 имеÑ\98л-адÑ\80еÑ\81Ñ\83 када шаљете образац.",
+ "changeemail": "Ð\9fÑ\80омена или Ñ\83клаÑ\9aаÑ\9aе адÑ\80еÑ\81е е-поÑ\88Ñ\82е",
+ "changeemail-header": "Ð\94овÑ\80Ñ\88иÑ\82е оваÑ\98 обÑ\80азаÑ\86 да би Ñ\81Ñ\82е пÑ\80оменили адÑ\80еÑ\81Ñ\83 е-поÑ\88Ñ\82е. Ð\90ко биÑ\81Ñ\82е желели да Ñ\83клониÑ\82е повезаноÑ\81Ñ\82 било коÑ\98е адÑ\80еÑ\81е е-поÑ\88Ñ\82е Ñ\81а ваÑ\88ег налога, оÑ\81Ñ\82авиÑ\82е пÑ\80азно поÑ\99е за новÑ\83 адÑ\80еÑ\81Ñ\83 е-поÑ\88Ñ\82е када шаљете образац.",
"changeemail-no-info": "Морате бити пријављени да бисте приступили овој страници.",
- "changeemail-oldemail": "Ð\90кÑ\82Ñ\83елна имеÑ\98л-адÑ\80еÑ\81а:",
- "changeemail-newemail": "Ð\9dова имеÑ\98л-адÑ\80еÑ\81а:",
- "changeemail-newemail-help": "Ово поље треба да оставите празно ако желите да уклоните своју имејл-адресу. Нећете бити у могућности да ресетујете заборављену лозинку и нећете примати имејлове са овог викија ако је имејл-адреса уклоњена.",
+ "changeemail-oldemail": "ТÑ\80енÑ\83Ñ\82на адÑ\80еÑ\81а е-поÑ\88Ñ\82е:",
+ "changeemail-newemail": "Ð\9dова адÑ\80еÑ\81а е-поÑ\88Ñ\82е:",
+ "changeemail-newemail-help": "Ово поље треба да оставите празно ако желите да уклоните адресу е-поште. Нећете бити у могућности да ресетујете заборављену лозинку и нећете примати е-поруке са овог викија ако је адреса е-поште уклоњена.",
"changeemail-none": "(ништа)",
"changeemail-password": "Ваша лозинка за пројекат {{SITENAME}}:",
- "changeemail-submit": "Ð\9fÑ\80омени имеÑ\98л",
+ "changeemail-submit": "Ð\9fÑ\80омени е-поÑ\88Ñ\82Ñ\83",
"changeemail-throttled": "Превише пута сте покушали да се пријавите.\nМолимо вас да сачекате $1 пре него што покушате поново.",
- "changeemail-nochange": "УнеÑ\81иÑ\82е дÑ\80Ñ\83гÑ\83 имеÑ\98л-адÑ\80еÑ\81Ñ\83.",
+ "changeemail-nochange": "УнеÑ\81иÑ\82е дÑ\80Ñ\83гÑ\83 адÑ\80еÑ\81Ñ\83 е-поÑ\88Ñ\82е.",
"resettokens": "Ресетовање токена",
"resettokens-text": "Овде можете да ресетујете токене који омогућавају приступ одређеним приватним подацима повезаним са вашим налогом.\n\nТребали бисте то урадити ако их случајно поделите са неким или ако је ваш налог угрожен.",
"resettokens-no-tokens": "Нема жетона за ресетовање.",
"headline_sample": "Текст наслова",
"headline_tip": "Поднаслов (ниво 2)",
"nowiki_sample": "Овде уметните необликован текст",
- "nowiki_tip": "Занемари вики-обликовање",
+ "nowiki_tip": "Занемари вики обликовање",
"image_sample": "Пример.jpg",
"image_tip": "Уграђивање датотеке",
"media_sample": "Пример.ogg",
"subject-preview": "Преглед теме:",
"previewerrortext": "Дошло је до грешке при покушају прегледа промена.",
"blockedtitle": "Корисник је блокиран",
- "blocked-email-user": "<strong>Ð\92аÑ\88ем коÑ\80иÑ\81ниÑ\87ком именÑ\83 Ñ\98е блокиÑ\80ано Ñ\81лаÑ\9aе имеÑ\98лова. Још увек можете да уређујете друге странице на овом викију.</strong> Можете да видите потпуне детаље блокаде на [[Special:MyContributions|доприносима налога]].\n\nБлокаду је извршио/ла $1.\n\nНаведен је следећи разлог: <em>$2</em>.\n\n* Почетак блокаде: $8\n* Истек блокаде: $6\n* Намењена кориснику/ци или IP адреси: $7\n* ID блокаде #$5",
+ "blocked-email-user": "<strong>Ð\92аÑ\88ем коÑ\80иÑ\81ниÑ\87ком именÑ\83 Ñ\98е блокиÑ\80ано Ñ\81лаÑ\9aе е-поÑ\80Ñ\83ка. Још увек можете да уређујете друге странице на овом викију.</strong> Можете да видите потпуне детаље блокаде на [[Special:MyContributions|доприносима налога]].\n\nБлокаду је извршио/ла $1.\n\nНаведен је следећи разлог: <em>$2</em>.\n\n* Почетак блокаде: $8\n* Истек блокаде: $6\n* Намењена кориснику/ци или IP адреси: $7\n* ID блокаде #$5",
"blockedtext-partial": "<strong>Вашем корисничком имену или IP адреси је блокирано прављење промена на овој страници. Још увек можете да уређујете друге странице на овом викију.</strong> Можете да видите потпуне детаље блокаде на [[Special:MyContributions|доприносима налога]].\n\nБлокаду је извршио/ла $1.\n\nНаведен је следећи разлог: <em>$2</em>.\n\n* Почетак блокаде: $8\n* Истек блокаде: $6\n* Намењена кориснику/ци или IP адреси: $7\n* ID блокаде #$5",
"blockedtext": "<strong>Ваше корисничко име или IP адреса је блокирана.</strong>\n\nБлокирање је {{GENDER:$4|извршио|извршила}} $1.\nРазлог је <em>$2</em>.\n\n* Почетак блокирања: $8\n* Истек блокирања: $6\n* Блокирани: $7\n\nМожете да се обратите {{GENDER:$4|кориснику|корисници}} $1 или [[{{MediaWiki:Grouppage-sysop}}|администратору]] ради дискусије о блокирању.\nНе можете да користите могућност „{{int:emailuser}}” осим ако сте унели валидну имејл адресу у својим [[Special:Preferences|подешавањима]] налога и нисте блокирани од коришћења исте.\nВаша тренутна IP адреса је $3, а ID блокирања #$5.\nНаведите све информације одозго при стварању било каквих упита.",
- "autoblockedtext": "Ваша IP адреса је аутоматски блокирана јер ју је користио други корисник, кога је {{GENDER:$4|блокирао|блокирала}} $1.\nРазлог:\n\n:<em>$2</em>\n\n* Почетак блокаде: $8\n* Крај блокаде: $6\n* Име корисника: $7\n\nМожете да контактирате {{GENDER:$4|корисника|корисницу}} $1 или другог [[{{MediaWiki:Grouppage-sysop}}|администратора]] да бисте расправљали о блокади.\n\nЗапамтите да не можете да користите функцију „{{int:emailuser}}“ осим ако сте навели важећу имејл-адресу у својим [[Special:Preferences|подешавањима]].\n\nВаша тренутна IP адреса је $3, а ID блокаде $5.\nУкључите све горње детаље при прављењу било каквих упита.",
+ "autoblockedtext": "Ваша IP адреса је аутоматски блокирана јер ју је користио други корисник, кога је {{GENDER:$4|блокирао|блокирала|блокирао/ла}} $1.\nРазлог:\n\n:<em>$2</em>\n\n* Почетак блокаде: $8\n* Крај блокаде: $6\n* Име корисника: $7\n\nМожете да контактирате {{GENDER:$4|корисника|корисницу|корисника/цу}} $1 или другог [[{{MediaWiki:Grouppage-sysop}}|администратора]] да бисте расправљали о блокади.\n\nЗапамтите да не можете да користите функцију „{{int:emailuser}}“ осим ако сте навели важећу адресу е-поште у [[Special:Preferences|подешавањима]].\n\nВаша тренутна IP адреса је $3, а ID блокаде $5.\nУкључите све горње детаље при прављењу било каквих упита.",
"blockednoreason": "разлог није наведен",
"whitelistedittext": "$1 да бисте уређивали странице.",
- "confirmedittext": "Морате да потврдите своју имејл адресу пре уређивања страница.\nПоставите и потврдите имејл адресу преко [[Special:Preferences|подешавања]].",
+ "confirmedittext": "Морате да потврдите адресу е-поште пре уређивања страница.\nПоставите и проверите ваљаност адресе преко [[Special:Preferences|подешавања]].",
"nosuchsectiontitle": "Није могуће пронаћи одељак",
"nosuchsectiontext": "Покушали сте да уредите одељак који не постоји.\nМожда је премештен или избрисан док сте прегледали страницу.",
"loginreqtitle": "Потребна је пријава",
"prefs-watchlist-managetokens": "Управљање токенима",
"prefs-misc": "Разно",
"prefs-resetpass": "Промена лозинке",
- "prefs-changeemail": "Ð\9fÑ\80омена или Ñ\83клаÑ\9aаÑ\9aе имеÑ\98л-адÑ\80еÑ\81е",
- "prefs-setemail": "Ð\9fоÑ\81Ñ\82авÑ\99аÑ\9aе имеÑ\98л-адÑ\80еÑ\81е",
- "prefs-email": "Ð\9eпÑ\86иÑ\98е имеÑ\98ла",
+ "prefs-changeemail": "Ð\9fÑ\80омена или Ñ\83клаÑ\9aаÑ\9aе адÑ\80еÑ\81е е-поÑ\88Ñ\82е",
+ "prefs-setemail": "Ð\9fоÑ\81Ñ\82авÑ\99аÑ\9aе адÑ\80еÑ\81е е-поÑ\88Ñ\82е",
+ "prefs-email": "Ð\9eпÑ\86иÑ\98е е-поÑ\88Ñ\82е",
"prefs-rendering": "Изглед",
"saveprefs": "Сачувај",
"restoreprefs": "Врати сва подешавања на подразумеване вредности (у свим одељцима)",
"timezoneregion-europe": "Европа",
"timezoneregion-indian": "Индијски океан",
"timezoneregion-pacific": "Тихи океан",
- "allowemail": "Ð\94озволи пÑ\80имаÑ\9aе имеÑ\98лова од дÑ\80Ñ\83гиÑ\85 коÑ\80иÑ\81ника",
- "email-allow-new-users-label": "Ð\94озволи пÑ\80имаÑ\9aе имеÑ\98лова од новајлија",
- "email-blacklist-label": "Ð\97абÑ\80ани пÑ\80имаÑ\9aе имеÑ\98лова од Ñ\81ледеÑ\9bиÑ\85 коÑ\80иÑ\81ника:",
+ "allowemail": "Ð\94озволи дÑ\80Ñ\83гим коÑ\80иÑ\81ниÑ\86има да ми Ñ\88аÑ\99Ñ\83 е-поÑ\80Ñ\83ке",
+ "email-allow-new-users-label": "Ð\94озволи пÑ\80имаÑ\9aе е-поÑ\80Ñ\83ка од новајлија",
+ "email-blacklist-label": "Ð\97абÑ\80ани овим коÑ\80иÑ\81ниÑ\86има да ми Ñ\88аÑ\99Ñ\83 е-поÑ\80Ñ\83ке:",
"prefs-searchoptions": "Претрага",
"prefs-namespaces": "Именски простори",
"default": "подразумевано",
"prefs-custom-js": "прилагођени JavaScript",
"prefs-common-config": "Дељени CSS/JSON/JavaScript за све теме:",
"prefs-reset-intro": "Можете користити ову страницу да поново поставите своја подешавања на подразумеване вредности сајта.\nОво се не може опозвати.",
- "prefs-emailconfirm-label": "Ð\9fоÑ\82вÑ\80да имеÑ\98ла:",
- "youremail": "Ð\98меÑ\98л:",
+ "prefs-emailconfirm-label": "Ð\9fоÑ\82вÑ\80да е-поÑ\88Ñ\82е:",
+ "youremail": "Ð\95-поÑ\88Ñ\82а:",
"username": "{{GENDER:$1|Корисничко име}}:",
"prefs-memberingroups": "{{GENDER:$2|Члан|Чланица}} {{PLURAL:$1|групе|група}}:",
"prefs-memberingroups-type": "$1",
"gender-male": "Он уређује вики странице",
"gender-female": "Она уређује вики странице",
"prefs-help-gender": "Постављање овог подешавања је опционално.\nСофтвер користи дату вредност да би вам се обратио и споменуо вас другима користећи одговарајући граматички род.\nОва информација ће бити јавна.",
- "email": "Ð\98меÑ\98л",
+ "email": "Ð\95-поÑ\88Ñ\82а",
"prefs-help-realname": "Право име је опционално.\nАко је наведено, биће коришћено за приписивање вашег рада.",
- "prefs-help-email": "Ð\98меÑ\98л адÑ\80еÑ\81а је опционална, али је потребна за ресетовање лозинке, ако је заборавите.",
- "prefs-help-email-others": "ТакоÑ\92е можеÑ\82е изабÑ\80аÑ\82и да допÑ\83Ñ\81Ñ\82иÑ\82е дÑ\80Ñ\83гима да ваÑ\81 конÑ\82акÑ\82иÑ\80аÑ\98Ñ\83 пÑ\80еко имеÑ\98ла пÑ\83Ñ\82ем везе на ваÑ\88оÑ\98 коÑ\80иÑ\81ниÑ\87коÑ\98 Ñ\81Ñ\82Ñ\80аниÑ\86и или Ñ\81Ñ\82Ñ\80аниÑ\86и за Ñ\80азговоÑ\80.\nÐ\92аÑ\88а имеÑ\98л адÑ\80еÑ\81а неће бити приказана другим корисницима који вас контактирају.",
- "prefs-help-email-required": "Ð\9fоÑ\82Ñ\80ебна Ñ\98е имеÑ\98л-адÑ\80еÑ\81а.",
+ "prefs-help-email": "Ð\90дÑ\80еÑ\81а е-поÑ\88Ñ\82е је опционална, али је потребна за ресетовање лозинке, ако је заборавите.",
+ "prefs-help-email-others": "ТакоÑ\92е можеÑ\82е оабÑ\80аÑ\82и да допÑ\83Ñ\81Ñ\82иÑ\82е дÑ\80Ñ\83гима да ваÑ\81 конÑ\82акÑ\82иÑ\80аÑ\98Ñ\83 пÑ\80еко е-поÑ\88Ñ\82е пÑ\83Ñ\82ем везе на ваÑ\88оÑ\98 коÑ\80иÑ\81ниÑ\87коÑ\98 Ñ\81Ñ\82Ñ\80аниÑ\86и или Ñ\81Ñ\82Ñ\80аниÑ\86и за Ñ\80азговоÑ\80.\nÐ\92аÑ\88а адÑ\80еÑ\81а е-поÑ\88Ñ\82е неће бити приказана другим корисницима који вас контактирају.",
+ "prefs-help-email-required": "Ð\9fоÑ\82Ñ\80ебна Ñ\98е адÑ\80еÑ\81а е-поÑ\88Ñ\82е.",
"prefs-info": "Основне информације",
"prefs-i18n": "Интернационализација",
"prefs-signature": "Потпис",
"right-viewsuppressed": "прегледање измена скривених од свих корисника",
"right-suppressionlog": "прегледање приватних дневника",
"right-block": "блокирање даљих измена других корисника",
- "right-blockemail": "блокирање корисника да шаљу имејл",
+ "right-blockemail": "блокирање функције слања е-порука кориснику",
"right-hideuser": "блокирање корисничког имена и његово сакривање од јавности",
"right-ipblock-exempt": "заобилажење IP блокада, аутоблокада и блокада опсега",
"right-unblockself": "деблокирање самог себе",
"right-editmyuserjs": "уређивање сопствених JavaScript датотека",
"right-viewmywatchlist": "преглед сопственог списка надгледања",
"right-editmywatchlist": "уређивање сопственог списка надгледања; неке предузете радње ће свеједно додати странице на списак и без овог права",
- "right-viewmyprivateinfo": "пÑ\80еглед Ñ\81воÑ\98иÑ\85 пÑ\80иваÑ\82ниÑ\85 подаÑ\82ака (нпÑ\80. имеÑ\98л-адÑ\80еÑ\81Ñ\83, право име)",
- "right-editmyprivateinfo": "Ñ\83Ñ\80еÑ\92иваÑ\9aе Ñ\81опÑ\81Ñ\82вениÑ\85 пÑ\80иваÑ\82ниÑ\85 подаÑ\82ака (нпÑ\80. имеÑ\98л-адÑ\80еÑ\81е, правог имена)",
+ "right-viewmyprivateinfo": "пÑ\80еглед Ñ\81опÑ\81Ñ\82вениÑ\85 пÑ\80иваÑ\82ниÑ\85 подаÑ\82ака (нпÑ\80. адÑ\80еÑ\81е е-поÑ\88Ñ\82е, право име)",
+ "right-editmyprivateinfo": "Ñ\83Ñ\80еÑ\92иваÑ\9aе Ñ\81опÑ\81Ñ\82вениÑ\85 пÑ\80иваÑ\82ниÑ\85 подаÑ\82ака (нпÑ\80. адÑ\80еÑ\81е е-поÑ\88Ñ\82е, правог имена)",
"right-editmyoptions": "уређивање сопствених подешавања",
"right-rollback": "брзо враћање измена последњег корисника који је мењао одређену страницу",
"right-markbotedits": "означавање враћених измена као измене бота",
"right-userrights-interwiki": "уређивање корисничких права на другим викијима",
"right-siteadmin": "закључавање и откључавање базе података",
"right-override-export-depth": "извоз страница укључујући и повазене странице до дубине од пет веза",
- "right-sendemail": "Ñ\81лаÑ\9aе имеÑ\98ла другим корисницима",
+ "right-sendemail": "Ñ\81лаÑ\9aе е-поÑ\80Ñ\83ка другим корисницима",
"right-managechangetags": "прављење и (де)активирање [[Special:Tags|ознака]]",
"right-applychangetags": "примењивање [[Special:Tags|ознака]] на нечије промене",
"right-changetags": "додавање и уклањање разних [[Special:Tags|ознака]] на појединачним изменама и уносима у дневницима",
"grant-group-page-interaction": "Уређивање страница",
"grant-group-file-interaction": "Интеракција са медијима",
"grant-group-watchlist-interaction": "Уређивање вашег списка надгледања",
- "grant-group-email": "Ð\9fоÑ\88аÑ\99и имеÑ\98л",
+ "grant-group-email": "Ð\9fоÑ\88аÑ\99и е-поÑ\80Ñ\83кÑ\83",
"grant-group-high-volume": "Извршавање великог броја радњи",
"grant-group-customization": "Прилагођавање и подешавања",
"grant-group-administration": "Извршавање административних радњи",
"grant-privateinfo": "Приступи приватним информацијама",
"grant-protect": "Закључавање и откључавање страница",
"grant-rollback": "Враћање промена на страницама",
- "grant-sendemail": "СлаÑ\9aе имеÑ\98лова другим корисницима",
+ "grant-sendemail": "СлаÑ\9aе е-поÑ\80Ñ\83ка другим корисницима",
"grant-uploadeditmovefile": "Отпремање, замена и премештање датотека",
"grant-uploadfile": "Отпремање нових датотека",
"grant-basic": "Основна права",
"action-userrights": "уређујете сва корисничка права",
"action-userrights-interwiki": "уређујете корисничка права корисника на другим викијима",
"action-siteadmin": "закључавате или откључавате базу података",
- "action-sendemail": "Ñ\88аÑ\99еÑ\82е имеÑ\98лове",
+ "action-sendemail": "Ñ\88аÑ\99еÑ\82е е-поÑ\80Ñ\83ке",
"action-editmyoptions": "уређујете сопствена подешавања",
"action-editmywatchlist": "уређујете сопствени списак надгледања",
"action-viewmywatchlist": "прегледате сопствени списак надгледања",
"recentchanges-timeout": "Ова претрага је истекла. Можда желите да покушате другачије параметре претраге.",
"recentchanges-network": "Због техничког проблема, није могуће учитати резултате. Покушајте да освежите страницу.",
"recentchanges-notargetpage": "Унесите име странице изнад да бисте видели промене сродне с овом страницом",
- "recentchanges-feed-description": "Ð\9fÑ\80аÑ\82иÑ\82е наÑ\98Ñ\81коÑ\80иÑ\98е промене на викију у овом фиду.",
+ "recentchanges-feed-description": "Ð\9fÑ\80аÑ\82иÑ\82е недавне промене на викију у овом фиду.",
"recentchanges-label-newpage": "Нова страница",
"recentchanges-label-minor": "Мања измена",
"recentchanges-label-bot": "Ботовска измена",
"upload-options": "Опције отпремања",
"watchthisupload": "Надгледај ову датотеку",
"filewasdeleted": "Датотека са овим именом је раније оптремљена и након тога избрисана.\nТребате да проверите $1 пре него што наставите са њеним поновним оптремањем.",
- "filename-thumb-name": "Ово изгледа као назив сличице. Молимо вас да не отпремате сличице на исти вики. У супротном, молимо вас, поправите име датотеке тако да је корисније и нема префикс сличице.",
+ "filename-thumb-name": "Ово изгледа као наслов сличице. Не отпремајте сличице на исти вики. У супротном, поправите име датотеке тако да је корисније и нема префикс сличице.",
"filename-bad-prefix": "Назив датотеке коју шаљете почиње са <strong>„$1“</strong>, а њега обично додељују дигитални фотоапарати.\nИзаберите назив датотеке који описује њен садржај.",
"filename-prefix-blacklist": " #<!-- оставите овај ред онаквим какав јесте --> <pre>\n# Синтакса је следећа:\n# * Све од тарабе па до краја реда је коментар\n# * Сваки ред означава префикс типичних назива датотека које додељивају дигитални апарати\nCIMG # Касио\nDSC_ # Никон\nDSCF # Фуџи\nDSCN # Никон\nDUW # неки мобилни телефони\nIMG # опште\nJD # Џеноптик\nMGP # Пентакс\nPICT # разно\n #</pre> <!-- оставите овај ред онаквим какав јесте -->",
"upload-proto-error": "Неважећи протокол",
"upload-too-many-redirects": "Адреса садржи превише преусмерења",
"upload-http-error": "Дошло је до HTTP грешке: $1",
"upload-copy-upload-invalid-domain": "Примерци отпремања нису доступни на овом домену.",
- "upload-dialog-disabled": "Ð\9fоÑ\81Ñ\82авÑ\99аÑ\9aе даÑ\82оÑ\82ека помоÑ\9bÑ\83 овог диÑ\98алога Ñ\98е онемогÑ\83Ñ\9bено на овом викију.",
+ "upload-dialog-disabled": "Ð\9eÑ\82пÑ\80емаÑ\9aа даÑ\82оÑ\82ека коÑ\80иÑ\88Ñ\9bеÑ\9aем овог диÑ\98алога Ñ\81Ñ\83 онемогÑ\83Ñ\9bена на овом викију.",
"upload-dialog-title": "Отпремање датотеке",
"upload-dialog-button-cancel": "Откажи",
"upload-dialog-button-back": "Назад",
"lockmanager-fail-closelock": "Није могуће затворити катанац за „$1”.",
"lockmanager-fail-deletelock": "Није могуће избрисати катанац за „$1”.",
"lockmanager-fail-acquirelock": "Није могуће стећи катанац за „$1”.",
- "lockmanager-fail-openlock": "Ð\9dе могÑ\83 да оÑ\82воÑ\80им каÑ\82анаÑ\86 за â\80\9e$1â\80\9c. УвеÑ\80иÑ\82е Ñ\81е да Ñ\98е ваÑ\88 диÑ\80екÑ\82оÑ\80иÑ\98Ñ\83м за оÑ\82пÑ\80емаÑ\9aе иÑ\81пÑ\80авно конÑ\84игÑ\83Ñ\80иÑ\81ан и да ваÑ\88 веб-Ñ\81еÑ\80веÑ\80 има дозволÑ\83 да пиÑ\88е у том директоријуму. Погледајте https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgUploadDirectory за више информација.",
+ "lockmanager-fail-openlock": "Ð\9dиÑ\98е могÑ\83Ñ\9bе оÑ\82воÑ\80иÑ\82и каÑ\82анаÑ\86 за â\80\9e$1â\80\9d. УвеÑ\80иÑ\82е Ñ\81е да Ñ\98е ваÑ\88 диÑ\80екÑ\82оÑ\80иÑ\98Ñ\83м за оÑ\82пÑ\80емаÑ\9aе иÑ\81пÑ\80авно конÑ\84игÑ\83Ñ\80иÑ\81ан и да ваÑ\88 веб-Ñ\81еÑ\80веÑ\80 има дозволÑ\83 да Ñ\83пиÑ\81Ñ\83Ñ\98е у том директоријуму. Погледајте https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgUploadDirectory за више информација.",
"lockmanager-fail-releaselock": "Није могуће ослободити катанац за „$1”.",
"lockmanager-fail-db-bucket": "Није могуће контактирати са довољно катанаца у канти $1.",
"lockmanager-fail-db-release": "Није могуће ослободити катанце у бази података $1.",
"zip-bad": "Датотека је оштећена или је нечитљива ZIP датотека.\nБезбедносна провера не може да се изврши како треба.",
"zip-unsupported": "Датотека је формата ZIP који користи функције ZIP које Медијавики не подржава.\nНе може се правилно проверити у вези безбедности.",
"uploadstash": "Отпремање низа датотека",
- "uploadstash-summary": "Ова страница пружа приступ датотекама које су отпремљене или се отпремају, али још нису објављене. Ове датотеке нису видљиве никоме, осим кориснику који их је отпремио.",
+ "uploadstash-summary": "Ова страница пружа приступ датотекама које су отпремљене или су у процесу отпремања, али још нису објављене на вики. Ове датотеке нису видљиве никоме, осим кориснику који их је отпремио.",
"uploadstash-clear": "Обриши низ датотека",
"uploadstash-nofiles": "Немате сакривене датотеке.",
"uploadstash-badtoken": "Извршавање ове радње није успело, разлог томе може бити истек времена за уређивање. Покушајте поново.",
"trackingcategories-nodesc": "Опис није доступан.",
"trackingcategories-disabled": "Категорија је онемогућена",
"mailnologin": "Нема адресе за слање",
- "mailnologintext": "Ð\9cоÑ\80аÑ\82е биÑ\82и [[Special:UserLogin|пÑ\80иÑ\98авÑ\99ени]] и имаÑ\82и ваÑ\99анÑ\83 имеÑ\98л адÑ\80еÑ\81Ñ\83 Ñ\83 [[Special:Preferences|подеÑ\88аваÑ\9aима]] да биÑ\81Ñ\82е Ñ\81лали имеÑ\98лове другим корисницима.",
- "emailuser": "Ð\9fоÑ\88аÑ\99и имеÑ\98л овом кориснику/ци",
- "emailuser-title-target": "СлаÑ\9aе имеÑ\98ла {{GENDER:$1|коÑ\80иÑ\81никÑ\83|коÑ\80иÑ\81ници}}",
- "emailuser-title-notarget": "СлаÑ\9aе имеÑ\98ла коÑ\80иÑ\81никÑ\83",
+ "mailnologintext": "Ð\9cоÑ\80аÑ\82е да Ñ\81е [[Special:UserLogin|пÑ\80иÑ\98авиÑ\82е]] и имаÑ\82е важеÑ\9bи адÑ\80еÑ\81Ñ\83 е-поÑ\88Ñ\82е Ñ\83 [[Special:Preferences|подеÑ\88аваÑ\9aима]] да биÑ\81Ñ\82е Ñ\81лали е-поÑ\80Ñ\83ке другим корисницима.",
+ "emailuser": "Ð\9fоÑ\88аÑ\99и е-поÑ\80Ñ\83кÑ\83 овом кориснику/ци",
+ "emailuser-title-target": "СлаÑ\9aе е-поÑ\80Ñ\83ке {{GENDER:$1|коÑ\80иÑ\81никÑ\83|коÑ\80иÑ\81ниÑ\86и|коÑ\80иÑ\81никÑ\83/ци}}",
+ "emailuser-title-notarget": "СлаÑ\9aе е-поÑ\80Ñ\83ке коÑ\80иÑ\81никÑ\83/Ñ\86и",
"emailpagetext": "Можете да користите доњи образац да пошаљете имејл {{GENDER:$1|овом кориснику|овој корисници}}.\nИмејл који сте унели у вашим [[Special:Preferences|подешавањима]] ће се приказати у пољу „Од“, тако да ће прималац моћи да вам одговори директно.",
- "defemailsubject": "{{SITENAME}} â\80\94 Ð\98меÑ\98л од {{GENDER:$1|коÑ\80иÑ\81ника|коÑ\80иÑ\81нице}} „$1”",
- "usermaildisabled": "Ð\9aоÑ\80иÑ\81ниÑ\87ки имеÑ\98л Ñ\98е онемогÑ\83Ñ\9bен",
- "usermaildisabledtext": "Ð\9dе можеÑ\82е да Ñ\88аÑ\99еÑ\82е имеÑ\98лове другим корисницима на овом викију",
- "noemailtitle": "Ð\9dема имеÑ\98л-адÑ\80еÑ\81е",
- "noemailtext": "Ð\9eваÑ\98 коÑ\80иÑ\81ник ниÑ\98е навео важеÑ\9bÑ\83 имеÑ\98л-адÑ\80еÑ\81Ñ\83.",
- "nowikiemailtext": "Ð\9eваÑ\98 коÑ\80иÑ\81ник Ñ\98е одлÑ\83Ñ\87ио да не пÑ\80има имеÑ\98лове од других корисника.",
+ "defemailsubject": "{{SITENAME}} â\80\94 е-поÑ\80Ñ\83ка од {{GENDER:$1|коÑ\80иÑ\81ника|коÑ\80иÑ\81ниÑ\86е|коÑ\80иÑ\81ника/це}} „$1”",
+ "usermaildisabled": "Ð\9aоÑ\80иÑ\81ниÑ\87ка е-поÑ\88Ñ\82а Ñ\98е онемогÑ\83Ñ\9bена",
+ "usermaildisabledtext": "Ð\9dе можеÑ\82е да Ñ\88аÑ\99еÑ\82е е-поÑ\80Ñ\83ке другим корисницима на овом викију",
+ "noemailtitle": "Ð\9dема адÑ\80еÑ\81е е-поÑ\88Ñ\82е",
+ "noemailtext": "Ð\9eваÑ\98 коÑ\80иÑ\81ник ниÑ\98е навео важеÑ\9bÑ\83 адÑ\80еÑ\81Ñ\83 е-поÑ\88Ñ\82е.",
+ "nowikiemailtext": "Ð\9eваÑ\98 коÑ\80иÑ\81ник Ñ\98е одабÑ\80ао да не пÑ\80има е-поÑ\80Ñ\83ке од других корисника.",
"emailnotarget": "Непостојеће или наважеће корисничко име примаоца.",
"emailtarget": "Унос корисничког имена примаоца",
"emailusername": "Корисничко име:",
"emailusernamesubmit": "Пошаљи",
- "email-legend": "СлаÑ\9aе имеÑ\98ла дÑ\80Ñ\83гом коÑ\80иÑ\81никÑ\83 пројекта {{SITENAME}}",
+ "email-legend": "СлаÑ\9aе е-поÑ\80Ñ\83ке коÑ\80иÑ\81никÑ\83/Ñ\86и пројекта {{SITENAME}}",
"emailfrom": "Од:",
"emailto": "За:",
"emailsubject": "Тема:",
"emailmessage": "Порука:",
"emailsend": "Пошаљи",
- "emailccme": "Ð\9fоÑ\88аÑ\99и ми копиÑ\98Ñ\83 поÑ\80Ñ\83ке на моÑ\98 имеÑ\98л.",
+ "emailccme": "Ð\9fоÑ\88аÑ\99и ми е-поÑ\80Ñ\83кÑ\83 Ñ\81а копиÑ\98ом моÑ\98е поÑ\80Ñ\83ке.",
"emailccsubject": "Копија поруке кориснику/ци $1: $2",
- "emailsent": "Ð\98меÑ\98л Ñ\98е поÑ\81лаÑ\82",
- "emailsenttext": "Ð\92аÑ\88а имеÑ\98л порука је послата.",
- "emailuserfooter": "Овај имејл је {{GENDER:$1|послао|послала}} $1 {{GENDER:$2|кориснику|корисници}} $2 помоћу опције „{{int:emailuser}}“ на викију {{SITENAME}}. Ако одговорите на овај имејл, {{GENDER:$2|Ваш}} имејл ће бити непосредно прослеђен ка {{GENDER:$1|првобитном пошиљаоцу}}, чиме ћете {{GENDER:$2|му|јој}} открити {{GENDER:$2|своју}} имејл адресу.",
+ "emailsent": "Ð\95-поÑ\80Ñ\83ка Ñ\98е поÑ\81лаÑ\82а",
+ "emailsenttext": "Ð\92аÑ\88а е-порука је послата.",
+ "emailuserfooter": "Ову е-поруку је {{GENDER:$1|послао|послала|послао/ла}} $1 {{GENDER:$2|кориснику|корисници|кориснику/ци}} $2 помоћу опције „{{int:emailuser}}” на пројекту {{SITENAME}}. Ако одговорите на ову е-поруку, {{GENDER:$2|ваша}} е-порука биће непосредно прослеђена ка {{GENDER:$1|оригиналном пошиљаоцу}}, чиме ћете {{GENDER:$2|му|јој}} открити {{GENDER:$2|адресу е-поште}}.",
"usermessage-summary": "Слање системске поруке.",
"usermessage-editor": "Уређивач системских порука",
"usermessage-template": "MediaWiki:UserMessage",
"notanarticle": "Није страница са садржајем",
"notvisiblerev": "Последња измена другог корисника је избрисана.",
"watchlist-details": "Имате {{PLURAL:$1|$1 страницу|$1 странице|$1 страница}} на свом списку надгледања (плус странице за разговор).",
- "wlheader-enotif": "Ð\9eбавеÑ\88Ñ\82еÑ\9aе имеÑ\98лом је омогућено.",
+ "wlheader-enotif": "Ð\9eбавеÑ\88Ñ\82аваÑ\9aе е-поÑ\80Ñ\83ком је омогућено.",
"wlheader-showupdated": "Странице које су промењене откад сте их последњи пут посетили су <strong>подебљане</strong>.",
"wlnote": "Испод {{PLURAL:$1|је последња промена|су последње <strong>$1</strong> промене|је последњих <strong>$1</strong> промена}} у {{PLURAL:$2|претходном сату|претходна <strong>$2</strong> сата|претходних <strong>$2</strong> сати}}, закључно са $3, $4.",
"wlshowlast": "Прикажи последњих $1 сати, $2 дана",
"ipbreason-dropdown": "*Најчешћи разлози за блокирање\n** Уметање лажних информација\n** Уклањање садржаја са страница\n** Додавање непожељних веза до спољашњих сајтова\n** Уношење бесмислица/графита у странице\n** Непристојно понашање\n** Употреба више налога\n** Неприхватљиво корисничко име",
"ipb-hardblock": "Спречи пријављене кориснике да уређују с ове IP адресе",
"ipbcreateaccount": "Онемогући отварање налога",
- "ipbemailban": "Спречи корисника да шаље имејлове",
+ "ipbemailban": "Спречи функцију слања е-поруке корисника",
"ipbenableautoblock": "Аутоматски блокирај последњу IP адресу овог корисника и све даљње адресе с којих покуша да уређује",
"ipbsubmit": "Блокирај овог корисника",
"ipbother": "Друго време:",
"anononlyblock": "само анонимни",
"noautoblockblock": "аутоматско блокирање је онемогућено",
"createaccountblock": "отварање налога је онемогућено",
- "emailblock": "имеÑ\98л Ñ\98е онемогÑ\83Ñ\9bен",
+ "emailblock": "е-поÑ\88Ñ\82а Ñ\98е онемогÑ\83Ñ\9bена",
"blocklist-nousertalk": "забрањено уређивање сопствене странице за разговор",
"blocklist-editing": "уређивање",
"blocklist-editing-sitewide": "уређивање (на целом сајту)",
"unblocklink": "деблокирај",
"change-blocklink": "промени блокаду",
"contribslink": "доприноси",
- "emaillink": "поÑ\88аÑ\99и имеÑ\98л",
+ "emaillink": "поÑ\88аÑ\99и е-поÑ\80Ñ\83кÑ\83",
"autoblocker": "Аутоматски сте блокирани јер делите IP адресу с корисником/цом [[User:$1|$1]].\nРазлог блокирања корисника/це $1 је „$2“",
"blocklogpage": "Дневник блокирања",
"blocklog-showlog": "{{GENDER:$1|Овај корисник је раније блокиран|Ова корисница је раније блокирана}}.\nДневник блокирања је наведен испод као референца:",
"block-log-flags-anononly": "само анонимни корисници",
"block-log-flags-nocreate": "онемогућено отварање налога",
"block-log-flags-noautoblock": "аутоматско блокирање је онемогућено",
- "block-log-flags-noemail": "имеÑ\98л Ñ\98е онемогÑ\83Ñ\9bен",
+ "block-log-flags-noemail": "е-поÑ\88Ñ\82а Ñ\98е онемогÑ\83Ñ\9bена",
"block-log-flags-nousertalk": "забрањено уређивање сопствене странице за разговор",
"block-log-flags-angry-autoblock": "проширено аутоматско блокирање је омогућено",
"block-log-flags-hiddenname": "корисничко име је сакривено",
"tooltip-ca-move": "Преместите ову страницу",
"tooltip-ca-watch": "Додајте ову страницу на списак надгледања",
"tooltip-ca-unwatch": "Уклоните ову страницу са списка надгледања",
- "tooltip-search": "Претражите {{GRAMMAR:акузатив|{{SITENAME}}}}",
+ "tooltip-search": "Претражите пројекат {{SITENAME}}",
"tooltip-search-go": "Идите на страницу са тачно овим именом ако постоји",
"tooltip-search-fulltext": "Претражите странице са овим текстом",
"tooltip-p-logo": "Посетите главну страну",
"tooltip-feed-rss": "RSS фид за ову страницу",
"tooltip-feed-atom": "Atom фид за ову страницу",
"tooltip-t-contributions": "Списак доприноса {{GENDER:$1|овог корисника|ове кориснице|овог корисника}}",
- "tooltip-t-emailuser": "Ð\9fоÑ\88аÑ\99иÑ\82е имеÑ\98л {{GENDER:$1|овом коÑ\80иÑ\81никÑ\83|овоÑ\98 коÑ\80иÑ\81ници}}",
+ "tooltip-t-emailuser": "Ð\9fоÑ\88аÑ\99иÑ\82е е-поÑ\80Ñ\83кÑ\83 {{GENDER:$1|овом коÑ\80иÑ\81никÑ\83|овоÑ\98 коÑ\80иÑ\81ниÑ\86и|коÑ\80иÑ\81никÑ\83/ци}}",
"tooltip-t-info": "Више информација о овој страници",
"tooltip-t-upload": "Отпремите датотеке",
"tooltip-t-specialpages": "Списак свих посебних страница",
"exif-urgency-other": "Прилагођени приоритет ($1)",
"namespacesall": "сви",
"monthsall": "све",
- "confirmemail": "Ð\9fоÑ\82вÑ\80да имеÑ\98л-адÑ\80еÑ\81е",
- "confirmemail_noemail": "Ð\9dиÑ\81Ñ\82е поÑ\81Ñ\82авили важеÑ\9bÑ\83 имеÑ\98л-адÑ\80еÑ\81Ñ\83 у [[Special:Preferences|корисничким подешавањима]].",
+ "confirmemail": "Ð\9fоÑ\82вÑ\80да адÑ\80еÑ\81е е-поÑ\88Ñ\82е",
+ "confirmemail_noemail": "Ð\9dиÑ\81Ñ\82е поÑ\81Ñ\82авили важеÑ\9bÑ\83 адÑ\80еÑ\81Ñ\83 е-поÑ\88Ñ\82е у [[Special:Preferences|корисничким подешавањима]].",
"confirmemail_text": "{{SITENAME}} захтева да проверите ваљаност имејл-адресе пре него што почнете да користите функцију имејла.\nАктивирајте дугме испод да бисте послали мејл за потврду на своју адресу.\nМејл ће укључивати везу са кодом;\nучитајте везу у свом прегледачу да бисте потврдили да је ваша имејл-адреса важећа.",
"confirmemail_pending": "Код за потврду вам је већ послат имејлом.\nАко сте недавно отворили налог, можда треба да сачекате неколико минута да пристигне пре него што поново затражите нови код.",
"confirmemail_send": "Пошаљи код за потврду",
"confirmemail_sent": "Потврдна порука је послата.",
"confirmemail_oncreate": "Кôд за потврду је послат на вашу имејл-адресу.\nОвај кôд није неопходан за пријављивање, али ћете морати да га наведете пре омогућавања било каквих функција заснованих на имејлу на викију.",
- "confirmemail_sendfailed": "{{SITENAME}} не може да поÑ\88аÑ\99е имеÑ\98л поÑ\82вÑ\80дÑ\83.\nÐ\9fÑ\80овеÑ\80иÑ\82е да ли Ñ\98е имеÑ\98л адÑ\80еÑ\81а пÑ\80авилно напиÑ\81ана.\n\nÐ\93Ñ\80еÑ\88ка: $1",
+ "confirmemail_sendfailed": "{{SITENAME}} не може да поÑ\88аÑ\99е е-поÑ\80Ñ\83кÑ\83 за поÑ\82вÑ\80дÑ\83.\nÐ\9fÑ\80овеÑ\80иÑ\82е да ли Ñ\98е адÑ\80еÑ\81а е-поÑ\88Ñ\82е Ñ\81адÑ\80жи неважеÑ\9bе знаке.\n\nÐ\9fоÑ\88иÑ\99алаÑ\86 Ñ\98е вÑ\80аÑ\82ио гÑ\80еÑ\88кÑ\83: $1",
"confirmemail_invalid": "Неважећи код за потврду.\nКод је можда истекао.",
- "confirmemail_needlogin": "$1 да бисте потврдили своју имејл-адресу.",
- "confirmemail_success": "Ð\92аÑ\88а имеÑ\98л-адÑ\80еÑ\81а је потврђена.\nСада можете да се [[Special:UserLogin|пријавите]] и уживате у викију.",
- "confirmemail_loggedin": "Ð\92аÑ\88а имеÑ\98л-адÑ\80еÑ\81а је сада потврђена.",
- "confirmemail_subject": "{{SITENAME}} â\80\93 поÑ\82вÑ\80да имеÑ\98л-адÑ\80еÑ\81е",
+ "confirmemail_needlogin": "$1 да бисте потврдили адресу е-поште.",
+ "confirmemail_success": "Ð\92аÑ\88а адÑ\80еÑ\81а е-поÑ\88Ñ\82е је потврђена.\nСада можете да се [[Special:UserLogin|пријавите]] и уживате у викију.",
+ "confirmemail_loggedin": "Ð\92аÑ\88а адÑ\80еÑ\81а е-поÑ\88Ñ\82е је сада потврђена.",
+ "confirmemail_subject": "{{SITENAME}} â\80\93 поÑ\82вÑ\80да адÑ\80еÑ\81е е-поÑ\88Ñ\82е",
"confirmemail_body": "Неко, вероватно Ви, са IP адресе $1,\nрегистровао је налог „$2“ са овом имејл адресом на пројекту {{SITENAME}}.\n\nДа бисте потврдили да овај налог стварно припада вама и активирали функцију имејла на пројекту {{SITENAME}}, отворите ова у прегледачу:\n\n$3\n\nАко ви *нисте* регистровали налог, пратите ову везу\nда бисте отказали потврду имејл адресе:\n\n$5\n\nОвај код за потврду истиче у $4.",
"confirmemail_body_changed": "Неко, вероватно Ви, с IP адресе $1,\nпроменио је имејл адресу налога „$2“ у ову адресу на пројекту {{SITENAME}}.\n\nДа бисте потврдили да овај налог стварно припада вама и поново активирали функцију имејла, отворите следећу везу у прегледачу:\n\n$3\n\nАко налог *не* припада вама, пратите следећу везу да откажете потврду имејл адресе:\n\n$5\n\nОвај код за потврду истиче $6 у $7",
"confirmemail_body_set": "Неко, вероватно Ви, с IP адресе $1,\nпроменио је имејл адресу налога „$2“ у ову адресу на {{SITENAME}}.\n\nДа бисмо потврдили да овај налог стварно припада вама и поново активирали\nфункцију имејла на {{SITENAME}}, отворите следећу везу у прегледачу:\n\n$3\n\nАко налог *не* припада вама, пратите следећу везу да откажете потврду имејл адресе:\n\n$5\n\nОвај код за потврду истиче $4.",
- "confirmemail_invalidated": "Ð\9fоÑ\82вÑ\80да имеÑ\98л адÑ\80еÑ\81е је отказана",
- "invalidateemail": "Ð\9eÑ\82казиваÑ\9aе поÑ\82вÑ\80де имеÑ\98ла",
+ "confirmemail_invalidated": "Ð\9fоÑ\82вÑ\80да адÑ\80еÑ\81е е-поÑ\88Ñ\82е је отказана",
+ "invalidateemail": "Ð\9eÑ\82казиваÑ\9aе поÑ\82вÑ\80де е-поÑ\88Ñ\82е",
"notificationemail_subject_changed": "Регистрована имејл адреса на пројекту {{SITENAME}} је промењена",
"notificationemail_subject_removed": "Регистрована имејл адреса на пројекту {{SITENAME}} је уклоњена",
"notificationemail_body_changed": "Неко, вероватно Ви је променио имејл адресу налога из $2“ у „$3“ са IP адресе $1 на сајту {{SITENAME}}.\n\nАко ово нисте били Ви, одмах обавестите администраторе сајта.",
"version-license-not-found": "За овај додатак није пронађена информација о лиценци.",
"version-credits-title": "Заслуге за $1",
"version-credits-not-found": "За овај додатак није пронађена информација о заслугама.",
- "version-poweredby-credits": "Овај вики покреће '''[https://www.mediawiki.org/ Медијавики]''', ауторска права © 2001-$1 $2.",
+ "version-poweredby-credits": "Овај вики покреће <strong>[https://www.mediawiki.org/ MediaWiki]</strong>, ауторска права © 2001-$1 $2.",
"version-poweredby-others": "остали",
"version-poweredby-translators": "translatewiki.net преводиоци",
"version-credits-summary": "Желели бисмо да захвалимо следећим људима на њиховом доприносу [[Special:Version|Медијавикији]].",
"log-action-filter-newusers-create": "отворио анониман корисник",
"log-action-filter-newusers-create2": "отворио регистрован корисник",
"log-action-filter-newusers-autocreate": "аутоматски отворен",
- "log-action-filter-newusers-byemail": "оÑ\82ваÑ\80аÑ\9aе лозинком поÑ\81ланом на имеÑ\98лÑ\83",
+ "log-action-filter-newusers-byemail": "оÑ\82ваÑ\80аÑ\9aе лозинком поÑ\81ланом е-поÑ\80Ñ\83ком",
"log-action-filter-patrol-patrol": "ручно",
"log-action-filter-patrol-autopatrol": "аутоматско",
"log-action-filter-protect-protect": "закључавање",
"authmanager-password-help": "Лозинка за потврду идентитета.",
"authmanager-domain-help": "Домен за спољашњу потврду идентитета.",
"authmanager-retype-help": "Поновите лозинку да би сте потврдили.",
- "authmanager-email-label": "Ð\98меÑ\98л",
- "authmanager-email-help": "Ð\98меÑ\98л-адÑ\80еÑ\81а",
+ "authmanager-email-label": "Ð\95-поÑ\88Ñ\82а",
+ "authmanager-email-help": "Ð\90дÑ\80еÑ\81а е-поÑ\88Ñ\82е:",
"authmanager-realname-label": "Право име",
"authmanager-realname-help": "Право име корисника",
"authmanager-provider-password": "Потврда идентитета лозинком",
"accmailtext": "Ett slumpgenererat lösenord för [[User talk:$1|$1]] har skickats till $2. Det kan ändras på sidan ''[[Special:ChangePassword|ändra lösenord]]'' när du loggar in.",
"newarticle": "(Ny)",
"newarticletext": "Du har klickat på en länk till en sida som inte finns ännu. För att skapa sidan, börja att skriva i fältet nedan (du kan läsa mer på [$1 hjälpsidan]). Om du kom hit av misstag kan du bara trycka på <strong>tillbaka</strong>-knappen i din webbläsare.",
- "anontalkpagetext": "----<em>Detta är diskussionssidan för en anonym användare som inte ännu skapat ett konto, eller som inte använder det.</em>\nDärför måste vi använda den numeriska IP-adressen för att identifiera honom/henne.\nEn sådan IP-adress kan delas av flera användare.\nOm du är en anonym användare och känner att irrelevanta kommentarer har riktats mot dig, vänligen [[Special:CreateAccount|skapa ett konto]] eller [[Special:UserLogin|logga in]] för att undvika framtida förväxlingar med andra anonyma användare.",
+ "anontalkpagetext": "----<em>Detta är diskussionssidan för en anonym användare som inte ännu skapat ett konto, eller som inte använder det.</em>\nDärför måste vi använda den numeriska IP-adressen för att identifiera användaren.\nEn sådan IP-adress kan delas av flera användare.\nOm du är en anonym användare och känner att irrelevanta kommentarer har riktats mot dig, vänligen [[Special:CreateAccount|skapa ett konto]] eller [[Special:UserLogin|logga in]] för att undvika framtida förväxlingar med andra anonyma användare.",
"noarticletext": "Det finns just nu ingen text på denna sida.\nDu kan [[Special:Search/{{PAGENAME}}|söka efter denna sidtitel]] på andra sidor, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} söka i relaterade loggar], eller [{{fullurl:{{FULLPAGENAME}}|action=edit}} skapa denna sida]</span>.",
"noarticletext-nopermission": "Det finns för tillfället ingen text på denna sida.\nDu kan [[Special:Search/{{PAGENAME}}|söka efter denna sidas titel]] på andra sidor,\neller <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} söka i relaterade loggar]</span> men du har inte behörighet att skapa sidan.",
"missing-revision": "Version #$1 av sidan med namnet \"{{FULLPAGENAME}}\" finns inte.\n\nDetta orsakas vanligen genom att en gammal historiklänk följts till en sida som har raderats.\nDetaljer kan hittas i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} raderingsloggen].",
"grant-delete": "Radera sidor, revideringar och loggposter",
"grant-editinterface": "Redigera JSON för MediaWiki-namnrymden och hela webbplatsen/användare",
"grant-editmycssjs": "Redigera din egen CSS/JSON/JavaScript",
- "grant-editmyoptions": "Redigera dina användarinställningar",
+ "grant-editmyoptions": "Redigera dina användarinställningar och JSON-konfiguration",
"grant-editmywatchlist": "Redigera din bevakningslista",
"grant-editsiteconfig": "Redigera CSS/JS för hela webbplatsen och användare",
"grant-editpage": "Redigera befintliga sidor",
"group-autoconfirmed.css": "/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ใช้ทั่วไปเท่านั้น */",
"group-bot.css": "/* สไตล์ชีตในหน้านี้จะส่งผลแก่บอตเท่านั้น */",
"group-sysop.css": "/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ดูแลเท่านั้น */",
- "group-bureaucrat.css": "/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ดูแลสิทธิแต่งตั้งเท่านั้น */",
+ "group-bureaucrat.css": "/* สà¹\84à¸\95ลà¹\8cà¸\8aีà¸\95à¹\83à¸\99หà¸\99à¹\89าà¸\99ีà¹\89à¸\88ะสà¹\88à¸\87à¸\9cลà¹\81à¸\81à¹\88à¸\9cูà¹\89à¸\94ูà¹\81ลระà¸\9aà¸\9aสิà¸\97à¸\98ิà¹\81à¸\95à¹\88à¸\87à¸\95ัà¹\89à¸\87à¹\80à¸\97à¹\88าà¸\99ัà¹\89à¸\99 */",
"common.js": "/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ทุกคนในทุกหน้า */",
"group-autoconfirmed.js": "/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ทั่วไปเท่านั้น */",
"group-bot.js": "/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่บอตเท่านั้น */",
"group-sysop.js": "/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ดูแลเท่านั้น */",
- "group-bureaucrat.js": "/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ดูแลสิทธิแต่งตั้งเท่านั้น */",
+ "group-bureaucrat.js": "/* à¸\88าวาสà¸\84ริà¸\9bà¸\95à¹\8cà¹\83à¸\94 à¹\86 à¹\83à¸\99หà¸\99à¹\89าà¸\99ีà¹\89à¸\88ะà¸\96ูà¸\81à¹\82หลà¸\94à¹\83หà¹\89à¹\81à¸\81à¹\88à¸\9cูà¹\89à¸\94ูà¹\81ลระà¸\9aà¸\9aสิà¸\97à¸\98ิà¹\81à¸\95à¹\88à¸\87à¸\95ัà¹\89à¸\87à¹\80à¸\97à¹\88าà¸\99ัà¹\89à¸\99 */",
"anonymous": "{{PLURAL:$1|ผู้ใช้|ผู้ใช้}}นิรนามของ{{SITENAME}}",
"siteuser": "ผู้ใช้ $1 จาก {{SITENAME}}",
"anonuser": "ผู้ใช้นิรนามจาก {{SITENAME}} $1",
"pageinfo-magic-words": "{{PLURAL:$1|คำสั่งพิเศษ}} ($1)",
"pageinfo-hidden-categories": "หมวดหมู่ที่ซ่อนอยู่ ($1)",
"pageinfo-templates": "แม่แบบที่ใช้ ($1)",
- "pageinfo-toolboxlink": "หà¸\99à¹\89าสารสà¸\99à¹\80à¸\97ศ",
+ "pageinfo-toolboxlink": "สารสà¸\99à¹\80à¸\97ศหà¸\99à¹\89า",
"pageinfo-redirectsto": "เปลี่ยนทางไป",
"pageinfo-redirectsto-info": "สนเทศ",
"pageinfo-contentpage": "นับเป็นหน้าเนื้อหา",
"login-userblocked": "Hinarang ang tagagamit na ito. Hindi pinahihintulutan ang paglalagda.",
"wrongpassword": "Mali ang ipinasok na password o pangalan ng tagagamit.\nPakisubok muli.",
"wrongpasswordempty": "Walang laman ang ipinasok na password.\nPakisubok muli.",
- "passwordtooshort": "Ang mga password ay dapat mayroong {{PLURAL:$1|1 panitik|$1 panitik}} (karakter).",
+ "passwordtooshort": "Ang mga password ay kailangan di bababa sa $1 karakter.",
"passwordtoolong": "Ang mga password ay hindi maaaring mas mahaba sa {{PLURAL:$1|1 panitik|$1 panitik}}.",
"passwordtoopopular": "Hindi maaaring gamitin ang mga piniling pangkaraniwang password. Mangyaring pumili ng higit na natatanging password na mahirap hulaan.",
"password-name-match": "Dapat magkaiba ang password mo sa bansag o username mo.",
"uploadstash-errclear": "Dosyaların silinmesi başarısız oldu.",
"uploadstash-refresh": "Dosya listelerini yenile",
"uploadstash-thumbnail": "küçük resmi görüntüle",
+ "uploadstash-bad-path": "Yol mevcut değil.",
+ "uploadstash-bad-path-invalid": "Yol geçerli değil.",
"uploadstash-bad-path-unknown-type": "Bilinmeyen tür \"$1\".",
"uploadstash-bad-path-unrecognized-thumb-name": "Tanınmayan başparmak adı.",
+ "uploadstash-file-not-found-no-thumb": "Küçük resim alınamadı.",
+ "uploadstash-file-not-found-no-local-path": "Ölçeklenmiş öge için yerel yol yok.",
+ "uploadstash-file-not-found-no-object": "Küçük resim için yerel dosya nesnesi oluşturulamadı.",
+ "uploadstash-file-not-found-no-remote-thumb": "Küçük resim alma başarısız oldu: $1\nURL = $2",
"invalid-chunk-offset": "Geçersiz öbek ofset",
"img-auth-accessdenied": "Erişim engellendi",
"img-auth-nopathinfo": "Eksik path bilgilendirmesi.\nSunucunuz REQUEST_URI and/or PATH_INFO değişlenlerini geçirmek için ayarlanmış olmalıdır.\nEğer etkinse, $wgUsePathInfo'i etkinleştirmeyi deneyin.\nhttps://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization sayfasına bakın.",
"pageinfo-display-title": "Görüntülenen başlık",
"pageinfo-default-sort": "Varsayılan sıralama anahtarı",
"pageinfo-length": "Sayfa uzunluğu (bayt cinsinden)",
+ "pageinfo-namespace": "Ad alanı",
"pageinfo-article-id": "Sayfa ID",
"pageinfo-language": "Sayfa içeriğinin dili",
+ "pageinfo-language-change": "değiştir",
"pageinfo-content-model": "Sayfa içerik modeli",
"pageinfo-content-model-change": "değiştir",
"pageinfo-robot-policy": "Robotlar tarafından endeksleniyor",
"pageinfo-watchers": "Sayfanın izleyici sayısı",
"pageinfo-visiting-watchers": "Son değişiklikleri görüntüleyen izleyici sayısı",
"pageinfo-few-watchers": "$1 {{PLURAL:$1|izleyiciden|izleyiciden}} az",
+ "pageinfo-few-visiting-watchers": "Son değişiklikleri izleyen bir kullanıcı olabilir veya olmayabilir",
"pageinfo-redirects-name": "Bu sayfaya yönlendirme sayısı",
"pageinfo-redirects-value": "$1",
"pageinfo-subpages-name": "Bu sayfanın alt sayfaları",
"tags-edit-reason": "Neden:",
"tags-edit-revision-submit": "{{PLURAL:$1|Bu sürüme|$1 sürüme}} değişiklikleri uygula",
"tags-edit-logentry-submit": "{{PLURAL:$1|Bu günlük kaydına|Bu $1 günlük kaydına}} değişiklikleri uygula",
- "tags-edit-success": "Değişiklikler başarıyla uygulandı.",
+ "tags-edit-success": "Değişiklikler uygulandı.",
"tags-edit-failure": "Değişiklikler uygulanamadı:\n$1",
"tags-edit-nooldid-title": "Hedef sürüm geçersiz",
"tags-edit-nooldid-text": "Bu işlemi gerçekleştirmek için herhangi bir hedef sürüm belirtmediniz, ya da belirtilen sürüm mevcut değil.",
"htmlform-date-placeholder": "YYYY-AA-GG",
"htmlform-time-placeholder": "SS:DD:SS",
"htmlform-datetime-placeholder": "YYYY-AA-GG SS:DD:SS",
+ "htmlform-date-invalid": "Belirttiğiniz değer tanınan bir tarih değil. YYYY-AA-GG formatını kullanmayı deneyin.",
+ "htmlform-time-invalid": "Belirttiğiniz değer tanınan bir saat değil. SS:DD:SS formatını kullanmayı deneyin.",
"htmlform-title-not-creatable": "\"$1\"oluşturulabilir bir sayfa ismi değil.",
"htmlform-title-not-exists": "$1 mevcut değil.",
"htmlform-user-not-exists": "<strong>$1</strong> mevcut değil.",
"authform-notoken": "Eksik token",
"authform-wrongtoken": "Yanlış token",
"specialpage-securitylevel-not-allowed-title": "İzin verilmedi",
+ "authpage-cannot-login": "Giriş başlatılamıyor.",
"credentialsform-account": "Hesap adı:",
"edit-error-short": "Hata: $1",
"edit-error-long": "Hatalar:\n\n$1",
"authors": [
"Ariyo",
"Arjunaraoc",
- "아라"
+ "아라",
+ "Mirzali"
]
},
"tog-oldsig": "Imḍa du3do:",
"tog-watchlisthidebots": "زیرِنظر فہرست سے روبہ جاتی ترامیم چھپائیں",
"tog-watchlisthideminor": "زیرِنظر فہرست سے معمولی ترامیم چھپائیں",
"tog-watchlisthideliu": "زیرِنظر فہرست سے داخلِ نوشتہ شدہ صارفین کی ترامیم چھپائیں",
- "tog-watchlistreloadautomatically": "کسÛ\8c Ù\85Ù\82طار Ù\85Û\8cÚº تبدÛ\8cÙ\84Û\8c Ú©Û\92 بعد زÛ\8cر Ù\86ظر Ù\81Û\81رست Ú©Ù\88 Ø®Ù\88دکار Ø·Ù\88ر پر تازÛ\81 کرÛ\8cÚº (جاÙ\88ا اسکرپٹ درکار)",
+ "tog-watchlistreloadautomatically": "کسی مقطر میں تبدیلی کے بعد زیر نظر فہرست کو خودکار طور پر تازہ کریں (جاوا اسکرپٹ درکار)",
"tog-watchlistunwatchlinks": "زیر نظر فہرست کے اندراجات میں زیر نظر کرنے اور ہٹانے کے براہ راست روابط شامل کریں (اس سہولت کے لیے جاوا اسکرپٹ درکار ہے)",
"tog-watchlisthideanons": "زیرِنظر فہرست سے نامعلوم صارفین کی ترامیم چھپائیں",
"tog-watchlisthidepatrolled": "زیرِنظر فہرست سے مراجع شدہ ترامیم چھپائیں",
"suspicious-userlogout": "کھاتے سے خارج ہونے کی درخواست رد کر دی گئی ہے کیونکہ ایسا معلوم ہوتا ہے یہ درخواست کسی شکستہ براؤزر یا کیش (cache) کی حامل پراکسی سے بھیجی گئی تھی۔",
"createacct-another-realname-tip": "حقیقی نام اختیاری ہے۔\nاگر آپ اسے فراہم کریں تو آپ کے کاموں کو اس نام سے منسوب کرنے کے لیے استعمال کیا جائے گا۔",
"pt-login": "داخل ہوں",
- "pt-login-button": "داخل ہو",
+ "pt-login-button": "داخل ہوں",
"pt-login-continue-button": "داخل ہوں",
"pt-createaccount": "کھاتا بنائیں",
"pt-userlogout": "خارج ہوجائیں",
"protectedtitles-submit": "دکھائیں",
"listusers": "فہرست ارکان",
"listusers-editsonly": "محض ترمیم کرنے والے صارفین دکھائیں",
+ "listusers-temporarygroupsonly": "محض عارضی حلقہ ہائے صارف میں شامل صارفین کو دکھائیں",
"listusers-creationsort": "تاریخ تخلیق کے مطابق مرتب کریں",
"listusers-desc": "نزولی ترتیب",
"usereditcount": "$1 {{PLURAL:$1|ترمیم|ترامیم}}",
"whatlinkshere-hidetrans": "استعمالات $1",
"whatlinkshere-hidelinks": "روابط $1",
"whatlinkshere-hideimages": "تصویر کے روابط $1",
- "whatlinkshere-filters": "Ù\85Ù\82طارات",
+ "whatlinkshere-filters": "مقطرات",
"whatlinkshere-submit": "ٹھیک",
"autoblockid": "خودکار پابندی #$1",
"block": "صارف مسدود کریں",
"allmessagescurrent": "موجودہ متن",
"allmessagestext": "ذیل میں میڈیاویکی نام فضا میں دستیاب نظامی پیغامات کی فہرست موجود ہے۔\nاگر آپ میڈیاویکی کا ترجمہ کرنا چاہتے ہیں تو [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation میڈیاویکی مقامیت کاری] اور [https://translatewiki.net translatewiki.net] ملاحظہ فرمائیں۔",
"allmessagesnotsupportedDB": "اس صفحہ کو استعمال نہیں کیا جا سکتا کیونکہ <strong>$wgUseDatabaseMessages</strong> کو غیر فعال کر دیا گیا ہے۔",
- "allmessages-filter-legend": "Ù\85Ù\82طار",
+ "allmessages-filter-legend": "مقطر",
"allmessages-filter": "تلاش بلحاظ:",
"allmessages-filter-unmodified": "غیر تبدیل شدہ",
"allmessages-filter-all": "تمام",
"anonusers": "{{SITENAME}} {{PLURAL:$2|کا|کے}} گمنام {{PLURAL:$2|{{GENDER:$1|صارف}}|صارفین}} $1",
"creditspage": "صفحہ کے انتسابات",
"nocredits": "اس صفحہ کے انتسابات سے متعلق معلومات دستیاب نہیں ہیں۔",
- "spamprotectiontitle": "Ù\85Ù\82طار Ù\81اضÙ\84 کارÛ\8c",
- "spamprotectiontext": "آپ جس عبارت کو محفوظ کرنا چاہتے ہیں اسے مقطار فاضل کاری نے ممنوع کر رکھا ہے۔\nعین ممکن ہے یہ فہرست سیاہ میں درج کسی بیرونی سائٹ کے ربط کی وجہ سے ہو رہا ہو۔",
- "spamprotectionmatch": "Ø°Û\8cÙ\84 Ù\85Û\8cÚº Ù\85Ù\88جÙ\88د Ù\85تÙ\86 Ú©Ù\88 Ù\85Ù\82طار Ù\81اضÙ\84 کارÛ\8c Ù\86Û\92 رÙ\88Ú© دÛ\8cا Û\81Û\92: $1",
+ "spamprotectiontitle": "مقطر فاضل کاری",
+ "spamprotectiontext": "آپ جس عبارت کو محفوظ کرنا چاہتے ہیں اس پر مقطر فاضل کاری نے پابندی عائد کر رکھی ہے۔\nعین ممکن ہے کہ فہرست سیاہ میں درج کسی بیرونی ویب سائٹ کے ربط کی وجہ سے ایسا ہو رہا ہو۔",
+ "spamprotectionmatch": "ذیل میں موجود متن کو مقطر فاضل کاری نے روک دیا ہے: $1",
"spambot_username": "میڈیاویکی محافظ فاضل کاری",
"spam_reverting": "اس آخری نسخہ کی جانب واپس پھیرا جا رہا ہے جس میں $1 کے روابط شامل نہیں",
"spam_blanking": "$1 کے روابط پر مشتمل تمام نسخے، صفائی جاری ہے",
"newimages": "نئی فائلوں کی گیلری",
"imagelisttext": "ذیل میں $2 <strong>$1</strong> {{PLURAL:$1|فائل|فائلوں}} کی فہرست موجود ہے۔",
"newimages-summary": "اس خصوصی صفحہ میں تازہ ترین اپلوڈ شدہ فائلوں کی فہرست موجود ہے۔",
- "newimages-legend": "Ù\85Ù\82طار",
+ "newimages-legend": "مقطر",
"newimages-label": "فائل کا نام (یا اس کا جزو):",
"newimages-user": "آئی پی پتہ یا صارف نام",
"newimages-newbies": "محض نئے کھاتوں کی شراکتیں دکھائیں",
"intentionallyblankpage": "اس صفحہ کو دانستہ خالی چھوڑا گیا ہے۔",
"external_image_whitelist": "#اس سطر کو ہو بہو ایسا ہی رہنے دیں<pre>\n#ذیل میں ریجیکس کی عبارتیں درج کریں (محض // کے درمیان)\n#ان عبارتوں کی بیرونی تصویروں کے روابط سے مطابقت کی جائے گی\n#جو مطابق ہو جائیں وہ تصویر کے طور پر نظر آئیں گے ورنہ محض تصویر کا ربط ظاہر ہوگا\n# علامت # سے شرع ہونے والی سطروں کو تبصرہ سمجھا جائے گا\n#چھوٹے بڑے حروف کو نظر انداز کیا جائے گا\n\nریجیکس کی تمام عبارتوں کو اس سطر کے اوپر رکھیں۔ اس سطر کو ہو بہو ایسا ہی رہنے دیں</pre>",
"tags": "درست تبدیلی کے ٹیگ",
- "tag-filter": "Ù\85Ù\82طار [[Special:Tags|Ù¹Û\8cÚ¯]]:",
- "tag-filter-submit": "Ù\85Ù\82طار",
+ "tag-filter": "مقطر [[Special:Tags|ٹیگ]]:",
+ "tag-filter-submit": "مقطر",
"tag-list-wrapper": "[[Special:Tags|{{PLURAL:$1|ٹیگ}}]]: $2",
"tag-mw-contentmodelchange": "مواد کے ماڈل میں تبدیلی",
"tag-mw-contentmodelchange-description": "ترامیم جو صفحہ کے [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel مواد کے ماڈل کو تبدیل کرتی ہیں]",
"tags": "有效更改過嘅標籤",
"tag-filter": "[[Special:Tags|標籤]]過濾器:",
"tag-filter-submit": "過濾器",
- "tag-list-wrapper": "[[Special:Tags|$1個標籤]]:$2",
+ "tag-list-wrapper": "[[Special:Tags|{{PLURAL:$1|標籤|標籤}}]]:$2",
"tag-mw-new-redirect": "新跳轉",
"tag-mw-removed-redirect": "剷走跳轉",
"tag-mw-blank": "清空",
"prefs-email": "電子郵件選項",
"prefs-rendering": "外觀",
"saveprefs": "儲存",
- "restoreprefs": "還原所有預設設定 (所有項目)",
+ "restoreprefs": "還原所有預設設定(所有項目)",
"prefs-editing": "編輯",
"searchresultshead": "搜尋",
"stub-threshold": "短頁面連結格式門檻值 ($1):",
"rollback-missingparam": "請求缺少必要參數。",
"rollback-missingrevision": "無法載入修訂資料。",
"cantrollback": "無法還原編輯;\n此頁面的最後貢獻者是唯一的作者。",
- "alreadyrolled": "無法還原由 [[User:$2|$2]] ([[User talk:$2|對話]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]] 所作的最後一次編輯 [[:$1]],已有其他人編輯或還原了該頁面。\n\n最後一次編輯該頁面的使用者是 [[User:$3|$3]] ([[User talk:$3|對話]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]])。",
+ "alreadyrolled": "無法還原由[[User:$2|$2]]([[User talk:$2|對話]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]])所作的最後一次編輯[[:$1]],已有其他人編輯或還原了該頁面。\n\n最後一次編輯該頁面的使用者是[[User:$3|$3]]([[User talk:$3|對話]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]])。",
"editcomment": "編輯摘要為:<em>$1</em>。",
"revertpage": "已還原[[Special:Contributions/$2|$2]]([[User talk:$2|對話]])的編輯為最後由[[User:$1|$1]]所修訂的版本",
"revertpage-nouser": "已還原隱藏使用者的編輯為最後 {{GENDER:$1|[[User:$1|$1]]}} 修訂的版本",
"blocklog-showsuppresslog": "此使用者先前被封鎖並且隱藏過。\n以下為禁止顯示紀錄以供參考:",
"blocklogentry": "已封鎖 [[$1]] 的期限至 $2 $3",
"reblock-logentry": "變更 [[$1]] 的封鎖設定,到期時間為 $2 $3",
- "blocklogtext": "此為使用者的封鎖及取消封鎖動作的記錄。未列出自動封鎖的IP位址。請參考[[Special:BlockList|封鎖清單]]中的目前正在作業的阻止與封鎖。",
+ "blocklogtext": "此為使用者的封鎖及取消封鎖動作的記錄。未列出自動封鎖的IP位址。請參考[[Special:BlockList|封鎖清單]]中的目前正在運作的阻止與封鎖。",
"unblocklogentry": "已解除封鎖 $1",
"block-log-flags-anononly": "僅限匿名使用者",
"block-log-flags-nocreate": "停用帳號建立",
DROP INDEX ct_rev_id ON /*_*/change_tag;
DROP INDEX ct_tag ON /*_*/change_tag;
-DROP INDEX ts_rc_id ON /*_*/tag_summary;
-DROP INDEX ts_log_id ON /*_*/tag_summary;
-DROP INDEX ts_rev_id ON /*_*/tag_summary;
-
CREATE UNIQUE INDEX /*i*/change_tag_rc_tag ON /*_*/change_tag (ct_rc_id,ct_tag);
CREATE UNIQUE INDEX /*i*/change_tag_log_tag ON /*_*/change_tag (ct_log_id,ct_tag);
CREATE UNIQUE INDEX /*i*/change_tag_rev_tag ON /*_*/change_tag (ct_rev_id,ct_tag);
CREATE INDEX /*i*/change_tag_tag_id ON /*_*/change_tag (ct_tag,ct_rc_id,ct_rev_id,ct_log_id);
-
-CREATE UNIQUE INDEX /*i*/tag_summary_rc_id ON /*_*/tag_summary (ts_rc_id);
-CREATE UNIQUE INDEX /*i*/tag_summary_log_id ON /*_*/tag_summary (ts_log_id);
-CREATE UNIQUE INDEX /*i*/tag_summary_rev_id ON /*_*/tag_summary (ts_rev_id);
+++ /dev/null
--- Primary key in tag_summary table
-
-ALTER TABLE /*$wgDBprefix*/tag_summary
- ADD COLUMN ts_id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST,
- ADD PRIMARY KEY (ts_id);
+++ /dev/null
-ALTER TABLE /*_*/tag_summary MODIFY ts_log_id int unsigned NULL;
\ No newline at end of file
+++ /dev/null
-ALTER TABLE /*_*/tag_summary MODIFY ts_rev_id int unsigned NULL;
\ No newline at end of file
+++ /dev/null
--- Rollup table to pull a LIST of tags simply without ugly GROUP_CONCAT that only works on MySQL 4.1+
--- Andrew Garrett, 2009-01
-CREATE TABLE /*_*/tag_summary (
- ts_rc_id int NULL,
- ts_log_id int NULL,
- ts_rev_id int NULL,
- ts_tags BLOB NOT NULL
-) /*$wgDBTableOptions*/;
-
-CREATE UNIQUE INDEX /*i*/tag_summary_rc_id ON /*_*/tag_summary (ts_rc_id);
-CREATE UNIQUE INDEX /*i*/tag_summary_log_id ON /*_*/tag_summary (ts_log_id);
-CREATE UNIQUE INDEX /*i*/tag_summary_rev_id ON /*_*/tag_summary (ts_rev_id);
+++ /dev/null
--- Andrew Garrett, 2009-01
-CREATE TABLE /*_*/valid_tag (
- vt_tag varchar(255) NOT NULL PRIMARY KEY
-) /*$wgDBTableOptions*/;
+++ /dev/null
--- Primary key in tag_summary table
-
-ALTER TABLE /*_*/tag_summary ADD ts_id INT IDENTITY;
-ALTER TABLE /*_*/tag_summary ADD CONSTRAINT pk_tag_summary PRIMARY KEY(ts_id)
-- Primary key and expiry column in user_groups table
DROP INDEX IF EXISTS /*i*/ug_user_group ON /*_*/user_groups;
-ALTER TABLE /*_*/tag_summary ADD CONSTRAINT pk_user_groups PRIMARY KEY(ug_user, ug_group);
-ALTER TABLE /*_*/tag_summary ADD ug_expiry varchar(14) DEFAULT NULL;
+ALTER TABLE /*_*/user_groups ADD CONSTRAINT pk_user_groups PRIMARY KEY(ug_user, ug_group);
+ALTER TABLE /*_*/user_groups ADD ug_expiry varchar(14) DEFAULT NULL;
CREATE INDEX /*i*/ug_expiry ON /*_*/user_groups(ug_expiry);
-- Covering index, so we can pull all the info only out of the index.
CREATE INDEX /*i*/change_tag_tag_id_id ON /*_*/change_tag (ct_tag_id,ct_rc_id,ct_rev_id,ct_log_id);
--- Rollup table to pull a LIST of tags simply without ugly GROUP_CONCAT
--- that only works on MySQL 4.1+
-CREATE TABLE /*_*/tag_summary (
- ts_id int NOT NULL PRIMARY KEY IDENTITY,
- -- RCID for the change
- ts_rc_id int NULL REFERENCES /*_*/recentchanges(rc_id),
- -- LOGID for the change
- ts_log_id int NULL REFERENCES /*_*/logging(log_id),
- -- REVID for the change
- ts_rev_id int NULL REFERENCES /*_*/revision(rev_id),
- -- Comma-separated list of tags
- ts_tags nvarchar(max) NOT NULL
-);
-
-CREATE UNIQUE INDEX /*i*/tag_summary_rc_id ON /*_*/tag_summary (ts_rc_id);
-CREATE UNIQUE INDEX /*i*/tag_summary_log_id ON /*_*/tag_summary (ts_log_id);
-CREATE UNIQUE INDEX /*i*/tag_summary_rev_id ON /*_*/tag_summary (ts_rev_id);
-
-
-CREATE TABLE /*_*/valid_tag (
- vt_tag nvarchar(255) NOT NULL PRIMARY KEY
-);
-
-- Table for storing localisation data
CREATE TABLE /*_*/l10n_cache (
-- Language code
+++ /dev/null
-define mw_prefix='{$wgDBprefix}';
-
-ALTER TABLE &mw_prefix.tag_summary ADD (
-ts_id NUMBER NOT NULL,
-);
-ALTER TABLE &mw_prefix.tag_summary ADD CONSTRAINT &mw_prefix.tag_summary_pk PRIMARY KEY (ts_id);
CREATE INDEX &mw_prefix.change_tag_i02 ON &mw_prefix.change_tag (ct_tag_id,ct_rc_id,ct_rev_id,ct_log_id);
-CREATE TABLE &mw_prefix.tag_summary (
- ts_id NUMBER NOT NULL,
- ts_rc_id NUMBER NULL,
- ts_log_id NUMBER NULL,
- ts_rev_id NUMBER NULL,
- ts_tags BLOB NOT NULL
-);
-ALTER TABLE &mw_prefix.tag_summary ADD CONSTRAINT &mw_prefix.tag_summary_pk PRIMARY KEY (ts_id);
-CREATE UNIQUE INDEX &mw_prefix.tag_summary_u01 ON &mw_prefix.tag_summary (ts_rc_id);
-CREATE UNIQUE INDEX &mw_prefix.tag_summary_u02 ON &mw_prefix.tag_summary (ts_log_id);
-CREATE UNIQUE INDEX &mw_prefix.tag_summary_u03 ON &mw_prefix.tag_summary (ts_rev_id);
-
-CREATE TABLE &mw_prefix.valid_tag (
- vt_tag VARCHAR2(255) NOT NULL
-);
-ALTER TABLE &mw_prefix.valid_tag ADD CONSTRAINT &mw_prefix.valid_tag_pk PRIMARY KEY (vt_tag);
-
-- This table is not used unless profiling is turned on
--CREATE TABLE &mw_prefix.profiling (
-- pf_count NUMBER DEFAULT 0 NOT NULL,
$this->setBatchSize( 1000 );
$this->addOption(
'sleep',
- 'Sleep time (in seconds) between every batch',
+ 'Sleep time (in seconds) between every batch, defaults to zero',
false,
true
);
private function backpopulateChangeTagPerTag( $tagName, $tagId ) {
$dbr = $this->lbFactory->getMainLB()->getConnection( DB_REPLICA );
$dbw = $this->lbFactory->getMainLB()->getConnection( DB_MASTER );
- $sleep = (int)$this->getOption( 'sleep', 10 );
+ $sleep = (int)$this->getOption( 'sleep', 0 );
$lastId = 0;
$this->output( "Starting to add ct_tag_id = {$tagId} for ct_tag = {$tagName}\n" );
while ( true ) {
+++ /dev/null
-CREATE TABLE tag_summary (
- ts_rc_id INTEGER NULL,
- ts_log_id INTEGER NULL,
- ts_rev_id INTEGER NULL,
- ts_tags TEXT NOT NULL
-);
-CREATE UNIQUE INDEX tag_summary_rc_id ON tag_summary(ts_rc_id);
-CREATE UNIQUE INDEX tag_summary_log_id ON tag_summary(ts_log_id);
-CREATE UNIQUE INDEX tag_summary_rev_id ON tag_summary(ts_rev_id);
+++ /dev/null
-CREATE TABLE valid_tag (
- vt_tag TEXT NOT NULL PRIMARY KEY
-);
DROP SEQUENCE IF EXISTS externallinks_el_id_seq CASCADE;
DROP SEQUENCE IF EXISTS sites_site_id_seq CASCADE;
DROP SEQUENCE IF EXISTS change_tag_ct_id_seq CASCADE;
-DROP SEQUENCE IF EXISTS tag_summary_ts_id_seq CASCADE;
DROP FUNCTION IF EXISTS page_deleted() CASCADE;
DROP FUNCTION IF EXISTS ts2_page_title() CASCADE;
DROP FUNCTION IF EXISTS ts2_page_text() CASCADE;
CREATE INDEX change_tag_tag_id_id ON change_tag(ct_tag_id,ct_rc_id,ct_rev_id,ct_log_id);
-CREATE SEQUENCE tag_summary_ts_id_seq;
-CREATE TABLE tag_summary (
- ts_id INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('tag_summary_ts_id_seq'),
- ts_rc_id INTEGER NULL,
- ts_log_id INTEGER NULL,
- ts_rev_id INTEGER NULL,
- ts_tags TEXT NOT NULL
-);
-ALTER SEQUENCE tag_summary_ts_id_seq OWNED BY tag_summary.ts_id;
-CREATE UNIQUE INDEX tag_summary_rc_id ON tag_summary(ts_rc_id);
-CREATE UNIQUE INDEX tag_summary_log_id ON tag_summary(ts_log_id);
-CREATE UNIQUE INDEX tag_summary_rev_id ON tag_summary(ts_rev_id);
-
-CREATE TABLE valid_tag (
- vt_tag TEXT NOT NULL PRIMARY KEY
-);
-
CREATE TABLE user_properties (
up_user INTEGER NULL REFERENCES mwuser(user_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
up_property TEXT NOT NULL,
+++ /dev/null
-DROP TABLE IF EXISTS /*_*/tag_summary_tmp;
-
-CREATE TABLE /*$wgDBprefix*/tag_summary_tmp (
- ts_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
- ts_rc_id int NULL,
- ts_log_id int NULL,
- ts_rev_id int NULL,
- ts_tags blob NOT NULL
-);
-
-INSERT OR IGNORE INTO /*_*/tag_summary_tmp (
- ts_rc_id, ts_log_id, ts_rev_id, ts_tags )
- SELECT
- ts_rc_id, ts_log_id, ts_rev_id, ts_tags
- FROM /*_*/tag_summary;
-
-DROP TABLE /*_*/tag_summary;
-
-ALTER TABLE /*_*/tag_summary_tmp RENAME TO /*_*/tag_summary;
-
-CREATE UNIQUE INDEX /*i*/tag_summary_rc_id ON /*_*/tag_summary (ts_rc_id);
-CREATE UNIQUE INDEX /*i*/tag_summary_log_id ON /*_*/tag_summary (ts_log_id);
-CREATE UNIQUE INDEX /*i*/tag_summary_rev_id ON /*_*/tag_summary (ts_rev_id);
-- Covering index, so we can pull all the info only out of the index.
CREATE INDEX /*i*/change_tag_tag_id_id ON /*_*/change_tag (ct_tag_id,ct_rc_id,ct_rev_id,ct_log_id);
--- Rollup table to pull a LIST of tags simply without ugly GROUP_CONCAT
--- that only works on MySQL 4.1+
-CREATE TABLE /*_*/tag_summary (
- ts_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
- -- RCID for the change
- ts_rc_id int NULL,
- -- LOGID for the change
- ts_log_id int unsigned NULL,
- -- REVID for the change
- ts_rev_id int unsigned NULL,
- -- Comma-separated list of tags
- ts_tags blob NOT NULL
-) /*$wgDBTableOptions*/;
-
-CREATE UNIQUE INDEX /*i*/tag_summary_rc_id ON /*_*/tag_summary (ts_rc_id);
-CREATE UNIQUE INDEX /*i*/tag_summary_log_id ON /*_*/tag_summary (ts_log_id);
-CREATE UNIQUE INDEX /*i*/tag_summary_rev_id ON /*_*/tag_summary (ts_rev_id);
-
-
-CREATE TABLE /*_*/valid_tag (
- vt_tag varchar(255) NOT NULL PRIMARY KEY
-) /*$wgDBTableOptions*/;
-- Table for storing localisation data
CREATE TABLE /*_*/l10n_cache (
/**
* Replace $* with a list of parameters for &uselang=qqx.
*
+ * @private
* @since 1.33
* @param {string} formatString Format string
* @param {Array} parameters Values for $N replacements
* @return {string} Transformed format string
*/
- mw.transformFormatForQqx = function ( formatString, parameters ) {
+ mw.internalDoTransformFormatForQqx = function ( formatString, parameters ) {
var parametersString;
if ( formatString.indexOf( '$*' ) !== -1 ) {
parametersString = '';
*/
mw.format = function ( formatString ) {
var parameters = slice.call( arguments, 1 );
- formatString = mw.transformFormatForQqx( formatString, parameters );
+ formatString = mw.internalDoTransformFormatForQqx( formatString, parameters );
return formatString.replace( /\$(\d+)/g, function ( str, match ) {
var index = parseInt( match, 10 ) - 1;
return parameters[ index ] !== undefined ? parameters[ index ] : '$' + match;
margin-right: @ooui-spacing-medium;
}
+// First selector is flatlist specific
+.mw-htmlform-field-HTMLMultiSelectField.oo-ui-fieldLayout,
.mw-htmlform-ooui .htmlform-tip,
.mw-htmlform-ooui .mw-htmlform-submit-buttons {
margin-top: @ooui-spacing-medium;
wikiText = '⧼' + key + '⧽';
}
}
- wikiText = mw.transformFormatForQqx( wikiText, replacements );
+ wikiText = mw.internalDoTransformFormatForQqx( wikiText, replacements );
this.astCache[ key ] = this.wikiTextToAst( wikiText );
}
return this.astCache[ key ];
/* Special:AllMessages */
+#mw-allmessagestable tbody:hover td {
+ /* Duplicate of `.mw-datatable tr:hover td` from shared.css,
+ * so that it also applies when hovering a lower cell
+ * within the same rowspan */
+ background-color: #eaf3ff;
+}
+
#mw-allmessagestable .am_default {
background-color: #fcffc4;
}
-#mw-allmessagestable tr:hover .am_default {
+#mw-allmessagestable tbody:hover .am_default {
background-color: #faff90;
}
background-color: #e2ffe2;
}
-#mw-allmessagestable tr:hover + tr .am_actual {
+#mw-allmessagestable tbody:hover .am_actual {
background-color: #b1ffb1;
}
}
}
- &-empty &-handle {
- color: @color-base--subtle;
- }
-
&.oo-ui-iconElement .mw-widgets-datetime-dateTimeInputWidget-handle {
padding-left: @padding-start-input-text-icon-label;
}
.oo-ui-box-sizing( border-box );
border: 0;
border-radius: @border-radius-base;
- // Provide more top padding due to border not being part of the calculation
- padding-top: 10 / @ooui-font-size-browser / @ooui-font-size-base;
+ padding-top: @padding-top-base;
padding-bottom: @padding-bottom-base;
box-shadow: none;
font-size: inherit;
line-height: @line-height-widget-singleline;
text-align: center;
vertical-align: top;
+
+ // Day field, f.e. “Sat”
+ &:first-child {
+ cursor: pointer;
+ }
+
+ // Day field & time zome field, f.e. “Sat” & “Z”
+ &[ tabindex='-1' ] {
+ // Support: Firefox, Chrome
+ outline: 0;
+ }
}
&-editField {
}
&-clearButton {
+ // Override `&-field` from above
padding-top: 0;
+ padding-bottom: 0;
+ padding-left: @padding-start-button-clear;
+
+ // `&.oo-ui-iconElement` needed for specificity
+ &.oo-ui-iconElement > .oo-ui-buttonElement-button {
+ padding-top: @padding-top-button-clear;
+ }
.oo-ui-iconElement-icon {
background-size: @size-indicator @size-indicator;
}
}
+ &-empty {
+ .mw-widgets-datetime-dateTimeInputWidget-handle {
+ color: @color-base--subtle;
+ }
+
+ .mw-widgets-datetime-dateTimeInputWidget-clearButton {
+ display: none;
+ }
+ }
+
&.oo-ui-widget-enabled {
.mw-widgets-datetime-dateTimeInputWidget-handle {
.oo-ui-transition( border-color @transition-ease-medium );
@padding-horizontal-base: 12 / @ooui-font-size-browser / @ooui-font-size-base;
@padding-horizontal-input-text: 8 / @ooui-font-size-browser / @ooui-font-size-base;
@padding-top-base: 8 / @ooui-font-size-browser / @ooui-font-size-base;
+@padding-top-button-clear: 28 / @ooui-font-size-browser / @ooui-font-size-base; // As it's inside an input, we need to reduce from borders surrounding
@padding-bottom-base: 7 / @ooui-font-size-browser / @ooui-font-size-base;
@padding-start-input-text-icon: 6 / @ooui-font-size-browser / @ooui-font-size-base;
@padding-start-input-text-icon-label: 32 / @ooui-font-size-browser / @ooui-font-size-base;
+@padding-start-button-clear: 4 / @ooui-font-size-browser / @ooui-font-size-base;
@border-base: 1px solid #a2a9b1;
@border-color-base--disabled: #c8ccd1;
!! wikitext
[[Image:foobar.jpg]]
!! html/php
-<p><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>
+<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
!! html/parsoid
<p><figure-inline class="mw-default-size" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
!! wikitext
[[File:Foobar.jpg]]
!! html/php
-<p><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>
+<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
!! html/parsoid
<p><figure-inline class="mw-default-size" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
!! wikitext
[[File:Foobar.jpg|right]]
!! html/php
-<div class="floatright"><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></div>
+<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></div>
!! html/parsoid
<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure>
!! wikitext
[[File:Foobar.jpg|right|Caption text]]
!! html/php
-<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption text"><img alt="Caption text" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
+<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption text"><img alt="Caption text" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></div>
!! html/parsoid
<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>Caption text</figcaption></figure>
!! wikitext
[[File:Foobar.jpg|right|Caption page stuff]]
!! html/php
-<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption page stuff"><img alt="Caption page stuff" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
+<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption page stuff"><img alt="Caption page stuff" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></div>
!! html/parsoid
<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>Caption page stuff</figcaption></figure>
!! wikitext
[[File:Foobar.jpg|right|Caption page=]]
!! html/php
-<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption page="><img alt="Caption page=" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
+<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption page="><img alt="Caption page=" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></div>
!! html/parsoid
<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>Caption page=</figcaption></figure>
!! wikitext
[[File:Foobar.jpg|right|Caption page=stuff]]
!! html/php
-<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption page=stuff"><img alt="Caption page=stuff" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
+<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption page=stuff"><img alt="Caption page=stuff" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></div>
!! html/parsoid
<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>Caption page=stuff</figcaption></figure>
[[File:Foobar.jpg|thumb|one | two]]
[[File:Foobar.jpg|thumb|one ''two'' | three]]
!! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>one | two</div></div></div>
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>one <i>two</i> | three</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>one | two</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>one <i>two</i> | three</div></div></div>
!! html/parsoid
<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>one <span typeof="mw:Entity">|</span> two</figcaption></figure>
[[Link2]]
]]
!! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Caption <a href="/index.php?title=Link1&action=edit&redlink=1" class="new" title="Link1 (page does not exist)">Link1</a> [[]] <a href="/index.php?title=Link2&action=edit&redlink=1" class="new" title="Link2 (page does not exist)">Link2</a></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" decoding="async" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Caption <a href="/index.php?title=Link1&action=edit&redlink=1" class="new" title="Link1 (page does not exist)">Link1</a> [[]] <a href="/index.php?title=Link2&action=edit&redlink=1" class="new" title="Link2 (page does not exist)">Link2</a></div></div></div>
!! html/parsoid
<figure class="mw-default-size" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"caption","ak":"Caption [[Link1]]\n[[]]\n[[Link2]]\n"}]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"25","width":"220"},"sa":{"resource":"File:Foobar.jpg"}}'/></a><figcaption>Caption <a rel="mw:WikiLink" href="./Link1" title="Link1" data-parsoid='{"stx":"simple","a":{"href":"./Link1"},"sa":{"href":"Link1"}}'>Link1</a>
!! wikitext
[[File:Foobar.jpg|link=|stuff]]
!! html/php
-<p><img alt="stuff" src="http://example.com/images/3/3a/Foobar.jpg" title="stuff" width="1941" height="220" />
+<p><img alt="stuff" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" title="stuff" width="1941" height="220" />
</p>
!! html/parsoid
<p><figure-inline class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"stuff"}'><span><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></span></figure-inline></p>
!! wikitext
Linktrails should not work for images: [[File:Foobar.jpg]]s
!! html/php
-<p>Linktrails should not work for images: <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>s
+<p>Linktrails should not work for images: <a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>s
</p>
!! html/parsoid
<p>Linktrails should not work for images: <figure-inline class="mw-default-size" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline>s</p>
!! wikitext
[[File:Foobar.jpg|right||Caption text]]
!! html/php
-<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption text"><img alt="Caption text" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
+<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption text"><img alt="Caption text" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></div>
!! html/parsoid
<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>Caption text</figcaption></figure>
!! wikitext
[[File:Foobar.jpg|thumb|{{echo|137px}}|This is a caption]]
!! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:139px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/137px-Foobar.jpg" width="137" height="16" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/206px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/274px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>This is a caption</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:139px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/137px-Foobar.jpg" decoding="async" width="137" height="16" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/206px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/274px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>This is a caption</div></div></div>
!! html/parsoid
<figure typeof="mw:Image/Thumb mw:ExpandedAttrs" about="#mwt2" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"width","ak":"{{echo|137px}}"},{"ck":"caption","ak":"This is a caption"}]}' data-mw='{"attribs":[["thumbnail",{"html":"thumb"}],["width",{"html":"<span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[24,38,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"137px\"}},\"i\":0}}]}'>137px</span>"}]]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/137px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="16" width="137" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"16","width":"137"},"sa":{"resource":"File:Foobar.jpg"}}'/></a><figcaption>This is a caption</figcaption></figure>
!! wikitext
[[File:Foobar.jpg|{{echo|thumb}}|{{echo|137px}}|This is a caption]]
!! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:139px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/137px-Foobar.jpg" width="137" height="16" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/206px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/274px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>This is a caption</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:139px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/137px-Foobar.jpg" decoding="async" width="137" height="16" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/206px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/274px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>This is a caption</div></div></div>
!! html/parsoid
<figure typeof="mw:Image/Thumb mw:ExpandedAttrs" about="#mwt3" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"{{echo|thumb}}"},{"ck":"width","ak":"{{echo|137px}}"},{"ck":"caption","ak":"This is a caption"}]}' data-mw='{"attribs":[["thumbnail",{"html":"<span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[18,32,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"thumb\"}},\"i\":0}}]}'>thumb</span>"}],["width",{"html":"<span about=\"#mwt2\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[33,47,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"137px\"}},\"i\":0}}]}'>137px</span>"}]]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/137px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="16" width="137" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"16","width":"137"},"sa":{"resource":"File:Foobar.jpg"}}'/></a><figcaption>This is a caption</figcaption></figure>
!! wikitext
[[File:Foobar.jpg|{{echo|50px}}]]
!! html/php
-<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" width="50" height="6" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/75px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/100px-Foobar.jpg 2x" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" decoding="async" width="50" height="6" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/75px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/100px-Foobar.jpg 2x" /></a>
</p>
!! html/parsoid
<p><figure-inline typeof="mw:Image mw:ExpandedAttrs" about="#mwt2" data-parsoid='{"optList":[{"ck":"width","ak":"{{echo|50px}}"}]}' data-mw='{"attribs":[["width",{"html":"<span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[18,31,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"50px\"}},\"i\":0}}]}'>50px</span>"}]]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="6" width="50" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"6","width":"50"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
!! wikitext
[[File:Foobar.jpg|{{image_attribs}}]]
!! html/php
-<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption text"><img alt="Caption text" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
+<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption text"><img alt="Caption text" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></div>
!! html/parsoid
<figure class="mw-default-size mw-halign-right" typeof="mw:Image mw:Placeholder"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>Caption text</figcaption></figure>
123[[File:Foobar.jpg|right]]456
123[[File:Foobar.jpg|thumb]]456
!! html/php
-<p>123<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>456
+<p>123<a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>456
</p>
-123<div class="floatright"><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></div>456
-123<div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div></div></div></div>456
+123<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></div>456
+123<div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" decoding="async" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div></div></div></div>456
!! html/php+tidy
-<p>123<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>456
+<p>123<a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>456
</p><p>
-123</p><div class="floatright"><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></div><p>456
-123</p><div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div></div></div></div><p>456
+123</p><div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></div><p>456
+123</p><div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" decoding="async" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div></div></div></div><p>456
</p>
!! html/parsoid
<p>123<figure-inline class="mw-default-size" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline>456</p>
!! wikitext
[[File:Foobar.jpg|right|Caption1 - ignored|[[Caption2]] - ignored|Caption3 - accepted]]
!! html/php
-<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption3 - accepted"><img alt="Caption3 - accepted" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
+<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption3 - accepted"><img alt="Caption3 - accepted" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></div>
!! html/parsoid
<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>Caption3 - accepted</figcaption></figure>
!! wikitext
[[File:Foobar.jpg|200px|300px|caption]]
!! html/php
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg" width="300" height="34" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/450px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/600px-Foobar.jpg 2x" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg" decoding="async" width="300" height="34" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/450px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/600px-Foobar.jpg 2x" /></a>
</p>
!! html/parsoid
<p><figure-inline typeof="mw:Image" data-mw='{"caption":"caption"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="34" width="300"/></a></figure-inline></p>
[[File:Foobar.jpg|middle|text-top|caption]]
!! html/php
-<div class="thumb tleft"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="caption" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" style="vertical-align: middle" /></a>
+<div class="thumb tleft"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" decoding="async" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="caption" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" style="vertical-align: middle" /></a>
</p>
!! html/parsoid
<figure class="mw-default-size mw-halign-left" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>caption</figcaption></figure>
[[File:Foobar.jpg|right|200px|Caption]]
[[File:Foobar.jpg|right|Caption|200px]]
!! html/php
-<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption"><img alt="Caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" width="200" height="23" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a></div>
-<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption"><img alt="Caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" width="200" height="23" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a></div>
-<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption"><img alt="Caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" width="200" height="23" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a></div>
+<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption"><img alt="Caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" decoding="async" width="200" height="23" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a></div>
+<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption"><img alt="Caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" decoding="async" width="200" height="23" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a></div>
+<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption"><img alt="Caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" decoding="async" width="200" height="23" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a></div>
!! html/parsoid
<figure class="mw-halign-right" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="23" width="200"/></a><figcaption>Caption</figcaption></figure>
[[File:Foobar.jpg|20pxpx]]
[[File:Foobar.jpg|200x20pxpx]]
!! html/php
-<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/20px-Foobar.jpg" width="20" height="2" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/30px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/40px-Foobar.jpg 2x" /></a>
-<a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/177px-Foobar.jpg" width="177" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/265px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/353px-Foobar.jpg 2x" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/20px-Foobar.jpg" decoding="async" width="20" height="2" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/30px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/40px-Foobar.jpg 2x" /></a>
+<a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/177px-Foobar.jpg" decoding="async" width="177" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/265px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/353px-Foobar.jpg 2x" /></a>
</p>
!! html/parsoid
<p><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/20px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="2" width="20"/></a></figure-inline> <figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/177px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="20" width="177"/></a></figure-inline></p>
!! wikitext
[[File:Foobar.jpg|link=Main Page]]
!! html/php
-<p><a href="/wiki/Main_Page" title="Main Page"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a href="/wiki/Main_Page" title="Main Page"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
!! html/parsoid
<p><figure-inline class="mw-default-size" typeof="mw:Image"><a href="./Main_Page"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
!! wikitext
[[File:Foobar.jpg|link=http://example.com/]]
!! html/php
-<p><a href="http://example.com/" rel="nofollow"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a href="http://example.com/" rel="nofollow"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
!! html/parsoid
<p><figure-inline class="mw-default-size" typeof="mw:Image"><a href="http://example.com/"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
!! wikitext
[[File:Foobar.jpg|link=//example.com/]]
!! html/php
-<p><a href="//example.com/" rel="nofollow"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a href="//example.com/" rel="nofollow"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
!! html/parsoid
<p><figure-inline class="mw-default-size" typeof="mw:Image"><a href="//example.com/"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
!! config
wgExternalLinkTarget='foobar'
!! html/php
-<p><a href="http://example.com/" target="foobar" rel="nofollow noreferrer noopener"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a href="http://example.com/" target="foobar" rel="nofollow noreferrer noopener"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
!! end
!! config
wgNoFollowLinks=false
!! html/php
-<p><a href="http://example.com/"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a href="http://example.com/"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
!! end
!! config
wgNoFollowDomainExceptions='example.com'
!! html/php
-<p><a href="http://example.com/"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a href="http://example.com/"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
!! end
!! config
wgExternalLinkTarget='foobar'
!! html/php
-<p><a href="http://example.com/" title="Title" target="foobar" rel="nofollow noreferrer noopener"><img alt="Title" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a href="http://example.com/" title="Title" target="foobar" rel="nofollow noreferrer noopener"><img alt="Title" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
!! end
!! wikitext
[[File:Foobar.jpg|link=]]
!! html/php
-<p><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" />
+<p><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" />
</p>
!! html/parsoid
<p><figure-inline class="mw-default-size" typeof="mw:Image"><span><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></span></figure-inline></p>
!! wikitext
[[File:Foobar.jpg|link=Main_Page|Title]]
!! html/php
-<p><a href="/wiki/Main_Page" title="Title"><img alt="Title" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a href="/wiki/Main_Page" title="Title"><img alt="Title" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
!! html/parsoid
<p><figure-inline class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"Title"}'><a href="./Main_Page"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
!! wikitext
[[File:Foobar.jpg|link=http://example.com/|Title]]
!! html/php
-<p><a href="http://example.com/" title="Title" rel="nofollow"><img alt="Title" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a href="http://example.com/" title="Title" rel="nofollow"><img alt="Title" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
!! html/parsoid
<p><figure-inline class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"Title"}'><a href="http://example.com/"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
!! wikitext
[[File:Foobar.jpg|thumb|link=http://example.com/|Title]]
!! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="http://example.com/"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Title</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="http://example.com/"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" decoding="async" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Title</div></div></div>
!! html/parsoid
<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="http://example.com/"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>Title</figcaption></figure>
!! wikitext
[[File:Foobar.jpg|thumbnail=Thumb.png|Title]]
!! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:137px;"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Title</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:137px;"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/e/ea/Thumb.png" decoding="async" width="135" height="135" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Title</div></div></div>
!! html/parsoid
<figure class="mw-default-size" typeof="mw:Image/Thumb" data-mw='{"thumb":"Thumb.png"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/e/ea/Thumb.png" data-file-width="135" data-file-height="135" data-file-type="bitmap" height="135" width="135"/></a><figcaption>Title</figcaption></figure>
!! wikitext
[[File:Foobar.jpg|thumb=Thumb.png|link=Main_Page|Title]]
!! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:137px;"><a href="/wiki/Main_Page" title="Main Page"><img alt="" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Title</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:137px;"><a href="/wiki/Main_Page" title="Main Page"><img alt="" src="http://example.com/images/e/ea/Thumb.png" decoding="async" width="135" height="135" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Title</div></div></div>
!! html/parsoid
<figure class="mw-default-size" typeof="mw:Image/Thumb" data-mw='{"thumb":"Thumb.png"}'><a href="./Main_Page"><img resource="./File:Foobar.jpg" src="//example.com/images/e/ea/Thumb.png" data-file-width="135" data-file-height="135" data-file-type="bitmap" height="135" width="135"/></a><figcaption>Title</figcaption></figure>
!! wikitext
[[File:Foobar.jpg|thumb=Thumb.png|link=http://example.com|Title]]
!! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:137px;"><a href="http://example.com"><img alt="" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Title</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:137px;"><a href="http://example.com"><img alt="" src="http://example.com/images/e/ea/Thumb.png" decoding="async" width="135" height="135" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Title</div></div></div>
!! html/parsoid
<figure class="mw-default-size" typeof="mw:Image/Thumb" data-mw='{"thumb":"Thumb.png"}'><a href="http://example.com"><img resource="./File:Foobar.jpg" src="//example.com/images/e/ea/Thumb.png" data-file-width="135" data-file-height="135" data-file-type="bitmap" height="135" width="135"/></a><figcaption>Title</figcaption></figure>
!! wikitext
[[File:Foobar.jpg|thumb=Thumb.png|link=|Title]]
!! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:137px;"><img alt="" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" /> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Title</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:137px;"><img alt="" src="http://example.com/images/e/ea/Thumb.png" decoding="async" width="135" height="135" class="thumbimage" /> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Title</div></div></div>
!! html/parsoid
<figure class="mw-default-size" typeof="mw:Image/Thumb" data-mw='{"thumb":"Thumb.png"}'><span><img resource="./File:Foobar.jpg" src="//example.com/images/e/ea/Thumb.png" data-file-width="135" data-file-height="135" data-file-type="bitmap" height="135" width="135"/></span><figcaption>Title</figcaption></figure>
!! wikitext
[[File:Foobar.jpg|thumb=Thumb.png|link=Main_Page|alt=alttext|Title]]
!! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:137px;"><a href="/wiki/Main_Page" title="Main Page"><img alt="alttext" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Title</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:137px;"><a href="/wiki/Main_Page" title="Main Page"><img alt="alttext" src="http://example.com/images/e/ea/Thumb.png" decoding="async" width="135" height="135" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Title</div></div></div>
!! html/parsoid
<figure class="mw-default-size" typeof="mw:Image/Thumb" data-mw='{"thumb":"Thumb.png"}'><a href="./Main_Page"><img alt="alttext" resource="./File:Foobar.jpg" src="//example.com/images/e/ea/Thumb.png" data-file-width="135" data-file-height="135" data-file-type="bitmap" height="135" width="135"/></a><figcaption>Title</figcaption></figure>
!! wikitext
[[File:Foobar.jpg|frame|left|This is a test image [[Main Page]]]]
!! html/php
-<div class="thumb tleft"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption">This is a test image <a href="/wiki/Main_Page" title="Main Page">Main Page</a></div></div></div>
+<div class="thumb tleft"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption">This is a test image <a href="/wiki/Main_Page" title="Main Page">Main Page</a></div></div></div>
!! html/parsoid
<figure class="mw-default-size mw-halign-left" typeof="mw:Image/Frame"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>This is a test image <a rel="mw:WikiLink" href="./Main_Page" title="Main Page">Main Page</a></figcaption></figure>
!! wikitext
[[Image:Foobar.jpg|frame|left|This is a test image [[Main Page]]|alt=Altitude]]
!! html/php
-<div class="thumb tleft"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Altitude" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption">This is a test image <a href="/wiki/Main_Page" title="Main Page">Main Page</a></div></div></div>
+<div class="thumb tleft"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Altitude" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption">This is a test image <a href="/wiki/Main_Page" title="Main Page">Main Page</a></div></div></div>
!! html/parsoid
<figure class="mw-default-size mw-halign-left" typeof="mw:Image/Frame"><a href="./File:Foobar.jpg"><img alt="Altitude" resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>This is a test image <a rel="mw:WikiLink" href="./Main_Page" title="Main Page">Main Page</a></figcaption></figure>
[[Image:Foobar.jpg|alt=testing '''bold''' in alt]]
!! html/php
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="testing bold in alt"><img alt="testing bold in alt" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
-</p><p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="testing bold in alt" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="testing bold in alt"><img alt="testing bold in alt" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
+</p><p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="testing bold in alt" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
!! html/parsoid
<p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"testing '''bold''' in alt"}]}' data-mw='{"caption":"testing <b data-parsoid='{\"dsr\":[27,37,3,3]}'>bold</b> in alt"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"Image:Foobar.jpg"}}'/></a></figure-inline></p>
!! wikitext
[[Image:Foobar.jpg|thumb|This is the image caption|alt=This is a [[link]] and a {{echo|''bold template''}}.]]
!! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="This is a link and a bold template." src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>This is the image caption</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="This is a link and a bold template." src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>This is the image caption</div></div></div>
!! html/parsoid
<figure class="mw-default-size" typeof="mw:Image/Thumb mw:ExpandedAttrs" about="#mwt2" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"caption","ak":"This is the image caption"},{"ck":"alt","ak":"alt=This is a [[link]] and a {{echo|''bold template''}}."}]}' data-mw='{"attribs":[["thumbnail",{"html":"thumb"}],["alt",{"html":"alt=This is a <a rel=\"mw:WikiLink\" href=\"./Link\" title=\"Link\" data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./Link\"},\"sa\":{\"href\":\"link\"},\"dsr\":[65,73,2,2]}'>link</a> and a <i about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid='{\"dsr\":[80,106,null,null],\"pi\":[[{\"k\":\"1\"}]]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"&apos;&apos;bold template&apos;&apos;\"}},\"i\":0}}]}'>bold template</i>."}]]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img alt="This is a link and a bold template." resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220" data-parsoid='{"a":{"alt":"This is a link and a bold template.","resource":"./File:Foobar.jpg","height":"25","width":"220"},"sa":{"alt":"alt=This is a [[link]] and a {{echo|''bold template''}}.","resource":"Image:Foobar.jpg"}}'/></a><figcaption>This is the image caption</figcaption></figure>
File:Foobar.jpg|alt=&amp;
</gallery>
!! html/php+tidy
-<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="&amp;" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="&amp;" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
<ul class="gallery mw-gallery-traditional">
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="&amp;" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="&amp;" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
</div>
</div></li>
File:Foobar.jpg|alt=''x''|caption
</gallery>
!! html/php+tidy
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="x" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="x" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
<ul class="gallery mw-gallery-traditional">
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="x" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="x" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
<p>caption
</p>
File:Foobar.jpg|alt=<nowiki>''</nowiki>x<nowiki>''</nowiki>|caption
</gallery>
!! html/php+tidy
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="''x''" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="''x''" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
<ul class="gallery mw-gallery-traditional">
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="''x''" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="''x''" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
<p>caption
</p>
File:Foobar.jpg|alt=<nowiki>''x''</nowiki>|caption
</gallery>
!! html/php+tidy
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="''x''" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="''x''" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
<ul class="gallery mw-gallery-traditional">
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="''x''" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="''x''" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
<p>caption
</p>
File:Foobar.jpg|link=Foo & bar
</gallery>
!! html/php+tidy
-<p><a href="/wiki/Foo_%26_bar" title="Foo & bar"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a href="/wiki/Foo_%26_bar" title="Foo & bar"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
<ul class="gallery mw-gallery-traditional">
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Foo_%26_bar"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Foo_%26_bar"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
</div>
</div></li>
File:Foobar.jpg|link=Foo_&_bar
</gallery>
!! html/php+tidy
-<p><a href="/wiki/Foo_%26_bar" title="Foo & bar"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a href="/wiki/Foo_%26_bar" title="Foo & bar"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
<ul class="gallery mw-gallery-traditional">
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Foo_%26_bar"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Foo_%26_bar"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
</div>
</div></li>
</gallery>
!! html/php+tidy
<p><a href="/wiki/Foo%27%27s_bar%27%27s" title="Foo''s bar''s">Foo''s bar''s</a>
-</p><p><a href="/wiki/Foos_bars" title="caption1"><img alt="caption1" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
-</p><p><a href="/wiki/Main_Page" title="caption2"><img alt="caption2" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+</p><p><a href="/wiki/Foos_bars" title="caption1"><img alt="caption1" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
+</p><p><a href="/wiki/Main_Page" title="caption2"><img alt="caption2" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
<ul class="gallery mw-gallery-traditional">
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Foos_bars"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Foos_bars"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
<p>caption1
</p>
</div>
</div></li>
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Main_Page"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Main_Page"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
<p>caption2
</p>
File:Foobar.jpg|link=Foo<nowiki>''</nowiki>s_bar<nowiki>''</nowiki>s|caption
</gallery>
!! html/php+tidy
-<p><a href="/wiki/Foo%27%27s_bar%27%27s" title="caption"><img alt="caption" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a href="/wiki/Foo%27%27s_bar%27%27s" title="caption"><img alt="caption" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
<ul class="gallery mw-gallery-traditional">
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Foo%27%27s_bar%27%27s"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Foo%27%27s_bar%27%27s"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
<p>caption
</p>
File:Foobar.jpg|link=Foo<nowiki>''s_bar''</nowiki>s|caption
</gallery>
!! html/php+tidy
-<p><a href="/wiki/Foo%27%27s_bar%27%27s" title="caption"><img alt="caption" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a href="/wiki/Foo%27%27s_bar%27%27s" title="caption"><img alt="caption" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
<ul class="gallery mw-gallery-traditional">
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Foo%27%27s_bar%27%27s"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Foo%27%27s_bar%27%27s"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
<p>caption
</p>
File:Foobar.jpg|link=https://example.com?foo¶ms=bar
</gallery>
!! html/php+tidy
-<p><a href="https://example.com?foo&params=bar" rel="nofollow"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a href="https://example.com?foo&params=bar" rel="nofollow"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
<ul class="gallery mw-gallery-traditional">
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="https://example.com?foo&params=bar"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="https://example.com?foo&params=bar"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
</div>
</div></li>
--------------
]]
!! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><h3><span class="mw-headline" id="Testing">Testing</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: Testing">edit</a><span class="mw-editsection-bracket">]</span></span></h3> 123 <hr /></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><h3><span class="mw-headline" id="Testing">Testing</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: Testing">edit</a><span class="mw-editsection-bracket">]</span></span></h3> 123 <hr /></div></div></div>
!! html/parsoid
<figure class="mw-default-size" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"caption","ak":"\n=== Testing ===\n123\n--------------\n"}]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{"href":"File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"25","width":"220"},"sa":{"resource":"File:Foobar.jpg"}}'/></a><figcaption>
[[File:Foobar.jpg|frameless|thumb|caption]]
!! html/php
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>
-</p><p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>
-</p><p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>
+</p><p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>
+</p><p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>
</p>
!! html/parsoid
<p><figure-inline class="mw-default-size" typeof="mw:Image/Frameless" data-mw='{"caption":"caption"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a></figure-inline></p>
[[File:Foobar.jpg|frame|frameless|caption]]
[[File:Foobar.jpg|frame|thumb|caption]]
!! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption">caption</div></div></div>
-<div class="thumb tright"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption">caption</div></div></div>
-<div class="thumb tright"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption">caption</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption">caption</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption">caption</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption">caption</div></div></div>
!! html/parsoid
<figure class="mw-default-size" typeof="mw:Image/Frame"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>caption</figcaption></figure>
[[File:Foobar.jpg|thumb|frameless|caption]]
[[File:Foobar.jpg|thumb|frame|caption]]
!! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
!! html/parsoid
<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>caption</figcaption></figure>
[[File:Foobar.jpg|border|2000px]]
!! html/php
-<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="2000" height="227" /></a>
-</p><p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="2000" height="227" class="thumbborder" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="2000" height="227" /></a>
+</p><p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="2000" height="227" class="thumbborder" /></a>
</p>
!! html/parsoid
<p><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="227" width="2000"/></a></figure-inline></p>
[[File:Foobar.jpg|border|1000px]]
!! html/php
-<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/1000px-Foobar.jpg" width="1000" height="113" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/1500px-Foobar.jpg 1.5x, http://example.com/images/3/3a/Foobar.jpg 2x" /></a>
-</p><p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/1000px-Foobar.jpg" width="1000" height="113" class="thumbborder" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/1500px-Foobar.jpg 1.5x, http://example.com/images/3/3a/Foobar.jpg 2x" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/1000px-Foobar.jpg" decoding="async" width="1000" height="113" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/1500px-Foobar.jpg 1.5x, http://example.com/images/3/3a/Foobar.jpg 2x" /></a>
+</p><p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/1000px-Foobar.jpg" decoding="async" width="1000" height="113" class="thumbborder" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/1500px-Foobar.jpg 1.5x, http://example.com/images/3/3a/Foobar.jpg 2x" /></a>
</p>
!! html/parsoid
<p><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/1000px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="113" width="1000"/></a></figure-inline></p>
!! wikitext
[[File:Foobar.jpg|thumb|50px]]
!! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:52px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" width="50" height="6" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/75px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/100px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:52px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" decoding="async" width="50" height="6" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/75px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/100px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div></div></div></div>
!! html/parsoid
<figure typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="6" width="50"/></a></figure>
[[File:Foobar.svg|thumb|2000px]]
!! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:1943px;"><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" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div></div></div></div>
-<div class="thumb tright"><div class="thumbinner" style="width:2002px;"><a href="/wiki/File:Foobar.svg" class="image"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/2000px-Foobar.svg.png" width="2000" height="1500" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/3000px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/4000px-Foobar.svg.png 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"></a></div></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:2002px;"><a href="/wiki/File:Foobar.svg" class="image"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/2000px-Foobar.svg.png" decoding="async" width="2000" height="1500" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/3000px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/4000px-Foobar.svg.png 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"></a></div></div></div></div>
!! html/parsoid
<figure typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure>
!! wikitext
[[File:Foobar.jpg|frameless|50px]]
!! html/php
-<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" width="50" height="6" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/75px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/100px-Foobar.jpg 2x" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" decoding="async" width="50" height="6" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/75px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/100px-Foobar.jpg 2x" /></a>
</p>
!! html/parsoid
<p><figure-inline typeof="mw:Image/Frameless"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="6" width="50"/></a></figure-inline></p>
[[File:Foobar.svg|frameless|2000px]]
!! html/php
-<p><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>
-</p><p><a href="/wiki/File:Foobar.svg" class="image"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/2000px-Foobar.svg.png" width="2000" height="1500" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/3000px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/4000px-Foobar.svg.png 2x" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
+</p><p><a href="/wiki/File:Foobar.svg" class="image"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/2000px-Foobar.svg.png" decoding="async" width="2000" height="1500" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/3000px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/4000px-Foobar.svg.png 2x" /></a>
</p>
!! html/parsoid
<p><figure-inline typeof="mw:Image/Frameless"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
[[File:Foobar.jpg|frame|2000px]]
!! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:1943px;"><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" class="thumbimage" /></a> <div class="thumbcaption"></div></div></div>
-<div class="thumb tright"><div class="thumbinner" style="width:1943px;"><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" class="thumbimage" /></a> <div class="thumbcaption"></div></div></div>
-<div class="thumb tright"><div class="thumbinner" style="width:1943px;"><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" class="thumbimage" /></a> <div class="thumbcaption"></div></div></div>
-<div class="thumb tright"><div class="thumbinner" style="width:1943px;"><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" class="thumbimage" /></a> <div class="thumbcaption"></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption"></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption"></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption"></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption"></div></div></div>
!! html/parsoid
<figure class="mw-default-size" typeof="mw:Image/Frame"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure>
!! wikitext
[[File:Foobar.jpg|http://example.com]]
!! html/php
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="http://example.com"><img alt="http://example.com" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="http://example.com"><img alt="http://example.com" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
!! html/parsoid
<p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"http://example.com"}]}' data-mw='{"caption":"<a rel=\"mw:ExtLink\" href=\"http://example.com\" data-parsoid='{\"stx\":\"url\",\"dsr\":[18,36,0,0]}'>http://example.com</a>"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
!! wikitext
[[File:Foobar.jpg|thumb|http://example.com]]
!! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" decoding="async" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></div></div></div>
!! html/parsoid
<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a></figcaption></figure>
!! wikitext
[[File:Foobar.jpg|thumb|http://example.com|alt=Alteration]]
!! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Alteration" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Alteration" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" decoding="async" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></div></div></div>
!! html/parsoid
<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img alt="Alteration" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a></figcaption></figure>
!! wikitext
[[File:Foobar.svg|thumb|caption]]
!! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.svg" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/180px-Foobar.svg.png" width="180" height="135" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.svg" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/180px-Foobar.svg.png" decoding="async" width="180" height="135" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
!! html/parsoid
<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.svg"><img resource="./File:Foobar.svg" src="//example.com/images/thumb/f/ff/Foobar.svg/220px-Foobar.svg.png" data-file-width="240" data-file-height="180" data-file-type="drawing" height="165" width="220"/></a><figcaption>caption</figcaption></figure>
!! wikitext
[[File:Foobar.svg|thumb|caption|lang=de]]
!! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/index.php?title=File:Foobar.svg&lang=de" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/langde-180px-Foobar.svg.png" width="180" height="135" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/langde-270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/langde-360px-Foobar.svg.png 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/index.php?title=File:Foobar.svg&lang=de" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/langde-180px-Foobar.svg.png" decoding="async" width="180" height="135" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/langde-270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/langde-360px-Foobar.svg.png 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
!! html/parsoid
<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.svg"><img resource="./File:Foobar.svg" src="//example.com/images/thumb/f/ff/Foobar.svg/220px-Foobar.svg.png" lang="de" data-file-width="240" data-file-height="180" data-file-type="drawing" height="165" width="220"/></a><figcaption>caption</figcaption></figure>
!! wikitext
[[File:Foobar.svg|thumb|caption|lang=invalid:language:code]]
!! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.svg" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/180px-Foobar.svg.png" width="180" height="135" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"></a></div>lang=invalid:language:code</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.svg" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/180px-Foobar.svg.png" decoding="async" width="180" height="135" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"></a></div>lang=invalid:language:code</div></div></div>
!! html/parsoid
<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.svg"><img resource="./File:Foobar.svg" src="//example.com/images/thumb/f/ff/Foobar.svg/220px-Foobar.svg.png" data-file-width="240" data-file-height="180" data-file-type="drawing" height="165" width="220"/></a><figcaption>lang=invalid:language:code</figcaption></figure>
!! wikitext
[[File:Foobar.svg]] [[File:Foobar.svg|lang=en]]
!! html/php
-<p><a href="/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Foobar.svg" class="image"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/langru-240px-Foobar.svg.png" width="240" height="180" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/langru-360px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/langru-480px-Foobar.svg.png 2x" /></a> <a href="/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Foobar.svg&lang=en" class="image"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/240px-Foobar.svg.png" width="240" height="180" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/480px-Foobar.svg.png 2x" /></a>
+<p><a href="/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Foobar.svg" class="image"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/langru-240px-Foobar.svg.png" decoding="async" width="240" height="180" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/langru-360px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/langru-480px-Foobar.svg.png 2x" /></a> <a href="/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Foobar.svg&lang=en" class="image"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/240px-Foobar.svg.png" decoding="async" width="240" height="180" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/480px-Foobar.svg.png 2x" /></a>
</p>
!! end
!! wikitext
[[File:Foobar.svg]] [[File:Foobar.svg|lang=ru]]
!! html/php
-<p><a href="/wiki/Datei:Foobar.svg" class="image"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/240px-Foobar.svg.png" width="240" height="180" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/480px-Foobar.svg.png 2x" /></a> <a href="/index.php?title=Datei:Foobar.svg&lang=ru" class="image"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/langru-240px-Foobar.svg.png" width="240" height="180" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/langru-360px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/langru-480px-Foobar.svg.png 2x" /></a>
+<p><a href="/wiki/Datei:Foobar.svg" class="image"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/240px-Foobar.svg.png" decoding="async" width="240" height="180" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/480px-Foobar.svg.png 2x" /></a> <a href="/index.php?title=Datei:Foobar.svg&lang=ru" class="image"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/langru-240px-Foobar.svg.png" decoding="async" width="240" height="180" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/langru-360px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/langru-480px-Foobar.svg.png 2x" /></a>
</p>
!! end
!! wikitext
[[File:Foobar.jpg|thumb|ISBN 1235467890]]
!! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a href="/wiki/Special:BookSources/1235467890" class="internal mw-magiclink-isbn">ISBN 1235467890</a></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a href="/wiki/Special:BookSources/1235467890" class="internal mw-magiclink-isbn">ISBN 1235467890</a></div></div></div>
!! html/parsoid
<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a href="./Special:BookSources/1235467890" rel="mw:WikiLink">ISBN 1235467890</a></figcaption></figure>
!! wikitext
[[File:Foobar.jpg|thumb|This is RFC 12354]]
!! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>This is <a class="external mw-magiclink-rfc" rel="nofollow" href="https://tools.ietf.org/html/rfc12354">RFC 12354</a></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>This is <a class="external mw-magiclink-rfc" rel="nofollow" href="https://tools.ietf.org/html/rfc12354">RFC 12354</a></div></div></div>
!! html/parsoid
<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>This is <a href="https://tools.ietf.org/html/rfc12354" rel="mw:ExtLink" class="external mw-magiclink">RFC 12354</a></figcaption></figure>
!! wikitext
[[File:Foobar.jpg|thumb|Please mailto:nobody@example.com]]
!! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Please <a rel="nofollow" class="external free" href="mailto:nobody@example.com">mailto:nobody@example.com</a></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Please <a rel="nofollow" class="external free" href="mailto:nobody@example.com">mailto:nobody@example.com</a></div></div></div>
!! html/parsoid
<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>Please <a rel="mw:ExtLink" class="external free" href="mailto:nobody@example.com">mailto:nobody@example.com</a></figcaption></figure>
!! wikitext
[[File:Foobar.jpg|text with a [[link]] in it]]
!! html/php
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="text with a link in it"><img alt="text with a link in it" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="text with a link in it"><img alt="text with a link in it" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
!! html/parsoid
<p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"text with a [[link]] in it"}]}' data-mw='{"caption":"text with a <a rel=\"mw:WikiLink\" href=\"./Link\" title=\"Link\" data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./Link\"},\"sa\":{\"href\":\"link\"},\"dsr\":[30,38,2,2]}'>link</a> in it"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
!! wikitext
[[File:Foobar.jpg|text with a [[link]]foo in it]]
!! html/php
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="text with a linkfoo in it"><img alt="text with a linkfoo in it" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="text with a linkfoo in it"><img alt="text with a linkfoo in it" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
!! html/parsoid
<p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"text with a [[link]]foo in it"}]}' data-mw='{"caption":"text with a <a rel=\"mw:WikiLink\" href=\"./Link\" title=\"Link\" data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./Link\"},\"sa\":{\"href\":\"link\"},\"dsr\":[30,41,2,5],\"tail\":\"foo\"}'>linkfoo</a> in it"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
!! wikitext
[[File:Foobar.jpg|text with a [[MeatBall:Link]] in it]]
!! html/php
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="text with a MeatBall:Link in it"><img alt="text with a MeatBall:Link in it" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="text with a MeatBall:Link in it"><img alt="text with a MeatBall:Link in it" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
!! html/parsoid
<p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"text with a [[MeatBall:Link]] in it"}]}' data-mw='{"caption":"text with a <a rel=\"mw:WikiLink/Interwiki\" href=\"http://www.usemod.com/cgi-bin/mb.pl?Link\" title=\"meatball:Link\" data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"http://www.usemod.com/cgi-bin/mb.pl?Link\"},\"sa\":{\"href\":\"MeatBall:Link\"},\"isIW\":true,\"dsr\":[30,47,2,2]}'>MeatBall:Link</a> in it"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
!! wikitext
[[File:Foobar.jpg|text with a [[MeatBall:Link|link]] in it]]
!! html/php
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="text with a link in it"><img alt="text with a link in it" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="text with a link in it"><img alt="text with a link in it" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
!! html/parsoid
<p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"text with a [[MeatBall:Link|link]] in it"}]}' data-mw='{"caption":"text with a <a rel=\"mw:WikiLink/Interwiki\" href=\"http://www.usemod.com/cgi-bin/mb.pl?Link\" title=\"meatball:Link\" data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"http://www.usemod.com/cgi-bin/mb.pl?Link\"},\"sa\":{\"href\":\"MeatBall:Link\"},\"isIW\":true,\"dsr\":[30,52,16,2]}'>link</a> in it"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
!! wikitext
[[File:Foobar.jpg|& < > "]]
!! html/php
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="& < > ""><img alt="& < > "" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="& < > ""><img alt="& < > "" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
!! html/parsoid
<p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"& < > \""}]}' data-mw='{"caption":"&amp; &lt; > \""}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
!! wikitext
[[File:Foobar.jpg|& < > "]]
!! html/php
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="& < > ""><img alt="& < > "" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="& < > ""><img alt="& < > "" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
!! html/parsoid
<p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"& < > \""}]}' data-mw='{"caption":"&amp; &lt; > \""}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
!! wikitext
[[File:Foobar.jpg|♀]]
!! html/php
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="♀"><img alt="♀" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="♀"><img alt="♀" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
!! html/parsoid
<p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"&#9792;"}]}' data-mw='{"caption":"<span typeof=\"mw:Entity\" data-parsoid='{\"src\":\"&amp;#9792;\",\"srcContent\":\"♀\",\"dsr\":[18,25,null,null]}'>♀</span>"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
!! wikitext
[[File:Foobar.jpg|thumb|This is a caption with another [[File:Thumb.png|image]] inside it!]]
!! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>This is a caption with another <a href="/wiki/File:Thumb.png" class="image" title="image"><img alt="image" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" /></a> inside it!</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>This is a caption with another <a href="/wiki/File:Thumb.png" class="image" title="image"><img alt="image" src="http://example.com/images/e/ea/Thumb.png" decoding="async" width="135" height="135" /></a> inside it!</div></div></div>
!! html/parsoid
<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>This is a caption with another <figure-inline class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"image"}'><a href="./File:Thumb.png"><img resource="./File:Thumb.png" src="//example.com/images/e/ea/Thumb.png" data-file-width="135" data-file-height="135" data-file-type="bitmap" height="135" width="135"/></a></figure-inline> inside it!</figcaption></figure>
[[File:Foobar.jpg|This
*is some text]]
!! html/php
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="This *is some text"><img alt="This *is some text" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="This *is some text"><img alt="This *is some text" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
!! html/parsoid
<p><figure-inline class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"This\n*is some text"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
!! wikitext
[[File:Foobar.jpg|thumb| bar]]
!! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>bar</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>bar</div></div></div>
!! html/parsoid
<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption> bar</figcaption></figure>
|}
and some more text.]]
!! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:202px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" width="200" height="23" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>This is an example image thumbnail caption with a table <table> <tr> <th>Foo</th> <th>Bar </th></tr> <tr> <td>Foo1</td> <td>Bar1 </td></tr></table> and some more text.</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:202px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" decoding="async" width="200" height="23" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>This is an example image thumbnail caption with a table <table> <tr> <th>Foo</th> <th>Bar </th></tr> <tr> <td>Foo1</td> <td>Bar1 </td></tr></table> and some more text.</div></div></div>
!! html/parsoid
<figure typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="23" width="200"/></a><figcaption>This is an example image thumbnail caption with a table
!! wikitext
[[File:Foobar.jpg|thumb|200x200px|This caption has [irc://example.net irc] and [https://example.com Secure] ext links in it.]]
!! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:202px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" width="200" height="23" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>This caption has <a rel="nofollow" class="external text" href="irc://example.net">irc</a> and <a rel="nofollow" class="external text" href="https://example.com">Secure</a> ext links in it.</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:202px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" decoding="async" width="200" height="23" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>This caption has <a rel="nofollow" class="external text" href="irc://example.net">irc</a> and <a rel="nofollow" class="external text" href="https://example.com">Secure</a> ext links in it.</div></div></div>
!! html/parsoid
<figure typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="23" width="200"/></a><figcaption>This caption has <a rel="mw:ExtLink" class="external text" href="irc://example.net">irc</a> and <a rel="mw:ExtLink" class="external text" href="https://example.com">Secure</a> ext links in it.</figcaption></figure>
!! wikitext
[[Image:foobar.jpg|a|class=b]]
!! html/php
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="a"><img alt="a" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="b" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="a"><img alt="a" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" class="b" /></a>
</p>
!! html/parsoid
<p><figure-inline class="mw-default-size b" typeof="mw:Image" data-mw='{"caption":"a"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
!! wikitext
[[Archivo:Foobar.jpg|izquierda|enlace=foo|caption]]
!! html/php
-<div class="floatleft"><a href="/wiki/Foo" title="caption"><img alt="caption" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
+<div class="floatleft"><a href="/wiki/Foo" title="caption"><img alt="caption" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></div>
!! html/parsoid
<figure class="mw-default-size mw-halign-left" typeof="mw:Image"><a href="./Foo"><img resource="./Archivo:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>caption</figcaption></figure>
!! wikitext
[[Archivo:Foobar.jpg|miniatura|izquierda|enlace=foo|caption]]
!! html/php
-<div class="thumb tleft"><div class="thumbinner" style="width:222px;"><a href="/wiki/Foo" title="Foo"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/Archivo:Foobar.jpg" class="internal" title="Aumentar"></a></div>caption</div></div></div>
+<div class="thumb tleft"><div class="thumbinner" style="width:222px;"><a href="/wiki/Foo" title="Foo"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" decoding="async" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/Archivo:Foobar.jpg" class="internal" title="Aumentar"></a></div>caption</div></div></div>
!! html/parsoid
<figure class="mw-default-size mw-halign-left" typeof="mw:Image/Thumb"><a href="./Foo"><img resource="./Archivo:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>caption</figcaption></figure>
!! wikitext
[[File:Foobar.jpg|frameless|border|class=extra|caption]]
!! html/php
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="extra thumbborder" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" decoding="async" width="220" height="25" class="extra thumbborder" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>
</p>
!! html/parsoid
<p><figure-inline class="mw-default-size mw-image-border extra" typeof="mw:Image/Frameless" data-mw='{"caption":"caption"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a></figure-inline></p>
[[File:Foobar.jpg|bogus1|thumb|bogus2|left|bogus3|caption]]
!! html/php
-<div class="thumb tleft"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
-<div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
-<div class="thumb tleft"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
+<div class="thumb tleft"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" decoding="async" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" decoding="async" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
+<div class="thumb tleft"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" decoding="async" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
!! html/parsoid
<figure class="mw-default-size mw-halign-left" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>caption</figcaption></figure>
!! wikitext
http://example.com [[File:Foobar.jpg]]
!! html/php
-<p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a> <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>
+<p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a> <a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
!! html/parsoid
<p><a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a> <figure-inline class="mw-default-size" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
!! wikitext
http://example.com[[File:Foobar.jpg]]
!! html/php
-<p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a><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>
+<p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
!! html/parsoid
<p><a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a><figure-inline class="mw-default-size" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
[[File:Foobar.jpg|alt=-{}-foAjrjvi-{}-]]
!! html/php
<p>
-</p><p><a href="/wiki/%D0%94%D0%B0%D1%82%D0%BE%D1%82%D0%B5%D0%BA%D0%B0:Foobar.jpg" class="image"><img alt="" onload="alert(1)" data-foo="" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+</p><p><a href="/wiki/%D0%94%D0%B0%D1%82%D0%BE%D1%82%D0%B5%D0%BA%D0%B0:Foobar.jpg" class="image"><img alt="" onload="alert(1)" data-foo="" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
!! html/parsoid
<p><meta typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"oneway":[{"f":"foAjrjvi","l":"sr-el","t":"\" onload=\"alert(1)\" data-foo=\""}]}'/></p>
</div>
</div></li>
<li class="gallerybox" style="width: 105px"><div style="width: 105px">
- <div class="thumb" style="width: 100px;"><div style="margin:31px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 100px;"><div style="margin:31px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" decoding="async" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
<p>some <b>caption</b> <a href="/wiki/Main_Page" title="Main Page">Main Page</a>
</p>
</div>
</div></li>
<li class="gallerybox" style="width: 105px"><div style="width: 105px">
- <div class="thumb" style="width: 100px;"><div style="margin:31px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 100px;"><div style="margin:31px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" decoding="async" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
</div>
</div></li>
<li class="gallerybox" style="width: 105px"><div style="width: 105px">
- <div class="thumb" style="width: 100px;"><div style="margin:31px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="This is a foo-bar." src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 100px;"><div style="margin:31px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="This is a foo-bar." src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" decoding="async" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
<p>blabla.
</p>
</div>
</div></li>
<li class="gallerybox" style="width: 105px"><div style="width: 105px">
- <div class="thumb" style="width: 100px;"><div style="margin:31px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 100px;"><div style="margin:31px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" decoding="async" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
<p>some <b>caption</b> <a href="/wiki/Main_Page" title="Main Page">Main Page</a>
</p>
</div>
</div></li>
<li class="gallerybox" style="width: 105px"><div style="width: 105px">
- <div class="thumb" style="width: 100px;"><div style="margin:31px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 100px;"><div style="margin:31px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" decoding="async" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
</div>
</div></li>
<li class="gallerybox" style="width: 105px"><div style="width: 105px">
- <div class="thumb" style="width: 100px;"><div style="margin:31px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="This is a foo-bar." src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 100px;"><div style="margin:31px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="This is a foo-bar." src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" decoding="async" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
<p>blabla.
</p>
!! html/php
<ul class="gallery mw-gallery-traditional">
<li class="gallerybox" style="width: 105px"><div style="width: 105px">
- <div class="thumb" style="width: 100px;"><div style="margin:31px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 100px;"><div style="margin:31px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" decoding="async" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
</div>
</div></li>
!! html/php
<ul class="gallery mw-gallery-traditional">
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
</div>
</div></li>
!! html/php
<ul class="gallery mw-gallery-traditional">
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Main_Page"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Main_Page"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
</div>
</div></li>
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Main_Page#section"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Main_Page#section"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
</div>
</div></li>
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Main_Page#section"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Main_Page#section"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
<p>caption
</p>
<ul class="gallery mw-gallery-traditional">
<li class='gallerycaption'>hi</li>
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
<p>ho
</p>
</gallery>
!! html/php
<ul class="gallery mw-gallery-traditional">
- <li class='gallerycaption'># List item Text <b>bold</b> <a href="/index.php?title=Link&action=edit&redlink=1" class="new" title="Link (page does not exist)">link</a> Special <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>File in gallery caption</div></div></div></li>
+ <li class='gallerycaption'># List item Text <b>bold</b> <a href="/index.php?title=Link&action=edit&redlink=1" class="new" title="Link (page does not exist)">link</a> Special <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>File in gallery caption</div></div></div></li>
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
<p>Image caption
</p>
!! html/php
<ul class="gallery mw-gallery-traditional">
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="desc"><img alt="inneralt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/20px-Foobar.jpg" width="20" height="2" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/30px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/40px-Foobar.jpg 2x" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="desc"><img alt="inneralt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/20px-Foobar.jpg" decoding="async" width="20" height="2" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/30px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/40px-Foobar.jpg 2x" /></a>
</p>
</div>
</div></li>
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
<p>This is a test template
</p>
</div>
</div></li>
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
<p><a href="/wiki/File:Foobar.jpg" class="galleryfilename galleryfilename-truncate" title="File:Foobar.jpg">Foobar.jpg</a>
some <b>caption</b> <a href="/wiki/Main_Page" title="Main Page">Main Page</a>
</div>
</div></li>
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
<p><a href="/wiki/File:Foobar.jpg" class="galleryfilename galleryfilename-truncate" title="File:Foobar.jpg">Foobar.jpg</a>
</p>
</div>
</div></li>
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
</div>
</div></li>
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
</div>
</div></li>
!! html/php
<ul class="gallery mw-gallery-traditional">
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Wikilink"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Wikilink"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
</div>
</div></li>
!! html/php
<ul class="gallery mw-gallery-traditional">
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="http://www.example.org"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="http://www.example.org"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
</div>
</div></li>
!! html/php
<ul class="gallery mw-gallery-traditional">
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="http://www.example.org"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="http://www.example.org"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
<p>caption
</p>
!! html/php
<ul class="gallery mw-gallery-traditional">
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/%22_onclick%3D%22alert(%27malicious_javascript_code!%27);"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/%22_onclick%3D%22alert(%27malicious_javascript_code!%27);"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
</div>
</div></li>
!! html/php
<ul class="gallery mw-gallery-traditional">
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
</div>
</div></li>
!! html/php
<ul class="gallery mw-gallery-traditional center" style="text-align: center;">
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
</div>
</div></li>
!! html/php
<ul class="gallery mw-gallery-slideshow" data-showthumbnails="1">
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
</div>
</div></li>
!! wikitext
[[Image:foobar.jpg|centre]]
!! html/php
-<div class="center"><div class="floatnone"><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></div></div>
+<div class="center"><div class="floatnone"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></div></div>
!! html/parsoid
<figure class="mw-default-size mw-halign-center" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"center","ak":"centre"}]}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"Image:foobar.jpg"}}'/></a></figure>
!! wikitext
[[Image:foobar.jpg|none]]
!! html/php
-<div class="floatnone"><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></div>
+<div class="floatnone"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></div>
!! html/parsoid
<figure class="mw-default-size mw-halign-none" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"Image:foobar.jpg"}}'/></a></figure>
!! wikitext
[[Image:foobar.jpg|640x480px]]
!! html/php
-<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" width="640" height="73" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/960px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/1280px-Foobar.jpg 2x" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" decoding="async" width="640" height="73" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/960px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/1280px-Foobar.jpg 2x" /></a>
</p>
!! html/parsoid
<p><figure-inline typeof="mw:Image" data-parsoid='{"optList":[{"ck":"width","ak":"640x480px"}]}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="73" width="640" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"73","width":"640"},"sa":{"resource":"Image:foobar.jpg"}}'/></a></figure-inline></p>
!! wikitext
[[Image:foobar.jpg|640px]]
!! html/php
-<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" width="640" height="73" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/960px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/1280px-Foobar.jpg 2x" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" decoding="async" width="640" height="73" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/960px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/1280px-Foobar.jpg 2x" /></a>
</p>
!! html/parsoid
<p><figure-inline typeof="mw:Image" data-parsoid='{"optList":[{"ck":"width","ak":"640px"}]}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="73" width="640" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"73","width":"640"},"sa":{"resource":"Image:foobar.jpg"}}'/></a></figure-inline></p>
!! wikitext
[[Image:foobar.jpg|640px ]]
!! html/php
-<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" width="640" height="73" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/960px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/1280px-Foobar.jpg 2x" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" decoding="async" width="640" height="73" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/960px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/1280px-Foobar.jpg 2x" /></a>
</p>
!! html/parsoid
<p><figure-inline typeof="mw:Image" data-parsoid='{"optList":[{"ck":"width","ak":"640px "}]}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="73" width="640" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"73","width":"640"},"sa":{"resource":"Image:foobar.jpg"}}'/></a></figure-inline></p>
!! wikitext
[[Image:foobar.jpg| 640px]]
!! html/php
-<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" width="640" height="73" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/960px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/1280px-Foobar.jpg 2x" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" decoding="async" width="640" height="73" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/960px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/1280px-Foobar.jpg 2x" /></a>
</p>
!! html/parsoid
<p><figure-inline typeof="mw:Image" data-parsoid='{"optList":[{"ck":"width","ak":" 640px"}]}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="73" width="640" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"73","width":"640"},"sa":{"resource":"Image:foobar.jpg"}}'/></a></figure-inline></p>
!! wikitext
[[File:LoremIpsum.djvu|page=2]]
!! html/php
-<p><a href="/index.php?title=File:LoremIpsum.djvu&page=2" class="image"><img alt="LoremIpsum.djvu" src="http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page2-2480px-LoremIpsum.djvu.jpg" width="2480" height="3508" srcset="http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page2-3720px-LoremIpsum.djvu.jpg 1.5x, http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page2-4960px-LoremIpsum.djvu.jpg 2x" /></a>
+<p><a href="/index.php?title=File:LoremIpsum.djvu&page=2" class="image"><img alt="LoremIpsum.djvu" src="http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page2-2480px-LoremIpsum.djvu.jpg" decoding="async" width="2480" height="3508" srcset="http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page2-3720px-LoremIpsum.djvu.jpg 1.5x, http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page2-4960px-LoremIpsum.djvu.jpg 2x" /></a>
</p>
!! html/parsoid
<p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"page","ak":"page=2"}]}' data-mw='{"page":"2"}'><a href="./File:LoremIpsum.djvu" data-parsoid='{"a":{"href":"./File:LoremIpsum.djvu"},"sa":{"href":"File:LoremIpsum.djvu"}}'><img resource="./File:LoremIpsum.djvu" src="//example.com/images/5/5f/LoremIpsum.djvu" data-file-width="2480" data-file-height="3508" data-file-type="bitmap" height="3508" width="2480" data-parsoid='{"a":{"resource":"./File:LoremIpsum.djvu","height":"3508","width":"2480"},"sa":{"resource":"File:LoremIpsum.djvu"}}'/></a></figure-inline></p>
!! wikitext
[[File:Foobar.jpg|thumb|An [http://test/?param1=|left|¶m2=|x external] URL]]
!! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>An <a rel="nofollow" class="external text" href="http://test/?param1=%7Cleft%7C&param2=%7Cx">external</a> URL</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>An <a rel="nofollow" class="external text" href="http://test/?param1=%7Cleft%7C&param2=%7Cx">external</a> URL</div></div></div>
!! html/parsoid
<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>An <a rel="mw:ExtLink" class="external text" href="http://test/?param1=%7Cleft%7C&param2=%7Cx" data-parsoid='{"a":{"href":"http://test/?param1=%7Cleft%7C&param2=%7Cx"},"sa":{"href":"http://test/?param1=|left|&param2=|x"}}'>external</a> URL</figcaption></figure>
!! wikitext
[[Датотека:Foobar.jpg|thumb|-{R|caption:}-]]
!! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/%D0%94%D0%B0%D1%82%D0%BE%D1%82%D0%B5%D0%BA%D0%B0:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/%D0%94%D0%B0%D1%82%D0%BE%D1%82%D0%B5%D0%BA%D0%B0:Foobar.jpg" class="internal" title="Повећајте"></a></div>caption:</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/%D0%94%D0%B0%D1%82%D0%BE%D1%82%D0%B5%D0%BA%D0%B0:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/%D0%94%D0%B0%D1%82%D0%BE%D1%82%D0%B5%D0%BA%D0%B0:Foobar.jpg" class="internal" title="Повећајте"></a></div>caption:</div></div></div>
!! html/parsoid
<figure class="mw-default-size" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"}]}'><a href="./Датотека:Foobar.jpg"><img resource="./Датотека:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"caption:"}}' data-parsoid='{"fl":["R"]}'></span></figcaption></figure>
!! wikitext
[[File:Foobar.jpg|thumb|-{|zh-cn:blog (hk: -{zh-hans|WEBJOURNAL}-, tw: -{zh-hans|WEBLOG}-)}-]]
!! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="放大"></a></div>blog (hk: WEBJOURNAL, tw: WEBLOG)</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="放大"></a></div>blog (hk: WEBJOURNAL, tw: WEBLOG)</div></div></div>
!! html/parsoid
<figure class="mw-default-size" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"}]}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><span typeof="mw:LanguageVariant" data-mw-variant='{"twoway":[{"l":"zh-cn","t":"blog (hk: <span typeof=\"mw:LanguageVariant\" data-mw-variant='{\"filter\":{\"l\":[\"zh-hans\"],\"t\":\"WEBJOURNAL\"}}' data-parsoid='{\"fl\":[\"zh-hans\"],\"dsr\":[43,65,null,2]}'></span>, tw: <span typeof=\"mw:LanguageVariant\" data-mw-variant='{\"filter\":{\"l\":[\"zh-hans\"],\"t\":\"WEBLOG\"}}' data-parsoid='{\"fl\":[\"zh-hans\"],\"dsr\":[71,89,null,2]}'></span>)"}]}'></span></figcaption></figure>
!! html/php
<ul class="gallery mw-gallery-traditional">
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="bat" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="bat" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="bar"><img alt="foo" src="http://example.com/images/thumb/3/3a/Foobar.jpg/20px-Foobar.jpg" width="20" height="2" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/30px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/40px-Foobar.jpg 2x" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="bar"><img alt="foo" src="http://example.com/images/thumb/3/3a/Foobar.jpg/20px-Foobar.jpg" decoding="async" width="20" height="2" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/30px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/40px-Foobar.jpg 2x" /></a>
</p>
</div>
</div></li>
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
<div class="gallerytext">
<p>This is a test template
</p>
!! wikitext
[[Image:Foobar.jpg|thumb|http://x|hello]]
!! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>hello</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>hello</div></div></div>
!! html/parsoid
<figure class="mw-default-size" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"bogus","ak":"http://x"},{"ck":"caption","ak":"hello"}]}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"25","width":"220"},"sa":{"resource":"Image:Foobar.jpg"}}'/></a><figcaption>hello</figcaption></figure>
!! html/php
01=hello world
02=<a href="/wiki/Main_Page" title="Main Page">Main Page</a>
-03=<img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/25px-Foobar.jpg" width="25" height="3" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/38px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg 2x" />
-04=<a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/25px-Foobar.jpg" width="25" height="3" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/38px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg 2x" /></a>
+03=<img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/25px-Foobar.jpg" decoding="async" width="25" height="3" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/38px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg 2x" />
+04=<a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/25px-Foobar.jpg" decoding="async" width="25" height="3" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/38px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg 2x" /></a>
05=<ul><li>foo</li>
<li>bar</li></ul>
</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>
+<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" decoding="async" 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>
!! html/parsoid
<meta property="mw:PageProp/toc" data-parsoid='{}'/>
<td>
<p><small>
</small></p><small>
-<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Test"><img alt="Test" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
+<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Test"><img alt="Test" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></div>
</small><p><small></small>
</p>
</td></tr></tbody></table>
<small>[[Image:Foobar.jpg|right|300px]]</small>
!! html/php+tidy
-<p><b>foo</b></p><b><div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div></b><p><b>bar</b>
-</p><small><div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg" width="300" height="34" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/450px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/600px-Foobar.jpg 2x" /></a></div></small>
+<p><b>foo</b></p><b><div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div></b><p><b>bar</b>
+</p><small><div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg" decoding="async" width="300" height="34" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/450px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/600px-Foobar.jpg 2x" /></a></div></small>
!! html/parsoid
<p><b>foo</b></p><b><figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>caption</figcaption></figure></b><p><b>bar</b></p>
!! wikitext
<small>'''foo[[File:Foobar.jpg|thumb|caption]]bar'''</small>
!! html/php+tidy
-<p><small><b>foo</b></small></p><small><b><div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div></b></small><p><small><b>bar</b></small>
+<p><small><b>foo</b></small></p><small><b><div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div></b></small><p><small><b>bar</b></small>
</p>
!! html/parsoid
<p><small><b>foo</b></small></p><small><b><figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>caption</figcaption></figure></b></small><p><small><b>bar</b></small></p>
!! wikitext
'''<small>[[Image:Foobar.jpg|right|300px]]</small>'''
!! html/php+tidy
-<b><small><div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg" width="300" height="34" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/450px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/600px-Foobar.jpg 2x" /></a></div></small></b>
+<b><small><div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg" decoding="async" width="300" height="34" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/450px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/600px-Foobar.jpg 2x" /></a></div></small></b>
!! html/parsoid
<b><small><figure class="mw-halign-right" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="34" width="300"/></a></figure></small></b>
!! end
!! wikitext
[[File:Foobar.jpg|thumb|alt=|bar]]
!! html/php+tidy
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>bar</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>bar</div></div></div>
!! html/parsoid
<figure class="mw-default-size" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"alt","ak":"alt="},{"ck":"caption","ak":"bar"}]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"}}'><img alt="" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220" data-parsoid='{"a":{"alt":"","resource":"./File:Foobar.jpg","height":"25","width":"220"},"sa":{"alt":"alt=","resource":"File:Foobar.jpg"}}'/></a><figcaption>bar</figcaption></figure>
!! end
!! wikitext
[[File:Foobar.jpg|link=<]]
!! html/php
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="link=<"><img alt="link=<" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="link=<"><img alt="link=<" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
!! html/parsoid
<p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"link","ak":"link=<"}]}' data-mw='{"caption":"link=&lt;"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
[[File:Foobar.jpg|link=[[wikipedia:Foo]]|alt=[[wikipedia:Foo]]|caption]]
!! html/php+tidy
-<p><a href="/wiki/Main_Page" title="caption"><img alt="Main Page" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
-</p><p><a href="/wiki/Media:Thumb.png" title="caption"><img alt="Media:Thumb.png" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
-</p><p><a href="http://en.wikipedia.org/wiki/Foo" title="caption"><img alt="wikipedia:Foo" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a href="/wiki/Main_Page" title="caption"><img alt="Main Page" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
+</p><p><a href="/wiki/Media:Thumb.png" title="caption"><img alt="Media:Thumb.png" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
+</p><p><a href="http://en.wikipedia.org/wiki/Foo" title="caption"><img alt="wikipedia:Foo" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>
</p>
!! html/parsoid
<p><figure-inline class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"caption"}'><a href="./Main_Page" data-parsoid='{"a":{"href":"./Main_Page"},"sa":{"href":"link=[[Main Page]]"}}'><img alt="Main Page" resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"alt":"Main Page","resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"alt":"alt=[[Main Page]]","resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
[[File:Foobar.jpg|thumb|PMID 1234]]
[[File:Foobar.jpg|thumb|ISBN 123456789x]]
!! html+tidy
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></div></div></div>
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a class="external mw-magiclink-rfc" rel="nofollow" href="https://tools.ietf.org/html/rfc1234">RFC 1234</a></div></div></div>
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a class="external mw-magiclink-pmid" rel="nofollow" href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract">PMID 1234</a></div></div></div>
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a href="/wiki/Special:BookSources/123456789X" class="internal mw-magiclink-isbn">ISBN 123456789x</a></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a class="external mw-magiclink-rfc" rel="nofollow" href="https://tools.ietf.org/html/rfc1234">RFC 1234</a></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a class="external mw-magiclink-pmid" rel="nofollow" href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract">PMID 1234</a></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a href="/wiki/Special:BookSources/123456789X" class="internal mw-magiclink-isbn">ISBN 123456789x</a></div></div></div>
!! html/parsoid
<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a></figcaption></figure>
<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a href="https://tools.ietf.org/html/rfc1234" rel="mw:ExtLink" class="external mw-magiclink">RFC 1234</a></figcaption></figure>
!! wikitext
[[File:Thumb.png|thumb]]
!! html/php+tidy
-<div class="thumb tright"><div class="thumbinner" style="width:137px;"><a href="/wiki/File:Thumb.png" class="image"><img alt="Thumb.png" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Thumb.png" class="internal" title="Enlarge"></a></div></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:137px;"><a href="/wiki/File:Thumb.png" class="image"><img alt="Thumb.png" src="http://example.com/images/e/ea/Thumb.png" decoding="async" width="135" height="135" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Thumb.png" class="internal" title="Enlarge"></a></div></div></div></div>
!! html/parsoid
<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Thumb.png"><img resource="./File:Thumb.png" src="//example.com/images/e/ea/Thumb.png" data-file-width="135" data-file-height="135" data-file-type="bitmap" height="135" width="135"/></a></figure>
!! end
parent::tearDown();
}
+ /**
+ * @expectedException PHPUnit_Framework_Error_Notice
+ * @expectedExceptionMessage given element name with space
+ * @covers Html::openElement
+ */
+ public function testOpenElement() {
+ Html::openElement( 'span id="x"' );
+ }
+
/**
* @covers Html::element
* @covers Html::rawElement
--- /dev/null
+<?php
+
+/**
+ * @covers \MagicWordFactory
+ *
+ * @author Derick N. Alangi
+ */
+class MagicWordFactoryTest extends MediaWikiTestCase {
+ private function makeMagicWordFactory( Language $contLang = null ) {
+ if ( $contLang === null ) {
+ return new MagicWordFactory( Language::factory( 'en' ) );
+ }
+ return new MagicWordFactory( $contLang );
+ }
+
+ public function testGetContentLanguage() {
+ $contLang = Language::factory( 'en' );
+
+ $magicWordFactory = $this->makeMagicWordFactory( $contLang );
+ $magicWordContLang = $magicWordFactory->getContentLanguage();
+
+ $this->assertSame( $contLang, $magicWordContLang );
+ }
+
+ public function testGetMagicWord() {
+ $magicWordIdValid = 'pageid';
+ $magicWordFactory = $this->makeMagicWordFactory();
+ $mwActual = $magicWordFactory->get( $magicWordIdValid );
+ $contLang = $magicWordFactory->getContentLanguage();
+ $expected = new MagicWord( $magicWordIdValid, [ 'PAGEID' ], false, $contLang );
+
+ $this->assertEquals( $expected, $mwActual );
+ }
+
+ public function testGetInvalidMagicWord() {
+ $magicWordFactory = $this->makeMagicWordFactory();
+
+ $this->setExpectedException( MWException::class );
+ \Wikimedia\suppressWarnings();
+ try {
+ $magicWordFactory->get( 'invalid magic word' );
+ } finally {
+ \Wikimedia\restoreWarnings();
+ }
+ }
+
+ public function testGetVariableIDs() {
+ $magicWordFactory = $this->makeMagicWordFactory();
+ $varIds = $magicWordFactory->getVariableIDs();
+
+ $this->assertInternalType( 'array', $varIds );
+ $this->assertNotEmpty( $varIds );
+ $this->assertContainsOnly( 'string', $varIds );
+ }
+
+ public function testGetSubstIDs() {
+ $magicWordFactory = $this->makeMagicWordFactory();
+ $substIds = $magicWordFactory->getSubstIDs();
+
+ $this->assertInternalType( 'array', $substIds );
+ $this->assertNotEmpty( $substIds );
+ $this->assertContainsOnly( 'string', $substIds );
+ }
+
+ /**
+ * Test both valid and invalid caching hints paths
+ */
+ public function testGetCacheTTL() {
+ $magicWordFactory = $this->makeMagicWordFactory();
+ $actual = $magicWordFactory->getCacheTTL( 'localday' );
+
+ $this->assertSame( 3600, $actual );
+
+ $actual = $magicWordFactory->getCacheTTL( 'currentmonth' );
+ $this->assertSame( 86400, $actual );
+
+ $actual = $magicWordFactory->getCacheTTL( 'invalid' );
+ $this->assertSame( -1, $actual );
+ }
+
+ public function testGetDoubleUnderscoreArray() {
+ $magicWordFactory = $this->makeMagicWordFactory();
+ $actual = $magicWordFactory->getDoubleUnderscoreArray();
+
+ $this->assertInstanceOf( MagicWordArray::class, $actual );
+ }
+}
RevisionSlotsUpdate $update,
User $user,
$comment,
- $id,
+ $id = 0,
$parentId = 0
) {
$rev = new MutableRevisionRecord( $title );
$rev->applyUpdate( $update );
$rev->setUser( $user );
$rev->setComment( CommentStoreComment::newUnsavedComment( $comment ) );
- $rev->setId( $id );
$rev->setPageId( $title->getArticleID() );
$rev->setParentId( $parentId );
+ if ( $id ) {
+ $rev->setId( $id );
+ }
+
return $rev;
}
// TODO: test category membership update (with setRcWatchCategoryMembership())
}
+ /**
+ * @covers \MediaWiki\Storage\DerivedPageDataUpdater::doParserCacheUpdate()
+ */
+ public function testDoParserCacheUpdate() {
+ if ( $this->hasMultiSlotSupport() ) {
+ MediaWikiServices::getInstance()->getSlotRoleRegistry()->defineRoleWithModel(
+ 'aux',
+ CONTENT_MODEL_WIKITEXT
+ );
+ }
+
+ $page = $this->getPage( __METHOD__ );
+ $this->createRevision( $page, 'Dummy' );
+
+ $user = $this->getTestUser()->getUser();
+
+ $update = new RevisionSlotsUpdate();
+ $update->modifyContent( 'main', new WikitextContent( 'first [[Main]]' ) );
+
+ if ( $this->hasMultiSlotSupport() ) {
+ $update->modifyContent( 'aux', new WikitextContent( 'Aux [[Nix]]' ) );
+ }
+
+ // Emulate update after edit ----------
+ $pcache = MediaWikiServices::getInstance()->getParserCache();
+ $pcache->deleteOptionsKey( $page );
+
+ $rev = $this->makeRevision( $page->getTitle(), $update, $user, 'rev', null );
+ $rev->setTimestamp( '20100101000000' );
+ $rev->setParentId( $page->getLatest() );
+
+ $updater = $this->getDerivedPageDataUpdater( $page );
+ $updater->prepareContent( $user, $update, false );
+
+ $rev->setId( 11 );
+ $updater->prepareUpdate( $rev );
+
+ // Force the page timestamp, so we notice whether ParserOutput::getTimestamp
+ // or ParserOutput::getCacheTime are used.
+ $page->setTimestamp( $rev->getTimestamp() );
+ $updater->doParserCacheUpdate();
+
+ // The cached ParserOutput should not use the revision timestamp
+ $cached = $pcache->get( $page, $updater->getCanonicalParserOptions(), true );
+ $this->assertInternalType( 'object', $cached );
+ $this->assertSame( $updater->getCanonicalParserOutput(), $cached );
+
+ $this->assertSame( $rev->getTimestamp(), $cached->getCacheTime() );
+ $this->assertSame( $rev->getId(), $cached->getCacheRevisionId() );
+
+ // Emulate forced update of an old revision ----------
+ $pcache->deleteOptionsKey( $page );
+
+ $updater = $this->getDerivedPageDataUpdater( $page );
+ $updater->prepareUpdate( $rev );
+
+ // Force the page timestamp, so we notice whether ParserOutput::getTimestamp
+ // or ParserOutput::getCacheTime are used.
+ $page->setTimestamp( $rev->getTimestamp() );
+ $updater->doParserCacheUpdate();
+
+ // The cached ParserOutput should not use the revision timestamp
+ $cached = $pcache->get( $page, $updater->getCanonicalParserOptions(), true );
+ $this->assertInternalType( 'object', $cached );
+ $this->assertSame( $updater->getCanonicalParserOutput(), $cached );
+
+ $this->assertGreaterThan( $rev->getTimestamp(), $cached->getCacheTime() );
+ $this->assertSame( $rev->getId(), $cached->getCacheRevisionId() );
+ }
+
+ /**
+ * @return bool
+ */
private function hasMultiSlotSupport() {
global $wgMultiContentRevisionSchemaMigrationStage;
'aux',
CONTENT_MODEL_WIKITEXT
);
+
+ $this->tablesUsed[] = 'logging';
+ $this->tablesUsed[] = 'recentchanges';
}
private function getDummyTitle( $method ) {
$this->doBlock( [ 'expiry' => '' ] );
}
+ public function testBlockWithoutRestrictions() {
+ $this->setMwGlobals( [
+ 'wgEnablePartialBlocks' => true,
+ ] );
+
+ $this->doBlock();
+
+ $block = Block::newFromTarget( $this->mUser->getName() );
+
+ $this->assertTrue( $block->isSitewide() );
+ $this->assertCount( 0, $block->getRestrictions() );
+ }
+
public function testBlockWithRestrictions() {
$this->setMwGlobals( [
'wgEnablePartialBlocks' => true,
/**
* @expectedException ApiUsageException
- * @expectedExceptionMessage "pagerestrictions" may not be over 10 (set to 11) for bots or sysops.
+ * @expectedExceptionMessage Too many values supplied for parameter "pagerestrictions". The
+ * limit is 10.
*/
public function testBlockingToManyRestrictions() {
$this->setMwGlobals( [
]
],
],
+ 'Relative diff, no prev' => [
+ [
+ 'fromrev' => '{{REPL:revA1}}',
+ 'torelative' => 'prev',
+ 'prop' => 'ids|rel|diff|title|user|comment',
+ ],
+ [
+ 'warnings' => [
+ [
+ 'code' => 'compare-no-prev',
+ 'module' => 'compare',
+ ],
+ ],
+ 'compare' => [
+ 'toid' => '{{REPL:pageA}}',
+ 'torevid' => '{{REPL:revA1}}',
+ 'tons' => 0,
+ 'totitle' => 'ApiComparePagesTest A',
+ 'touser' => '{{REPL:creator}}',
+ 'touserid' => '{{REPL:creatorid}}',
+ 'tocomment' => 'Test for ApiComparePagesTest: A 1',
+ 'toparsedcomment' => 'Test for ApiComparePagesTest: A 1',
+ 'next' => '{{REPL:revA2}}',
+ 'body' => '<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1" >Line 1:</td>' . "\n"
+ . '<td colspan="2" class="diff-lineno">Line 1:</td></tr>' . "\n"
+ . '<tr><td class=\'diff-marker\'>−</td><td class=\'diff-deletedline\'><div> </div></td><td class=\'diff-marker\'>+</td><td class=\'diff-addedline\'><div><ins class="diffchange diffchange-inline">A 1</ins></div></td></tr>' . "\n",
+ ],
+ ],
+ ],
+ 'Relative diff, no next' => [
+ [
+ 'fromrev' => '{{REPL:revA4}}',
+ 'torelative' => 'next',
+ 'prop' => 'ids|rel|diff|title|user|comment',
+ ],
+ [
+ 'warnings' => [
+ [
+ 'code' => 'compare-no-next',
+ 'module' => 'compare',
+ ],
+ ],
+ 'compare' => [
+ 'fromid' => '{{REPL:pageA}}',
+ 'fromrevid' => '{{REPL:revA4}}',
+ 'fromns' => 0,
+ 'fromtitle' => 'ApiComparePagesTest A',
+ 'fromuser' => '{{REPL:creator}}',
+ 'fromuserid' => '{{REPL:creatorid}}',
+ 'fromcomment' => 'Test for ApiComparePagesTest: A 4',
+ 'fromparsedcomment' => 'Test for ApiComparePagesTest: A 4',
+ 'prev' => '{{REPL:revA3}}',
+ 'body' => '',
+ ],
+ ],
+ ],
'Diff for specific slots' => [
// @todo Use a page with multiple slots here
[
[],
'missingcontent'
],
- 'Error, Relative diff, no prev' => [
- [
- 'fromrev' => '{{REPL:revA1}}',
- 'torelative' => 'prev',
- 'prop' => 'ids',
- ],
- [],
- 'baddiff'
- ],
- 'Error, Relative diff, no next' => [
- [
- 'fromrev' => '{{REPL:revA4}}',
- 'torelative' => 'next',
- 'prop' => 'ids',
- ],
- [],
- 'baddiff'
- ],
'Error, section diff with no revision' => [
[
'fromtitle' => 'ApiComparePagesTest F',
$this->assertFalse( Title::newFromText( $name )->exists() );
}
+ public function testBatchedDelete() {
+ $this->setMwGlobals( 'wgDeleteRevisionsBatchSize', 1 );
+
+ $name = 'Help:' . ucfirst( __FUNCTION__ );
+ for ( $i = 1; $i <= 3; $i++ ) {
+ $this->editPage( $name, "Revision $i" );
+ }
+
+ $apiResult = $this->doApiRequestWithToken( [
+ 'action' => 'delete',
+ 'title' => $name,
+ ] )[0];
+
+ $this->assertArrayHasKey( 'delete', $apiResult );
+ $this->assertArrayHasKey( 'title', $apiResult['delete'] );
+ $this->assertSame( $name, $apiResult['delete']['title'] );
+ $this->assertArrayHasKey( 'scheduled', $apiResult['delete'] );
+ $this->assertTrue( $apiResult['delete']['scheduled'] );
+ $this->assertArrayNotHasKey( 'logid', $apiResult['delete'] );
+
+ // Run the jobs
+ JobQueueGroup::destroySingletons();
+ $jobs = new RunJobs;
+ $jobs->loadParamsAndArgs( null, [ 'quiet' => true ], null );
+ $jobs->execute();
+
+ $this->assertFalse( Title::newFromText( $name )->exists( Title::GAID_FOR_UPDATE ) );
+ }
+
public function testDeleteNonexistent() {
$this->setExpectedException( ApiUsageException::class,
"The page you specified doesn't exist." );
];
}
+ public function testAddMessagesFromStatus_filter() {
+ $result = new ApiResult( 8388608 );
+ $formatter = new ApiErrorFormatter( $result, Language::factory( 'qqx' ), 'plaintext', false );
+
+ $status = Status::newGood();
+ $status->warning( 'mainpage' );
+ $status->warning( 'parentheses', 'foobar' );
+ $status->warning( wfMessage( 'mainpage' ) );
+ $status->error( 'mainpage' );
+ $status->error( 'parentheses', 'foobaz' );
+ $formatter->addMessagesFromStatus( 'status', $status, [ 'warning', 'error' ], [ 'mainpage' ] );
+ $this->assertSame( [
+ 'errors' => [
+ [
+ 'code' => 'parentheses',
+ 'text' => '(parentheses: foobaz)',
+ 'module' => 'status',
+ ApiResult::META_CONTENT => 'text',
+ ],
+ ApiResult::META_INDEXED_TAG_NAME => 'error',
+ ],
+ 'warnings' => [
+ [
+ 'code' => 'parentheses',
+ 'text' => '(parentheses: foobar)',
+ 'module' => 'status',
+ ApiResult::META_CONTENT => 'text',
+ ],
+ ApiResult::META_INDEXED_TAG_NAME => 'warning',
+ ],
+ ApiResult::META_TYPE => 'assoc',
+ ], $result->getResultData() );
+ }
+
/**
* @dataProvider provideIsValidApiCode
* @covers ApiErrorFormatter::isValidApiCode
$this->tablesUsed[] = 'change_tag';
$this->tablesUsed[] = 'change_tag_def';
- $this->tablesUsed[] = 'tag_summary';
- $this->tablesUsed[] = 'valid_tag';
// Truncate these to avoid the supposed-to-be-unused IDs in tests here turning
// out to be used, leading ChangeTags::updateTags() to pick up bogus rc_id,
$dbw = wfGetDB( DB_MASTER );
$dbw->delete( 'change_tag', '*' );
$dbw->delete( 'change_tag_def', '*' );
- $dbw->delete( 'valid_tag', '*' );
$rcId = 123;
ChangeTags::updateTags( [ 'tag1', 'tag2' ], [], $rcId );
];
$res = $dbr->select( 'change_tag_def', [ 'ctd_name', 'ctd_user_defined' ], '' );
$this->assertEquals( $expected, iterator_to_array( $res, false ) );
-
- $this->assertEquals( [], $dbr->selectFieldValues( 'valid_tag', 'vt_tag', '' ) );
}
}
$priorAsOf = null;
$wasSet = 0;
$func = function ( $old, &$ttl, &$opts, $asOf )
- use ( &$wasSet, &$priorValue, &$priorAsOf, $value )
- {
+ use ( &$wasSet, &$priorValue, &$priorAsOf, $value ) {
++$wasSet;
$priorValue = $old;
$priorAsOf = $asOf;
$this->assertEquals( 'xxx1', $v, "Value still returned after expired (in grace)" );
$this->assertEquals( 1, $wasSet, "Value still returned after expired (in grace)" );
- // Change of refresh increase to unity as staleness approaches graceTTL
+ // Chance of refresh increase to unity as staleness approaches graceTTL
$mockWallClock += $cache::TTL_WEEK; // 8 days of being stale
$v = $cache->getWithSetCallback(
$key,
$this->assertNotEquals( null, $oldAsOfReceived, "Callback got post-grace stale value" );
}
+ /**
+ * @dataProvider getWithSetCallback_provider
+ * @covers WANObjectCache::getWithSetCallback()
+ * @covers WANObjectCache::doGetWithSetCallback()
+ * @param array $extOpts
+ * @param bool $versioned
+ */
+ function testGetWithSetcallback_touched( array $extOpts, $versioned ) {
+ $cache = $this->cache;
+
+ $mockWallClock = microtime( true );
+ $cache->setMockTime( $mockWallClock );
+
+ $checkFunc = function ( $oldVal, &$ttl, array $setOpts, $oldAsOf )
+ use ( &$wasSet ) {
+ ++$wasSet;
+
+ return 'xxx' . $wasSet;
+ };
+
+ $key = wfRandomString();
+ $wasSet = 0;
+ $touched = null;
+ $touchedCallback = function () use ( &$touched ) {
+ return $touched;
+ };
+ $v = $cache->getWithSetCallback(
+ $key,
+ $cache::TTL_INDEFINITE,
+ $checkFunc,
+ [ 'touchedCallback' => $touchedCallback ] + $extOpts
+ );
+ $mockWallClock += 60;
+ $v = $cache->getWithSetCallback(
+ $key,
+ $cache::TTL_INDEFINITE,
+ $checkFunc,
+ [ 'touchedCallback' => $touchedCallback ] + $extOpts
+ );
+ $this->assertEquals( 'xxx1', $v, "Value was computed once" );
+ $this->assertEquals( 1, $wasSet, "Value was computed once" );
+
+ $touched = $mockWallClock - 10;
+ $v = $cache->getWithSetCallback(
+ $key,
+ $cache::TTL_INDEFINITE,
+ $checkFunc,
+ [ 'touchedCallback' => $touchedCallback ] + $extOpts
+ );
+ $v = $cache->getWithSetCallback(
+ $key,
+ $cache::TTL_INDEFINITE,
+ $checkFunc,
+ [ 'touchedCallback' => $touchedCallback ] + $extOpts
+ );
+ $this->assertEquals( 'xxx2', $v, "Value was recomputed once" );
+ $this->assertEquals( 2, $wasSet, "Value was recomputed once" );
+ }
+
public static function getWithSetCallback_provider() {
return [
[ [], false ],
<?php
+use Wikimedia\TestingAccessWrapper;
+
/**
* @group Database
*/
* @param array $inputOpts Input options
* @param array $expectedOpts Expected options
*/
- public function testDateFilterOptionProcessing( $inputOpts, $expectedOpts ) {
+ public function testDateFilterOptionProcessing( array $inputOpts, array $expectedOpts ) {
$this->assertArraySubset( $expectedOpts, ContribsPager::processDateFilter( $inputOpts ) );
}
[ '2001:db8::/9999' ],
];
}
+
+ /**
+ * @covers \ContribsPager::getExtraSortFields
+ * @covers \ContribsPager::getIndexField
+ * @covers \ContribsPager::getQueryInfo
+ */
+ public function testUniqueSortOrderWithoutIpChanges() {
+ $pager = new ContribsPager( new RequestContext(), [
+ 'start' => '',
+ 'end' => '',
+ ] );
+
+ /** @var ContribsPager $pager */
+ $pager = TestingAccessWrapper::newFromObject( $pager );
+ $queryInfo = $pager->buildQueryInfo( '', 1, false );
+
+ $this->assertNotContains( 'ip_changes', $queryInfo[0] );
+ $this->assertArrayNotHasKey( 'ip_changes', $queryInfo[5] );
+ $this->assertContains( 'rev_timestamp', $queryInfo[1] );
+ $this->assertContains( 'rev_id', $queryInfo[1] );
+ $this->assertSame( [ 'rev_timestamp DESC', 'rev_id DESC' ], $queryInfo[4]['ORDER BY'] );
+ }
+
+ /**
+ * @covers \ContribsPager::getExtraSortFields
+ * @covers \ContribsPager::getIndexField
+ * @covers \ContribsPager::getQueryInfo
+ */
+ public function testUniqueSortOrderOnIpChanges() {
+ $pager = new ContribsPager( new RequestContext(), [
+ 'target' => '116.17.184.5/32',
+ 'start' => '',
+ 'end' => '',
+ ] );
+
+ /** @var ContribsPager $pager */
+ $pager = TestingAccessWrapper::newFromObject( $pager );
+ $queryInfo = $pager->buildQueryInfo( '', 1, false );
+
+ $this->assertContains( 'ip_changes', $queryInfo[0] );
+ $this->assertArrayHasKey( 'ip_changes', $queryInfo[5] );
+ $this->assertSame( 'ipc_rev_timestamp', $queryInfo[1]['rev_timestamp'] );
+ $this->assertSame( 'ipc_rev_id', $queryInfo[1]['rev_id'] );
+ $this->assertSame( [ 'rev_timestamp DESC', 'rev_id DESC' ], $queryInfo[4]['ORDER BY'] );
+ }
+
}
],
],
] );
+ $this->hideDeprecated( 'User::getPasswordValidity' );
$user = static::getTestUser()->getUser();