* $wgIncludeLegacyJavaScript, deprecated in MediaWiki 1.26, now defaults false.
Extensions, skins, gadgets and scripts that need the mediawiki.legacy.wikibits
module should express a dependency on it.
+* Removed configuration option $wgCopyrightIcon (deprecated since 1.18). Use
+ $wgFooterIcons['copyright']['copyright'] instead.
=== New features in 1.27 ===
* $wgDataCenterUpdateStickTTL was also added. This decides how long a user
* ApiQuery::setGeneratorContinue() was removed (deprecated since 1.24).
* ApiMain::getModules() was removed (deprecated since 1.21).
* ApiBase::getVersion() was removed (deprecated since 1.21).
-* Language::getLangObj() was removed (deprecated since 1.24).
-* Language::getLanguageName() was removed (deprecated since 1.20).
-* Language::getLanguageNames() was removed (deprecated since 1.20).
-* Language::getTranslatedLanguageNames() was removed (deprecated since 1.20).
-* Language::specialPage() was removed (deprecated since 1.24).
-* MediaWikiTestCase::assertException() was removed (deprecated since 1.22).
-* OutputPage::getHeadItems() was removed (deprecated since 1.24).
-* OutputPage::getScript() was removed (deprecated since 1.24).
-* OutputPage::out() was removed (deprecated since 1.22).
-* OutputPage::setAllowedModules() was removed (deprecated since 1.24).
+* ApiMain::getShowVersions() was removed (deprecated in 1.21).
+* ApiMain::addModule() was removed (deprecated in 1.21).
+* ApiMain::addFormat() was removed (deprecated in 1.21).
+* ApiMain::getFormats() was removed (deprecated in 1.21).
+* ApiPageSet::finishPageSetGeneration() was removed (deprecated in 1.21).
=== Languages updated in 1.27 ===
changes to languages because of Phabricator reports.
* (T113688) Change default numerals from Gurmukhi to Arabic for Punjabi locale.
+* (T116020) Aliases of magic words in MessagesXx.php are sorted by usage.
=== Other changes in 1.27 ===
* ProfilerOutputUdp was removed. Note that there is a ProfilerOutputStats class.
* Unit tests don't work with external PHPUnit anymore, Composer is now the only supported
way. Run `composer install` to install it and other dev dependencies to run unit tests.
* wl_id field added to the watchlist table.
+* Revision::getRawText() was removed (deprecated since 1.21).
+* WikiPage::replaceSection() was removed (deprecated since 1.21).
+* Article::replaceSection() was removed (deprecated since 1.21).
+* Language::getLangObj() was removed (deprecated since 1.24).
+* Language::getLanguageName() was removed (deprecated since 1.20).
+* Language::getLanguageNames() was removed (deprecated since 1.20).
+* Language::getTranslatedLanguageNames() was removed (deprecated since 1.20).
+* Language::specialPage() was removed (deprecated since 1.24).
+* MediaWikiTestCase::assertException() was removed (deprecated since 1.22).
+* OutputPage::getHeadItems() was removed (deprecated since 1.24).
+* OutputPage::getScript() was removed (deprecated since 1.24).
+* OutputPage::out() was removed (deprecated since 1.22).
+* OutputPage::setAllowedModules() was removed (deprecated since 1.24).
+* UserrightsPage::makeGroupNameListForLog() was removed (deprecated since 1.21).
+* MediaWikiSite::newFromGlobalId() was removed (deprecated since 1.21).
+* Title::newFromRedirect() was removed (deprecated since 1.21).
+* Skin::commonPrintStylesheet() was removed (deprecated since 1.22).
+* Skin::getCommonStylePath() was removed (deprecated since 1.24).
+* Skin::newFromKey() was removed (deprecated since 1.24).
+* Skin::getUsableSkins() was removed (deprecated since 1.23).
+* LoadBalancer::pickRandom() was removed (deprecated in 1.21).
+* Article::getUndoText() and WikiPage::getUndoText were removed (deprecated since
+ 1.21).
+* DifferenceEngine::setText() was removed (deprecated in 1.21).
+* Title::newFromRedirectArray() was removed (deprecated in 1.21).
+* UserMailer::send() no longer accepts $replyto as the 5th argument and $contentType
+ as the 6th. These must be passed in the options array now.
== Compatibility ==
'BmpHandler' => __DIR__ . '/includes/media/BMP.php',
'BotPassword' => __DIR__ . '/includes/user/BotPassword.php',
'BrokenRedirectsPage' => __DIR__ . '/includes/specials/SpecialBrokenRedirects.php',
- 'BufferingStatsdDataFactory' => __DIR__ . '/includes/libs/BufferingStatsdDataFactory.php',
+ 'BufferingStatsdDataFactory' => __DIR__ . '/includes/libs/stats/BufferingStatsdDataFactory.php',
'CLIParser' => __DIR__ . '/maintenance/parse.php',
'CSSMin' => __DIR__ . '/includes/libs/CSSMin.php',
'CacheDependency' => __DIR__ . '/includes/cache/CacheDependency.php',
'NullJob' => __DIR__ . '/includes/jobqueue/jobs/NullJob.php',
'NullLockManager' => __DIR__ . '/includes/filebackend/lockmanager/LockManager.php',
'NullRepo' => __DIR__ . '/includes/filerepo/NullRepo.php',
+ 'NullStatsdDataFactory' => __DIR__ . '/includes/libs/stats/NullStatsdDataFactory.php',
'OOUIHTMLForm' => __DIR__ . '/includes/htmlform/OOUIHTMLForm.php',
'ORAField' => __DIR__ . '/includes/db/DatabaseOracle.php',
'ORAResult' => __DIR__ . '/includes/db/DatabaseOracle.php',
'PackedHoverImageGallery' => __DIR__ . '/includes/gallery/PackedOverlayImageGallery.php',
'PackedImageGallery' => __DIR__ . '/includes/gallery/PackedImageGallery.php',
'PackedOverlayImageGallery' => __DIR__ . '/includes/gallery/PackedOverlayImageGallery.php',
- 'Page' => __DIR__ . '/includes/page/WikiPage.php',
+ 'Page' => __DIR__ . '/includes/page/Page.php',
'PageArchive' => __DIR__ . '/includes/specials/SpecialUndelete.php',
'PageExists' => __DIR__ . '/maintenance/pageExists.php',
'PageLangLogFormatter' => __DIR__ . '/includes/logging/PageLangLogFormatter.php',
'SquidPurgeClientPool' => __DIR__ . '/includes/clientpool/SquidPurgeClientPool.php',
'SquidUpdate' => __DIR__ . '/includes/deferred/CdnCacheUpdate.php',
'SrConverter' => __DIR__ . '/languages/classes/LanguageSr.php',
+ 'StatsdAwareInterface' => __DIR__ . '/includes/libs/stats/StatsdAwareInterface.php',
'StatsOutput' => __DIR__ . '/maintenance/language/StatOutputs.php',
'Status' => __DIR__ . '/includes/Status.php',
'StatusValue' => __DIR__ . '/includes/libs/StatusValue.php',
"wiki": "https://www.mediawiki.org/"
},
"require": {
- "composer/semver": "1.2.0",
+ "composer/semver": "1.4.0",
"cssjanus/cssjanus": "1.1.2",
"ext-iconv": "*",
"liuggio/statsd-php-client": "1.0.18",
Most importantly, the following functions have been deprecated:
-* Revisions::getText() and Revisions::getRawText() is deprecated in favor Revisions::getContent()
+* Revisions::getText() is deprecated in favor Revisions::getContent()
* WikiPage::getText() is deprecated in favor WikiPage::getContent()
Also, the old Article::getContent() (which returns text) is superceded by Article::getContentObject(). However, both
]
},
"templates": {
- "type": "object",
+ "type": ["object", "array"],
"description": "Templates to be loaded for client-side usage"
},
"targets": {
$subPage: the subpage string or null if no subpage was specified
'SpecialPageBeforeExecute': Called before SpecialPage::execute.
+Return false to prevent execution.
$special: the SpecialPage object
$subPage: the subpage string or null if no subpage was specified
* 'legend' => 'legend-msg',
* // optional (defaults to 'flag'), CSS class to put on changes lists rows
* 'class' => 'css-class',
+ * // optional (defaults to 'any'), how top-level flag is determined. 'any'
+ * // will set the top-level flag if any line contains the flag, 'all' will
+ * // only be set if all lines contain the flag.
+ * 'grouping' => 'any',
* );
* @endcode
*
'letter' => 'newpageletter',
'title' => 'recentchanges-label-newpage',
'legend' => 'recentchanges-legend-newpage',
+ 'grouping' => 'any',
],
'minor' => [
'letter' => 'minoreditletter',
'title' => 'recentchanges-label-minor',
'legend' => 'recentchanges-legend-minor',
'class' => 'minoredit',
+ 'grouping' => 'all',
],
'bot' => [
'letter' => 'boteditletter',
'title' => 'recentchanges-label-bot',
'legend' => 'recentchanges-legend-bot',
'class' => 'botedit',
+ 'grouping' => 'all',
],
'unpatrolled' => [
'letter' => 'unpatrolledletter',
'title' => 'recentchanges-label-unpatrolled',
'legend' => 'recentchanges-legend-unpatrolled',
+ 'grouping' => 'any',
],
];
*/
$wgRightsIcon = null;
-/**
- * Set this to some HTML to override the rights icon with an arbitrary logo
- * @deprecated since 1.18 Use $wgFooterIcons['copyright']['copyright']
- */
-$wgCopyrightIcon = null;
-
/**
* Set this to true if you want detailed copyright information forms on Upload.
*/
* Get the content of the wanted revision, without section extraction.
*
* The result of this function can be used to compare user's input with
- * section replaced in its context (using WikiPage::replaceSection())
+ * section replaced in its context (using WikiPage::replaceSectionAtRev())
* to the original text of the edit.
*
* This differs from Article::getContent() that when a missing revision is
} elseif ( $this->section != '' ) {
# Try to get a section anchor from the section source, redirect
# to edited section if header found.
- # XXX: Might be better to integrate this into Article::replaceSection
+ # XXX: Might be better to integrate this into Article::replaceSectionAtRev
# for duplicate heading checking and maybe parsing.
$hasmatch = preg_match( "/^ *([=]{1,6})(.*?)(\\1) *\\n/i", $this->textbox1, $matches );
# We can't deal with anchors, includes, html etc in the header for now,
// adding of CSS or Javascript by extensions.
Hooks::run( 'BeforePageDisplay', [ &$this, &$sk ] );
- $sk->outputPage();
+ try {
+ $sk->outputPage();
+ } catch ( Exception $e ) {
+ ob_end_clean(); // bug T129657
+ throw $e;
+ }
}
- // This hook allows last minute changes to final overall output by modifying output buffer
- Hooks::run( 'AfterFinalPageOutput', [ $this ] );
+ try {
+ // This hook allows last minute changes to final overall output by modifying output buffer
+ Hooks::run( 'AfterFinalPageOutput', [ $this ] );
+ } catch ( Exception $e ) {
+ ob_end_clean(); // bug T129657
+ throw $e;
+ }
$this->sendCacheControl();
$htmlForm->setModifiedUser( $user );
$htmlForm->setId( 'mw-prefs-form' );
+ $htmlForm->setAutocomplete( 'off' );
$htmlForm->setSubmitText( $context->msg( 'saveprefs' )->text() );
# Used message keys: 'accesskey-preferences-save', 'tooltip-preferences-save'
$htmlForm->setSubmitTooltip( 'preferences-save' );
}
}
- /**
- * Fetch revision text without regard for view restrictions
- *
- * @return string
- *
- * @deprecated since 1.21. Instead, use Revision::getContent( Revision::RAW )
- * or Revision::getSerializedData() as appropriate.
- */
- public function getRawText() {
- ContentHandler::deprecated( __METHOD__, "1.21" );
- return $this->getText( self::RAW );
- }
-
/**
* Fetch original serialized data without regard for view restrictions
*
);
}
-if ( isset( $wgFooterIcons['copyright'] )
- && isset( $wgFooterIcons['copyright']['copyright'] )
+if ( isset( $wgFooterIcons['copyright']['copyright'] )
&& $wgFooterIcons['copyright']['copyright'] === []
) {
- if ( $wgCopyrightIcon ) {
- $wgFooterIcons['copyright']['copyright'] = $wgCopyrightIcon;
- } elseif ( $wgRightsIcon || $wgRightsText ) {
+ if ( $wgRightsIcon || $wgRightsText ) {
$wgFooterIcons['copyright']['copyright'] = [
'url' => $wgRightsUrl,
'src' => $wgRightsIcon,
'alt' => $wgRightsText,
];
- } else {
- unset( $wgFooterIcons['copyright']['copyright'] );
}
}
public function __construct( $database = false ) {
if ( $database instanceof IDatabase ) {
$this->db = $database;
+ } elseif ( $database ) {
+ $this->db = wfGetDB( DB_MASTER );
} else {
- $this->db = wfGetDB( $database ? DB_MASTER : DB_SLAVE );
+ $this->db = wfGetDB( DB_SLAVE, 'vslow' );
}
}
return $title;
}
- /**
- * Extract a redirect destination from a string and return the
- * Title, or null if the text doesn't contain a valid redirect
- * This will only return the very next target, useful for
- * the redirect table and other checks that don't need full recursion
- *
- * @param string $text Text with possible redirect
- * @return Title The corresponding Title
- * @deprecated since 1.21, use Content::getRedirectTarget instead.
- */
- public static function newFromRedirect( $text ) {
- ContentHandler::deprecated( __METHOD__, '1.21' );
-
- $content = ContentHandler::makeContent( $text, null, CONTENT_MODEL_WIKITEXT );
- return $content->getRedirectTarget();
- }
-
/**
* Extract a redirect destination from a string and return the
* Title, or null if the text doesn't contain a valid redirect
return $content->getUltimateRedirectTarget();
}
- /**
- * Extract a redirect destination from a string and return an
- * array of Titles, or null if the text doesn't contain a valid redirect
- * The last element in the array is the final destination after all redirects
- * have been resolved (up to $wgMaxRedirects times)
- *
- * @param string $text Text with possible redirect
- * @return Title[] Array of Titles, with the destination last
- * @deprecated since 1.21, use Content::getRedirectChain instead.
- */
- public static function newFromRedirectArray( $text ) {
- ContentHandler::deprecated( __METHOD__, '1.21' );
-
- $content = ContentHandler::makeContent( $text, null, CONTENT_MODEL_WIKITEXT );
- return $content->getRedirectChain();
- }
-
/**
* Get the prefixed DB key associated with an ID
*
<?php
+use Liuggio\StatsdClient\Factory\StatsdDataFactoryInterface;
use Wikimedia\Assert\Assert;
/**
*
* @since 1.27
*/
-class WatchedItemStore {
+class WatchedItemStore implements StatsdAwareInterface {
const SORT_DESC = 'DESC';
const SORT_ASC = 'ASC';
*/
private $revisionGetTimestampFromIdCallback;
+ /**
+ * @var StatsdDataFactoryInterface
+ */
+ private $stats;
+
/**
* @var self|null
*/
) {
$this->loadBalancer = $loadBalancer;
$this->cache = $cache;
+ $this->stats = new NullStatsdDataFactory();
$this->deferredUpdatesAddCallableUpdateCallback = [ 'DeferredUpdates', 'addCallableUpdate' ];
$this->revisionGetTimestampFromIdCallback = [ 'Revision', 'getTimestampFromId' ];
}
+ public function setStatsdDataFactory( StatsdDataFactoryInterface $stats ) {
+ $this->stats = $stats;
+ }
+
/**
* Overrides the DeferredUpdates::addCallableUpdate callback
* This is intended for use while testing and will fail if MW_PHPUNIT_TEST is not defined.
wfGetLB(),
new HashBagOStuff( [ 'maxKeys' => 100 ] )
);
+ self::$instance->setStatsdDataFactory( RequestContext::getMain()->getStats() );
}
return self::$instance;
}
$key = $this->getCacheKey( $user, $target );
$this->cache->set( $key, $item );
$this->cacheIndex[$target->getNamespace()][$target->getDBkey()][$user->getId()] = $key;
+ $this->stats->increment( 'WatchedItemStore.cache' );
}
private function uncache( User $user, LinkTarget $target ) {
$this->cache->delete( $this->getCacheKey( $user, $target ) );
unset( $this->cacheIndex[$target->getNamespace()][$target->getDBkey()][$user->getId()] );
+ $this->stats->increment( 'WatchedItemStore.uncache' );
}
private function uncacheLinkTarget( LinkTarget $target ) {
if ( !isset( $this->cacheIndex[$target->getNamespace()][$target->getDBkey()] ) ) {
return;
}
+ $this->stats->increment( 'WatchedItemStore.uncacheLinkTarget' );
foreach ( $this->cacheIndex[$target->getNamespace()][$target->getDBkey()] as $key ) {
+ $this->stats->increment( 'WatchedItemStore.uncacheLinkTarget.items' );
$this->cache->delete( $key );
}
}
$cached = $this->getCached( $user, $target );
if ( $cached ) {
+ $this->stats->increment( 'WatchedItemStore.getWatchedItem.cached' );
return $cached;
}
+ $this->stats->increment( 'WatchedItemStore.getWatchedItem.load' );
return $this->loadWatchedItem( $user, $target );
}
if ( $this->mInternalMode ) {
$this->executeAction();
} else {
+ $start = microtime( true );
$this->executeActionWithErrorHandling();
+ if ( $this->isWriteMode() && $this->getRequest()->wasPosted() ) {
+ $timeMs = 1000 * max( 0, microtime( true ) - $start );
+ $this->getStats()->timing(
+ 'api.' . $this->getModuleName() . '.executeTiming', $timeMs );
+ }
}
}
return "* $paramName={$module->getModuleName()} $modulePrefix*";
}
- /**
- * Check whether the user wants us to show version information in the API help
- * @return bool
- * @deprecated since 1.21, always returns false
- */
- public function getShowVersions() {
- wfDeprecated( __METHOD__, '1.21' );
-
- return false;
- }
-
- /**
- * Add or overwrite a module in this ApiMain instance. Intended for use by extending
- * classes who wish to add their own modules to their lexicon or override the
- * behavior of inherent ones.
- *
- * @deprecated since 1.21, Use getModuleManager()->addModule() instead.
- * @param string $name The identifier for this module.
- * @param ApiBase $class The class where this module is implemented.
- */
- protected function addModule( $name, $class ) {
- $this->getModuleManager()->addModule( $name, 'action', $class );
- }
-
- /**
- * Add or overwrite an output format for this ApiMain. Intended for use by extending
- * classes who wish to add to or modify current formatters.
- *
- * @deprecated since 1.21, Use getModuleManager()->addModule() instead.
- * @param string $name The identifier for this format.
- * @param ApiFormatBase $class The class implementing this format.
- */
- protected function addFormat( $name, $class ) {
- $this->getModuleManager()->addModule( $name, 'format', $class );
- }
-
- /**
- * Returns the list of supported formats in form ( 'format' => 'ClassName' )
- *
- * @since 1.18
- * @deprecated since 1.21, Use getModuleManager()'s methods instead.
- * @return array
- */
- public function getFormats() {
- return $this->getModuleManager()->getNamesWithClasses( 'format' );
- }
-
/**@}*/
}
}
}
- /**
- * Do not use, does nothing, will be removed
- * @deprecated since 1.21
- */
- public function finishPageSetGeneration() {
- wfDeprecated( __METHOD__, '1.21' );
- }
-
/**
* This method populates internal variables with page information
* based on the given array of title strings.
"apihelp-paraminfo-description": "API модуле тураһында мәғлүмәт алырға.",
"apihelp-paraminfo-param-helpformat": "Белешмә юлы форматы.",
"apihelp-parse-param-prop": "Ҡайһы мәғлүмәтте алырға:",
+ "apihelp-parse-paramvalue-prop-langlinks": "Вики-текстың синтаксик анализында тышҡы ссылкалар бирә.",
+ "apihelp-parse-paramvalue-prop-links": "Вики-текстың синтаксик анализында тышҡы ссылкалар бирә.",
"apihelp-parse-paramvalue-prop-templates": "Вики-текстың синтаксик анализ ҡалыбын бирә.",
"apihelp-parse-paramvalue-prop-images": "Вики-текстың синтаксик анализында һәрәттәр бирә.",
"apihelp-parse-paramvalue-prop-externallinks": "Вики-текстың синтаксик анализында тышҡы ссылкалар бирә.",
"apihelp-parse-paramvalue-prop-properties": "Вики-текстың синтаксик анализында билдәләнгән төрлө сифаттарҙы бирә.",
"apihelp-parse-paramvalue-prop-limitreportdata": "Структура һымаҡ итеп төплө отчет бирә. $1disablelimitreport</ вар> <алышыныусы> ҡуйылған ваҡытта бер ниндәй мәғлүмәт тә бирмәй.",
"apihelp-parse-paramvalue-prop-limitreporthtml": "Төплө отчеттың HTML версияһын бирә. <переменная>$1disablelimitreport </ вар> ҡуйылған булһа,бер мәғлүмәт тә бирмәй.",
+ "apihelp-parse-param-disablepp": "Урынына <var>$1disablelimitreport</var> ҡулланырға.",
"apihelp-parse-param-preview": "Алдан ҡарау режимында синтаксик анализ",
"apihelp-parse-example-page": "Битте тикшереү.",
"apihelp-parse-example-text": "Тикшереү: wikitext.",
"apihelp-parse-example-summary": "Һығымтаны тикшереү.",
"apihelp-patrol-param-rcid": "Яңы ID үҙгәртеүҙәрҙе патрулләү өсөн",
"apihelp-patrol-param-revid": "ID мөхәррирҙе патулләү",
+ "apihelp-patrol-param-tags": "Юйҙырылғандар журналындағы яҙмаларға мөрәжәғәт итер өсөн, билдәләрҙе үҙгәртергә.",
"apihelp-patrol-example-rcid": "Һуңғы үҙгәрештәрҙе ҡарау.",
"apihelp-patrol-example-revid": "Яңынан ҡарау.",
"apihelp-protect-description": "Битте һаҡлау кимәлен үҙгәртергә",
+ "apihelp-protect-param-title": "Бит атамаһы. $1pageid менән бергә ҡулланылмай.",
+ "apihelp-protect-param-reason": "(ООН) һағы сәбәптәре.",
"apihelp-protect-param-tags": "Юйҙырылғандар журналындағы яҙмаларға мөрәжәғәт итер өсөн, билдәләрҙе үҙгәртергә.",
"apihelp-protect-param-watchlist": "Ағымдағы ҡулланыусының теҙмәһенән битте һүҙһеҙ өҫтәргә йәки юйырға, һылтанмаларҙы файҙаланығыҙ йәки сәғәтте алмаштырмаҫҡа.",
"apihelp-protect-example-protect": "Битте һаҡларға.",
"apihelp-query-param-meta": "Ниндәй матамәғлүмәт ҡулланырға",
"apihelp-query+allcategories-description": "Бөтә категорияларҙы иҫәпләргә",
"apihelp-query+allcategories-param-from": "Иҫәп күсереү башланған ваҡыт билдәһе",
+ "apihelp-query+allcategories-param-to": "Иҫәп күсереү башланған ваҡыт билдәһе",
"apihelp-query+allcategories-param-prefix": "Был мәғәнәнән башланған бар атамаларҙы категориялар буйынса эҙләргә.",
+ "apihelp-query+allcategories-param-dir": "Сортлау йүнәлештәре.",
"apihelp-query+allcategories-param-limit": "Нисә категорияны кире ҡайтарырға",
"apihelp-query+allcategories-param-prop": "Ниндәй үҙенсәлек алырға:",
"apihelp-query+allcategories-paramvalue-prop-size": "Категорияларға биттәр һаны өҫтәү",
"apihelp-query+allcategories-example-size": "Биттәр һаны буйынса мәғлүмәтле категориялар исемлеге.",
"apihelp-query+allcategories-example-generator": "<kbd>исемлек</kbd> категориялар битенән мәғлүмәт алырға.",
"apihelp-query+alldeletedrevisions-description": "Бар мөхәррирләү исемлеге ҡулланыусы тарафынан юйылған.",
+ "apihelp-query+alldeletedrevisions-paraminfo-useronly": "<var>$3ҡулланыусының</var> менән генә ҡулланыла ала.",
"apihelp-query+alldeletedrevisions-param-end": "Иҫәп күсереү башланған ваҡыт билдәһе",
"apihelp-query+alldeletedrevisions-param-prefix": "Был мәғәнәнән башланған бар атамаларҙы категориялар буйынса эҙләргә.",
"apihelp-query+alldeletedrevisions-param-user": "Бары тик был ҡулланыусының үҙгәртеүҙәр исемлеге.",
+ "apihelp-query+alldeletedrevisions-param-namespace": "Бары тик был исемдәр арауығындағы биттәр исемлеге.",
+ "apihelp-query+alldeletedrevisions-example-ns-main": "Төп исемдәр арауығында юйылған тәүге 50 үҙгәртеү исемлеге.",
+ "apihelp-query+allfileusages-description": "Юйылғандар менән бергә барлыҡ файлдар тәртибе исемлеге.",
+ "apihelp-query+allfileusages-param-from": "Һанауҙы башлау өсөн файл атамаһы.",
"apihelp-query+allfileusages-param-to": "Һанауҙы туҡтатыу файлы атамаһы.",
"apihelp-query+allfileusages-param-prefix": "Был мәғәнәнән башланған бар атамаларҙы категориялар буйынса эҙләргә.",
"apihelp-query+allfileusages-param-prop": "Ҡайһы мәғлүмәтте күрһәтергә:",
"apihelp-query+allfileusages-paramvalue-prop-title": "Файл атамаһына ҡуша.",
"apihelp-query+allfileusages-param-limit": "Нисә битте тергеҙергә?",
+ "apihelp-query+allfileusages-param-dir": "Һанау йүнәлеше.",
"apihelp-query+allfileusages-example-unique": "Атамаларҙың уҙенсәлекле файлдары исемлеге.",
+ "apihelp-query+allfileusages-example-unique-generator": "Төшөп ҡалғандарҙы айырып, барлыҡ исем-һылтанмаларҙы алырға.",
+ "apihelp-query+allimages-description": "Бер-бер артлы бөтә образдарҙы һанап сығырға.",
+ "apihelp-query+allimages-param-sort": "Сортировкалау үҙенсәлектәре.",
+ "apihelp-query+allimages-param-dir": "Һанау йүнәлеше.",
"apihelp-query+allimages-param-minsize": "Һүрәттәр лимиты (байттарҙа).",
"apihelp-query+allimages-param-maxsize": "Бар һүрәттәр лимиты (байттарҙа).",
"apihelp-query+allimages-param-limit": "Кире ҡайтыу өсөн образдар һаны.",
"apihelp-query+allimages-example-B": "<kbd>Б</kbd> хәрефенән башланған файлдар исемлеген күрһәтергә.",
"apihelp-query+allimages-example-generator": "<kbd>Б</kbd> хәрефенән башланған файлдар исемлеген күрһәтергә.",
+ "apihelp-query+alllinks-description": "Бирелгән исемдәр арауығына йүнәлткән барлыҡ һылтанмаларҙы һанап сығырға.",
+ "apihelp-query+alllinks-param-from": "Һанауҙы башлау өсөн һылтанма атамаһы.",
+ "apihelp-query+alllinks-param-to": "Һанауҙы туҡтатыу һылтанмаһы атамаһы.",
+ "apihelp-query+alllinks-param-prefix": "Был мәғәнәнән башланған бәйләнешле бар атамаларҙы эҙләргә.",
+ "apihelp-query+alllinks-param-prop": "Ҡайһы мәғлүмәтте күрһәтергә:",
+ "apihelp-query+alllinks-paramvalue-prop-title": "Һылтанма атамаһын ҡуша.",
+ "apihelp-query+alllinks-param-namespace": "Һанау өсөн исемдәр арауығы.",
"apihelp-query+alllinks-param-limit": "Нисә битте тергеҙергә?",
"apihelp-query+alllinks-param-dir": "Һанау йүнәлеше.",
"apihelp-query+alllinks-example-unique": "Атамаларҙың уҙенсәлекле файлдары исемлеге.",
+ "apihelp-query+alllinks-example-unique-generator": "Төшөп ҡалғандарҙы айырып, барлыҡ исем-һылтанмаларҙы алырға.",
"apihelp-query+alllinks-example-generator": "Һылтанмалы биттәр бар.",
+ "apihelp-query+allmessages-description": "Был сайттан хәбәр ҡайтарыу.",
"apihelp-query+allmessages-param-prop": "Ниндәй үҙенсәлек алырға:",
"apihelp-query+allmessages-param-args": "Аргументтар Хәбәрҙәрҙә биреләсәк.",
"apihelp-query+allpages-param-from": "Иҫәп күсереү башланған ваҡыт билдәһе",
"apihelp-query+allpages-param-to": "Иҫәп күсереү башланған ваҡыт билдәһе",
"apihelp-query+allpages-param-prefix": "Был мәғәнәнән башланған бар атамаларҙы категориялар буйынса эҙләргә.",
+ "apihelp-query+allpages-param-namespace": "Һанау өсөн исемдәр арауығы.",
"apihelp-query+allpages-param-minsize": "Һүрәттәр лимиты (байттарҙа).",
+ "apihelp-query+allpages-param-limit": "Нисә битте тергеҙергә?",
"apihelp-query+allpages-param-dir": "Һанау йүнәлеше.",
"apihelp-query+allpages-example-B": "<kbd>Б</kbd> хәрефенән башланған файлдар исемлеген күрһәтергә.",
"apihelp-query+allpages-example-generator": "<kbd>Б</kbd> хәрефенән башланған файлдар исемлеген күрһәтергә.",
"apihelp-query+allredirects-param-from": "Һанауҙы туҡтатыу файлы атамаһы.",
"apihelp-query+allredirects-param-to": "Һанауҙы туҡтатыу файлы атамаһы.",
"apihelp-query+allredirects-param-prefix": "Был мәғәнәнән башланған бар атамаларҙы категориялар буйынса эҙләргә.",
+ "apihelp-query+allredirects-param-prop": "Ҡайһы мәғлүмәтте күрһәтергә:",
+ "apihelp-query+allredirects-param-namespace": "Һанау өсөн исемдәр арауығы.",
+ "apihelp-query+allredirects-param-dir": "Һанау йүнәлеше.",
"apihelp-query+allredirects-example-generator": "Һылтанмалы биттәр бар.",
"apihelp-query+allrevisions-param-start": "Иҫәп күсереү башланған ваҡыт билдәһе",
"apihelp-query+allrevisions-param-end": "Иҫәп күсереү башланған ваҡыт билдәһе",
"apihelp-main-param-uselang": "Language to use for message translations. <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> with <kbd>siprop=languages</kbd> returns a list of language codes, or specify <kbd>user</kbd> to use the current user's language preference, or specify <kbd>content</kbd> to use this wiki's content language.",
"apihelp-block-description": "Block a user.",
- "apihelp-block-param-user": "Username, IP address, or IP range to block.",
+ "apihelp-block-param-user": "Username, IP address, or IP address range to block.",
"apihelp-block-param-expiry": "Expiry time. May be relative (e.g. <kbd>5 months</kbd> or <kbd>2 weeks</kbd>) or absolute (e.g. <kbd>2014-09-18T12:34:56Z</kbd>). If set to <kbd>infinite</kbd>, <kbd>indefinite</kbd>, or <kbd>never</kbd>, the block will never expire.",
"apihelp-block-param-reason": "Reason for block.",
"apihelp-block-param-anononly": "Block anonymous users only (i.e. disable anonymous edits for this IP address).",
"apihelp-imagerotate-example-generator": "Rotate all images in <kbd>Category:Flip</kbd> by <kbd>180</kbd> degrees.",
"apihelp-import-description": "Import a page from another wiki, or from an XML file.\n\nNote that the HTTP POST must be done as a file upload (i.e. using multipart/form-data) when sending a file for the <var>xml</var> parameter.",
- "apihelp-import-param-summary": "Import summary.",
+ "apihelp-import-param-summary": "Log entry import summary.",
"apihelp-import-param-xml": "Uploaded XML file.",
"apihelp-import-param-interwikisource": "For interwiki imports: wiki to import from.",
"apihelp-import-param-interwikipage": "For interwiki imports: page to import.",
"apihelp-query+blocks-param-end": "The timestamp to stop enumerating at.",
"apihelp-query+blocks-param-ids": "List of block IDs to list (optional).",
"apihelp-query+blocks-param-users": "List of users to search for (optional).",
- "apihelp-query+blocks-param-ip": "Get all blocks applying to this IP or CIDR range, including range blocks.\nCannot be used together with <var>$3users</var>. CIDR ranges broader than IPv4/$1 or IPv6/$2 are not accepted.",
+ "apihelp-query+blocks-param-ip": "Get all blocks applying to this IP address or CIDR range, including range blocks.\nCannot be used together with <var>$3users</var>. CIDR ranges broader than IPv4/$1 or IPv6/$2 are not accepted.",
"apihelp-query+blocks-param-limit": "The maximum number of blocks to list.",
"apihelp-query+blocks-param-prop": "Which properties to get:",
"apihelp-query+blocks-paramvalue-prop-id": "Adds the ID of the block.",
"apihelp-unblock-description": "Unblock a user.",
"apihelp-unblock-param-id": "ID of the block to unblock (obtained through <kbd>list=blocks</kbd>). Cannot be used together with <var>$1user</var>.",
- "apihelp-unblock-param-user": "Username, IP address or IP range to unblock. Cannot be used together with <var>$1id</var>.",
+ "apihelp-unblock-param-user": "Username, IP address or IP address range to unblock. Cannot be used together with <var>$1id</var>.",
"apihelp-unblock-param-reason": "Reason for unblock.",
"apihelp-unblock-param-tags": "Change tags to apply to the entry in the block log.",
"apihelp-unblock-example-id": "Unblock block ID #<kbd>105</kbd>.",
"Chris TR",
"Ncontinanza",
"Poco a poco",
- "YoViajo"
+ "YoViajo",
+ "Eloy"
]
},
"apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Documentación]]\n* [[mw:API:FAQ|Preguntas frecuentes]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Lista de correos]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API de anuncios]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Errores y peticiones]\n</div>\n<strong>Estado:</strong> Todas las características que se muestran en esta página debería funcionar, pero la API aún está en desarrollo activo y puede cambiar en cualquier momento. Suscríbete a [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ la lista de correo de mediawiki-api-announce] para estar al día de las actualizaciones.\n\n<strong>Solicitudes erróneas:</strong> Cuando se envían solicitudes erróneas a la API, se envía un encabezado HTTP con la clave \"MediaWiki-API-Error\" y ambos valores, del encabezado y el código de error, se establecerán en el mismo valor. Para más información, véase [[mw:API:Errors_and_warnings|API: Errores y advertencias]].\n\n<strong>Pruebas:</strong> para facilitar las pruebas de solicitudes a la API, consulta [[Special:ApiSandbox]].",
"apihelp-main-param-action": "Qué acción se realizará.",
"apihelp-main-param-format": "El formato de la salida.",
- "apihelp-main-param-smaxage": "Establece el encabezado <code>s-maxage</code> durante estos segundos. Los errores nunca se almacenan en caché.",
- "apihelp-main-param-maxage": "Establece el encabezado <code>max-age</code> durante estos segundos. Los errores nunca se almacenan en caché.",
+ "apihelp-main-param-smaxage": "Establece el encabezado HTTP <code>s-maxage</code> de control de caché a esta cantidad de segundos. Los errores nunca se almacenan en caché.",
+ "apihelp-main-param-maxage": "Establece el encabezado HTTP <code>max-age</code> de control de caché a esta cantidad de segundos. Los errores nunca se almacenan en caché.",
"apihelp-main-param-assert": "Comprobar que el usuario haya iniciado sesión si el valor es <kbd>user</kbd> o si tiene el permiso de bot si es <kbd>bot</kbd>.",
"apihelp-main-param-requestid": "Cualquier valor dado aquí se incluirá en la respuesta. Se puede utilizar para distinguir solicitudes.",
"apihelp-main-param-servedby": "Incluir el nombre del host que ha servido la solicitud en los resultados.",
"apihelp-main-param-curtimestamp": "Incluir la marca de tiempo actual en el resultado.",
+ "apihelp-main-param-origin": "Cuando se accede a la API usando una petición AJAX de distinto dominio (CORS), establece este valor al dominio de origen. Debe ser incluido en cualquier petición pre-vuelo, y por lo tanto debe ser parte de la URI de la petición (no del cuerpo POST). Debe coincidir exactamente con uno de los orígenes de la cabecera <code>Origin</code>, por lo que debería ser algo como <kbd>https://en.wikipedia.org</kbd> o <kbd>https://meta.wikimedia.org</kbd>. Si este parámetro no coincide con la cabecera <code>Origin</code>, se devolverá una respuesta 403.\nSi este parámetro coincide con la cabecera <code>Origin</code> y el origen está en lista blanca, se creará una cabecera <code>Access-Control-Allow-Origin</code>.",
"apihelp-main-param-uselang": "El idioma que se usará para las traducciones de mensajes. <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> con <kbd>siprop=languages</kbd> devuelve una lista de códigos de idiomas, o especifica <kbd>user</kbd> para usar la preferencia de idioma del usuario actual, o especifica <kbd>content</kbd> para usar el idioma de contenido de este wiki.",
"apihelp-block-description": "Bloquear a un usuario.",
"apihelp-block-param-user": "El nombre de usuario, dirección IP o intervalo de IP que quieres bloquear.",
"apihelp-parse-example-summary": "Analizar un resumen.",
"apihelp-patrol-description": "Verificar una página o revisión.",
"apihelp-patrol-param-rcid": "Identificador de cambios recientes que verificar.",
+ "apihelp-patrol-param-revid": "ID de revisión a patrullar.",
"apihelp-patrol-example-rcid": "Verificar un cambio reciente.",
"apihelp-patrol-example-revid": "Verificar una revisión.",
"apihelp-protect-description": "Cambiar el nivel de protección de una página.",
"apihelp-query+embeddedin-param-limit": "Cuántas páginas se devolverán.",
"apihelp-query+extlinks-param-limit": "Cuántos enlaces se devolverán.",
"apihelp-query+extlinks-example-simple": "Obtener una lista de los enlaces externos en <kbd>Main Page</kbd>.",
+ "apihelp-query+exturlusage-description": "Enumera páginas que contienen una URL dada.",
"apihelp-query+exturlusage-param-prop": "Qué piezas de información incluir:",
"apihelp-query+exturlusage-paramvalue-prop-ids": "Añade el identificado de la página.",
"apihelp-query+exturlusage-paramvalue-prop-title": "Agrega el título y el identificador del espacio de nombres de la página.",
"apihelp-watch-example-unwatch": "Deixar de vixiar a páxina <kbd>Páxina Principal</kbd>.",
"apihelp-watch-example-generator": "Vixiar as primeiras páxinas no espazo de nomes principal",
"apihelp-format-example-generic": "Devolver o resultado da consulta no formato $1.",
+ "apihelp-format-param-wrappedhtml": "Devolver o HTML formatado e os módulos ResourceLoader asociados como un obxecto JSON.",
"apihelp-json-description": "Datos de saída en formato JSON.",
"apihelp-json-param-callback": "Se está especificado, inclúe a saída na chamada da función indicada. Para maior seguridade, todos os datos específicos do usuario serán restrinxidos.",
"apihelp-json-param-utf8": "Se está especificado, codifica a maioría (pero non todos) dos caracteres ASCII como UTF-8 no canto de reemprazalos con secuencias de escape hexadecimais. Por defecto cando <var>formatversion</var> non é <kbd>1</kbd>.",
"apihelp-block-param-reblock": "אם המשתמש כבר חסום, לדרוס את החסימה הנוכחית.",
"apihelp-block-param-watchuser": "לעקוב אחרי דף המשתמש ודף השיחה של המשתמש או של כתובת ה־IP.",
"apihelp-block-example-ip-simple": "חסימת כתובת ה־IP <kbd>192.0.2.5</kbd> לשלושה ימים עם הסיבה <kbd>First strike</kbd>.",
- "apihelp-block-example-user-complex": "×\97ס×\99×\9eת ×\94×\9eשת×\9eש <kbd>Vandal</kbd> ×\9c×\9c×\90 ×\94×\92×\91×\9cת ×\96×\9e×\9f ×¢×\9d ×\94ס×\99×\91×\94 <kbd>Vandalism</kbd>, ×\95×\9e× ×\99עת ×\99צ×\99רת ×\97ש×\91×\95×\91ות חדשים ושליחת דוא\"ל.",
+ "apihelp-block-example-user-complex": "×\97ס×\99×\9eת ×\94×\9eשת×\9eש <kbd>Vandal</kbd> ×\9c×\9c×\90 ×\94×\92×\91×\9cת ×\96×\9e×\9f ×¢×\9d ×\94ס×\99×\91×\94 <kbd>Vandalism</kbd>, ×\95×\9e× ×\99עת ×\99צ×\99רת ×\97ש×\91×\95× ות חדשים ושליחת דוא\"ל.",
"apihelp-checktoken-description": "בדיקת התקינות של האסימון מ־<kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
"apihelp-checktoken-param-type": "סוג האסימון שבבדיקה.",
"apihelp-checktoken-param-token": "איזה אסימון לבדוק.",
"apihelp-query+allusers-paramvalue-prop-groups": "הוספת קבוצות שמשתמש חבר בהן. זה משתמש ביותר משאבי דפדפן ויכול להחזיר פחות תוצאות מהמגבלה.",
"apihelp-query+allusers-paramvalue-prop-implicitgroups": "לרשום את כל הקבוצות שהמשתמש חבר בהן אוטומטית.",
"apihelp-query+allusers-paramvalue-prop-rights": "רשימת הההרשאות שיש למשתמש.",
- "apihelp-query+allusers-paramvalue-prop-editcount": "×\94×\95ספת ×\9e× ×\99×\99×\9f ×\94ער×\99×\9b×\95ת ש×\9c ×\94×\9eשת×\9eש .",
+ "apihelp-query+allusers-paramvalue-prop-editcount": "×\94×\95ספת ×\9e×\95× ×\94 ×\94ער×\99×\9b×\95ת ש×\9c ×\94×\9eשת×\9eש.",
"apihelp-query+allusers-paramvalue-prop-registration": "הוספת חותם־הזמן של זמן הרישום של המשתמש (יכול להיות ריק).",
"apihelp-query+allusers-paramvalue-prop-centralids": "הוספת המזהה המרכזי ומצב השיוך למשתמש.",
"apihelp-query+allusers-param-limit": "כמה שמות משתמש בסך הכול לשנות.",
"apihelp-createaccount-example-pass": "Crea l'utente <kbd>testuser</kbd> con password <kbd>test123</kbd>.",
"apihelp-createaccount-example-mail": "Crea l'utente <kbd>testmailuser</kbd> e mandagli via e-mail una password generata casualmente.",
"apihelp-delete-description": "Cancella una pagina.",
- "apihelp-delete-param-title": "Titolo della pagina che si desidera eliminare. Non può essere usato insieme con <var>$1pageid</var>.",
+ "apihelp-delete-param-title": "Titolo della pagina che si desidera eliminare. Non può essere usato insieme a <var>$1pageid</var>.",
"apihelp-delete-param-pageid": "ID di pagina della pagina da cancellare. Non può essere usato insieme con <var>$1title</var>.",
"apihelp-delete-param-reason": "Motivo della cancellazione. Se non indicato, verrà usata una motivazione generata automaticamente.",
"apihelp-delete-param-watch": "Aggiunge la pagina agli osservati speciali dell'utente attuale.",
"apihelp-delete-example-reason": "Cancella la <kbd>Main Page</kbd> con motivazione <kbd>Preparing for move</kbd>.",
"apihelp-disabled-description": "Questo modulo è stato disabilitato.",
"apihelp-edit-description": "Crea e modifica pagine.",
- "apihelp-edit-param-title": "Titolo della pagina da modificare. Non può essere usato insieme con <var>$1pageid</var>.",
+ "apihelp-edit-param-title": "Titolo della pagina da modificare. Non può essere usato insieme a <var>$1pageid</var>.",
"apihelp-edit-param-pageid": "ID di pagina della pagina da modificare. Non può essere usato insieme con <var>$1title</var>.",
"apihelp-edit-param-section": "Numero di sezione. <kbd>0</kbd> per la sezione iniziale, <kbd>new</kbd> per una nuova sezione.",
"apihelp-edit-param-sectiontitle": "Il titolo per una nuova sezione.",
"apihelp-feedcontributions-param-showsizediff": "Mostra la differenza di dimensioni tra le versioni.",
"apihelp-feedcontributions-example-simple": "Restituisce contributi per l'utente <kbd>Example</kbd>.",
"apihelp-feedrecentchanges-param-feedformat": "Il formato del feed.",
+ "apihelp-feedrecentchanges-param-namespace": "Namespace a cui limitare i risultati.",
+ "apihelp-feedrecentchanges-param-associated": "Includi namespace associato (discussione o principale)",
"apihelp-feedrecentchanges-param-limit": "Numero massimo di risultati da restituire.",
"apihelp-feedrecentchanges-param-hideminor": "Nascondi le modifiche minori.",
"apihelp-feedrecentchanges-param-hidebots": "Nascondi le modifiche apportate da bot.",
"apihelp-filerevert-param-comment": "Commento sul caricamento.",
"apihelp-filerevert-param-archivename": "Nome dell'archivio della versione da ripristinare.",
"apihelp-filerevert-example-revert": "Ripristina <kbd>Wiki.png</kbd> alla versione del <kbd>2011-03-05T15:27:40Z</kbd>.",
+ "apihelp-help-param-toc": "Includi un indice nell'output HTML.",
"apihelp-help-example-main": "Aiuto per il modulo principale.",
"apihelp-help-example-submodules": "Aiuto per <kbd>action=query</kbd> e tutti i suoi sotto-moduli.",
+ "apihelp-help-example-recursive": "Tutti gli aiuti in una pagina.",
+ "apihelp-help-example-help": "Aiuto per lo stesso modulo di aiuto.",
"apihelp-imagerotate-description": "Ruota una o più immagini.",
"apihelp-imagerotate-param-rotation": "Gradi di rotazione dell'immagine in senso orario.",
"apihelp-imagerotate-example-simple": "Ruota <kbd>File:Example.png</kbd> di <kbd>90</kbd> gradi.",
"apihelp-import-param-interwikipage": "Per importazioni interwiki: pagina da importare.",
"apihelp-import-param-fullhistory": "Per importazioni interwiki: importa l'intera cronologia, non solo la versione attuale.",
"apihelp-import-param-templates": "Per importazioni interwiki: importa anche tutti i template inclusi.",
+ "apihelp-import-param-namespace": "Importa in questo namespace. Non può essere usato insieme a <var>$1rootpage</var>.",
+ "apihelp-import-param-rootpage": "Importa come sottopagina di questa pagina. Non può essere usato insieme a <var>$1namespace</var>.",
"apihelp-import-example-import": "Importa [[meta:Help:ParserFunctions]] nel namespace 100 con cronologia completa.",
"apihelp-login-param-name": "Nome utente.",
"apihelp-login-param-password": "Password.",
"apihelp-mergehistory-example-merge": "Unisci l'intera cronologia di <kbd>Oldpage</kbd> in <kbd>Newpage</kbd>.",
"apihelp-mergehistory-example-merge-timestamp": "Unisci le versioni della pagina <kbd>Oldpage</kbd> fino a <kbd>2015-12-31T04:37:41Z</kbd> in <kbd>Newpage</kbd>.",
"apihelp-move-description": "Sposta una pagina.",
+ "apihelp-move-param-to": "Titolo a cui spostare la pagina.",
"apihelp-move-param-reason": "Motivo della rinomina.",
"apihelp-move-param-movetalk": "Rinomina la pagina di discussione, se esiste.",
"apihelp-move-param-movesubpages": "Rinomina sottopagine, se applicabile.",
"apihelp-move-param-noredirect": "Non creare un rinvio.",
"apihelp-move-param-watch": "Aggiunge la pagina e il redirect agli osservati speciali dell'utente attuale.",
+ "apihelp-move-param-unwatch": "Rimuovi la pagina e il redirect dagli osservati speciali dell'utente attuale.",
"apihelp-move-param-ignorewarnings": "Ignora i messaggi di avvertimento del sistema.",
"apihelp-move-example-move": "Sposta <kbd>Badtitle</kbd> a <kbd>Goodtitle</kbd> senza lasciare redirect.",
+ "apihelp-opensearch-param-search": "Stringa di ricerca.",
"apihelp-opensearch-param-limit": "Numero massimo di risultati da restituire.",
"apihelp-opensearch-param-suggest": "Non fare nulla se <var>[[mw:Manual:$wgEnableOpenSearchSuggest|$wgEnableOpenSearchSuggest]]</var> è falso.",
"apihelp-opensearch-param-format": "Il formato dell'output.",
"apihelp-patrol-example-rcid": "Verifica una modifica recente.",
"apihelp-patrol-example-revid": "Verifica una versione.",
"apihelp-protect-description": "Modifica il livello di protezione di una pagina.",
- "apihelp-protect-param-title": "Titolo della pagina da (s)proteggere. Non può essere usato insieme con $1pageid.",
+ "apihelp-protect-param-title": "Titolo della pagina da (s)proteggere. Non può essere usato insieme a <var>$1pageid</var>.",
"apihelp-protect-param-pageid": "ID della pagina da (s)proteggere. Non può essere usato insieme con $1title.",
"apihelp-protect-param-tags": "Modifica etichette da applicare all'elemento del registro delle protezioni.",
"apihelp-protect-example-protect": "Proteggi una pagina.",
"apihelp-protect-example-unprotect": "Sproteggi una pagina impostando restrizione su <kbd>all</kbd>.",
"apihelp-protect-example-unprotect2": "Sproteggi una pagina impostando nessuna restrizione.",
+ "apihelp-purge-param-forcelinkupdate": "Aggiorna la tabella dei collegamenti.",
+ "apihelp-purge-param-forcerecursivelinkupdate": "Aggiorna la tabella dei collegamenti per questa pagina, e per ogni pagina che usa questa pagina come template.",
"apihelp-query-param-list": "Quali elenchi ottenere.",
"apihelp-query-param-meta": "Quali metadati ottenere.",
"apihelp-query-param-export": "Esporta la versione attuale di tutte le pagine ottenute o generate.",
"apihelp-query+allfileusages-paramvalue-prop-title": "Aggiunge il titolo del file.",
"apihelp-query+allfileusages-param-limit": "Quanti elementi totali restituire.",
"apihelp-query+allfileusages-param-dir": "La direzione in cui elencare.",
+ "apihelp-query+allfileusages-example-generator": "Ottieni le pagine contenenti i file.",
"apihelp-query+allimages-param-sort": "Proprietà di ordinamento.",
"apihelp-query+allimages-param-dir": "La direzione in cui elencare.",
"apihelp-query+allimages-param-from": "Il titolo dell'immagine da cui iniziare l'elenco. Può essere utilizzato solo con $1sort=name.",
"apihelp-query+allimages-param-end": "Il timestamp al quale interrompere l'elenco. Può essere utilizzato solo con $1sort=timestamp.",
"apihelp-query+allimages-param-limit": "Quante immagini in totale restituire.",
"apihelp-query+allimages-example-B": "Mostra un elenco di file a partire dalla lettera <kbd>B</kbd>.",
+ "apihelp-query+alllinks-description": "Elenca tutti i collegamenti che puntano ad un namespace indicato.",
"apihelp-query+alllinks-param-from": "Il titolo del collegamento da cui iniziare l'elenco.",
"apihelp-query+alllinks-param-to": "Il titolo del collegamento al quale interrompere l'elenco.",
"apihelp-query+alllinks-param-prefix": "Ricerca per tutti i titoli dei collegamenti che iniziano con questo valore.",
"apihelp-query+alllinks-param-namespace": "Il namespace da elencare.",
"apihelp-query+alllinks-param-limit": "Quanti elementi totali restituire.",
"apihelp-query+alllinks-param-dir": "La direzione in cui elencare.",
+ "apihelp-query+alllinks-example-generator": "Ottieni le pagine contenenti i collegamenti.",
+ "apihelp-query+allmessages-description": "Restituisce messaggi da questo sito.",
"apihelp-query+allmessages-param-prop": "Quali proprietà ottenere.",
"apihelp-query+allmessages-param-lang": "Restituisci messaggi in questa lingua.",
+ "apihelp-query+allmessages-param-prefix": "Restituisci messaggi con questo prefisso.",
"apihelp-query+allpages-param-from": "Il titolo di pagina da cui iniziare l'elenco.",
"apihelp-query+allpages-param-to": "Il titolo di pagina al quale interrompere l'elenco.",
"apihelp-query+allpages-param-prefix": "Ricerca per tutti i titoli delle pagine che iniziano con questo valore.",
"apihelp-query+allpages-param-namespace": "Il namespace da elencare.",
"apihelp-query+allpages-param-filterredir": "Quali pagine elencare.",
+ "apihelp-query+allpages-param-limit": "Quante pagine totali restituire.",
"apihelp-query+allpages-param-dir": "La direzione in cui elencare.",
"apihelp-query+allredirects-param-from": "Il titolo del reindirizzamento da cui iniziare l'elenco.",
"apihelp-query+allredirects-param-prop": "Quali pezzi di informazioni includere:",
"apihelp-query+allusers-param-to": "Il nome utente al quale interrompere l'elenco.",
"apihelp-query+allusers-param-prefix": "Ricerca per tutti gli utenti che iniziano con questo valore.",
"apihelp-query+allusers-param-dir": "Direzione dell'ordinamento.",
+ "apihelp-query+allusers-param-group": "Includi solo gli utenti nei gruppi indicati.",
+ "apihelp-query+allusers-param-excludegroup": "Escludi gli utenti nei gruppi indicati.",
"apihelp-query+allusers-param-prop": "Quali pezzi di informazioni includere:",
"apihelp-query+allusers-param-limit": "Quanti nomi utente totali restituire.",
"apihelp-query+backlinks-description": "Trova tutte le pagine che puntano a quella specificata.",
"apihelp-query+blocks-paramvalue-prop-by": "Aggiunge il nome utente dell'utente che ha effettuato il blocco.",
"apihelp-query+blocks-paramvalue-prop-byid": "Aggiunge l'ID utente dell'utente che ha effettuato il blocco.",
"apihelp-query+blocks-example-simple": "Elenca i blocchi.",
+ "apihelp-query+categories-param-show": "Quale tipo di categorie mostrare.",
"apihelp-query+categories-param-limit": "Quante categorie restituire.",
"apihelp-query+categories-param-dir": "La direzione in cui elencare.",
+ "apihelp-query+categoryinfo-description": "Restituisce informazioni su una categoria indicata.",
+ "apihelp-query+categoryinfo-example-simple": "Ottieni informazioni su <kbd>Category:Foo</kbd> e <kbd>Category:Bar</kbd>.",
+ "apihelp-query+categorymembers-description": "Elenca tutte le pagine in una categoria indicata.",
+ "apihelp-query+categorymembers-param-prop": "Quali pezzi di informazioni includere:",
"apihelp-query+categorymembers-paramvalue-prop-ids": "Aggiunge l'ID pagina.",
"apihelp-query+categorymembers-paramvalue-prop-title": "Aggiunge il titolo e l'ID namespace della pagina.",
"apihelp-query+categorymembers-paramvalue-prop-type": "Aggiunge il tipo di come la pagina è stata categorizzata (<samp>page</samp>, <samp>subcat</samp> o <samp>file</samp>).",
"apihelp-query+categorymembers-param-namespace": "Includi solo le pagine in questi namespace. Nota che può essere usato <kbd>$1type=subcat</kbd> o <kbd>$1type=file</kbd> anziché <kbd>$1namespace=14</kbd> o <kbd>6</kbd>.",
"apihelp-query+categorymembers-param-limit": "Il numero massimo di pagine da restituire.",
+ "apihelp-query+categorymembers-param-sort": "Proprietà di ordinamento.",
"apihelp-query+categorymembers-param-dir": "In quale direzione ordinare.",
+ "apihelp-query+categorymembers-param-start": "Il timestamp da cui iniziare l'elenco. Può essere utilizzato solo con <kbd>$1sort=timestamp</kbd>.",
+ "apihelp-query+categorymembers-param-end": "Il timestamp al quale interrompere l'elenco. Può essere utilizzato solo con <kbd>$1sort=timestamp</kbd>.",
+ "apihelp-query+categorymembers-param-startsortkey": "Usa $1starthexsortkey invece.",
+ "apihelp-query+categorymembers-param-endsortkey": "Usa $1endhexsortkey invece.",
+ "apihelp-query+categorymembers-example-simple": "Ottieni le prime 10 pagine in <kbd>Category:Physics</kbd>.",
+ "apihelp-query+categorymembers-example-generator": "Ottieni informazioni sulle prime 10 pagine in <kbd>Category:Physics</kbd>.",
"apihelp-query+contributors-param-limit": "Quanti contributi restituire.",
"apihelp-query+deletedrevisions-param-start": "Il timestamp da cui iniziare l'elenco. Ignorato quando si elabora un elenco di ID versioni.",
"apihelp-query+deletedrevisions-param-end": "Il timestamp al quale interrompere l'elenco. Ignorato quando si elabora un elenco di ID versioni.",
+ "apihelp-query+deletedrevisions-param-tag": "Elenca solo le versioni etichettate con questa etichetta.",
+ "apihelp-query+deletedrevisions-param-user": "Elenca solo le versioni di questo utente.",
+ "apihelp-query+deletedrevisions-param-excludeuser": "Non elencare le versioni di questo utente.",
+ "apihelp-query+deletedrevisions-example-titles": "Elenca le versioni cancellate delle pagine <kbd>Main Page</kbd> e <kbd>Talk:Main Page</kbd>, con il contenuto.",
+ "apihelp-query+deletedrevisions-example-revids": "Elenca le informazioni per la versione cancellata <kbd>123456</kbd>.",
"apihelp-query+deletedrevs-param-start": "Il timestamp da cui iniziare l'elenco.",
"apihelp-query+deletedrevs-param-end": "Il timestamp al quale interrompere l'elenco.",
"apihelp-query+deletedrevs-param-from": "Inizia elenco a questo titolo.",
"apihelp-query+deletedrevs-param-to": "Interrompi elenco a questo titolo.",
"apihelp-query+deletedrevs-param-prefix": "Ricerca per tutti i titoli delle pagine che iniziano con questo valore.",
"apihelp-query+deletedrevs-param-unique": "Elenca solo una versione per ogni pagina.",
+ "apihelp-query+deletedrevs-param-tag": "Elenca solo le versioni etichettate con questa etichetta.",
"apihelp-query+deletedrevs-param-user": "Elenca solo le versioni di questo utente.",
"apihelp-query+deletedrevs-param-excludeuser": "Non elencare le versioni di questo utente.",
"apihelp-query+deletedrevs-param-namespace": "Elenca solo le pagine in questo namespace.",
"apihelp-query+deletedrevs-param-limit": "Il numero massimo di versioni da elencare.",
+ "apihelp-query+disabled-description": "Questo modulo query è stato disabilitato.",
"apihelp-query+duplicatefiles-param-limit": "Quanti file duplicati restituire.",
"apihelp-query+duplicatefiles-param-dir": "La direzione in cui elencare.",
+ "apihelp-query+duplicatefiles-example-simple": "Cerca i duplicati di [[:File:Albert Einstein Head.jpg]].",
+ "apihelp-query+duplicatefiles-example-generated": "Cerca i duplicati di tutti i file.",
"apihelp-query+embeddedin-description": "Trova tutte le pagine che incorporano (transclusione) il titolo specificato.",
"apihelp-query+embeddedin-param-namespace": "Il namespace da elencare.",
"apihelp-query+embeddedin-param-dir": "La direzione in cui elencare.",
"apihelp-query+embeddedin-param-limit": "Quante pagine totali restituire.",
"apihelp-query+extlinks-param-limit": "Quanti collegamenti restituire.",
+ "apihelp-query+exturlusage-param-prop": "Quali pezzi di informazioni includere:",
+ "apihelp-query+exturlusage-paramvalue-prop-ids": "Aggiunge l'ID della pagina.",
"apihelp-query+exturlusage-paramvalue-prop-title": "Aggiunge il titolo e l'ID namespace della pagina.",
- "apihelp-query+exturlusage-param-limit": "Quante pagina restituire.",
+ "apihelp-query+exturlusage-paramvalue-prop-url": "Aggiunge l'URL utilizzato nella pagina.",
+ "apihelp-query+exturlusage-param-namespace": "I namespace da elencare.",
+ "apihelp-query+exturlusage-param-limit": "Quante pagine restituire.",
"apihelp-query+filearchive-param-from": "Il titolo dell'immagine da cui iniziare l'elenco.",
"apihelp-query+filearchive-param-limit": "Quante immagini restituire in totale.",
"apihelp-query+filearchive-param-dir": "La direzione in cui elencare.",
+ "apihelp-query+filearchive-paramvalue-prop-mime": "Aggiunge MIME dell'immagine.",
+ "apihelp-query+filearchive-paramvalue-prop-bitdepth": "Aggiunge la profondità di bit della versione.",
"apihelp-query+filearchive-example-simple": "Mostra un elenco di tutti i file cancellati.",
"apihelp-query+fileusage-description": "Trova tutte le pagine che utilizzano il file specificato.",
"apihelp-query+fileusage-param-prop": "Quali proprietà ottenere:",
"apihelp-query+fileusage-param-namespace": "Includi solo le pagine in questi namespace.",
"apihelp-query+fileusage-param-show": "Mostra solo gli elementi che soddisfano questi criteri:\n;redirect:mostra solo i redirect.\n;!redirect:mostra solo i non redirect.",
"apihelp-query+fileusage-example-simple": "Ottieni un elenco di pagine che usano [[:File:Example.jpg]].",
+ "apihelp-query+imageinfo-paramvalue-prop-mime": "Aggiunge il tipo MIME del file.",
"apihelp-query+imageinfo-param-start": "Il timestamp da cui iniziare l'elenco.",
+ "apihelp-query+imageinfo-param-urlheight": "Simile a $1urlwidth.",
+ "apihelp-query+images-param-limit": "Quanti file restituire.",
"apihelp-query+images-param-dir": "La direzione in cui elencare.",
"apihelp-query+images-example-simple": "Ottieni un elenco di file usati in [[Main Page]].",
"apihelp-query+imageusage-description": "Trova tutte le pagine che utilizzano il titolo dell'immagine specificato.",
"apihelp-query+imageusage-param-dir": "La direzione in cui elencare.",
"apihelp-query+imageusage-param-redirect": "Se la pagina collegata è un redirect, trova tutte le pagine che puntano al redirect. Il limite massimo è dimezzato.",
"apihelp-query+info-paramvalue-prop-visitingwatchers": "Il numero di osservatori di ogni pagina che hanno visitato le ultime modifiche alla pagina, se consentito.",
+ "apihelp-query+iwbacklinks-param-prefix": "Prefisso per l'interwiki.",
+ "apihelp-query+iwbacklinks-param-limit": "Quante pagine totali restituire.",
"apihelp-query+iwbacklinks-param-prop": "Quali proprietà ottenere:",
+ "apihelp-query+iwbacklinks-paramvalue-prop-iwprefix": "Aggiunge il prefisso dell'interwiki.",
"apihelp-query+iwbacklinks-paramvalue-prop-iwtitle": "Aggiunge il titolo dell'interwiki.",
"apihelp-query+iwbacklinks-param-dir": "La direzione in cui elencare.",
+ "apihelp-query+iwlinks-description": "Restituisce tutti i collegamenti interwiki dalle pagine indicate.",
+ "apihelp-query+iwlinks-paramvalue-prop-url": "Aggiunge l'URL completo.",
+ "apihelp-query+iwlinks-param-limit": "Quanti collegamenti interwiki restituire.",
"apihelp-query+iwlinks-param-dir": "La direzione in cui elencare.",
+ "apihelp-query+langbacklinks-param-limit": "Quante pagine totali restituire.",
"apihelp-query+langbacklinks-param-prop": "Quali proprietà ottenere:",
"apihelp-query+langbacklinks-paramvalue-prop-lltitle": "Aggiunge il titolo del collegamento linguistico.",
"apihelp-query+langbacklinks-param-dir": "La direzione in cui elencare.",
+ "apihelp-query+langlinks-paramvalue-prop-url": "Aggiunge l'URL completo.",
"apihelp-query+langlinks-param-dir": "La direzione in cui elencare.",
+ "apihelp-query+links-param-namespace": "Mostra collegamenti solo in questi namespace.",
+ "apihelp-query+links-param-limit": "Quanti collegamenti restituire.",
"apihelp-query+links-param-dir": "La direzione in cui elencare.",
"apihelp-query+linkshere-description": "Trova tutte le pagine che puntano a quelle specificate.",
"apihelp-query+linkshere-param-prop": "Quali proprietà ottenere:",
"apihelp-query+logevents-paramvalue-prop-title": "Aggiunge il titolo della pagine per l'evento nel registro.",
"apihelp-query+logevents-param-start": "Il timestamp da cui iniziare l'elenco.",
"apihelp-query+logevents-param-end": "Il timestamp al quale interrompere l'elenco.",
+ "apihelp-query+pageswithprop-param-prop": "Quali pezzi di informazioni includere:",
+ "apihelp-query+pageswithprop-paramvalue-prop-ids": "Aggiunge l'ID pagina.",
"apihelp-query+pageswithprop-paramvalue-prop-title": "Aggiunge il titolo e l'ID namespace della pagina.",
+ "apihelp-query+pageswithprop-paramvalue-prop-value": "Aggiunge il valore della proprietà di pagina.",
+ "apihelp-query+pageswithprop-param-limit": "Il numero massimo di pagine da restituire.",
+ "apihelp-query+pageswithprop-param-dir": "In quale direzione ordinare.",
+ "apihelp-query+prefixsearch-param-search": "Stringa di ricerca.",
+ "apihelp-query+prefixsearch-param-limit": "Numero massimo di risultati da restituire.",
+ "apihelp-query+prefixsearch-param-offset": "Numero di risultati da saltare",
+ "apihelp-query+protectedtitles-description": "Elenca tutti i titoli protetti dalla creazione.",
+ "apihelp-query+protectedtitles-param-namespace": "Elenca solo i titoli in questi namespace.",
+ "apihelp-query+protectedtitles-param-level": "Elenca solo i titoli con questi livelli di protezione.",
+ "apihelp-query+protectedtitles-param-limit": "Quante pagine totali restituire.",
"apihelp-query+protectedtitles-param-prop": "Quali proprietà ottenere:",
+ "apihelp-query+protectedtitles-paramvalue-prop-user": "Aggiunge l'utente che ha aggiunto la protezione.",
"apihelp-query+protectedtitles-paramvalue-prop-userid": "Aggiunge l'ID utente che ha aggiunto la protezione.",
+ "apihelp-query+protectedtitles-paramvalue-prop-comment": "Aggiunge il commento per la protezione.",
"apihelp-query+protectedtitles-paramvalue-prop-level": "Aggiunge il livello di protezione.",
"apihelp-query+protectedtitles-example-generator": "Trova collegamenti a titoli protetti nel namespace principale.",
+ "apihelp-query+querypage-param-limit": "Numero di risultati da restituire.",
+ "apihelp-query+querypage-example-ancientpages": "Restituisce risultati da [[Special:Ancientpages|Speciale:PagineMenoRecenti]].",
+ "apihelp-query+random-param-namespace": "Restituisci le pagine solo in questi namespace.",
"apihelp-query+random-param-redirect": "Usa <kbd>$1filterredir=redirects</kbd> invece.",
+ "apihelp-query+random-example-simple": "Restituisce due pagine casuali dal namespace principale.",
"apihelp-query+recentchanges-description": "Elenca le modifiche recenti.",
"apihelp-query+recentchanges-param-start": "Il timestamp da cui iniziare l'elenco.",
"apihelp-query+recentchanges-param-end": "Il timestamp al quale interrompere l'elenco.",
"apihelp-query+redirects-example-simple": "Ottieni un elenco di redirect a [[Main Page]].",
"apihelp-query+revisions-param-startid": "L'ID versione da cui iniziare l'elenco.",
"apihelp-query+revisions-param-start": "Il timestamp della versione da cui iniziare l'elenco.",
+ "apihelp-query+revisions-param-tag": "Elenca solo le versioni etichettate con questa etichetta.",
"apihelp-query+revisions+base-paramvalue-prop-ids": "L'ID della versione.",
"apihelp-query+revisions+base-paramvalue-prop-timestamp": "Il timestamp della versione.",
"apihelp-query+revisions+base-paramvalue-prop-content": "Testo della versione.",
"apihelp-query+revisions+base-paramvalue-prop-tags": "Etichette della versione.",
+ "apihelp-query+search-param-what": "Quale tipo di ricerca effettuare.",
+ "apihelp-query+search-param-info": "Quali metadati restituire.",
+ "apihelp-query+search-param-prop": "Quali proprietà restituire.",
+ "apihelp-query+search-paramvalue-prop-size": "Aggiungi la dimensione della pagina in byte.",
+ "apihelp-query+search-paramvalue-prop-wordcount": "Aggiungi il conteggio delle parole nella pagina.",
+ "apihelp-query+search-paramvalue-prop-timestamp": "Aggiungi il timestamp di quando la pagina è stata modificata l'ultima volta.",
"apihelp-query+search-paramvalue-prop-redirecttitle": "Aggiunge il titolo del redirect corrispondente.",
"apihelp-query+search-paramvalue-prop-sectiontitle": "Aggiunge il titolo della sezione corrispondente.",
+ "apihelp-query+search-param-limit": "Quante pagine totali restituire.",
+ "apihelp-query+siteinfo-param-prop": "Quali informazioni ottenere:",
+ "apihelp-query+siteinfo-paramvalue-prop-libraries": "Restituisci librerie installate sul wiki.",
+ "apihelp-query+siteinfo-paramvalue-prop-extensions": "Restituisci estensioni installate sul wiki.",
"apihelp-query+siteinfo-paramvalue-prop-restrictions": "Restituisce informazioni sui tipi di restrizione (protezione) disponibili.",
"apihelp-query+tags-param-prop": "Quali proprietà ottenere:",
+ "apihelp-query+templates-param-limit": "Quanti template restituire.",
"apihelp-query+templates-param-dir": "La direzione in cui elencare.",
+ "apihelp-query+tokens-param-type": "Tipi di token da richiedere.",
"apihelp-query+tokens-example-simple": "Recupera un token csrf (il predefinito).",
"apihelp-query+transcludedin-description": "Trova tutte le pagine che incorporano quella specificata.",
"apihelp-query+transcludedin-param-prop": "Quali proprietà ottenere:",
"apihelp-query+transcludedin-param-namespace": "Includi solo le pagine in questi namespace.",
"apihelp-query+transcludedin-param-show": "Mostra solo gli elementi che soddisfano questi criteri:\n;redirect:mostra solo i redirect.\n;!redirect:mostra solo i non redirect.",
"apihelp-query+transcludedin-example-simple": "Ottieni un elenco di pagine che includono <kbd>Main Page</kbd>.",
+ "apihelp-query+usercontribs-param-namespace": "Elenca solo i contributi in questi namespace.",
"apihelp-query+usercontribs-paramvalue-prop-title": "Aggiunge il titolo e l'ID namespace della pagina.",
"apihelp-query+usercontribs-paramvalue-prop-patrolled": "Etichetta modifiche verificate",
"apihelp-query+userinfo-description": "Ottieni informazioni sull'utente attuale.",
"apihelp-query+userinfo-paramvalue-prop-hasmsg": "Aggiunge un'etichetta <samp>messages</samp> se l'utente attuale ha messaggi in attesa.",
"apihelp-query+userinfo-paramvalue-prop-implicitgroups": "Elenca tutti i gruppi di cui l'utente attuale è automaticamente membro.",
"apihelp-query+userinfo-paramvalue-prop-changeablegroups": "Elenca tutti i gruppi di cui l'utente attuale può essere aggiunto o rimosso.",
+ "apihelp-query+userinfo-paramvalue-prop-realname": "Aggiungi il nome reale dell'utente.",
+ "apihelp-query+userinfo-paramvalue-prop-registrationdate": "Aggiungi la data di registrazione dell'utente.",
"apihelp-query+userinfo-example-simple": "Ottieni informazioni sull'utente attuale.",
"apihelp-query+users-description": "Ottieni informazioni su un elenco di utenti.",
+ "apihelp-query+users-param-prop": "Quali pezzi di informazioni includere:",
"apihelp-query+users-param-users": "Un elenco di utenti di cui ottenere informazioni.",
"apihelp-query+watchlist-description": "Ottieni le ultime modifiche alle pagine tra gli osservati speciali dell'utente attuale.",
"apihelp-query+watchlist-param-start": "Il timestamp da cui iniziare l'elenco.",
"apihelp-query+watchlist-param-end": "Il timestamp al quale interrompere l'elenco.",
+ "apihelp-query+watchlist-param-prop": "Quali proprietà aggiuntive ottenere:",
+ "apihelp-query+watchlist-paramvalue-prop-ids": "Aggiunge l'ID versione e l'ID pagina.",
+ "apihelp-query+watchlist-paramvalue-prop-title": "Aggiungi il titolo della pagina.",
+ "apihelp-query+watchlistraw-param-namespace": "Elenca solo le pagine nei namespace indicati.",
"apihelp-query+watchlistraw-param-fromtitle": "Il titolo (con prefisso namespace) da cui iniziare l'elenco.",
"apihelp-query+watchlistraw-param-totitle": "Il titolo (con prefisso namespace) al quale interrompere l'elenco.",
"apihelp-query+watchlistraw-example-simple": "Elenca le pagine fra gli osservati speciali dell'utente attuale.",
"apihelp-query+watchlistraw-example-generator": "Recupera le informazioni sulle pagine fra gli osservati speciali dell'utente attuale.",
+ "apihelp-stashedit-param-sectiontitle": "Il titolo per una nuova sezione.",
+ "apihelp-stashedit-param-text": "Contenuto della pagina.",
+ "apihelp-stashedit-param-contentmodel": "Modello di contenuto dei nuovi contenuti.",
"apihelp-tokens-param-type": "Tipi di token da richiedere.",
"apihelp-tokens-example-edit": "Recupera un token di modifica (il predefinito).",
"apihelp-unblock-description": "Sblocca un utente",
"apihelp-unblock-param-tags": "Modifica etichette da applicare all'elemento del registro dei blocchi.",
"apihelp-undelete-param-title": "Titolo della pagina da ripristinare.",
"apihelp-undelete-param-tags": "Modifica etichette da applicare all'elemento del registro delle cancellazioni.",
+ "apihelp-upload-param-file": "Contenuto del file.",
"apihelp-upload-example-url": "Carica da un URL.",
"apihelp-userrights-param-user": "Nome utente.",
"apihelp-userrights-param-userid": "ID utente.",
+ "apihelp-userrights-param-add": "Aggiungi l'utente a questi gruppi.",
+ "apihelp-userrights-param-remove": "Rimuovi l'utente da questi gruppi.",
+ "apihelp-userrights-param-reason": "Motivo del cambiamento.",
"apihelp-watch-description": "Aggiunge o rimuove pagine dagli osservati speciali dell'utente attuale.",
"apihelp-format-param-wrappedhtml": "Restituisce l'HTML ben formattato e i moduli ResourceLoader associati come un oggetto JSON.",
"api-pageset-param-titles": "Un elenco di titoli su cui lavorare.",
"api-pageset-param-redirects-nogenerator": "Risolve automaticamente i reindirizzamenti in <var>$1titles</var>, <var>$1pageids</var>, e <var>$1revids</var>.",
"api-pageset-param-converttitles": "Converte i titoli in altre varianti, se necessario. Funziona solo se la lingua del contenuto del wiki supporta la conversione in varianti. Le lingue che supportano la conversione in varianti includono $1",
"api-help-main-header": "Modulo principale",
+ "api-help-flag-deprecated": "Questo modulo è deprecato.",
+ "api-help-flag-internal": "<strong>Questo modulo è interno o instabile.</strong> Il suo funzionamento potrebbe variare senza preavviso.",
+ "api-help-flag-readrights": "Questo modulo richiede i diritti di lettura.",
+ "api-help-flag-writerights": "Questo modulo richiede i diritti di scrittura.",
+ "api-help-flag-mustbeposted": "Questo modulo accetta solo richieste POST.",
+ "api-help-flag-generator": "Questo modulo può essere utilizzato come generatore.",
+ "api-help-source": "Fonte: $1",
+ "api-help-source-unknown": "Fonte: <span class=\"apihelp-unknown\">sconosciuta</span>",
"api-help-license": "Licenza: [[$1|$2]]",
+ "api-help-license-noname": "Licenza: [[$1|Vedi collegamento]]",
"api-help-license-unknown": "Licenza: <span class=\"apihelp-unknown\">sconosciuta</span>",
"api-help-parameters": "{{PLURAL:$1|Parametro|Parametri}}:",
"api-help-param-deprecated": "Deprecato.",
"api-help-param-required": "Questo parametro è obbligatorio.",
+ "api-help-datatypes-header": "Tipi di dato",
+ "api-help-param-type-limit": "Tipo: intero o <kbd>max</kbd>",
+ "api-help-param-type-integer": "Tipo: {{PLURAL:$1|1=intero|2=elenco di interi}}",
+ "api-help-param-type-boolean": "Tipo: booleano ([[Special:ApiHelp/main#main/datatypes|dettagli]])",
+ "api-help-param-type-timestamp": "Tipo: {{PLURAL:$1|1=timestamp|2=elenco di timestamp}} ([[Special:ApiHelp/main#main/datatypes|formati consentiti]])",
"api-help-param-type-user": "Tipo: {{PLURAL:$1|1=nome utente|2=elenco di nomi utente}}",
"api-help-param-list": "{{PLURAL:$1|1=Uno dei seguenti valori|2=Valori (separati da <kbd>{{!}}</kbd>)}}: $2",
+ "api-help-param-list-can-be-empty": "{{PLURAL:$1|0=Deve essere vuoto|Può essere vuoto, o $2}}",
+ "api-help-param-limit": "Non più di $1 consentito.",
+ "api-help-param-limit2": "Non più di $1 ($2 per bot) consentito.",
+ "api-help-param-integer-min": "{{PLURAL:$1|1=Il valore non deve essere inferiore|2=I valori non devono essere inferiori}} a $2.",
+ "api-help-param-integer-max": "{{PLURAL:$1|1=Il valore non deve essere superiore|2=I valori non devono essere superiori}} a $3.",
+ "api-help-param-integer-minmax": "{{PLURAL:$1|1=Il valore deve essere compreso|2=I valori devono essere compresi}} tra $2 e $3.",
+ "api-help-param-multi-separate": "Separa i valori con <kbd>|</kbd>.",
"api-help-param-multi-max": "Il numero massimo di valori è {{PLURAL:$1|$1}} ({{PLURAL:$2|$2}} per i bot).",
"api-help-param-default": "Predefinito: $1",
"api-help-param-default-empty": "Predefinito: <span class=\"apihelp-empty\">(vuoto)</span>",
"apihelp-revisiondelete-example-revision": "<kbd>Main Page</kbd> の版 <kbd>12345</kbd> の本文を隠す。",
"apihelp-rollback-param-title": "巻き戻すページ名です。<var>$1pageid</var> とは同時に使用できません。",
"apihelp-rollback-param-pageid": "巻き戻すページのページIDです。<var>$1title</var> とは同時に使用できません。",
+ "apihelp-rollback-param-tags": "巻き戻しに適用するタグ。",
"apihelp-rollback-param-user": "巻き戻し対象の編集を行った利用者名。",
"apihelp-rollback-param-markbot": "巻き戻された編集と巻き戻しをボットの編集としてマークする。",
"apihelp-rollback-example-simple": "利用者 <kbd>Example</kbd> による <kbd>Main Page</kbd> への最後の一連の編集を巻き戻す。",
"apihelp-stashedit-param-title": "編集されているページのページ名。",
"apihelp-stashedit-param-text": "ページの本文。",
"apihelp-stashedit-param-contentmodel": "新しいコンテンツのコンテンツ・モデル。",
+ "apihelp-tag-description": "個々の版または記録項目に対しタグの追加または削除を行います。",
+ "apihelp-tag-param-add": "追加するタグ。手動で定義されたタグのみ追加可能です。",
"apihelp-tag-param-reason": "変更の理由。",
+ "apihelp-tag-example-rev": "版ID 123に <kbd>vandalism</kbd> タグを理由を指定せずに追加する",
"apihelp-tag-example-log": "<kbd>Wrongly applied</kbd> という理由で <kbd>spam</kbd> タグを 記録項目ID 123 から取り除く",
"apihelp-tokens-param-type": "リクエストするトークンの種類。",
"apihelp-tokens-example-edit": "編集トークンを取得する (既定)。",
"api-help-param-default": "既定値: $1",
"api-help-param-default-empty": "既定値: <span class=\"apihelp-empty\">(空)</span>",
"api-help-param-token": "[[Special:ApiHelp/query+tokens|action=query&meta=tokens]] から取得した「$1」トークン",
+ "api-help-param-token-webui": "互換性のために、ウェブUIで使用されるトークンも受理されます。",
"api-help-param-limited-in-miser-mode": "<strong>注意:</strong> [[mw:Manual:$wgMiserMode|miser mode]] により、これを使用すると継続する前に <var>$1limit</var> より返される結果が少なくなることがあります; 極端な場合では、ゼロ件の結果が返ることもあります。",
"api-help-param-direction": "列挙の方向:\n;newer:古いものを先に表示します。注意: $1start は $1end 以前でなければなりません。\n;older:新しいものを先に表示します (既定)。注意: $1start は $1end 以降でなければなりません。",
"api-help-param-no-description": "<span class=\"apihelp-empty\">(説明なし)</span>",
"apihelp-main-description": "{{doc-apihelp-description|main}}",
"apihelp-main-param-action": "{{doc-apihelp-param|main|action}}",
"apihelp-main-param-format": "{{doc-apihelp-param|main|format}}",
- "apihelp-main-param-maxlag": "{{doc-apihelp-param|main|maxlag}}\n\n\"$host\" and \"$lag\" are not variables and appear as is.\n----\n\"Database replication\" is a configuration where you have multiple databases that communicate with each other so they all contain the same data. A \"database replicated cluster\" is a cluster (meaning \"a group of computers that work together\") of databases configured in this manner.\n\n\"Lag\" refers to the situation where one or more of the databases in the cluster are not completely up to date. For example, if the \"master\" database has data up to 2016-01-21T01:23:45Z while one of the \"slave\" is only up to 2016-01-21T01:23:30Z, that's a lag of 15 seconds.\n\nIn this case, \"$lag\" and \"$host\" are syntactic variables rather than computer code variables, so <var> would not be appropriate. They are there to represent that the actual output text will be something like \"Waiting for db1045: 53 seconds lagged.\"",
+ "apihelp-main-param-maxlag": "{{doc-apihelp-param|main|maxlag}}",
"apihelp-main-param-smaxage": "{{doc-apihelp-param|main|smaxage}}",
"apihelp-main-param-maxage": "{{doc-apihelp-param|main|maxage}}",
"apihelp-main-param-assert": "{{doc-apihelp-param|main|assert}}",
"apihelp-block-param-anononly": "Блокировать только анонимных пользователей (т. е. запретить анонимные правки для этого IP-адреса).",
"apihelp-block-param-nocreate": "Запретить создание учётных записей.",
"apihelp-block-param-autoblock": "Автоматически блокировать последний использованный IP-адрес и все последующие, с которых будут совершаться попытки авторизации.",
- "apihelp-block-param-noemail": "Ҡулланыусының Вики аша электрон почта ебәреүен тыйыу. (Талап итә <code>blockemail</code> хоҡуғын)",
+ "apihelp-block-param-noemail": "Запретить участнику отправлять электронную почту через интерфейс вики. (Требуется право <code>blockemail</code>).",
"apihelp-block-param-hidename": "Скрыть имя участника из журнала блокировок. (Требуется право <code>hideuser</code>).",
"apihelp-block-param-allowusertalk": "Позволяет участникам редактировать их собственные страницы обсуждения (зависит от <var>[[mw:Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]]</var>).",
"apihelp-block-param-reblock": "Если участник уже заблокирован, перезаписать существующую блокировку.",
* Enhanced RC group
* @param RCCacheEntry[] $block
* @return string
+ * @throws DomainException
*/
protected function recentChangesBlockGroup( $block ) {
+ $recentChangesFlags = $this->getConfig()->get( 'RecentChangesFlags' );
# Add the namespace and title of the block as part of the class
$tableClasses = [ 'mw-collapsible', 'mw-collapsed', 'mw-enhanced-rc' ];
$namehidden = true;
$allLogs = true;
$RCShowChangedSize = $this->getConfig()->get( 'RCShowChangedSize' );
- $collectedRcFlags = [
- // All are by bots?
- 'bot' => true,
- // Includes a new page?
- 'newpage' => false,
- // All are minor edits?
- 'minor' => true,
- // Contains an unpatrolled edit?
- 'unpatrolled' => false,
- ];
- foreach ( $block as $rcObj ) {
- if ( $rcObj->mAttribs['rc_type'] == RC_NEW ) {
- $collectedRcFlags['newpage'] = true;
+
+ # Default values for RC flags
+ $collectedRcFlags = [];
+ foreach ( $recentChangesFlags as $key => $value ) {
+ $flagGrouping = ( isset( $recentChangesFlags[$key]['grouping'] ) ?
+ $recentChangesFlags[$key]['grouping'] : 'any' );
+ switch ( $flagGrouping ) {
+ case 'all':
+ $collectedRcFlags[$key] = true;
+ break;
+ case 'any':
+ $collectedRcFlags[$key] = false;
+ break;
+ default:
+ throw new DomainException( "Unknown grouping type \"{$flagGrouping}\"" );
}
+ }
+ foreach ( $block as $rcObj ) {
// If all log actions to this page were hidden, then don't
// give the name of the affected page for this block!
if ( !$this->isDeleted( $rcObj, LogPage::DELETED_ACTION ) ) {
if ( !isset( $userlinks[$u] ) ) {
$userlinks[$u] = 0;
}
- if ( $rcObj->unpatrolled ) {
- $collectedRcFlags['unpatrolled'] = true;
- }
if ( $rcObj->mAttribs['rc_type'] != RC_LOG ) {
$allLogs = false;
}
$curId = $rcObj->mAttribs['rc_cur_id'];
}
- if ( !$rcObj->mAttribs['rc_bot'] ) {
- $collectedRcFlags['bot'] = false;
- }
- if ( !$rcObj->mAttribs['rc_minor'] ) {
- $collectedRcFlags['minor'] = false;
- }
-
$userlinks[$u]++;
}
// completely ignore this RC entry if we don't want to render it
unset( $block[$i] );
}
+
+ // Roll up flags
+ foreach ( $line['recentChangesFlagsRaw'] as $key => $value ) {
+ $flagGrouping = ( isset( $recentChangesFlags[$key]['grouping'] ) ?
+ $recentChangesFlags[$key]['grouping'] : 'any' );
+ switch ( $flagGrouping ) {
+ case 'all':
+ if ( !$value ) {
+ $collectedRcFlags[$key] = false;
+ }
+ break;
+ case 'any':
+ if ( $value ) {
+ $collectedRcFlags[$key] = true;
+ }
+ break;
+ default:
+ throw new DomainException( "Unknown grouping type \"{$flagGrouping}\"" );
+ }
+ }
+
$lines[] = $line;
}
// Further down are some assumptions that $block is a 0-indexed array
return [];
}
+ $lineParams['recentChangesFlagsRaw'] = [];
if ( isset( $data['recentChangesFlags'] ) ) {
$lineParams['recentChangesFlags'] = $this->recentChangesFlags( $data['recentChangesFlags'] );
+ # FIXME: This is used by logic, don't return it in the template params.
+ $lineParams['recentChangesFlagsRaw'] = $data['recentChangesFlags'];
unset( $data['recentChangesFlags'] );
}
*/
public function doMarkPatrolled( User $user, $auto = false, $tags = null ) {
global $wgUseRCPatrol, $wgUseNPPatrol, $wgUseFilePatrol;
+
$errors = [];
// If recentchanges patrol is disabled, only new pages or new file versions
// can be patrolled, provided the appropriate config variable is set
PatrolLog::record( $this, $auto, $user, $tags );
Hooks::run(
- 'MarkPatrolledComplete',
- [ $this->getAttribute( 'rc_id' ), &$user, false, $auto ]
+ 'MarkPatrolledComplete',
+ [ $this->getAttribute( 'rc_id' ), &$user, false, $auto ]
);
return [];
protected $lastKnownSlavePos;
/** @var string Method to detect slave lag */
protected $lagDetectionMethod;
+ /** @var array Method to detect slave lag */
+ protected $lagDetectionOptions = [];
/** @var string|null */
private $serverVersion = null;
* pt-heartbeat assumes the table is at heartbeat.heartbeat
* and uses UTC timestamps in the heartbeat.ts column.
* (https://www.percona.com/doc/percona-toolkit/2.2/pt-heartbeat.html)
+ * - lagDetectionOptions : if using pt-heartbeat, this can be set to an array map to change
+ * the default behavior. Normally, the heartbeat row with the server
+ * ID of this server's master will be used. Set the "conds" field to
+ * override the query conditions, e.g. ['shard' => 's1'].
* @param array $params
*/
function __construct( array $params ) {
$this->lagDetectionMethod = isset( $params['lagDetectionMethod'] )
? $params['lagDetectionMethod']
: 'Seconds_Behind_Master';
+ $this->lagDetectionOptions = isset( $params['lagDetectionOptions'] )
+ ? $params['lagDetectionOptions']
+ : [];
}
/**
* @return bool|float
*/
protected function getLagFromPtHeartbeat() {
- $masterInfo = $this->getMasterServerInfo();
- if ( !$masterInfo ) {
- wfLogDBError(
- "Unable to query master of {db_server} for server ID",
- $this->getLogContext( [
- 'method' => __METHOD__
- ] )
- );
+ $options = $this->lagDetectionOptions;
+
+ if ( isset( $options['conds'] ) ) {
+ // Best method for multi-DC setups: use logical channel names
+ $data = $this->getHeartbeatData( $options['conds'] );
+ } else {
+ // Standard method: use master server ID (works with stock pt-heartbeat)
+ $masterInfo = $this->getMasterServerInfo();
+ if ( !$masterInfo ) {
+ wfLogDBError(
+ "Unable to query master of {db_server} for server ID",
+ $this->getLogContext( [
+ 'method' => __METHOD__
+ ] )
+ );
+
+ return false; // could not get master server ID
+ }
- return false; // could not get master server ID
+ $conds = [ 'server_id' => intval( $masterInfo['serverId'] ) ];
+ $data = $this->getHeartbeatData( $conds );
}
- list( $time, $nowUnix ) = $this->getHeartbeatData( $masterInfo['serverId'] );
+ list( $time, $nowUnix ) = $data;
if ( $time !== null ) {
// @time is in ISO format like "2015-09-25T16:48:10.000510"
$dateTime = new DateTime( $time, new DateTimeZone( 'UTC' ) );
}
/**
- * @param string $masterId Server ID
- * @return array (heartbeat `ts` column value or null, UNIX timestamp)
+ * @param array $conds WHERE clause conditions to find a row
+ * @return array (heartbeat `ts` column value or null, UNIX timestamp) for the newest beat
* @see https://www.percona.com/doc/percona-toolkit/2.1/pt-heartbeat.html
*/
- protected function getHeartbeatData( $masterId ) {
- // Get the status row for this master; use the oldest for sanity in case the master
- // has entries listed under different server IDs (which should really not happen).
- // Note: this would use "MAX(TIMESTAMPDIFF(MICROSECOND,ts,UTC_TIMESTAMP(6)))" but the
+ protected function getHeartbeatData( array $conds ) {
+ $whereSQL = $this->makeList( $conds, LIST_AND );
+ // Use ORDER BY for channel based queries since that field might not be UNIQUE.
+ // Note: this would use "TIMESTAMPDIFF(MICROSECOND,ts,UTC_TIMESTAMP(6))" but the
// percision field is not supported in MySQL <= 5.5.
$res = $this->query(
- "SELECT ts FROM heartbeat.heartbeat WHERE server_id=" . intval( $masterId )
+ "SELECT ts FROM heartbeat.heartbeat WHERE $whereSQL ORDER BY ts DESC LIMIT 1"
);
$row = $res ? $res->fetchObject() : false;
return wfSetVar( $this->mParentInfo, $x );
}
- /**
- * Given an array of non-normalised probabilities, this function will select
- * an element and return the appropriate key
- *
- * @deprecated since 1.21, use ArrayUtils::pickRandom()
- *
- * @param array $weights
- * @return bool|int|string
- */
- public function pickRandom( array $weights ) {
- return ArrayUtils::pickRandom( $weights );
- }
-
/**
* @param array $loads
* @param bool|string $wiki Wiki to get non-lagged for
return $header . $diff . "</table>";
}
- /**
- * Use specified text instead of loading from the database
- * @deprecated since 1.21, use setContent() instead.
- */
- public function setText( $oldText, $newText ) {
- ContentHandler::deprecated( __METHOD__, "1.21" );
-
- $oldContent = ContentHandler::makeContent( $oldText, $this->getTitle() );
- $newContent = ContentHandler::makeContent( $newText, $this->getTitle() );
-
- $this->setContent( $oldContent, $newContent );
- }
-
/**
* Use specified text instead of loading from the database
* @param Content $oldContent
* Try to load file metadata from memcached. Returns true on success.
* @return bool
*/
- function loadFromCache() {
+ private function loadFromCache() {
$this->dataLoaded = false;
$this->extraDataLoaded = false;
$key = $this->getCacheKey();
/**
* Save the file metadata to memcached
*/
- function saveToCache() {
+ private function saveToCache() {
$this->load();
$key = $this->getCacheKey();
$this->getOptions();
if ( $this->mOptions && !in_array( 'other', $this->mOptions, true ) ) {
if ( isset( $params['other-message'] ) ) {
- $msg = wfMessage( $params['other-message'] )->text();
+ $msg = $this->getMessage( $params['other-message'] )->text();
} elseif ( isset( $params['other'] ) ) {
$msg = $params['other'];
} else {
# Generate the label from a message, if possible
if ( isset( $info['buttonlabel-message'] ) ) {
- $msgInfo = $info['buttonlabel-message'];
-
- if ( is_array( $msgInfo ) ) {
- $msg = array_shift( $msgInfo );
- } else {
- $msg = $msgInfo;
- $msgInfo = [];
- }
-
- $this->buttonLabel = $this->msg( $msg, $msgInfo )->parse();
+ $this->buttonLabel = $this->getMessage( $info['buttonlabel-message'] )->parse();
} elseif ( isset( $info['buttonlabel'] ) ) {
if ( $info['buttonlabel'] === ' ' ) {
// Apparently some things set   directly and in an odd format
'id' => $this->mID,
'type' => $this->buttonType,
'name' => $this->mName,
- 'value' => $value,
+ 'value' => $this->getDefault(),
] + $this->getAttributes( [ 'disabled', 'tabindex' ] );
if ( $this->isBadIE() ) {
return Html::element( 'input', $attr );
} else {
- return Html::rawElement( 'button', $attr, $this->buttonLabel ?: htmlspecialchars( $value ) );
+ return Html::rawElement( 'button', $attr,
+ $this->buttonLabel ?: htmlspecialchars( $this->getDefault() ) );
}
}
public function getInputOOUI( $value ) {
return new OOUI\ButtonInputWidget( [
'name' => $this->mName,
- 'value' => $value,
+ 'value' => $this->getDefault(),
'label' => !$this->isBadIE() && $this->buttonLabel
? new OOUI\HtmlSnippet( $this->buttonLabel )
- : $value,
+ : $this->getDefault(),
'type' => $this->buttonType,
'classes' => [ 'mw-htmlform-submit', $this->mClass ],
'id' => $this->mID,
if ( empty( $this->mParams['message'] ) ) {
$msg = $this->msg( 'edittools' );
} else {
- $msg = $this->msg( $this->mParams['message'] );
+ $msg = $this->getMessage( $this->mParams['message'] );
if ( $msg->isDisabled() ) {
$msg = $this->msg( 'edittools' );
}
* Some field types support multi-level arrays.
* 'options-messages' -- associative array mapping message keys to values.
* Some field types support multi-level arrays.
- * 'options-message' -- message key to be parsed to extract the list of
+ * 'options-message' -- message key or object to be parsed to extract the list of
* options (like 'ipbreason-dropdown').
- * 'label-message' -- message key for a message to use as the label.
+ * 'label-message' -- message key or object for a message to use as the label.
* can be an array of msg key and then parameters to
* the message.
* 'label' -- alternatively, a raw text message. Overridden by
* label-message
* 'help' -- message text for a message to use as a help text.
- * 'help-message' -- message key for a message to use as a help text.
+ * 'help-message' -- message key or object for a message to use as a help text.
* can be an array of msg key and then parameters to
* the message.
* Overwrites 'help-messages' and 'help'.
- * 'help-messages' -- array of message key. As above, each item can
+ * 'help-messages' -- array of message keys/objects. As above, each item can
* be an array of msg key and then parameters.
* Overwrites 'help'.
* 'required' -- passed through to the object, indicating that it
protected $mSectionFooters = [];
protected $mPost = '';
protected $mId;
+ protected $mName;
protected $mTableId = '';
protected $mSubmitID;
*/
protected $mAction = false;
+ /**
+ * Form attribute autocomplete. false does not set the attribute
+ * @since 1.27
+ * @var bool|string
+ */
+ protected $mAutocomplete = false;
+
protected $mUseMultipart = false;
protected $mHiddenFields = [];
protected $mButtons = [];
if ( !empty( $this->mId ) ) {
$attribs['id'] = $this->mId;
}
+ if ( !empty( $this->mAutocomplete ) ) {
+ $attribs['autocomplete'] = $this->mAutocomplete;
+ }
+ if ( !empty ( $this->mName ) ) {
+ $attribs['name'] = $this->mName;
+ }
return $attribs;
}
return $this;
}
+ /**
+ * @param string $name 'name' attribute for the form
+ * @return HTMLForm $this for chaining calls
+ */
+ public function setName( $name ) {
+ $this->mName = $name;
+
+ return $this;
+ }
+
/**
* Prompt the whole form to be wrapped in a "<fieldset>", with
* this text as its "<legend>" element.
return $this->getTitle()->getLocalURL();
}
+
+ /**
+ * Set the value for the autocomplete attribute of the form.
+ * When set to false (which is the default state), the attribute get not set.
+ *
+ * @since 1.27
+ *
+ * @param string|bool $autocomplete
+ *
+ * @return HTMLForm $this for chaining calls
+ */
+ public function setAutocomplete( $autocomplete ) {
+ $this->mAutocomplete = $autocomplete;
+
+ return $this;
+ }
}
return true;
case 'OR':
- foreach ( $params as $p ) {
+ foreach ( $params as $i => $p ) {
if ( !is_array( $p ) ) {
throw new MWException(
"Expected array, found " . gettype( $p ) . " at index $i"
return false;
case 'NOR':
- foreach ( $params as $p ) {
+ foreach ( $params as $i => $p ) {
if ( !is_array( $p ) ) {
throw new MWException(
"Expected array, found " . gettype( $p ) . " at index $i"
# Generate the label from a message, if possible
if ( isset( $params['label-message'] ) ) {
- $msgInfo = $params['label-message'];
-
- if ( is_array( $msgInfo ) ) {
- $msg = array_shift( $msgInfo );
- } else {
- $msg = $msgInfo;
- $msgInfo = [];
- }
-
- $this->mLabel = $this->msg( $msg, $msgInfo )->parse();
+ $this->mLabel = $this->getMessage( $params['label-message'] )->parse();
} elseif ( isset( $params['label'] ) ) {
if ( $params['label'] === ' ' ) {
// Apparently some things set   directly and in an odd format
}
if ( isset( $this->mParams['help-messages'] ) ) {
- foreach ( $this->mParams['help-messages'] as $name ) {
- $helpMessage = (array)$name;
- $msg = $this->msg( array_shift( $helpMessage ), $helpMessage );
+ foreach ( $this->mParams['help-messages'] as $msg ) {
+ $msg = $this->getMessage( $msg );
if ( $msg->exists() ) {
if ( is_null( $helptext ) ) {
$this->mOptions = self::forceToStringRecursive( $this->mParams['options'] );
} elseif ( array_key_exists( 'options-message', $this->mParams ) ) {
/** @todo This is copied from Xml::listDropDown(), deprecate/avoid duplication? */
- $message = $this->msg( $this->mParams['options-message'] )->inContentLanguage()->plain();
+ $message = $this->getMessage( $this->mParams['options-message'] )->inContentLanguage()->plain();
$optgroup = false;
$this->mOptions = [];
return Html::rawElement( 'span', [ 'class' => 'error' ], $errors );
}
}
+
+ /**
+ * Turns a *-message parameter (which could be a MessageSpecifier, or a message name, or a
+ * name + parameters array) into a Message.
+ * @param mixed $value
+ * @return Message
+ */
+ protected function getMessage( $value ) {
+ if ( $value instanceof Message ) {
+ return $value;
+ } elseif ( $value instanceof MessageSpecifier ) {
+ return Message::newFromKey( $value );
+ } elseif ( is_array( $value ) ) {
+ $msg = array_shift( $value );
+ return $this->msg( $msg, $value );
+ } else {
+ return $this->msg( $value, [] );
+ }
+ }
}
* 'table', 'div', or 'raw'.
* row-legend - If non-empty, each group of subfields will be enclosed in a
* fieldset. The value is the name of a message key to use as the legend.
- * create-button-message - Message key to use as the text of the button to
+ * create-button-message - Message to use as the text of the button to
* add an additional group of fields.
- * delete-button-message - Message key to use as the text of automatically-
+ * delete-button-message - Message to use as the text of automatically-
* generated 'delete' button. Ignored if 'delete' is included in 'fields'.
*
* In the generated HTML, the subfields will be named along the lines of
'name' => $name,
'id' => Sanitizer::escapeId( "{$this->mID}--$key--delete" ),
'cssclass' => 'mw-htmlform-cloner-delete-button',
- 'default' => $this->msg( $label )->text(),
+ 'default' => $this->getMessage( $label )->text(),
], $this->mParent );
$v = $field->getDefault();
'name' => $name,
'id' => Sanitizer::escapeId( "{$this->mID}--create" ),
'cssclass' => 'mw-htmlform-cloner-create-button',
- 'default' => $this->msg( $label )->text(),
+ 'default' => $this->getMessage( $label )->text(),
], $this->mParent );
$html .= $field->getInputHTML( $field->getDefault() );
if ( array_key_exists( 'other', $params ) ) {
// Do nothing
} elseif ( array_key_exists( 'other-message', $params ) ) {
- $params['other'] = wfMessage( $params['other-message'] )->plain();
+ $params['other'] = $this->getMessage( $params['other-message'] )->plain();
} else {
- $params['other'] = wfMessage( 'htmlform-selectorother-other' )->plain();
+ $params['other'] = $this->msg( 'htmlform-selectorother-other' )->plain();
}
parent::__construct( $params );
const DEFAULT_COLS = 80;
const DEFAULT_ROWS = 25;
+ protected $mPlaceholder = '';
+
+ /**
+ * @param array $params
+ * - cols, rows: textarea size
+ * - placeholder/placeholder-message: set HTML placeholder attribute
+ * - spellcheck: set HTML spellcheck attribute
+ */
+ public function __construct( $params ) {
+ parent::__construct( $params );
+
+ if ( isset( $params['placeholder-message'] ) ) {
+ $this->mPlaceholder = $this->getMessage( $params['placeholder-message'] )->parse();
+ } elseif ( isset( $params['placeholder'] ) ) {
+ $this->mPlaceholder = $params['placeholder'];
+ }
+ }
+
function getCols() {
return isset( $this->mParams['cols'] ) ? $this->mParams['cols'] : static::DEFAULT_COLS;
}
if ( $this->mClass !== '' ) {
$attribs['class'] = $this->mClass;
}
+ if ( $this->mPlaceholder !== '' ) {
+ $attribs['placeholder'] = $this->mPlaceholder;
+ }
$allowedParams = [
- 'placeholder',
'tabindex',
'disabled',
'readonly',
if ( $this->mClass !== '' ) {
$attribs['classes'] = [ $this->mClass ];
}
+ if ( $this->mPlaceholder !== '' ) {
+ $attribs['placeholder'] = $this->mPlaceholder;
+ }
$allowedParams = [
- 'placeholder',
'tabindex',
'disabled',
'readonly',
<?php
class HTMLTextField extends HTMLFormField {
+ protected $mPlaceholder = '';
+
+ /**
+ * @param array $params
+ * - type: HTML textfield type
+ * - size: field size in characters (defaults to 45)
+ * - placeholder/placeholder-message: set HTML placeholder attribute
+ * - spellcheck: set HTML spellcheck attribute
+ * - persistent: upon unsuccessful requests, retain the value (defaults to true, except
+ * for password fields)
+ */
+ public function __construct( $params ) {
+ parent::__construct( $params );
+
+ if ( isset( $params['placeholder-message'] ) ) {
+ $this->mPlaceholder = $this->getMessage( $params['placeholder-message'] )->parse();
+ } elseif ( isset( $params['placeholder'] ) ) {
+ $this->mPlaceholder = $params['placeholder'];
+ }
+ }
+
function getSize() {
return isset( $this->mParams['size'] ) ? $this->mParams['size'] : 45;
}
return null;
}
+ public function isPersistent() {
+ if ( isset( $this->mParams['persistent'] ) ) {
+ return $this->mParams['persistent'];
+ }
+ // don't put passwords into the HTML body, they could get cached or otherwise leaked
+ return !( isset( $this->mParams['type'] ) && $this->mParams['type'] === 'password' );
+ }
+
function getInputHTML( $value ) {
+ if ( !$this->isPersistent() ) {
+ $value = '';
+ }
+
$attribs = [
'id' => $this->mID,
'name' => $this->mName,
if ( $this->mClass !== '' ) {
$attribs['class'] = $this->mClass;
}
+ if ( $this->mPlaceholder !== '' ) {
+ $attribs['placeholder'] = $this->mPlaceholder;
+ }
# @todo Enforce pattern, step, required, readonly on the server side as
# well
'pattern',
'title',
'step',
- 'placeholder',
'list',
'maxlength',
'tabindex',
}
function getInputOOUI( $value ) {
+ if ( !$this->isPersistent() ) {
+ $value = '';
+ }
+
$attribs = $this->getTooltipAndAccessKey();
if ( $this->mClass !== '' ) {
$attribs['classes'] = [ $this->mClass ];
}
+ if ( $this->mPlaceholder !== '' ) {
+ $attribs['placeholder'] = $this->mPlaceholder;
+ }
# @todo Enforce pattern, step, required, readonly on the server side as
# well
'flags',
'indicator',
'maxlength',
- 'placeholder',
'readonly',
'required',
'tabindex',
"config-localsettings-cli-upgrade": "Wykryto obecność pliku <code>LocalSettings.php</code>.\nAktualizację należy wykonać poprzez uruchomienie <code>update.php</code>",
"config-localsettings-key": "Klucz aktualizacji:",
"config-localsettings-badkey": "Podany klucz aktualizacji jest nieprawidłowy.",
- "config-upgrade-key-missing": "Wykryto zainstalowane wcześniej MediaWiki.\nJeśli chcesz je zaktualizować dodaj na koniec pliku <code>LocalSettings.php</code> poniższą linię tekstu.\n\n$1",
+ "config-upgrade-key-missing": "Wykryto zainstalowane wcześniej MediaWiki.\nJeśli chcesz je zaktualizować, dodaj na koniec pliku <code>LocalSettings.php</code> poniższą linię tekstu:\n\n$1",
"config-localsettings-incomplete": "Istniejący plik <code>LocalSettings.php</code> wygląda na niekompletny.\nBrak wartości zmiennej $1.\nZmień plik <code>LocalSettings.php</code>, tak by zawierał deklarację wartości tej zmiennej, a następnie kliknij „{{int:Config-continue}}”.",
- "config-localsettings-connection-error": "Wystąpił błąd podczas łączenia z bazą danych używając ustawień podanych w <code>LocalSettings.php</code>\nNapraw te ustawienia i spróbuj ponownie.\n\n$1",
+ "config-localsettings-connection-error": "Wystąpił błąd podczas łączenia z bazą danych używając ustawień podanych w <code>LocalSettings.php</code>.\nNapraw te ustawienia i spróbuj ponownie.\n\n$1",
"config-session-error": "Błąd uruchomienia sesji – $1",
"config-session-expired": "Wygląda na to, że Twoja sesja wygasła.\nCzas życia sesji został skonfigurowany na $1.\nMożesz go wydłużyć zmieniając <code>session.gc_maxlifetime</code> w pliku php.ini.\nUruchom ponownie proces instalacji.",
"config-no-session": "Dane sesji zostały utracone.\nSprawdź plik php.ini i upewnij się, że <code>session.save_path</code> wskazuje na odpowiedni katalog.",
"config-xcache": "[Http://trac.lighttpd.net/xcache/ XCache] jest zainstalowany",
"config-apc": "[Http://www.php.net/apc APC] jest zainstalowany",
"config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] jest zainstalowany",
+ "config-no-cache-apcu": "<strong>Ostrzeżenie:</strong> Nie można znaleźć [http://www.php.net/apcu APCu], [http://xcache.lighttpd.net/ XCache] lub [http://www.iis.net/download/WinCacheForPhp WinCache].\nPamięć podręczna obiektów nie zostanie włączona.",
"config-mod-security": "''' Ostrzeżenie ''': Serwer sieci web ma włączone [http://modsecurity.org/ mod_security]. Jeśli jest niepoprawnie skonfigurowane, może być przyczyną problemów MediaWiki lub innego oprogramowania, które pozwala użytkownikom na wysyłanie dowolnej zawartości.\nSprawdź w [http://modsecurity.org/documentation/ dokumentacji mod_security] lub skontaktuj się z obsługa hosta, jeśli wystąpią losowe błędy.",
"config-diff3-bad": "Nie znaleziono GNU diff3.",
"config-git": "Znaleziono oprogramowanie kontroli wersji Git: <code>$1</code>.",
+++ /dev/null
-<?php
-/**
- * Copyright 2015
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- */
-
-use Liuggio\StatsdClient\Entity\StatsdData;
-use Liuggio\StatsdClient\Entity\StatsdDataInterface;
-use Liuggio\StatsdClient\Factory\StatsdDataFactory;
-
-/**
- * A factory for application metric data.
- *
- * This class prepends a context-specific prefix to each metric key and keeps
- * a reference to each constructed metric in an internal array buffer.
- *
- * @since 1.25
- */
-class BufferingStatsdDataFactory extends StatsdDataFactory {
- protected $buffer = [];
-
- public function __construct( $prefix ) {
- parent::__construct();
- $this->prefix = $prefix;
- }
-
- /**
- * Normalize a metric key for StatsD
- *
- * Replace occurences of '::' with dots and any other non-alphanumeric
- * characters with underscores. Combine runs of dots or underscores.
- * Then trim leading or trailing dots or underscores.
- *
- * @param string $key
- * @since 1.26
- */
- private static function normalizeMetricKey( $key ) {
- $key = preg_replace( '/[:.]+/', '.', $key );
- $key = preg_replace( '/[^a-z0-9.]+/i', '_', $key );
- $key = trim( $key, '_.' );
- return str_replace( [ '._', '_.' ], '.', $key );
- }
-
- public function produceStatsdData(
- $key, $value = 1, $metric = StatsdDataInterface::STATSD_METRIC_COUNT
- ) {
- $entity = $this->produceStatsdDataEntity();
- if ( $key !== null ) {
- $key = self::normalizeMetricKey( "{$this->prefix}.{$key}" );
- $entity->setKey( $key );
- }
- if ( $value !== null ) {
- $entity->setValue( $value );
- }
- if ( $metric !== null ) {
- $entity->setMetric( $metric );
- }
- // Don't bother buffering a counter update with a delta of zero.
- if ( !( $metric === StatsdDataInterface::STATSD_METRIC_COUNT && !$value ) ) {
- $this->buffer[] = $entity;
- }
- return $entity;
- }
-
- /**
- * @return StatsdData[]
- */
- public function getBuffer() {
- return $this->buffer;
- }
-}
* Factory function for fatal errors
*
* @param string|MessageSpecifier $message Message key or object
- * @return Status
+ * @return StatusValue
*/
public static function newFatal( $message /*, parameters...*/ ) {
$params = func_get_args();
* Factory function for good results
*
* @param mixed $value
- * @return Status
+ * @return StatusValue
*/
public static function newGood( $value = null ) {
$result = new static();
--- /dev/null
+<?php
+/**
+ * Copyright 2015
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+use Liuggio\StatsdClient\Entity\StatsdData;
+use Liuggio\StatsdClient\Entity\StatsdDataInterface;
+use Liuggio\StatsdClient\Factory\StatsdDataFactory;
+
+/**
+ * A factory for application metric data.
+ *
+ * This class prepends a context-specific prefix to each metric key and keeps
+ * a reference to each constructed metric in an internal array buffer.
+ *
+ * @since 1.25
+ */
+class BufferingStatsdDataFactory extends StatsdDataFactory {
+ protected $buffer = [];
+
+ public function __construct( $prefix ) {
+ parent::__construct();
+ $this->prefix = $prefix;
+ }
+
+ /**
+ * Normalize a metric key for StatsD
+ *
+ * Replace occurences of '::' with dots and any other non-alphanumeric
+ * characters with underscores. Combine runs of dots or underscores.
+ * Then trim leading or trailing dots or underscores.
+ *
+ * @param string $key
+ * @since 1.26
+ */
+ private static function normalizeMetricKey( $key ) {
+ $key = preg_replace( '/[:.]+/', '.', $key );
+ $key = preg_replace( '/[^a-z0-9.]+/i', '_', $key );
+ $key = trim( $key, '_.' );
+ return str_replace( [ '._', '_.' ], '.', $key );
+ }
+
+ public function produceStatsdData(
+ $key, $value = 1, $metric = StatsdDataInterface::STATSD_METRIC_COUNT
+ ) {
+ $entity = $this->produceStatsdDataEntity();
+ if ( $key !== null ) {
+ $key = self::normalizeMetricKey( "{$this->prefix}.{$key}" );
+ $entity->setKey( $key );
+ }
+ if ( $value !== null ) {
+ $entity->setValue( $value );
+ }
+ if ( $metric !== null ) {
+ $entity->setMetric( $metric );
+ }
+ // Don't bother buffering a counter update with a delta of zero.
+ if ( !( $metric === StatsdDataInterface::STATSD_METRIC_COUNT && !$value ) ) {
+ $this->buffer[] = $entity;
+ }
+ return $entity;
+ }
+
+ /**
+ * @return StatsdData[]
+ */
+ public function getBuffer() {
+ return $this->buffer;
+ }
+}
--- /dev/null
+<?php
+
+use Liuggio\StatsdClient\Entity\StatsdData;
+use Liuggio\StatsdClient\Entity\StatsdDataInterface;
+use Liuggio\StatsdClient\Factory\StatsdDataFactoryInterface;
+
+/**
+ * @author Addshore
+ * @since 1.27
+ */
+class NullStatsdDataFactory implements StatsdDataFactoryInterface {
+
+ /**
+ * This function creates a 'timing' StatsdData.
+ *
+ * @param string|array $key The metric(s) to set.
+ * @param float $time The elapsed time (ms) to log
+ **/
+ public function timing( $key, $time ) {
+ }
+
+ /**
+ * This function creates a 'gauge' StatsdData.
+ *
+ * @param string|array $key The metric(s) to set.
+ * @param float $value The value for the stats.
+ **/
+ public function gauge( $key, $value ) {
+ }
+
+ /**
+ * This function creates a 'set' StatsdData object
+ * A "Set" is a count of unique events.
+ * This data type acts like a counter, but supports counting
+ * of unique occurrences of values between flushes. The backend
+ * receives the number of unique events that happened since
+ * the last flush.
+ *
+ * The reference use case involved tracking the number of active
+ * and logged in users by sending the current userId of a user
+ * with each request with a key of "uniques" (or similar).
+ *
+ * @param string|array $key The metric(s) to set.
+ * @param float $value The value for the stats.
+ *
+ * @return array
+ **/
+ public function set( $key, $value ) {
+ return [];
+ }
+
+ /**
+ * This function creates a 'increment' StatsdData object.
+ *
+ * @param string|array $key The metric(s) to increment.
+ * @param float|1 $sampleRate The rate (0-1) for sampling.
+ *
+ * @return array
+ **/
+ public function increment( $key ) {
+ return [];
+ }
+
+ /**
+ * This function creates a 'decrement' StatsdData object.
+ *
+ *
+ * @param string|array $key The metric(s) to decrement.
+ * @param float|1 $sampleRate The rate (0-1) for sampling.
+ *
+ * @return mixed
+ **/
+ public function decrement( $key ) {
+ return [];
+ }
+
+ /**
+ * This function creates a 'updateCount' StatsdData object.
+ *
+ * @param string|array $key The metric(s) to decrement.
+ * @param integer $delta The delta to add to the each metric
+ *
+ * @return mixed
+ **/
+ public function updateCount( $key, $delta ) {
+ return [];
+ }
+
+ /**
+ * Produce a StatsdDataInterface Object.
+ *
+ * @param string $key The key of the metric
+ * @param int $value The amount to increment/decrement each metric by.
+ * @param string $metric The metric type
+ * ("c" for count, "ms" for timing, "g" for gauge, "s" for set)
+ *
+ * @return StatsdDataInterface
+ **/
+ public function produceStatsdData(
+ $key,
+ $value = 1,
+ $metric = StatsdDataInterface::STATSD_METRIC_COUNT
+ ) {
+ $data = new StatsdData();
+ $data->setKey( $key );
+ $data->setValue( $value );
+ $data->setMetric( $metric );
+ return $data;
+ }
+
+}
--- /dev/null
+<?php
+
+use Liuggio\StatsdClient\Factory\StatsdDataFactoryInterface;
+
+/**
+ * Describes a Statsd aware interface
+ *
+ * @since 1.27
+ * @author Addshore
+ */
+interface StatsdAwareInterface {
+
+ /**
+ * Sets a logger instance on the object
+ *
+ * @param StatsdDataFactoryInterface $statsFactory
+ * @return null
+ */
+ public function setStatsdDataFactory( StatsdDataFactoryInterface $statsFactory );
+
+}
* 'contentType' string default 'text/plain; charset=UTF-8'
* 'headers' array Extra headers to set
*
- * Previous versions of this function had $replyto as the 5th argument and $contentType
- * as the 6th. These are still supported for backwards compatability, but deprecated.
- *
* @throws MWException
* @throws Exception
* @return Status
public static function send( $to, $from, $subject, $body, $options = [] ) {
global $wgAllowHTMLEmail;
- if ( !is_array( $options ) ) {
- // Old calling style
- wfDeprecated( __METHOD__ . ' with $replyto as 5th parameter', '1.26' );
- $options = [ 'replyTo' => $options ];
- if ( func_num_args() === 6 ) {
- $options['contentType'] = func_get_arg( 5 );
- }
- }
if ( !isset( $options['contentType'] ) ) {
$options['contentType'] = 'text/plain; charset=UTF-8';
}
$title,
htmlspecialchars( $title->getFullText() ),
[],
- // Automatically append redirect=no to each link, since most of them are
- // redirect pages themselves.
+ // Make sure wiki page redirects are not followed
$title->isRedirect() ? [ 'redirect' => 'no' ] : [],
( $forceKnown ? [ 'known', 'noclasses' ] : [] )
) . '</li>';
return $this->mPage->getUndoContent( $undo, $undoafter );
}
- /**
- * Call to WikiPage function for backwards compatibility.
- * @see WikiPage::getUndoText
- */
- public function getUndoText( Revision $undo, Revision $undoafter = null ) {
- ContentHandler::deprecated( __METHOD__, '1.21' );
- return $this->mPage->getUndoText( $undo, $undoafter );
- }
-
/**
* Call to WikiPage function for backwards compatibility.
* @see WikiPage::getUser
return $this->mPage->protectDescriptionLog( $limit, $expiry );
}
- /**
- * Call to WikiPage function for backwards compatibility.
- * @see WikiPage::replaceSection
- */
- public function replaceSection( $sectionId, $text, $sectionTitle = '',
- $edittime = null
- ) {
- ContentHandler::deprecated( __METHOD__, '1.21' );
- return $this->mPage->replaceSection( $sectionId, $text, $sectionTitle,
- $edittime
- );
- }
-
/**
* Call to WikiPage function for backwards compatibility.
* @see WikiPage::replaceSectionAtRev
--- /dev/null
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+/**
+ * Interface for type hinting (accepts WikiPage, Article, ImagePage, CategoryPage)
+ */
+interface Page {
+}
* @file
*/
-/**
- * Interface for type hinting (accepts WikiPage, Article, ImagePage, CategoryPage)
- */
-interface Page {
-}
-
/**
* Class representing a MediaWiki article and history.
*
return $handler->getUndoContent( $this->getRevision(), $undo, $undoafter );
}
- /**
- * Get the text that needs to be saved in order to undo all revisions
- * between $undo and $undoafter. Revisions must belong to the same page,
- * must exist and must not be deleted
- * @param Revision $undo
- * @param Revision $undoafter Must be an earlier revision than $undo
- * @return string|bool String on success, false on failure
- * @deprecated since 1.21: use ContentHandler::getUndoContent() instead.
- */
- public function getUndoText( Revision $undo, Revision $undoafter = null ) {
- ContentHandler::deprecated( __METHOD__, '1.21' );
-
- $this->loadLastEdit();
-
- if ( $this->mLastRevision ) {
- if ( is_null( $undoafter ) ) {
- $undoafter = $undo->getPrevious();
- }
-
- $handler = $this->getContentHandler();
- $undone = $handler->getUndoContent( $this->mLastRevision, $undo, $undoafter );
-
- if ( !$undone ) {
- return false;
- } else {
- return ContentHandler::getContentText( $undone );
- }
- }
-
- return false;
- }
-
- /**
- * @param string|number|null|bool $sectionId Section identifier as a number or string
- * (e.g. 0, 1 or 'T-1'), null/false or an empty string for the whole page
- * or 'new' for a new section.
- * @param string $text New text of the section.
- * @param string $sectionTitle New section's subject, only if $section is "new".
- * @param string $edittime Revision timestamp or null to use the current revision.
- *
- * @throws MWException
- * @return string|null New complete article text, or null if error.
- *
- * @deprecated since 1.21, use replaceSectionAtRev() instead
- */
- public function replaceSection( $sectionId, $text, $sectionTitle = '',
- $edittime = null
- ) {
- ContentHandler::deprecated( __METHOD__, '1.21' );
-
- // NOTE: keep condition in sync with condition in replaceSectionContent!
- if ( strval( $sectionId ) === '' ) {
- // Whole-page edit; let the whole text through
- return $text;
- }
-
- if ( !$this->supportsSections() ) {
- throw new MWException( "sections not supported for content model " .
- $this->getContentHandler()->getModelID() );
- }
-
- // could even make section title, but that's not required.
- $sectionContent = ContentHandler::makeContent( $text, $this->getTitle() );
-
- $newContent = $this->replaceSectionContent( $sectionId, $sectionContent, $sectionTitle,
- $edittime );
-
- return ContentHandler::getContentText( $newContent );
- }
-
/**
* Returns true if this page's content model supports sections.
*
'version' => $context->getVersion(),
];
- return wfExpandUrl( wfAppendQuery( $script, $query ), PROTO_RELATIVE );
+ return wfAppendQuery( $script, $query );
}
/**
}
global $wgContLang;
+ $conf = $this->getConfig();
- $mainPage = Title::newMainPage();
+ // We can't use Title::newMainPage() if 'mainpage' is in
+ // $wgForceUIMsgAsContentMsg because that will try to use the session
+ // user's language and we have no session user. This does the
+ // equivalent but falling back to our ResourceLoaderContext language
+ // instead.
+ $mainPage = Title::newFromText( $context->msg( 'mainpage' )->inContentLanguage()->text() );
+ if ( !$mainPage ) {
+ $mainPage = Title::newFromText( 'Main Page' );
+ }
/**
* Namespace related preparation
}
}
- $conf = $this->getConfig();
// Build list of variables
$vars = [
'wgLoadScript' => wfScript( 'load' ),
if ( !$batch->isEmpty() ) {
$res = $dbr->select( [ 'page', 'revision' ],
- [ 'page_namespace', 'page_title', 'rev_len', 'rev_sha1' ],
+ // Include page_touched to allow purging if cache is poisoned (T117587, T113916)
+ [ 'page_namespace', 'page_title', 'page_touched', 'rev_len', 'rev_sha1' ],
$batch->constructSet( 'page', $dbr ),
__METHOD__,
[],
$this->titleInfo[$key][$title->getPrefixedText()] = [
'rev_len' => $row->rev_len,
'rev_sha1' => $row->rev_sha1,
+ 'page_touched' => $row->page_touched,
];
}
}
*/
public function rescore( $search, $namespaces, $srchres, $limit ) {
// Pick namespace (based on PrefixSearch::defaultSearchBackend)
- $ns = in_array( NS_MAIN, $namespaces ) ? NS_MAIN : $namespaces[0];
+ $ns = in_array( NS_MAIN, $namespaces ) ? NS_MAIN : reset( $namespaces );
$t = Title::newFromText( $search, $ns );
if ( !$t || !$t->exists() ) {
// No exact match so just return the search results
*
* @param string|string[] $salt Token salt
* @param string $key Token key
- * @return MediaWiki\\Session\\SessionToken
+ * @return MediaWiki\\Session\\Token
*/
public function getToken( $salt = '', $key = 'default' ) {
$new = false;
const PATH_FILE = 'file_path';
const PATH_PAGE = 'page_path';
- /**
- * @since 1.21
- * @deprecated since 1.21 Just use the constructor or the factory Site::newForType
- *
- * @param int $globalId
- *
- * @return MediaWikiSite
- */
- public static function newFromGlobalId( $globalId ) {
- $site = new static();
- $site->setGlobalId( $globalId );
- return $site;
- }
-
/**
* Constructor.
*
return $allowedSkins;
}
- /**
- * @deprecated since 1.23, use getAllowedSkins
- * @return string[]
- */
- public static function getUsableSkins() {
- wfDeprecated( __METHOD__, '1.23' );
- return self::getAllowedSkins();
- }
-
/**
* Normalize a skin preference value to a form that can be loaded.
*
}
}
- /**
- * Factory method for loading a skin of a given type
- * @param string $key 'monobook', 'vector', etc.
- * @return Skin
- * @deprecated since 1.24; Use SkinFactory instead
- */
- static function &newFromKey( $key ) {
- wfDeprecated( __METHOD__, '1.24' );
-
- $key = Skin::normalizeKey( $key );
- $factory = SkinFactory::getDefaultInstance();
-
- // normalizeKey() guarantees that a skin with this key will exist.
- $skin = $factory->makeSkin( $key );
- return $skin;
- }
-
/**
* @return string Skin name
*/
* @return null|string
*/
function getCopyrightIcon() {
- global $wgRightsUrl, $wgRightsText, $wgRightsIcon, $wgCopyrightIcon;
+ global $wgRightsUrl, $wgRightsText, $wgRightsIcon, $wgFooterIcons;
$out = '';
- if ( $wgCopyrightIcon ) {
- $out = $wgCopyrightIcon;
+ if ( $wgFooterIcons['copyright']['copyright'] ) {
+ $out = $wgFooterIcons['copyright']['copyright'];
} elseif ( $wgRightsIcon ) {
$icon = htmlspecialchars( $wgRightsIcon );
$targetUser->canReceiveEmail();
}
- /**
- * This function previously returned a fully resolved style path URL to images or styles stored in
- * the legacy skins/common/ directory.
- *
- * That directory has been removed in 1.24 and the function always returns an empty string.
- *
- * @deprecated since 1.24
- * @param string $name The name or path of a skin resource file
- * @return string Empty string
- */
- function getCommonStylePath( $name ) {
- wfDeprecated( __METHOD__, '1.24' );
- return '';
- }
-
/**
* Return a fully resolved style path url to images or styles stored in the current skins's folder.
* This method returns a url resolved using the configured skin style path
return $bar;
}
- /**
- * This function previously controlled whether the 'mediawiki.legacy.wikiprintable' module
- * should be loaded by OutputPage. That module no longer exists and the return value of this
- * method is ignored.
- *
- * If your skin doesn't provide its own print styles, the 'mediawiki.legacy.commonPrint' module
- * can be used instead (SkinTemplate-based skins do it automatically).
- *
- * @deprecated since 1.22
- * @return bool
- */
- public function commonPrintStylesheet() {
- wfDeprecated( __METHOD__, '1.22' );
- return false;
- }
-
/**
* Gets new talk page messages for the current user and returns an
* appropriate alert message (or an empty string if there are no messages)
final public function run( $subPage ) {
/**
* Gets called before @see SpecialPage::execute.
+ * Return false to prevent calling execute() (since 1.27+).
*
* @since 1.20
*
* @param SpecialPage $this
* @param string|null $subPage
*/
- Hooks::run( 'SpecialPageBeforeExecute', [ $this, $subPage ] );
+ if ( !Hooks::run( 'SpecialPageBeforeExecute', [ $this, $subPage ] ) ) {
+ return;
+ }
- $this->beforeExecute( $subPage );
+ if ( $this->beforeExecute( $subPage ) === false ) {
+ return;
+ }
$this->execute( $subPage );
$this->afterExecute( $subPage );
/**
* Gets called before @see SpecialPage::execute.
+ * Return false to prevent calling execute() (since 1.27+).
*
* @since 1.20
*
* @param string|null $subPage
+ * @return bool|void
*/
protected function beforeExecute( $subPage ) {
// No-op
private static $list;
private static $aliases;
+ private static $pageObjectCache = [];
/**
* Reset the internal list of special pages. Useful when changing $wgSpecialPages after
public static function resetList() {
self::$list = null;
self::$aliases = null;
+ self::$pageObjectCache = [];
}
/**
public static function getPage( $name ) {
list( $realName, /*...*/ ) = self::resolveAlias( $name );
+ if ( isset( self::$pageObjectCache[$realName] ) ) {
+ return self::$pageObjectCache[$realName];
+ }
+
$specialPageList = self::getPageList();
if ( isset( $specialPageList[$realName] ) ) {
$page = null;
}
+ self::$pageObjectCache[$realName] = $page;
if ( $page instanceof SpecialPage ) {
return $page;
} else {
$url = $this->dispatchLog();
break;
default:
- $this->getOutput()->setStatusCode( 404 );
$url = null;
break;
}
return Status::newGood( $user );
}
- function makeGroupNameList( $ids ) {
- if ( empty( $ids ) ) {
- return $this->msg( 'rightsnone' )->inContentLanguage()->text();
- } else {
- return implode( ', ', $ids );
- }
- }
-
/**
- * Make a list of group names to be stored as parameter for log entries
+ * @since 1.15
*
- * @deprecated since 1.21; use LogFormatter instead.
* @param array $ids
+ *
* @return string
*/
- function makeGroupNameListForLog( $ids ) {
- wfDeprecated( __METHOD__, '1.21' );
-
+ public function makeGroupNameList( $ids ) {
if ( empty( $ids ) ) {
- return '';
+ return $this->msg( 'rightsnone' )->inContentLanguage()->text();
} else {
- return $this->makeGroupNameList( $ids );
+ return implode( ', ', $ids );
}
}
$language->pipeList( $links ) )->escaped()
);
}
+ if ( $value !== 'infinity' ) {
+ $timestamp = new MWTimestamp( $value );
+ $formatted .= '<br />' . $this->msg(
+ 'ipb-blocklist-duration-left',
+ $language->formatDuration(
+ $timestamp->getTimestamp() - time(),
+ // reasonable output
+ [
+ 'minutes',
+ 'hours',
+ 'days',
+ 'years',
+ ]
+ )
+ )->escaped();
+ }
break;
case 'ipb_by':
if ( $this->mDesiredDestName != $filename && $comparableName != $filename ) {
$warnings['badfilename'] = $filename;
- // Debugging for bug 62241
- wfDebugLog( 'upload', "Filename: '$filename', mDesiredDestName: "
- . "'$this->mDesiredDestName', comparableName: '$comparableName'" );
}
// Check whether the file extension is on the unwanted list
}
if ( $this->mFileSize == 0 ) {
- $warnings['emptyfile'] = true;
+ $warnings['empty-file'] = true;
}
$exists = self::getExistsWarning( $localFile );
"Янмурза Баки",
"Айсар",
"Lizalizaufa",
- "Кутлубаева Кунсулу Закиевна"
+ "Кутлубаева Кунсулу Закиевна",
+ "Вильданова Гюзель"
]
},
"tog-underline": "Һылтанмалар аҫтына һыҙыу:",
"special-characters-group-ipa": "ХАФӘ (IPA)",
"special-characters-group-symbols": "Тамғалар",
"special-characters-group-greek": "Грек",
+ "special-characters-group-greekextended": "Грек телендә киңәйтелгән",
"special-characters-group-cyrillic": "Кириллик",
"special-characters-group-arabic": "Ғәрәп",
"special-characters-group-arabicextended": "Ғәрәп (киңәйтелгән)",
"right-applychangetags": "дадаваць [[Special:Tags|меткі]] пры рэдагаваньні",
"right-changetags": "дадаваць і выдаляць адвольныя [[Special:Tags|меткі]] да асобных вэрсіяў і запісаў у журнале падзеяў",
"grant-generic": "Набор правоў «$1»",
- "grant-group-page-interaction": "Узаемадзеньне з старонкамі",
+ "grant-group-page-interaction": "Узаемадзеяньне з старонкамі",
"grant-group-file-interaction": "Узаемадзеяньне з мэдыяфайламі",
"grant-group-watchlist-interaction": "Узаемадзеяньне з вашым сьпісам назіраньня",
"grant-group-email": "Адпраўка лістоў электроннай пошты",
"apisandbox-api-disabled": "API забаронены на гэтым сайце.",
"apisandbox-intro": "Выкарыстоўвайце гэтую старонку для экспэрымэнтаў з <strong>API вэб-сэрвісу MediaWiki</strong>.\nЗьвяртайцеся да [[mw:API:Main page|дакумэнтацыі API]] для дадатковай інфармацыі па выкарыстаньні API. Напрыклад, [//www.mediawiki.org/wiki/API#A_simple_example як атрымаць зьмест галоўнай старонкі]. Абярыце дзеяньне, каб пабачыць болей узораў.\n\nЗьвярніце ўвагу, што нягледзячы на тое, што гэта пясочніца, вашыя дзеяньні могуць унесьці зьмены ў вікі.",
"apisandbox-fullscreen": "Разгарнуць панэль",
+ "apisandbox-fullscreen-tooltip": "Разгарнуць панэль пясочніцы, каб запоўніць акно браўзэра.",
+ "apisandbox-unfullscreen": "Паказаць старонку",
+ "apisandbox-unfullscreen-tooltip": "Паменшыць панэль пясочніцы, каб былі даступныя навігацыйныя спасылкі MediaWiki.",
"apisandbox-submit": "Зрабіць запыт",
"apisandbox-reset": "Ачысьціць",
+ "apisandbox-retry": "Паўтарыць",
"apisandbox-examples": "Прыклады",
"apisandbox-results": "Вынікі",
"apisandbox-request-url-label": "URL-адрас запыту:",
"foreign-structured-upload-form-label-own-work": "Гэта мая ўласная праца",
"foreign-structured-upload-form-label-infoform-categories": "Катэгорыі",
"foreign-structured-upload-form-label-infoform-date": "Дата",
+ "foreign-structured-upload-form-label-own-work-message-local": "Я пацвярджаю, што ўкладваю гэты файл згодна з правіламі і ліцэнзійнай палітыкай {{GRAMMAR:родны|{{SITENAME}}}}.",
"backend-fail-stream": "Не атрымалася трансляваць файл $1.",
"backend-fail-backup": "Немагчыма зрабіць рэзервную копію $1.",
"backend-fail-notexists": "Файл $1 не існуе.",
"changecontentmodel-reason-label": "Прычына:",
"changecontentmodel-submit": "Змяніць",
"logentry-contentmodel-change-revertlink": "адкаціць",
+ "logentry-contentmodel-change-revert": "адкат",
"protectlogpage": "Журнал аховы",
"protectlogtext": "Ніжэй прыведзены журнал змен абароны старонкі.\nВы можаце таксама прагледзець [[Special:ProtectedPages|пералік старонак пад аховай]].",
"protectedarticle": "пад аховай «[[$1]]»",
"protect-othertime": "Іншы час:",
"protect-othertime-op": "іншы час",
"protect-existing-expiry": "Вызначаны час сканчэння: $3, $2",
+ "protect-existing-expiry-infinity": "Наяўны тэрмін дзеяння: бясконца",
"protect-otherreason": "Іншая ці дадатковая прычына:",
"protect-otherreason-op": "Іншая прычына",
"protect-dropdown": "*Звычайныя прычыны пастаноўкі аховы\n** Празмерны ўзровень вандалізму\n** Празмерны ўзровень спаму\n** Шкодная вайна правак\n** Старонка з высокай наведвальнасцю",
"block-log-flags-hiddenname": "схаванае імя ўдзельніка",
"range_block_disabled": "Не дазволена адміністратарская магчымасць ставіць блокі на адрасныя дыяпазоны.",
"ipb_expiry_invalid": "Некарэктны час сканчэння.",
+ "ipb_expiry_old": "Час сканчэння — у мінулым.",
"ipb_expiry_temp": "Скрытыя блокі на імёны ўдзельнікаў мусяць быць сталымі.",
"ipb_hide_invalid": "Немагчыма заглушыць гэты рахунак; для яго маецца больш за {{PLURAL:$1|адну праўку|$1 праўкі|$1 правак}}.",
"ipb_already_blocked": "\"$1\" ужо знаходзіцца пад блокам",
"import-interwiki-history": "Капіраваць усе гістарычныя версіі гэтай старонкі",
"import-interwiki-templates": "Разам з усімі шаблонамі",
"import-interwiki-submit": "Імпартаваць",
+ "import-mapping-namespace": "Імпартаваць у прастору назваў:",
+ "import-mapping-subpage": "Імпартаваць як падстаронкі наступнай старонкі:",
"import-upload-filename": "Назва файла:",
"import-comment": "Каментарый:",
"importtext": "Калі ласка, экспартуйце файл з крынічнай вікі з дапамогай [[Special:Export|прылады экспарту]].\nЗахавайце яго на свой камп'ютар, а потым загрузіце сюды.",
"javascripttest": "JavaScript-тэсты",
"javascripttest-pagetext-noframework": "Гэта старонка зарэзервавана для запуску тэстаў JavaScript",
"javascripttest-pagetext-unknownframework": "Невядомая бібліятэка тэставання «$1».",
+ "javascripttest-pagetext-unknownaction": "Невядомае дзеянне \"$1\".",
"javascripttest-pagetext-frameworks": "Калі ласка, выберыце адну з прапанаваных бібліятэк тэставання: $1",
"javascripttest-pagetext-skins": "Выберыце афармленне для тэставання:",
"javascripttest-qunit-intro": "Глядзіце [$1 дакументацыю па тэставанні] на mediawiki.org.",
"pageinfo-protect-cascading-yes": "Да",
"pageinfo-protect-cascading-from": "Каскадная ахова ад",
"pageinfo-category-info": "Звесткі аб катэгорыі",
+ "pageinfo-category-total": "Агульная колькасць членаў",
"pageinfo-category-pages": "Колькасць старонак",
"pageinfo-category-subcats": "Колькасць падкатэгорый",
"pageinfo-category-files": "Колькасць файлаў",
"redirect-page": "Ідэнтыфікатар старонкі",
"redirect-revision": "Версія старонкі",
"redirect-file": "Назва файла",
+ "redirect-logid": "ID журнала",
"redirect-not-exists": "Значэнне не знойдзена",
"fileduplicatesearch": "Пошук дублікатных файлаў",
"fileduplicatesearch-summary": "Пошук дублікатных файлах на падставе іх хэшаў.",
"specialpages-group-wiki": "Вікізвесткі і прылады",
"specialpages-group-redirects": "Адмысловыя старонкі-перасылкі",
"specialpages-group-spam": "Прылады супраць спама",
+ "specialpages-group-developer": "Інструменты распрацоўшчыка",
"blankpage": "Пустая старонка",
"intentionallyblankpage": "Старонка наўмысна пакінута пустой, і ўжываецца для вымярэння хуткасці і падобнага.",
"external_image_whitelist": " #Гэты радок пакіньце ў такім самым выглядзе<pre>\n#Упішыце часткі рэгулярных выразаў (тое, што пішуць паміж знакамі //) ніжэй\n#Гэта будзе параўноўвацца з адрасамі URL вонкавых выяваў, на якія ёсць спасылкі\n#Тыя з іх, дзе атрымаецца адпаведнасць, будуць паказаныя як выявы, а іначай толькі як спасылкі\n#Радкі, якія пачынаюцца з знака #, лічацца каментарамі\n#Малыя і вялікія літары не адрозніваюцца\n\n#Усе часткі рэгулярных выразаў павінны быць над гэтым радком. Сам радок пакіньце ў такім самым выглядзе</pre>",
"tags-delete-explanation-warning": "Гэта дзеянне <strong>незваротнае</strong> і <strong>не можа быць адкочана</strong> нават адміністратарамі базы звестак. Упэўніцеся, што гэта тая бірка, што вы хочаце выдаліць.",
"tags-delete-reason": "Прычына:",
"tags-delete-submit": "Незваротна сцерці гэту бірку",
+ "tags-delete-not-found": "Бірка \"$1\" не існуе.",
+ "tags-delete-too-many-uses": "Бірка \"$1\" прыменена ў больш чым $2 {{PLURAL:$2|версіі|версіях}}, а значыць, яна не можа быць сцёрта.",
+ "tags-delete-warnings-after-delete": "Бірка \"$1\" была сцёрта, але {{PLURAL:$2|1=атрымана наступнае папярэджанне|атрыманы наступныя папярэджанні}}:",
+ "tags-activate-title": "Актываваць бірку",
+ "tags-activate-question": "Вы збіраецеся актываваць бірку \"$1\".",
+ "tags-activate-reason": "Прычына:",
+ "tags-activate-not-allowed": "Немагчыма актываваць бірку \"$1\".",
+ "tags-activate-not-found": "Бірка \"$1\" не існуе.",
+ "tags-activate-submit": "Актываваць",
+ "tags-deactivate-title": "Дэактываваць бірку",
+ "tags-deactivate-question": "Вы збіраецеся дэактываваць бірку \"$1\".",
+ "tags-deactivate-reason": "Прычына:",
+ "tags-deactivate-not-allowed": "Немагчыма дэактываваць бірку \"$1\".",
+ "tags-deactivate-submit": "Дэактываваць",
+ "tags-edit-title": "Правіць біркі",
+ "tags-edit-existing-tags": "Наяўныя біркі:",
+ "tags-edit-new-tags": "Новыя біркі:",
+ "tags-edit-add": "Дадаць гэтыя біркі:",
+ "tags-edit-reason": "Прычына:",
"comparepages": "Параўнанне старонак",
"compare-page1": "Старонка 1",
"compare-page2": "Старонка 2",
"nov": "ноя",
"dec": "дек",
"pagecategories": "{{PLURAL:$1|1=Саифенинъ категориясы|Саифенинъ категориялары}}",
- "category_header": "\"$1\" категориясындаки саифелер",
+ "category_header": "«$1» категориясындаки саифелер",
"subcategories": "Алт категориялар",
- "category-media-header": "\"$1\" категориясындаки медиа файллары",
+ "category-media-header": "«$1» категориясындаки медиа файллары",
"category-empty": "''Ишбу категорияда ич бир саифе я да медиа файл ёкъ.''",
"hidden-categories": "Гизли {{PLURAL:$1|1=категория|категориялар}}",
"hidden-category-category": "Гизли категориялар",
"perfcachedts": "Ашагъыдаки малюмат кэштен алынды, кэшнинъ сонъки янъартылгъан вакъты: $1. Кэште энъ чокъ {{PLURAL:$1|1=бир нетидже|$1 нетидже}} сакъланып тура.",
"querypage-no-updates": "Бу саифени денъиштирмеге шимди изин ёкъ. Бу малюмат аман янъартылмайджакъ.",
"viewsource": "Менба кодуны косьтер",
- "viewsource-title": "$1 саифесининъ менба коду",
+ "viewsource-title": "«$1» саифесининъ менба коду",
"actionthrottled": "Арекет токъталды",
"actionthrottledtext": "Спамгъа къаршы куреш себебинден бу арекетни аз вакъыт ичинде чокъ кере текрарлап оламайсынъыз. Мумкюн олгъан къарардан зияде арекет яптынъыз. Бир къач дакъкъадан сонъ текрарлап бакъынъыз.",
"protectedpagetext": "Бу саифеде денъиштирме я да башкъа бир арекет япылмасын деп о блок этильди.",
"updated": "(Янъарды)",
"note": "'''Ихтар:'''",
"previewnote": "'''Бу тек бакъып чыкъув, метин аля даа сакъланмагъан!'''",
+ "continue-editing": "Денъиштирюв пенджересине къайт",
"previewconflict": "Бу бакъып чыкъув юкъары тарир пенджересиндеки метиннинъ сакъланувдан сонъ оладжакъ корюнишини акс эте.",
"session_fail_preview": "''' Сервер сиз япкъан денъиштирмелерни сессия идентификаторы джоюлгъаны себебинден сакълап оламады.\nБу вакътынджа проблемадыр. Лютфен, текрар сакълап бакъынъыз.\nБундан да сонъ олып чыкъмаса, малюмат локаль файлгъа сакъланъыз да браузеринъизни бир къапатып ачынъыз.'''",
"session_fail_preview_html": "'''Афу этинъиз! HTML сессиянынъ малюматлары гъайып олгъаны себебинден сизинъ денъиштирмелеринъизни къабул этмеге имкян ёкътыр.'''",
"editing": "«$1» саифесини денъиштиреятасыз",
"creating": "«$1» саифесини яратув",
"editingsection": "«$1» саифесинде болюк денъиштиреятасыз",
- "editingcomment": "$1 саифесини денъиштиреятасыз (янъы болюк)",
+ "editingcomment": "«$1» саифесини денъиштиреятасыз (янъы болюк)",
"editconflict": "Денъиштирмелер чатышмасы: $1",
"explainconflict": "Сиз саифени денъиштиргенде башкъа бири де денъиштирме япты.\nЮкъарыдаки язы саифенинъ шимдики алыны косьтере.\nСизинъ денъиштирмелеринъиз астында косьтерильди.\nШимди япкъан денъиштирмелеринъизни ашагъы пенджереден юкъары пенджереге авуштырмакъ керексинъиз.\n\"{{int:savearticle}}\"гъа баскъанда '''тек''' юкъарыдаки язы сакъланаджакъ.",
"yourtext": "Сизинъ метнинъиз",
"randompage": "Тесадюфий саифе",
"randompage-nopages": "\"$1\" {{PLURAL:$2|1=исим фезасында|исим фезаларында}} ич бир саифе ёкъ.",
"randomredirect": "Тесадюфий ёллама саифеси",
- "randomredirect-nopages": "\"$1\" исим фезасында ич бир ёллама саифеси ёкъ.",
+ "randomredirect-nopages": "«$1» исим фезасында ич бир ёллама саифеси ёкъ.",
"statistics": "Статистика",
"statistics-header-pages": "Саифе статистикасы",
"statistics-header-edits": "Денъиштирюв статистикасы",
"protectlogtext": "Ашагъыдаки, къорчалавгъа алув/къорчалавдан чыкъарув иле багълы денъишмелер журналыдыр.\nКъорчалангъан саифелер [[Special:ProtectedPages|там джедвелини]] де коре билесинъиз.",
"protectedarticle": "\"[[$1]]\" къорчалав алтына алынды",
"modifiedarticleprotection": "«[[$1]]» ичюн къорчалав севиеси денъиштирильди",
- "unprotectedarticle": "\"[[$1]]\" саифесинден къорчалав чыкъарлыды",
+ "unprotectedarticle": "«[[$1]]» саифесинден къорчалав чыкъарлыды",
"prot_1movedto2": "[[$1]] саифесининъ ады [[$2]] деп денъиштирильди",
"protect-legend": "Къорчалавны тасдыкъла",
"protectcomment": "Себеп:",
"sp-contributions-newonly": "Тек янъы саифе яраткъан денъиштирмелерни косьтер",
"sp-contributions-submit": "Къыдыр",
"whatlinkshere": "Бу саифеге багълантылар",
- "whatlinkshere-title": "$1 саифесине багъланты олгъан саифелер",
+ "whatlinkshere-title": "«$1» саифесине багъланты олгъан саифелер",
"whatlinkshere-page": "Саифе:",
"linkshere": "'''[[:$1]]''' саифесине багъланты берген саифелер:",
"nolinkshere": "'''[[:$1]]''' саифесине багъланты берген саифе ёкъ.",
"ip_range_invalid": "Рухсетсиз IP аралыгъы.",
"lockdb": "Малюмат базасы килитли",
"lockbtn": "Малюмат базасы килитли",
- "move-page": "$1 саифесининъ адыны денъиштиреятасыз",
+ "move-page": "«$1» саифесининъ адыны денъиштиреятасыз",
"move-page-legend": "Саифенинъ адыны денъиштирюв",
"movepagetext": "Ашагъыдаки форма къулланылып саифенинъ ады денъиштирилир. Бунынънен берабер денъиштирмелер журналы да янъы адгъа авуштырылыр.\nЭски ады янъы адына ёнетме олур. Эски серлевагъа ёнетип тургъан саифелерни автоматик оларакъ янъартып оласынъыз. Бу арекетни автоматик япмагъа истемесенъиз, бутюн [[Special:DoubleRedirects|чифт]] ве [[Special:BrokenRedirects|йыртыкъ]] ёнетме саифелерини озюнъиз тешкермеге меджбур олурсынъыз. Багълантылар эндиден берли догъру чалышмасындан эмин олмалысынъыз.\n\nЯнъы адда бир саифе энди бар олса, ад денъиштирилюви <strong>япылмайджакъ</strong>, анджакъ бар олгъан саифе ёнетме я да бош олса ад денъиштирилюви мумкюн оладжакъ. Бу демек ки, саифенинъ адыны янълыштан денъиштирген олсанъыз деминки адыны кери къайтарып оласынъыз, амма бар олгъан саифени тесадюфен ёкъ этамайсынъыз.\n\n<strong>ТЕНБИ!</strong>\nАд денъиштирилюви популяр саифелер ичюн буюк ве бекленмеген денъишмелерге себеп ола билир. Лютфен, денъиштирме япмаздан эвель ола биледжеклерни козь огюне алынъыз.",
"movepagetalktext": "Къошулгъан музакере саифесининъ де (бар олса)\nады автоматик тарзда денъиштириледжек. '''Мустесналар:'''\n\n* Айны бу адда бош олмагъан бир музакере саифеси энди бар;\n* Ашагъыдаки бошлукъкъа ишарет къоймадынъыз.\n\nБойле алларда, керек олса, саифелерни къолнен ташымагъа я да бирлештирмеге меджбур олурсынъыз.",
"nov": "noy",
"dec": "dek",
"pagecategories": "{{PLURAL:$1|Saifeniñ kategoriyası|Saifeniñ kategoriyaları}}",
- "category_header": "\"$1\" kategoriyasındaki saifeler",
+ "category_header": "“$1” kategoriyasındaki saifeler",
"subcategories": "Alt kategoriyalar",
- "category-media-header": "\"$1\" kategoriyasındaki media faylları",
+ "category-media-header": "“$1” kategoriyasındaki media faylları",
"category-empty": "''İşbu kategoriyada iç bir saife ya da media fayl yoq.''",
"hidden-categories": "Gizli {{PLURAL:$1|kategoriya|kategoriyalar}}",
"hidden-category-category": "Gizli kategoriyalar",
"formerror": "Hata: formanıñ malümatını yollamaqnıñ iç çaresi yoq",
"badarticleerror": "Siz yapmağa istegen işlev bu saifede yapılıp olamay.",
"cannotdelete": "\"$1\" saife ya da faylı yoq etilip olamadı. Başqa bir qullanıcı tarafından yoq etilgen ola bile.",
- "cannotdelete-title": "\"$1\" saifesini yoq etmege olmaz",
+ "cannotdelete-title": "“$1” saifesini yoq etmege olmaz",
"delete-hook-aborted": "Yoq etüv çengel protsedurasınen toqtatıldı.\nİç bir izaat berilmedi.",
"badtitle": "Ruhsetsiz serleva",
"badtitletext": "İstenilgen saife adı doğru degil, o boştır, yahut tillerara bağlantı ya da vikilerara bağlantı doğru yazılmağan. Belki saife adında yasaqlanğan işaretler bar.",
"perfcachedts": "Aşağıdaki malümat keşten alındı, keşniñ soñki yañartılğan vaqtı: $1. Keşte eñ çoq {{PLURAL:$1|bir netice|$1 netice}} saqlanıp tura.",
"querypage-no-updates": "Bu saifeni deñiştirmege şimdi izin yoq. Bu malümat aman yañartılmaycaq.",
"viewsource": "Menba kodunı köster",
- "viewsource-title": "$1 saifesiniñ menba kodu",
+ "viewsource-title": "“$1” saifesiniñ menba kodu",
"actionthrottled": "Areket toqtaldı",
"actionthrottledtext": "Spamğa qarşı küreş sebebinden bu areketni az vaqıt içinde çoq kere tekrarlap olamaysıñız. Mümkün olğan qarardan ziyade areket yaptıñız. Bir qaç daqqadan soñ tekrarlap baqıñız.",
"protectedpagetext": "Bu saifede deñiştirme ya da başqa bir areket yapılmasın dep o blok etildi.",
"updated": "(Yañardı)",
"note": "'''İhtar:'''",
"previewnote": "'''Bu tek baqıp çıquv, metin alâ daa saqlanmağan!'''",
+ "continue-editing": "Deñiştirüv penceresine qayt",
"previewconflict": "Bu baqıp çıquv yuqarı tarir penceresindeki metinniñ saqlanuvdan soñ olacaq körünişini aks ete.",
"session_fail_preview": "''' Server siz yapqan deñiştirmelerni sessiya identifikatorı\ncoyulğanı sebebinden saqlap olamadı. Bu vaqtınca problemadır. Lütfen, tekrar saqlap baqıñız.\nBundan da soñ olıp çıqmasa, malümat lokal faylğa saqlañız da brauzeriñizni bir qapatıp\naçıñız.'''",
"session_fail_preview_html": "'''Afu etiñiz! HTML sessiyanıñ malümatları ğayıp olğanı sebebinden siziñ deñiştirmeleriñizni qabul etmege imkân yoqtır.'''",
"editing": "“$1” saifesini deñiştireyatasız",
"creating": "“$1” saifesini yaratuv",
"editingsection": "“$1” saifesinde bölük deñiştireyatasız",
- "editingcomment": "$1 saifesini deñiştireyatasız (yañı bölük)",
+ "editingcomment": "“$1” saifesini deñiştireyatasız (yañı bölük)",
"editconflict": "Deñiştirmeler çatışması: $1",
"explainconflict": "Siz saifeni deñiştirgende başqa biri de deñiştirme yaptı.\nYuqarıdaki yazı saifeniñ şimdiki alını köstere.\nSiziñ deñiştirmeleriñiz astında kösterildi. Şimdi yapqan deñiştirmeleriñizni aşağı pencereden yuqarı pencerege avuştırmaq kereksiñiz.\n\"{{int:savearticle}}\"ğa basqanda '''tek''' yuqarıdaki yazı saqlanacaq.",
"yourtext": "Siziñ metniñiz",
"randompage": "Tesadüfiy saife",
"randompage-nopages": "\"$1\" {{PLURAL:$2|isim fezasında|isim fezalarında}} iç bir saife yoq.",
"randomredirect": "Tesadüfiy yollama saifesi",
- "randomredirect-nopages": "\"$1\" isim fezasında iç bir yollama saifesi yoq.",
+ "randomredirect-nopages": "“$1” isim fezasında iç bir yollama saifesi yoq.",
"statistics": "Statistika",
"statistics-header-pages": "Saife statistikası",
"statistics-header-edits": "Deñiştirüv statistikası",
"protectlogpage": "Qorçalav jurnalı",
"protectlogtext": "Aşağıdaki, saifeni qorçalavğa aluv/qorçalavdan çıqaruv ile bağlı deñişmeler jurnalıdır.\nQorçalanğan saifeler [[Special:ProtectedPages|tam cedvelini]] de köre bilesiñiz.",
"protectedarticle": "\"[[$1]]\" qorçalav altına alındı",
- "modifiedarticleprotection": "\"[[$1]]\" içün qorçalav seviyesi deñiştirildi",
- "unprotectedarticle": "\"[[$1]]\" saifesinden qorçalav çıqarlıdı",
+ "modifiedarticleprotection": "“[[$1]]” içün qorçalav seviyesi deñiştirildi",
+ "unprotectedarticle": "“[[$1]]” saifesinden qorçalav çıqarlıdı",
"prot_1movedto2": "[[$1]] saifesiniñ adı [[$2]] dep deñiştirildi",
"protect-legend": "Qorçalavnı tasdıqla",
"protectcomment": "Sebep:",
"sp-contributions-newonly": "Tek yañı saife yaratqan deñiştirmelerni köster",
"sp-contributions-submit": "Qıdır",
"whatlinkshere": "Bu saifege bağlantılar",
- "whatlinkshere-title": "$1 saifesine bağlantı bergen saifeler",
+ "whatlinkshere-title": "“$1” saifesine bağlantı bergen saifeler",
"whatlinkshere-page": "Saife:",
"linkshere": "'''[[:$1]]''' saifesine bağlantı bergen saifeler:",
"nolinkshere": "'''[[:$1]]''' saifesine bağlantı bergen saife yoq.",
"ip_range_invalid": "Ruhsetsiz IP aralığı.",
"lockdb": "Malümat bazası kilitli",
"lockbtn": "Malümat bazası kilitli",
- "move-page": "$1 saifesiniñ adını deñiştireyatasız",
+ "move-page": "“$1” saifesiniñ adını deñiştireyatasız",
"move-page-legend": "Saifeniñ adını deñiştirüv",
"movepagetext": "Aşağıdaki forma qullanılıp saifeniñ adı deñiştirilir. Bunıñnen beraber deñiştirmeler jurnalı da yañı adğa avuştırılır.\nEski adı yañı adına yönetme olur. Eski serlevağa yönetip turğan saifelerni avtomatik olaraq yañartıp olasıñız. Bu areketni avtomatik yapmağa istemeseñiz, bütün [[Special:DoubleRedirects|çift]] ve [[Special:BrokenRedirects|yırtıq]] yönetme saifelerini özüñiz teşkermege mecbur olursıñız. Bağlantılar endiden berli doğru çalışmasından emin olmalısıñız.\n\nYañı adda bir saife endi bar olsa, ad deñiştirilüvi <strong>yapılmaycaq</strong>, ancaq bar olğan saife yönetme ya da boş olsa ad deñiştirilüvi mümkün olacaq. Bu demek ki, saifeniñ adını yañlıştan deñiştirgen olsañız deminki adını keri qaytarıp olasıñız, amma bar olğan saifeni tesadüfen yoq etamaysıñız.\n\n<strong>TENBİ!</strong>\nAd deñiştirilüvi populâr saifeler içün büyük ve beklenmegen deñişmelerge sebep ola bilir. Lütfen, deñiştirme yapmazdan evel ola bileceklerni köz ögüne alıñız.",
"movepagetalktext": "Qoşulğan muzakere saifesiniñ de (bar olsa) adı avtomatik tarzda deñiştirilecek. '''Müstesnalar:'''\n\n*Aynı bu isimde boş olmağan bir muzakere saifesi endi bar;\n*Aşağıdaki boşluqqa işaret qoymadıñız.\n\nBöyle allarda, kerek olsa, saifelerni qolnen taşımağa ya da birleştirmege mecbur olursıñız.",
"move-watch": "Bu saifeni közet",
"movepagebtn": "Adını deñiştir",
"pagemovedsub": "Saifeniñ adı deñiştirildi",
- "movepage-moved": "'''\"$1\" saifesiniñ adı \"$2\" olaraq deñiştirildi'''",
+ "movepage-moved": "'''“$1” saifesiniñ adı “$2” olaraq deñiştirildi'''",
"movepage-moved-redirect": "Bir yollama yaratıldı.",
"movepage-moved-noredirect": "Yollama yaratıluvı bastırıldı.",
"articleexists": "Bu adda bir saife endi bar ya da siz yazğan ad yasaqlı.\nLütfen, başqa bir ad saylap yazıñız.",
"sessionprovider-generic": "relace pomocí $1",
"sessionprovider-mediawiki-session-cookiesessionprovider": "relace pomocí cookies",
"sessionprovider-nocookies": "Možná jsou zakázány cookies. Ujistěte se, že máte cookies povoleny a zkuste to znovu.",
- "randomrootpage": "Náhodná kořenová stránka"
+ "randomrootpage": "Náhodná kořenová stránka",
+ "log-action-filter-block": "Typ zablokování:",
+ "log-action-filter-delete": "Typ smazání:",
+ "log-action-filter-patrol": "Typ prověření:",
+ "log-action-filter-protect": "Typ zamčení:",
+ "log-action-filter-upload": "Typ nahrání:",
+ "log-action-filter-all": "Všechny",
+ "log-action-filter-block-block": "Zablokování",
+ "log-action-filter-block-reblock": "Změna zablokování",
+ "log-action-filter-block-unblock": "Odblokování",
+ "log-action-filter-delete-delete": "Smazání stránky",
+ "log-action-filter-delete-restore": "Obnovení stránky",
+ "log-action-filter-delete-event": "Smazání záznamu",
+ "log-action-filter-delete-revision": "Smazání revize",
+ "log-action-filter-patrol-patrol": "Manuální prověření",
+ "log-action-filter-patrol-autopatrol": "Automatické prověření",
+ "log-action-filter-protect-protect": "Zamknutí",
+ "log-action-filter-protect-modify": "Změna zámku",
+ "log-action-filter-protect-unprotect": "Odemknutí",
+ "log-action-filter-upload-upload": "Nové načtení",
+ "log-action-filter-upload-overwrite": "Znovunačtení"
}
"special-characters-group-ipa": "Internationales Phonetisches Alphabet (IPA)",
"special-characters-group-symbols": "Symbole",
"special-characters-group-greek": "Griechisch",
+ "special-characters-group-greekextended": "Erweitertes Griechisch",
"special-characters-group-cyrillic": "Kyrillisch",
"special-characters-group-arabic": "Arabisch",
"special-characters-group-arabicextended": "Arabisch, erweitert",
"noemail": "There is no email address recorded for user \"$1\".",
"noemailcreate": "You need to provide a valid email address.",
"passwordsent": "A new password has been sent to the email address registered for \"$1\".\nPlease log in again after you receive it.",
- "blocked-mailpassword": "Your IP address is blocked from editing, and so is not allowed to use the password recovery function to prevent abuse.",
+ "blocked-mailpassword": "Your IP address is blocked from editing. To prevent abuse, it is not allowed to use password recovery from this IP address.",
"eauthentsent": "A confirmation email has been sent to the specified email address.\nBefore any other email is sent to the account, you will have to follow the instructions in the email, to confirm that the account is actually yours.",
"throttled-mailpassword": "A password reset email has already been sent, within the last {{PLURAL:$1|hour|$1 hours}}.\nTo prevent abuse, only one password reset email will be sent per {{PLURAL:$1|hour|$1 hours}}.",
"signupstart": "",
"uploadstash-summary": "This page provides access to files that are uploaded or in the process of uploading, but are not yet published to the wiki. These files are not visible to anyone but the user who uploaded them.",
"uploadstash-clear": "Clear stashed files",
"uploadstash-nofiles": "You have no stashed files.",
- "uploadstash-badtoken": "Performing that action failed. Perhaps because your editing credentials expired. Please try again.",
+ "uploadstash-badtoken": "Performing that action failed, perhaps because your editing credentials expired. Please try again.",
"uploadstash-errclear": "Clearing the files failed.",
"uploadstash-refresh": "Refresh the list of files",
"uploadstash-thumbnail": "view thumbnail",
"unblock-summary": "",
"blockip": "Block {{GENDER:$1|user}}",
"blockip-legend": "Block user",
- "blockiptext": "Use the form below to block write access from a specific IP address or username.\nThis should be done only to prevent vandalism, and in accordance with [[{{MediaWiki:Policy-url}}|policy]].\nFill in a specific reason below (for example, citing particular pages that were vandalized).\nYou can block IP ranges using the [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR] syntax; the largest allowed range is /$1 for IPv4 and /$2 for IPv6.",
+ "blockiptext": "Use the form below to block write access from a specific IP address or username.\nThis should be done only to prevent vandalism, and in accordance with [[{{MediaWiki:Policy-url}}|policy]].\nFill in a specific reason below (for example, citing particular pages that were vandalized).\nYou can block IP address ranges using the [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR] syntax; the largest allowed range is /$1 for IPv4 and /$2 for IPv6.",
"ipaddressorusername": "IP address or username:",
"ipbexpiry": "Expiration:",
"ipbreason": "Reason:",
"ipb-unblock": "Unblock a username or IP address",
"ipb-blocklist": "View existing blocks",
"ipb-blocklist-contribs": "Contributions for {{GENDER:$1|$1}}",
+ "ipb-blocklist-duration-left": "$1 left",
"unblockip": "Unblock user",
"unblockiptext": "Use the form below to restore write access to a previously blocked IP address or username.",
"ipusubmit": "Remove this block",
"unblock-hideuser": "You cannot unblock this user, as their username has been hidden.",
"ipb_cant_unblock": "Error: Block ID $1 not found. It may have been unblocked already.",
"ipb_blocked_as_range": "Error: The IP address $1 is not blocked directly and cannot be unblocked.\nIt is, however, blocked as part of the range $2, which can be unblocked.",
- "ip_range_invalid": "Invalid IP range.",
+ "ip_range_invalid": "Invalid IP address range.",
"ip_range_toolarge": "Range blocks larger than /$1 are not allowed.",
"proxyblocker": "Proxy blocker",
"proxyblockreason": "Your IP address has been blocked because it is an open proxy.\nPlease contact your Internet service provider or technical support of your organization and inform them of this serious security problem.",
"logentry-protect-protect-cascade": "$1 {{GENDER:$2|protected}} $3 $4 [cascading]",
"logentry-protect-modify": "$1 {{GENDER:$2|changed}} protection level for $3 $4",
"logentry-protect-modify-cascade": "$1 {{GENDER:$2|changed}} protection level for $3 $4 [cascading]",
- "logentry-rights-rights": "$1 {{GENDER:$2|changed}} group membership for $3 from $4 to $5",
+ "logentry-rights-rights": "$1 {{GENDER:$2|changed}} group membership for {{GENDER:$3|$3}} from $4 to $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|changed}} group membership for $3",
"logentry-rights-autopromote": "$1 was automatically {{GENDER:$2|promoted}} from $4 to $5",
"logentry-upload-upload": "$1 {{GENDER:$2|uploaded}} $3",
"special-characters-group-ipa": "IPA",
"special-characters-group-symbols": "Symbols",
"special-characters-group-greek": "Greek",
+ "special-characters-group-greekextended": "Greek extended",
"special-characters-group-cyrillic": "Cyrillic",
"special-characters-group-arabic": "Arabic",
"special-characters-group-arabicextended": "Arabic extended",
"YoViajo",
"Asierog",
"Mgpena",
- "Transonlohk"
+ "Transonlohk",
+ "Eloy"
]
},
"tog-underline": "Subrayar los enlaces:",
"nocookieslogin": "{{SITENAME}} utiliza <em>cookies</em> para la autenticación de usuarios. Las <em>cookies</em> están desactivadas en tu navegador. Por favor, actívalas e inténtalo de nuevo.",
"nocookiesfornew": "No se pudo crear la cuenta de usuario, porque no pudimos confirmar su origen.\nAsegúrate de que tienes las cookies activadas, luego recarga esta página e inténtalo de nuevo.",
"noname": "No se ha especificado un nombre de usuario válido.",
- "loginsuccesstitle": "Has accedido correctamente",
+ "loginsuccesstitle": "Has accedido",
"loginsuccess": "<strong>Has accedido a {{SITENAME}} como «$1».</strong>",
"nosuchuser": "No existe ningún usuario llamado «$1».\nLos nombres de usuario son sensibles a las mayúsculas.\nRevisa tu ortografía, o [[Special:UserLogin/signup|crea una cuenta nueva]].",
"nosuchusershort": "No existe ningún usuario llamado «$1». Comprueba que lo has escrito correctamente.",
"botpasswords-label-delete": "Borrar",
"botpasswords-label-resetpassword": "Restablecer la contraseña",
"botpasswords-label-grants": "Permisos aplicables:",
+ "botpasswords-help-grants": "Cada concesión le da acceso a los permisos listados que el usuario ya posea. Véase la [[Special:ListGrants|lista de concesiones]] para más información.",
"botpasswords-label-restrictions": "Restricciones de uso:",
"botpasswords-label-grants-column": "Concedido",
"botpasswords-bad-appid": "El nombre del bot \"$1\" no es válido.",
"mergehistory-empty": "No hay revisiones fusionables.",
"mergehistory-done": "Se {{PLURAL:$3|fusionó una revisión|fusionaron $3 revisiones}} de $1 en [[:$2]].",
"mergehistory-fail": "No se puede realizar la fusión de historiales, por favor revisa la página y los parámetros de tiempo.",
+ "mergehistory-fail-bad-timestamp": "La marca de tiempo no es válida.",
"mergehistory-fail-invalid-source": "La página de origen no es válida.",
"mergehistory-fail-invalid-dest": "La página de destino no es válida.",
+ "mergehistory-fail-no-change": "La fusión historiales no fusionó ninguna revisión. Vuelve a comprobar los parámetros de página y tiempo.",
"mergehistory-fail-permission": "Permisos insuficientes para fusionar el historial.",
"mergehistory-fail-self-merge": "Las páginas de origen y destino son la misma.",
"mergehistory-fail-toobig": "No se puede fusionar el historial ya que más del límite de $1 {{PLURAL:$1|revisión|revisiones}} se moverían.",
"uploaded-script-svg": "Se encontró el elemento habilitado para secuencias de órdenes «$1» en el archivo SVG cargado.",
"uploaded-hostile-svg": "Se encontró código CSS no seguro en el elemento de estilo del archivo SVG cargado.",
"uploaded-event-handler-on-svg": "No está permitido configurar atributos controladores de eventos <code>$1=\"$2\"</code> en los archivos SVG.",
- "uploaded-href-unsafe-target-svg": "Se encontró un \"href\" hacia un destino inseguro <code><$1 $2=\"$3\"></code> en el archivo SVG cargado.",
+ "uploaded-href-attribute-svg": "Los atributos <code>href</code> en archivos SVG sólo tienen permitido enlazar a objetivos http:// o https://, se encontró <code><$1 $2=\"$3\"></code>.",
+ "uploaded-href-unsafe-target-svg": "Se encontró un <code>href</code> hacia un destino inseguro <code><$1 $2=\"$3\"></code> en el archivo SVG cargado.",
"uploaded-animate-svg": "Se encontró un etiqueta \"animate\" que puede estar cambiando \"href\", mediante el atributo \"from\" <code><$1 $2=\"$3\"></code> en el archivo SVG cargado.",
"uploaded-setting-event-handler-svg": "Está bloqueada la configuración de atributos controladores de eventos. Se encontró <code><$1 $2=\"$3\"></code> en el archivo SVG cargado.",
"uploaded-setting-href-svg": "Está bloqueado el uso de la etiqueta \"set\" para añadir un atributo \"href\" al elemento padre.",
"upload-options": "Opciones de subida",
"watchthisupload": "Vigilar este archivo",
"filewasdeleted": "Un archivo con este nombre se subió con anterioridad y posteriormente ha sido borrado. Deberías revisar el $1 antes de subirlo de nuevo.",
+ "filename-thumb-name": "Esto luce como el título de una miniatura. Por favor, no vuelva a subir miniaturas a la misma wiki. Si no es el caso, por favor corrija el nombre del archivo por uno que tenga más sentido, y no tenga el prefijo de miniatura.",
"filename-bad-prefix": "El nombre del archivo que estás subiendo comienza por <strong>«$1»</strong>, un nombre nada descriptivo de su contenido. Es un típico nombre de los que asignan automáticamente las cámaras digitales.\nElige un nombre más descriptivo para tu archivo.",
"filename-prefix-blacklist": " #<!-- deja esta línea exactamente como está --> <pre>\n# La sintaxis de esta página es la siguiente:\n# * Todo texto que se encuentre después del carácter \"#\" hasta el final de la línea se tratará como un comentario y será ignorado\n# * Cualquier línea que no esté en blanco será interpretada como un prefijo típico en nombres de archivo que suelen asignar automáticamente las cámaras digitales\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # algunos teléfonos móviles / celulares\nIMG # genérico\nJD # Jenoptik\nMGP # Pentax\nPICT # misc.\n #</pre> <!-- deja esta línea exactamente como está -->",
"upload-proto-error": "Protocolo incorrecto",
"apihelp": "Ayuda de la API",
"apihelp-no-such-module": "No se encontró el módulo \"$1\".",
"apisandbox": "Zona de pruebas API",
+ "apisandbox-jsonly": "Se requiere JavaScript para utilizar la zona de pruebas de API.",
"apisandbox-api-disabled": "La API está desactivada en este sitio.",
- "apisandbox-intro": "Usa esta página para experimentar con la '''API de servicio web de MediaWiki'''.\nPara más detalles sobre el uso de la API, visita [//www.mediawiki.org/wiki/API:Main_page su documentación]. Ejemplo: [//www.mediawiki.org/wiki/API#A_simple_example obtener el contenido de una Página principal]. Selecciona una acción para ver más ejemplos.\n\nObserva que, aunque sea una página de pruebas, las acciones que realices en esta página pueden modificar el wiki.",
+ "apisandbox-intro": "Usa esta página para experimentar con la <strong>API de servicio web de MediaWiki</strong>.\nPara más detalles sobre el uso de la API, visita [[mw:API:Main page|su documentación]]. Ejemplo: [//www.mediawiki.org/wiki/API#A_simple_example obtener el contenido de una Página principal]. Selecciona una acción para ver más ejemplos.\n\nObserva que, aunque sea una página de pruebas, las acciones que realices en esta página pueden modificar el wiki.",
"apisandbox-fullscreen": "Expandir panel",
+ "apisandbox-fullscreen-tooltip": "Expande el panel de la zona de pruebas hasta llenar la ventana del navegador.",
"apisandbox-unfullscreen": "Mostrar página",
+ "apisandbox-unfullscreen-tooltip": "Reduce el panel de la zona de pruebas, para que los enlaces de navegación MediaWiki estén disponibles.",
"apisandbox-submit": "Realizar solicitud",
"apisandbox-reset": "Limpiar",
"apisandbox-retry": "Reintentar",
"apisandbox-dynamic-parameters-add-placeholder": "Nombre del parámetro",
"apisandbox-dynamic-error-exists": "Ya existe un parámetro llamado \"$1\".",
"apisandbox-deprecated-parameters": "Parámetros desaconsejados",
+ "apisandbox-fetch-token": "Auto-llenar el token",
"apisandbox-submit-invalid-fields-title": "Algunos campos no son válidos",
"apisandbox-submit-invalid-fields-message": "Por favor, corrige los campos señalados e inténtalo de nuevo.",
"apisandbox-results": "Resultados",
"listgrouprights-namespaceprotection-header": "Restricciones del espacio de nombres",
"listgrouprights-namespaceprotection-namespace": "Espacio de nombres",
"listgrouprights-namespaceprotection-restrictedto": "Derechos de usuario para editar",
- "listgrants": "Subvenciones",
+ "listgrants": "Concesiones",
+ "listgrants-summary": "La siguiente es una lista de concesiones con sus permisos de usuario asociados. Los usuarios pueden autorizar aplicaciones para que usen sus cuentas, pero con permisos limitados basados en las concesiones que el usuario le dio a la aplicación. De todas formas, una aplicación actuando a nombre de un usuario no puede hacer uso de permisos que el usuario no posea.\nPuede haber [[{{MediaWiki:Listgrouprights-helppage}}|información adicional]] sobre permisos individuales.",
"listgrants-grant": "Conceder",
"listgrants-rights": "Derechos",
"trackingcategories": "Categorías de seguimiento",
"special-characters-group-ipa": "AFI",
"special-characters-group-symbols": "Símbolos",
"special-characters-group-greek": "Griego",
+ "special-characters-group-greekextended": "Griego extendido",
"special-characters-group-cyrillic": "Cirílico",
"special-characters-group-arabic": "Árabe",
"special-characters-group-arabicextended": "Arábico extendido",
"log-action-filter-patrol-autopatrol": "Verificación automática",
"log-action-filter-protect-protect": "Protección",
"log-action-filter-protect-modify": "Modificación de protección",
- "log-action-filter-protect-unprotect": "Desproteccion",
+ "log-action-filter-protect-unprotect": "Desprotección",
"log-action-filter-upload-upload": "Subida nueva",
"log-action-filter-upload-overwrite": "Volver a subir"
}
"statistics-header-hooks": "Muut tilastot",
"statistics-articles": "Sisältösivuja",
"statistics-pages": "Sivuja",
- "statistics-pages-desc": "Kaikki sivut, sisältäen keskustelusivut, ohjaukset ja muut.",
+ "statistics-pages-desc": "Kaikki wikissä olevat sivut, mukaan lukien keskustelusivut, ohjaussivut ynnä muut.",
"statistics-files": "Tallennettuja tiedostoja",
"statistics-edits": "Muokkauksia {{GRAMMAR:genitive|{{SITENAME}}}} perustamisen jälkeen",
- "statistics-edits-average": "Keskimäärin yhtä sivua muokattu",
+ "statistics-edits-average": "Muokkausten keskiarvo yhdellä sivulla",
"statistics-users": "Rekisteröityneitä [[Special:ListUsers|käyttäjiä]]",
"statistics-users-active": "Aktiivisia käyttäjiä",
"statistics-users-active-desc": "Käyttäjät, jotka ovat suorittaneet jonkin toiminnon {{PLURAL:$1|edellisen päivän|edellisten $1 päivän}} aikana.",
"special-characters-group-ipa": "API",
"special-characters-group-symbols": "symboles",
"special-characters-group-greek": "grec",
+ "special-characters-group-greekextended": "Grec étendu",
"special-characters-group-cyrillic": "cyrillique",
"special-characters-group-arabic": "arabe",
"special-characters-group-arabicextended": "arabe étendu",
"exif-compression-6": "JPEG (viely)",
"exif-copyrighted-true": "Protègiê per los drêts d’ôtor",
"exif-copyrighted-false": "Ètat des drêts d’ôtor pas dèfeni",
+ "exif-photometricinterpretation-1": "Nêr et blanc (0 por lo nêr)",
"exif-unknowndate": "Dâta encognua",
"exif-orientation-1": "Normala",
- "exif-orientation-2": "Envèrsâ d’aplan",
- "exif-orientation-3": "Veriê de 180°",
- "exif-orientation-4": "Envèrsâ d’aplomb",
- "exif-orientation-5": "Veriê de 90° dens la dirèccion antihorèra et envèrsâ d’aplomb",
- "exif-orientation-6": "Veriê de 90° dens la dirèccion antihorèra",
- "exif-orientation-7": "Veriê de 90° dens la dirèccion horèra et envèrsâ d’aplomb",
- "exif-orientation-8": "Veriê de 90° dens la dirèccion horèra",
- "exif-planarconfiguration-1": "Balyês ategnentes",
- "exif-planarconfiguration-2": "Balyês sèparâs",
+ "exif-orientation-2": "Envèrsâye d’aplan",
+ "exif-orientation-3": "Veriêe de 180°",
+ "exif-orientation-4": "Envèrsâye d’aplomb",
+ "exif-orientation-5": "Veriêe de 90° du fllanc antihorèro et envèrsâye d’aplomb",
+ "exif-orientation-6": "Veriêe de 90° du fllanc antihorèro",
+ "exif-orientation-7": "Veriêe de 90° du fllanc horèro et envèrsâye d’aplomb",
+ "exif-orientation-8": "Veriêe de 90° du fllanc horèro",
+ "exif-planarconfiguration-1": "format en bocons",
+ "exif-planarconfiguration-2": "format plan",
"exif-colorspace-65535": "Pas calibrâ",
- "exif-componentsconfiguration-0": "Ã\88gziste pas",
+ "exif-componentsconfiguration-0": "ègziste pas",
"exif-componentsconfiguration-5": "V",
"exif-exposureprogram-0": "Pas dèfeni",
- "exif-exposureprogram-1": "Manuèl",
+ "exif-exposureprogram-1": "Manuâl",
"exif-exposureprogram-2": "Programo normal",
"exif-exposureprogram-3": "Prioritât a l’uvèrtura",
"exif-exposureprogram-4": "Prioritât a l’ètopior",
"exif-exposureprogram-5": "Programo crèacion (prèference a la provondior de champ)",
"exif-exposureprogram-6": "Programo accion (prèference a la vitèsse d’ètopâ)",
- "exif-exposureprogram-7": "Fôrma portrèt (por clich·ês de prés avouéc fond pas nèt)",
- "exif-exposureprogram-8": "Fôrma payisâjo (por des clich·ês de payisâjos nèts)",
- "exif-subjectdistance-value": "$1 mètre{{PLURAL:$1||s}}",
+ "exif-exposureprogram-7": "Fôrma portrèt (por visions de prés avouéc dèrriér troblo)",
+ "exif-exposureprogram-8": "Fôrma payisâjo (por visions de payisâjos avouéc dèrriér nèt)",
+ "exif-subjectdistance-value": "$1 mètro{{PLURAL:$1||s}}",
"exif-meteringmode-0": "Encognua",
"exif-meteringmode-1": "Moyena",
- "exif-meteringmode-2": "Moyena èquilibrâ u centro",
+ "exif-meteringmode-2": "Moyena d’aplomb u centro",
"exif-meteringmode-3": "Pouent",
"exif-meteringmode-4": "MultiPouent",
"exif-meteringmode-5": "Modèlo",
"special-characters-group-ipa": "IPA",
"special-characters-group-symbols": "Símbolos",
"special-characters-group-greek": "Grego",
+ "special-characters-group-greekextended": "Grego estendido",
"special-characters-group-cyrillic": "Cirílico",
"special-characters-group-arabic": "Árabe",
"special-characters-group-arabicextended": "Árabe estendido",
"noemail": "לא רשומה כתובת דואר אלקטרוני עבור ה{{GENDER:$1|משתמש|משתמשת}} \"$1\".",
"noemailcreate": "יש לספק כתובת דואר אלקטרוני תקינה.",
"passwordsent": "סיסמה חדשה נשלחה לכתובת הדואר האלקטרוני הרשומה עבור \"$1\".\nאנא היכנסו חזרה לאתר אחרי שתקבלו אותה.",
- "blocked-mailpassword": "כתובת ה־IP שלך נחסמה מעריכה, ולפיכך אינך מורשה להשתמש באפשרות שחזור הסיסמה, וזאת כדי למנוע ניצול לרעה של התכונה.",
+ "blocked-mailpassword": "כתובת ה־IP שלך נחסמה מעריכה. אינך מורשה להשתמש באפשרות שחזור הסיסמה, וזאת כדי למנוע ניצול לרעה של התכונה.",
"eauthentsent": "דוא\"ל אימות נשלח לכתובת הדוא\"ל שצוינה.\nלפני שדברי דוא\"ל אחרים יישלחו לחשבון הזה, יהיה עליכם לפעול לפי ההוראות בדוא\"ל, כדי לאשר שהחשבון אכן שייך לכם.",
"throttled-mailpassword": "כבר נשלח דוא\"ל לאיפוס הסיסמה ב{{PLURAL:$1|שעה האחרונה|שעתיים האחרונות|־$1 השעות האחרונות}}.\nכדי למנוע ניצול לרעה, יכול להישלח רק דוא\"ל אחד כזה בכל {{PLURAL:$1|שעה|שעתיים|$1 שעות}}.",
"mailerror": "שגיאה בשליחת דואר: $1",
"mergelogpagetext": "זוהי רשימה של המיזוגים האחרונים של גרסאות מדף אחד לתוך דף שני.",
"history-title": "היסטוריית גרסאות של הדף \"$1\"",
"difference-title": "הבדלים בין גרסאות בדף \"$1\"",
- "difference-title-multipage": "×\94×\91×\93×\9c×\99×\9d ×\91×\99×\9f ×\94×\93×£ \"$1\" ×\9c×\91×\99×\9f ×\94×\93×£ \"$2\"",
+ "difference-title-multipage": "הבדלים בין הדף \"$1\" לדף \"$2\"",
"difference-multipage": "(הבדלים בין דפים)",
"lineno": "שורה $1:",
"compareselectedversions": "השוואת הגרסאות שנבחרו",
"log-edit-tags": "עריכת התגיות של רשומות היומן שנבחרו",
"checkbox-select": "בחירה: $1",
"checkbox-all": "הכול",
- "checkbox-none": "×\9c×\90 ×\9b×\9c×\95×\9d",
- "checkbox-invert": "×\9c×\94פ×\95×\9a",
+ "checkbox-none": "כלום",
+ "checkbox-invert": "×\94פ×\99×\9b×\94",
"allpages": "כל הדפים",
"nextpage": "הדף הבא ($1)",
"prevpage": "הדף הקודם ($1)",
"allpagesfrom": "הצגת דפים החל מ:",
"allpagesto": "הצגת דפים עד:",
"allarticles": "כל הדפים",
- "allinnamespace": "כל הדפים (מרחב שם $1)",
+ "allinnamespace": "×\9b×\9c ×\94×\93פ×\99×\9d (×\9eר×\97×\91 ×\94ש×\9d $1)",
"allpagessubmit": "הצגה",
"allpagesprefix": "הדפים ששמם מתחיל ב־:",
"allpagesbadtitle": "כותרת הדף שניתנה הייתה בלתי־תקינה או שהייתה בה קידומת של קישור לשפה אחרת או לוויקי אחר.\nייתכן שהיא מכילה תו אחד או יותר האסורים לשימוש בכותרות.",
"movepage-moved-redirect": "נוצרה הפניה.",
"movepage-moved-noredirect": "יצירת ההפניה בוטלה.",
"articleexists": "קיים כבר דף באותו שם, או שהשם שבחרת אינו תקין.\nנא לבחור שם אחר.",
- "cantmove-titleprotected": "×\90×\99× ×\9a ×\9e×\95רש×\94 ×\9c×\94×¢×\91×\99ר ×\90ת ×\94×\93×£ ×\9cש×\9d ×\96×\94 ×\9b×\99×\95×\95×\9f ש×\94ש×\9d ×\94×\97×\93ש ×\9e×\95×\92×\9f ×\9e×¤× ×\99 ×\99צ×\99ר×\94",
+ "cantmove-titleprotected": "×\90×\99×\9f ×\91×\90פשר×\95ת×\9b×\9d ×\9c×\94×¢×\91×\99ר ×\90ת ×\94×\93×£ ×\9cש×\9d ×\96×\94 ×\9eש×\95×\9d ש×\94ש×\9d ×\94×\97×\93ש ×\9e×\95×\92×\9f ×\9e×¤× ×\99 ×\99צ×\99ר×\94.",
"movetalk": "העברה גם של דף השיחה",
"move-subpages": "העברת כל דפי המשנה (עד $1)",
"move-talk-subpages": "העברת כל דפי המשנה של דף השיחה (עד $1)",
"logentry-import-upload": "$1 {{GENDER:$2|ייבא|ייבאה}} את $3 באמצעות העלאת קובץ",
"logentry-import-upload-details": "$1 {{GENDER:$2|ייבא|ייבאה}} את $3 באמצעות העלאת קובץ ({{PLURAL:$4|גרסה אחת|$4 גרסאות}})",
"logentry-import-interwiki": "$1 {{GENDER:$2|ייבא|ייבאה}} את $3 מאתר ויקי אחר",
- "logentry-import-interwiki-details": "$1 {{GENDER:$2|ייבא|ייבאה}} את $3 מ־$5 ({{PLURAL:$4|גרסה אחת|$4 גרסאות}})‏",
+ "logentry-import-interwiki-details": "$1 {{GENDER:$2|ייבא|ייבאה}} את $3 מ־$5‏ ({{PLURAL:$4|גרסה אחת|$4 גרסאות}})‏",
"logentry-merge-merge": "$1 {{GENDER:$2|מיזג|מיזגה}} את $3 לתוך $4 (גרסאות עד $5)",
- "logentry-move-move": "$1 {{GENDER:$2|העביר|העבירה}} את הדף $3 ל{{GRAMMAR:תחילית|$4}}",
+ "logentry-move-move": "$1 {{GENDER:$2|העביר|העבירה}} את הדף $3 ל{{GRAMMAR:תחילית|$4}}‏",
"logentry-move-move-noredirect": "$1 {{GENDER:$2|העביר|העבירה}} את הדף $3 ל{{GRAMMAR:תחילית|$4}} בלי להשאיר הפניה",
"logentry-move-move_redir": "$1 {{GENDER:$2|העביר|העבירה}} את הדף $3 ל{{GRAMMAR:תחילית|$4}} תוך דריסת הפניה",
"logentry-move-move_redir-noredirect": "$1 {{GENDER:$2|העביר|העבירה}} את הדף $3 ל{{GRAMMAR:תחילית|$4}} תוך דריסת הפניה ובלי להשאיר הפניה",
"special-characters-group-ipa": "אלפבית פונטי בינלאומי (IPA)",
"special-characters-group-symbols": "סימנים",
"special-characters-group-greek": "יווני",
+ "special-characters-group-greekextended": "יוונית מורחבת",
"special-characters-group-cyrillic": "קירילי",
"special-characters-group-arabic": "ערבי",
"special-characters-group-arabicextended": "ערבי מורחב",
"जनक राज भट्ट",
"YmKavishwar",
"Upendradutt93",
- "Nemo bis"
+ "Nemo bis",
+ "Wassan.anmol"
]
},
"tog-underline": "कड़ियाँ अधोरेखन:",
"laggedslavemode": "'''चेतावनी:''' यह पृष्ठ अद्यतनीत जानकारी-युक्त ना होने की आशंका है।",
"readonly": "डाटाबेस लॉक किया हुआ है",
"enterlockreason": "लॉक करने का कारण दीजिए, साथ ही लॉक खुलने के समय का लगभग आकलन दीजिये।",
- "readonlytext": "शायद मेंटेनन्स के चलते डाटाबेस नये संपादन और अन्य बदलावों से लॉक किया गया है, जिसके बाद यह सामान्य स्थिति में आ जाना चाहिये।\n\nजिस प्रबंधक ने यह लॉक किया था उसने यह कारण दिया है: $1",
+ "readonlytext": "शायद मà¥\87à¤\82à¤\9fà¥\87ननà¥\8dस à¤\95à¥\87 à¤\9aलतà¥\87 डाà¤\9fाबà¥\87स नयà¥\87 सà¤\82पादन à¤\94र à¤\85नà¥\8dय बदलावà¥\8bà¤\82 सà¥\87 लà¥\89à¤\95 à¤\95िया à¤\97या हà¥\88, à¤\9cिसà¤\95à¥\87 बाद यह सामानà¥\8dय सà¥\8dथिति मà¥\87à¤\82 à¤\86 à¤\9cाना à¤\9aाहियà¥\87।\n\nà¤\9cिस à¤\95ारà¥\8dयà¤\95ारà¥\80 पà¥\8dरबà¤\82धà¤\95 नà¥\87 यह लà¥\89à¤\95 à¤\95िया था à¤\89सनà¥\87 यह à¤\95ारण दिया हà¥\88: $1",
"missing-article": "डाटाबेस में $2 के अंदर कहीं भी \"$1\" नहीं मिला।\n\nआम तौर पर हटाए जा चुके पृष्ठ की इतिहास कड़ी का प्रयोग करने पर ऐसा होता है।\n\nअगर ऐसा नहीं है, तो शायद आपने सॉफ़्टवेयर में त्रुटि खोज ली है।\nकृपया यू॰आर॰एल पते समेत किसी [[Special:ListUsers/sysop|प्रबंधक]] को इसका ब्यौरा दें।",
"missingarticle-rev": "(अवतरण#: $1)",
"missingarticle-diff": "(अंतर: $1, $2)",
"mypreferencesprotected": "आपके पास अपनी वरीयताएँ बदलने की अनुमति नहीं है।",
"ns-specialprotected": "विशेष पृष्ठ सम्पादित नहीं किये जा सकते।",
"titleprotected": "सदस्य [[User:$1|$1]] ने इस शीर्षक का पृष्ठ बनाने से सुरक्षित किया हुआ है।\nइसके लिये निम्न कारण दिया गया है: <em>$2</em>",
- "filereadonlyerror": "\"$1\" फ़ाइल को बदलने में असक्षम क्योंकि भण्डार \"$2\" इस समय 'केवल पाठन हेतु' (रीड ओनली) है।\n\nजिस प्रबंधक ने ये प्रबंध लगाया है उन्होंने निम्न विवरण प्रदान किया है: \"$3\"।",
+ "filereadonlyerror": "\"$1\" फ़ाà¤\87ल à¤\95à¥\8b बदलनà¥\87 मà¥\87à¤\82 à¤\85सà¤\95à¥\8dषम à¤\95à¥\8dयà¥\8bà¤\82à¤\95ि à¤à¤£à¥\8dडार \"$2\" à¤\87स समय 'à¤\95à¥\87वल पाठन हà¥\87तà¥\81' (रà¥\80ड à¤\93नलà¥\80) हà¥\88।\n\nà¤\9cिस à¤\95ारà¥\8dयà¤\95ारà¥\80 पà¥\8dरबà¤\82धà¤\95 नà¥\87 यà¥\87 पà¥\8dरबà¤\82ध लà¤\97ाया हà¥\88 à¤\89नà¥\8dहà¥\8bà¤\82नà¥\87 निमà¥\8dन विवरण पà¥\8dरदान à¤\95िया हà¥\88: \"$3\"।",
"invalidtitle-knownnamespace": "\"$2\" नामस्थान और \"$3\" नाम वाला गलत शीर्षक",
"invalidtitle-unknownnamespace": "अज्ञात नामस्थान संख्या $1 और नाम \"$2\" वाला गलत शीर्षक",
"exception-nologin": "लॉग इन नहीं किया है",
"continue-editing": "संपादन क्षेत्र को जाएँ",
"previewconflict": "यह झलक ऊपरी पाठ सम्पादन क्षेत्र में हुए बदलाव दिखाती है, और यदि आप अभी संजोते हैं तो यही पाठ संजोया जाएगा।",
"session_fail_preview": "'''क्षमा करें! सेशन डाटा के नष्ट होने के कारण आपके बदलाव संजोये नहीं जा सके।'''\nकृपया पुन: यत्न करें। अगर इसके बाद भी ऐसा ही होता है तो कृपया [[Special:UserLogout|लॉग आउट]] कर के पुनः लॉग इन करें।",
- "session_fail_preview_html": "'''क्षमा करें! सेशन डाटा के नष्ट होने के कारण आपके बदलाव संजोये नहीं जा सके।'''\n\n''चूँकि {{SITENAME}} पर raw HTML सक्षम है, जावास्क्रिप्ट हमलों से बचाव के लिये झलक नहीं दिखाई गई है।''\n\n'''अगर यह आपका वैध संपादन यत्न था, तो कृपया पुनः यत्न करें।'''\nअगर इसके बाद भी ऐसा ही होता है तो कृपया [[Special:UserLogout|लॉग आउट]] कर के पुनः लॉग इन करें।",
+ "session_fail_preview_html": "क्षमा करें! सेशन डाटा के नष्ट होने के कारण आपके बदलाव संजोये नहीं जा सके।\n\n<em>चूँकि {{SITENAME}} पर raw HTML सक्षम है, जावास्क्रिप्ट हमलों से बचाव के लिये झलक नहीं दिखाई गई है।</em>\n\n<strong>अगर यह आपका वैध संपादन यत्न था, तो कृपया पुनः यत्न करें।</strong>\nअगर इसके बाद भी ऐसा ही होता है तो कृपया [[Special:UserLogout|लॉग आउट]] कर के पुनः लॉग इन करें तथा जांचिए यदि आपका ब्राउज़र इस साइट से कुकीज़ की अनुमति देता है।",
"token_suffix_mismatch": "'''आपके द्वारा किये गये बदलाव रद्द कर दिये गये हैं क्योंकि आपके क्लायंट ने आपके संपादन टोकन में दिये हुए विरामचिन्हों में बदलाव किये हैं।'''\nलेख के पाठ में खराबी ना आये इसलिये आपके बदलाव रद्द कर दिये गये हैं।\nऐसा तब भी हो सकता है यदि आप कोई खराब वेब-आधारित अनामक प्रौक्सी प्रयोग कर रहे हों।",
"edit_form_incomplete": "'''सम्पादन फ़ॉर्म के कुछ भाग सर्वर तक नहीं पहुँच पाए; जाँच लें कि आपके द्वारा किये बदलाव अक्षुण्ण हैं, और सहेजने का पुनः यत्न करें।'''",
"editing": "$1 सम्पादन",
"copyrightwarning2": "{{SITENAME}} पर किया कोई भी योगदान अन्य सदस्यों द्वारा बदला जा सकता है और हटाया भी जा सकता है।\nअगर आपको अपने लिखे हुए पाठ में संपादन होना नामंजूर है तो यहाँ पर न लिखें।<br />\nआप हमें यह भी वचन देतें हैं कि यह आपने स्वयं लिखा है अथवा सार्वजनिक क्षेत्र या किसी समान मुक्त स्रोत से प्रतिलिपित किया है (अधिक जानकारी के लिये $1 देखें)।\n'''कॉपीराइट सुरक्षित कार्यों को बिना अनुमति के यहाँ न डालें!'''",
"editpage-cannot-use-custom-model": "इस पृष्ठ का मुख्य सामग्री परिवर्तित नहीं हुआ।",
"longpageerror": "'''त्रुटि: आपका दिया हुआ पाठ {{PLURAL:|$1 किलोबाइट|$1 किलोबाइट}} लंबा है, जो {{PLURAL:|$2 किलोबाइट|$2 किलोबाइट}} की सीमा से बाहर है।\nइसे संजोया नहीं जा सकता।'''",
- "readonlywarning": "'''सावधान: डाटाबेस को रख-रखाव के लिये बंद कर दिया गया है, इसलिये अभी आपके बदलाव संजोए नहीं जा सकते।\nअगर आप चाहें तो इस सामग्री को बाद के लिए कॉपी-पेस्ट कर के किसी टेक्स्ट फ़ाइल में रख सकते हैं।'''\n\nबंद करने वाले प्रबंधक ने बंद करने का यह कारण दिया है: $1",
+ "readonlywarning": "<strong>सावधान: डाटाबेस को रख-रखाव के लिये बंद कर दिया गया है, इसलिये अभी आपके बदलाव संजोए नहीं जा सकते।\nअगर आप चाहें तो इस सामग्री को बाद के लिए कॉपी-पेस्ट कर के किसी टेक्स्ट फ़ाइल में रख सकते हैं।</strong>\n\nबंद करने वाले कार्यकारी प्रबंधक ने बंद करने का यह कारण दिया है: $1",
"protectedpagewarning": "'''चेतावनी: इस पृष्ठ को सुरक्षित कर दिया गया है और इसे केवल प्रबंधक ही सम्पादित कर सकते हैं।'''\nनवीनतम लॉग प्रविष्टि संदर्भ के लिये नीचे दी है:",
"semiprotectedpagewarning": "'''सूचना:''' यह पृष्ठ सुरक्षित कर दिया गया है और इसे केवल पंजीकृत सदस्य ही सम्पादित कर सकते हैं।\nनवीनतम लॉग प्रविष्टि संदर्भ के लिये नीचे दी है:",
"cascadeprotectedwarning": "'''सावधान:''' यह पृष्ठ निम्नलिखित सुरक्षा-सीढ़ी {{PLURAL:$1|पृष्ठ से|पन्नों से}} जुड़ा हुआ होने के कारण सुरक्षित है, और केवल प्रबंधक ही इसमें बदलाव कर सकते हैं:",
"permissionserrors": "अधिकार त्रुटि",
"permissionserrorstext": "निम्नलिखित {{PLURAL:$1|कारण|कारणों}} से आपको ऐसा करने की अनुमति नहीं हैं:",
"permissionserrorstext-withaction": "आपको $2 की अनुमति नहीं हैं, निम्नलिखित {{PLURAL:$1|कारण|कारणों}} की वजह से:",
- "contentmodelediterror": "à¤\86प à¤\87स पà¥\83षà¥\8dठà¤\95ा à¤\87तिहास मà¥\87à¤\82 समà¥\8dपादन नहà¥\80à¤\82 à¤\95र सà¤\95तà¥\87 हà¥\88à¤\82 à¤\95à¥\8dयà¥\8bà¤\82à¤\95ि à¤\87सà¤\95ा सामà¤\97à¥\8dरà¥\80 <code>$1</code>, à¤\94र वरà¥\8dतमान सामà¤\97à¥\8dरà¥\80 <code>$2</code> है।",
+ "contentmodelediterror": "à¤\86प à¤\87स पà¥\83षà¥\8dठà¤\95ा à¤\87तिहास मà¥\87à¤\82 समà¥\8dपादन नहà¥\80à¤\82 à¤\95र सà¤\95तà¥\87 हà¥\88à¤\82 à¤\95à¥\8dयà¥\8bà¤\82à¤\95ि à¤\87सà¤\95ा सामà¤\97à¥\8dरà¥\80 <code>$1</code>, à¤\9cà¥\8b à¤\95à¥\80 वरà¥\8dतमान सामà¤\97à¥\8dरà¥\80 सà¥\87 <code>$2</code> à¤\85लà¤\97 है।",
"recreate-moveddeleted-warn": "'''चेतावनी: आप एक पहले हटाए गए पृष्ठ को पुनर्निर्मित कर रहे हैं।'''\n\nआप को विचार करना चाहिये कि क्या इस पृष्ठ का संपादन जारी रखना उचित होगा।\nइस पृष्ट के हटाने व स्थानांतरण का लॉग सुविधा के लिये उपलब्ध है:",
"moveddeleted-notice": "यह पृष्ठ हटाया जा चुका है।\nपृष्ठ के हटाने और स्थानांतरण का लॉग संदर्भ के लिए नीचे दिया गया है।",
"moveddeleted-notice-recent": "क्षमा करें, यह पृष्ठ कुछ ही समय पहले हटाया गया है। (24 घण्टों के भीतर)\nइसके हटाये और स्थानांतरित करने का लोग नीचे दिया हुआ है।",
"revdelete-unsuppress": "पुनर्स्थापित अवतरणों पर से प्रतिबन्ध हटाएँ",
"revdelete-log": "कारण:",
"revdelete-submit": "चयनित {{PLURAL:$1|अवतरण|अवतरणों}} पर लागू करें",
- "revdelete-success": "'''अवतरण दृश्यता सफलतापूर्वक अद्यातानीत की गई।'''",
+ "revdelete-success": "अवतरण दृश्यता सफलतापूर्वक अद्यातानीत की गई।",
"revdelete-failure": "'''अवतरण दृश्यता अद्यातानीत नहीं की जा सकी:'''\n$1",
"logdelete-success": "लॉग दृष्यता बदली गई।",
"logdelete-failure": "'''लॉग दृश्यता का जमाव नहीं किया जा सका:'''\n$1",
"recentchanges-page-added-to-category": "[[:$1]] श्रेणी में जुड़ा",
"recentchanges-page-added-to-category-bundled": "[[:$1]] और [[Special:WhatLinksHere/$1|{{PLURAL:$2|एक पृष्ठ|$2 पृष्ठ}}]] श्रेणी में जुड़ा",
"recentchanges-page-removed-from-category": "[[:$1]] श्रेणी से हटा",
- "recentchanges-page-removed-from-category-bundled": "[[:$1]] और {{PLURAL:$2|एक पृष्ठ|$2 पृष्ठ}} श्रेणी से हटा",
+ "recentchanges-page-removed-from-category-bundled": "[[:$1]] और [[Special:WhatLinksHere/$1|{{PLURAL:$2|एक पृष्ठ|$2 पृष्ठ}}]] श्रेणी से हटा",
"autochange-username": "मीडियाविकि स्वतः परिवर्तन",
"upload": "फ़ाइल अपलोड करें",
"uploadbtn": "फ़ाइल अपलोड करें",
"emailccsubject": "आपके ई-मेल की प्रति जो $1 को भेजा गया: $2",
"emailsent": "ई-मेल भेज दिया गया है।",
"emailsenttext": "आपका ई-मेल संदेश भेज दिया गया है।",
- "emailuserfooter": "इस ई-मेल को $1 द्वारा $2 को भेजा गया था जिसके लिए \"{{int:emailuser}}\" कार्य को {{SITENAME}} पर प्रयोग में लाया गया था।",
+ "emailuserfooter": "इस ई-मेल को $1 {{GENDER:$1|द्वारा}} {{GENDER:$2|$2}} को भेजा गया था जिसके लिए \"{{int:emailuser}}\" कार्य को {{SITENAME}} पर प्रयोग में लाया गया था।",
"usermessage-summary": "प्रणाली सन्देश छोड़ रहा है।",
"usermessage-editor": "सिस्टम दूत",
"watchlist": "ध्यानसूची",
"watchlistanontext": "अपनी ध्यानसूची में मौजूद पृष्ठ देखने या फिर संपादित करने के लिये कॄपया लॉग इन करें।",
"watchnologin": "लॉग इन नहीं किया है",
"addwatch": "ध्यानसूची में जोड़ें",
- "addedwatchtext": "à¤\86पà¤\95à¥\80 [[Special:Watchlist|धà¥\8dयानसà¥\82à¤\9aà¥\80]] मà¥\87à¤\82 \"[[:$1]]\" पà¥\83षà¥\8dठà¤\9cà¥\8bड़ दिया à¤\97या हà¥\88।\nà¤à¤µà¤¿à¤·à¥\8dय मà¥\87à¤\82 à¤\87स पà¥\83षà¥\8dठतथा à¤\87सà¤\95à¥\87 वारà¥\8dता पà¥\83षà¥\8dठमà¥\87à¤\82 हà¥\8bनà¥\87 वालà¥\87 बदलाव à¤\86पà¤\95à¥\80 धà¥\8dयानसà¥\82à¤\9aà¥\80 मà¥\87à¤\82 दिà¤\96à¥\87à¤\82à¤\97à¥\87।",
+ "addedwatchtext": "à¤\86पà¤\95à¥\80 [[Special:Watchlist|धà¥\8dयानसà¥\82à¤\9aà¥\80]] मà¥\87à¤\82 \"[[:$1]]\" à¤\94र à¤\87सà¤\95à¥\87 à¤\9aरà¥\8dà¤\9aा पà¥\83षà¥\8dठà¤\9cà¥\8bड़ दिà¤\8f à¤\97à¤\8f हà¥\88à¤\82।",
"addedwatchtext-short": "पृष्ठ \"$1\" को आपकी ध्यानसूची से जोड़ा गया है।",
"removewatch": "ध्यानसूची से हटाएँ",
"removedwatchtext": "\"[[:$1]]\" नामक पृष्ठ को आपकी [[Special:Watchlist|ध्यानसूची]] से हटा दिया गया है।",
"special-characters-group-ipa": "आइपीए",
"special-characters-group-symbols": "प्रतीक",
"special-characters-group-greek": "ग्रीक",
+ "special-characters-group-greekextended": "ग्रीक विस्तृत",
"special-characters-group-cyrillic": "सिरिलिक",
"special-characters-group-arabic": "अरबी",
"special-characters-group-arabicextended": "अरबी विस्तारित",
"sessionprovider-generic": "$1 सत्र",
"sessionprovider-mediawiki-session-cookiesessionprovider": "कुकी-आधारित सत्र",
"sessionprovider-nocookies": "हो सकता है कि कुकी निष्क्रिय है। कृपया देखें कि और सक्रिय करें।",
- "randomrootpage": "अविशिष्ट मूल पृष्ठ"
+ "randomrootpage": "अविशिष्ट मूल पृष्ठ",
+ "log-action-filter-block": "प्रतिबंध के प्रकार:",
+ "log-action-filter-delete": "हटाने के प्रकार:",
+ "log-action-filter-patrol": "परीक्षण के प्रकार:",
+ "log-action-filter-protect": "सुरक्षा के प्रकार:",
+ "log-action-filter-upload": "अपलोड के प्रकार:",
+ "log-action-filter-all": "सभी",
+ "log-action-filter-block-block": "अवरोध",
+ "log-action-filter-block-reblock": "अवरोध परिवर्तन",
+ "log-action-filter-block-unblock": "अवरोधरहित",
+ "log-action-filter-delete-delete": "पृष्ठ हटाना",
+ "log-action-filter-delete-restore": "पृष्ठ न हटाना",
+ "log-action-filter-delete-event": "पृष्ठ हटाने का लॉग",
+ "log-action-filter-delete-revision": "अवतरण हटाना",
+ "log-action-filter-patrol-patrol": "अपने से परीक्षण",
+ "log-action-filter-patrol-autopatrol": "स्वतः पुनरीक्षण",
+ "log-action-filter-protect-protect": "सुरक्षा",
+ "log-action-filter-protect-modify": "सुरक्षा परिवर्तन",
+ "log-action-filter-protect-unprotect": "असुरक्षा",
+ "log-action-filter-upload-upload": "नया अपलोड",
+ "log-action-filter-upload-overwrite": "फिर से अपलोड"
}
"preview": "Նախադիտում",
"showpreview": "Նախադիտել",
"showdiff": "Կատարված փոփոխությունները",
- "blankarticle": "<strong>Զգուշացում:</strong> Էջը, որը Դուք ստեղծում եք, դատարկ է:\nԵթե նորից սեղմեք «\"{{int:savearticle}}\"» կոճակը, էջը կստեղծվի առանց որևէ բովանդակության:",
+ "blankarticle": "<strong>Զգուշացում:</strong> Էջը, որը Դուք ստեղծում եք, դատարկ է:\nԵթե նորից սեղմեք «{{int:savearticle}}» կոճակը, էջը կստեղծվի առանց որևէ բովանդակության:",
"anoneditwarning": "<strong>Ուշադրություն,</strong> Դուք չեք մտել համակարգ։ Ցանկացած խմբագրման դեպքում Ձեր IP հասցեն կդառնա բոլորին տեսանելի։ Եթե Դուք <strong>[$1 մուտք գործեք]</strong> կամ <strong>[$2 ստեղծեք մասնակցային հաշիվ]</strong>, Ձեր կատարած խմբագրումները կկապվեն Ձեր մասնակցային անվան հետ, ինչպես նաև կունենաք այլ առավելություններ։",
"anonpreviewwarning": "<em>Դուք չեք մտել համակարգ։\nՀիշելով Ձեր կատարած խմբագրումը, այն կպահանվի Ձեր IP հասցեի հետ միասին այս էջի խմբագրումների պատմության մեջ։</em>",
"missingsummary": "'''Հիշեցում.''' Դուք չեք տվել խմբագրման ամփոփում։ «Հիշել» կոճակի կրկնակի մատնահարման դեպքում փոփոխությունները կհիշվեն առանց ամփոփման։",
"search": "Лахаp",
"searchbutton": "Лахар",
"go": "Дехьа г|о",
- "searcharticle": "Дехьа г|о",
+ "searcharticle": "Дехьавала",
"history": "Истори",
"history_short": "Истори",
"updatedmarker": "Со ханача денца хувцамаш хиннaд",
"print": "Кепатохар",
"view": "Б|аргтассам",
"view-foreign": "Мазаоаг|он чу $1 хьажа",
- "edit": "Ð¥Ñ\83вÑ\86а",
+ "edit": "Ð\9dийÑ\81де",
"edit-local": "Хувца локальни йоазонца сурт оттадар",
"create": "Хьаде",
"create-local": "ТIатоха локальни йоазонца сурт оттадар",
"specialpage": "Г|улакхадара оаг|ув",
"personaltools": "Са г|ирсаш",
"articlepage": "Йоазон т|а б|аргтасса",
- "talk": "Дувцам",
+ "talk": "Дувца оттадар",
"views": "БӀаргтассамаш",
"toolbox": "ГӀирсаш",
"userpage": "Доакъошхочун оаг|он т|а б|аргтасса",
"imagepage": "Лурдара оаг|oн т|а б|аргтасса",
"mediawikipage": "Xоаман оаг|ув хьахьокха",
"templatepage": "Ч|абала оаг|oн т|а б|аргтасса",
- "viewhelppage": "ГӀо деха",
+ "viewhelppage": "ГӀо хьаэцар",
"categorypage": "Катага оаг|oн т|а б|аргтасса",
"viewtalkpage": "Дувцамага б|аргтасса",
"otherlanguages": "Кхыча меттаех",
"redirectedfrom": "($1 т|aра хьадейта да)",
"redirectpagesub": "Д|а-хьа дайта оаг|ув",
"redirectto": "Д|ахьожаде укх т|а:",
- "lastmodifiedat": "Укх оаг|oн т|ехьара хувцам: $2, $1.",
+ "lastmodifiedat": "Укх оагIoн тIехьара хувцам: $2, $1.",
"viewcount": "Укх оаг|oн т|а б|аргтассаб {{PLURAL:$1|цхьааца\n|$1 times}}. {{PLURAL:$1|1=цхьазза|$1за}}.",
"protectedpage": "Лорама оаг|ув",
"jumpto": "Укхаза дехьаг|о:",
"nstab-media": "Медифаг",
"nstab-special": "ГӀулакха оагӀув",
"nstab-project": "Хьахоадайтамах лаьца",
- "nstab-image": "Ð\9fаÑ\8cл",
+ "nstab-image": "Файл",
"nstab-mediawiki": "Хоам",
"nstab-template": "ЧIабал",
"nstab-help": "ГӀо",
"emailconfirmlink": "Доаржален хоамни хьожадорг дIачIоагIаде",
"loginlanguagelabel": "Мотт: $1",
"pt-login": "Чувала/яла",
- "pt-createaccount": "Ð\94акÑ\8aалаÑ\8cÑ\86аÑ\80Ñ\85о кхолла",
+ "pt-createaccount": "УÑ\87Ñ\91Ñ\82а Ñ\8fздаÑ\80 кхолла",
"changepassword": "КъайладIоaгIа дIахувцар",
"oldpassword": "Къаьна къайладIоагӀа:",
"newpassword": "Керда къайладIоагӀа:",
"italic_sample": "Кулга яздам",
"italic_tip": "Кулга яздам",
"link_sample": "Ӏинка кортале",
- "link_tip": "ЧураӀинк",
+ "link_tip": "Чура хьожадарг",
"extlink_sample": "Ӏинка кортале http://www.example.com",
"extlink_tip": "Арен Ӏинка (http:// тамагӀах дийца ма ле)",
"headline_sample": "Кортален яздам",
"nowiki_sample": "Укхаза кийчаде дезаш доаца яздам оттаде",
"nowiki_tip": "Масса-бустамлорг теркамза дита",
"image_tip": "Чуяьккха паьла",
- "media_tip": "Ð\9fаÑ\8cла Ó\80инк",
+ "media_tip": "Файлан Ñ\82IаÑ\85Ñ\8cожаваÑ\80",
"sig_tip": "Шун кулгаяздар а, хӀанзара ха а",
"hr_tip": "Мухала мугӀ (могаш тайпара к|еззига хайраде)",
"summary": "Хувцамий белгалдер",
"nextn": "{{PLURAL:$1|тlехьайоагlар $1|тlехьайоагlараш $1|тlехьайоагlараш $1}}",
"prevn-title": "{{PLURAL:$1|1=$1 хьалхара йоазув|$1 хьалхара йоазувнаш}}",
"nextn-title": "{{PLURAL:$1|1=$1 тIехьара йоазув|$1 тIехьара йоазувнаш}}",
- "shown-title": "Хьóкха $1 {{PLURAL:$1|даь йоазо|даь йоазош}} укх оáгIувна тIа",
+ "shown-title": "Хьóкха $1 {{PLURAL:$1|даь йоазо|даь йоазонаш}} укх оáгIувна тIа",
"viewprevnext": "($1 {{int:pipe-separator}} $2) ($3) хьажа",
"searchmenu-exists": "'''Укх масса-хьахьоадайтамач ер оаг|ув \"[[:$1]]\" я'''",
"searchmenu-new": "'''Укх \"[[:$1]]\" масса-хьахоадайтамач оагIув хьае!'''",
"action-read": "Укх оагIуви дешам",
"action-edit": "Ер оагIув хувца",
"nchanges": "$1 {{PLURAL:$1|1=хувцам|хувцамаш}}",
- "enhancedrc-history": "Ð\98стори",
+ "enhancedrc-history": "истори",
"recentchanges": "Керда хувцамаш",
"recentchanges-legend": "Керда хувцамий оттамаш",
"recentchanges-summary": "КIалхагIа лоарамий доаламе тIехьара оагIувний хувцамаш дIаязадаь да {{grammar:genitive|{{SITENAME}}}}.",
"recentchanges-feed-description": "Укх ларамца тIехьара массахувцамашт теркам бе.",
- "recentchanges-label-newpage": "Укх хувцамаца керда оагIув даь хиннад",
+ "recentchanges-label-newpage": "Укх хувцамаца керда оагIув яь хиннай",
"recentchanges-label-minor": "ЗIамига хувцам я",
"recentchanges-label-bot": "Ер хувцам бIатаца яь е",
"recentchanges-label-unpatrolled": "Ер хувцам ший моттиге кхы дIадехьаяьккхаяц.",
"filehist-filesize": "Паьла юстарал",
"filehist-comment": "ХIамоалар",
"imagelinks": "Паьлий пайда эца",
- "linkstoimage": "{{PLURAL:$1|1=ТIехьайоагIа $1 оагIув Iинк ду|ТIехьайоагIа $1 оагIувнаш Iинкаш ду}} укх паьла тIа:",
+ "linkstoimage": "{{PLURAL:$1|1=ТIехьайоагIача $1 оагIуво тIахьожаву|ТIехьайоагIача $1 оагIувнаша тIахьожаву}} укх файла тIа:",
"nolinkstoimage": "Йола паьла тIа Iинк ю оагIувнаш дац",
"sharedupload": "Ер паьла $1чера я, кхыча хьахьоадайтамча хьахайраде йийшайолаш я.",
"sharedupload-desc-here": "Ер паьл $1чара я, кхыдола хьахьоадайтамача хайрамбе йийш йолаш да.\nЦун [$2 лоацама оагIувца] лоаца маIандар кIалхагIа латта.",
"tooltip-pt-mycontris": "Шун хувцамаш",
"tooltip-pt-login": "Укхаза хьай цIи аьле чувала/яла йиша я, амма чуцаваьлача/ялача хIама а дац",
"tooltip-pt-logout": "Аравала/яла",
- "tooltip-pt-createaccount": "Хьа бокъо я лоархIама яздар кхелла система чу вала, амма декхар долаш дац из.",
+ "tooltip-pt-createaccount": "Хьа бокъо я учёта яздар кхелла система чу вала, амма декхар долаш дац из.",
"tooltip-ca-talk": "ОагIувна чулоацаме дувцам",
- "tooltip-ca-edit": "Ð¥Ñ\83вÑ\86а ер оагIув",
+ "tooltip-ca-edit": "Ð\9dийÑ\81Ñ\8aе ер оагIув",
"tooltip-ca-addsection": "Керда декъам хьаде",
"tooltip-ca-viewsource": "Ер оагIув хувцамах лораяь я, амма шун цунна гIувамага хьажа бокъо я.",
"tooltip-ca-history": "Укх оагIувни хувцама таптар",
"tooltip-n-currentevents": "ХIанзара хоаман дагарле",
"tooltip-n-recentchanges": "ТӀехьара хувцамий дагарче",
"tooltip-n-randompage": "Бе йоаца оагӀув ела",
- "tooltip-n-help": "Новкъостала моттиг",
+ "tooltip-n-help": "Новкъостал лаха мегаш йола моттиг",
"tooltip-t-whatlinkshere": "Массайола оагIувий дагарле, укх оагIув тIа Iинкаш луш йола",
"tooltip-t-recentchangeslinked": "ОагIувнаш тIа тIехьара хувцамаш, укх оагIувнера Iинк яь йола",
"tooltip-feed-rss": "Укх оагIувна RSSчу гойтар",
"tooltip-t-permalink": "Укх оагIув доржама даим латта Iинк",
"tooltip-ca-nstab-main": "Йоазува чулоацам",
"tooltip-ca-nstab-user": "Дакъалаьцархочунна ший оагIув",
- "tooltip-ca-nstab-special": "Ер гIулакха оагIув я, из хувца хьо бокъо йолаш вац/яц.",
+ "tooltip-ca-nstab-special": "Ер гIулакха оагIув я, из хувца бокъо яц",
"tooltip-ca-nstab-project": "Хьахьоадайтама оагIув",
"tooltip-ca-nstab-image": "Паьла оагIув",
"tooltip-ca-nstab-template": "ЧIабала оагIув",
- "tooltip-ca-nstab-help": "ГӀона оагIув",
+ "tooltip-ca-nstab-help": "ГӀон оагIув",
"tooltip-ca-nstab-category": "Цатега оагIув",
"tooltip-minoredit": "Ер хувцар башха доаца санна белгалде",
"tooltip-save": "Хувцамаш кходе",
"version-software-version": "Доржам",
"fileduplicatesearch-filename": "ПаьлацIи:",
"fileduplicatesearch-submit": "Лаха",
- "specialpages": "Ð\93IÑ\83лакÑ\85ий оагIувнаш",
+ "specialpages": "Ð\9bаÑ\8cÑ\80Ñ\85Ñ\85Iа йола оагIувнаш",
"specialpages-group-users": "Дакъалаьцархой, цара бокъо",
"specialpages-group-pages": "ОагIувний дагарченаш",
"specialpages-group-pagetools": "ОагIувнаша гIирсаш",
"htmlform-submit": "ДIадахьийта",
"htmlform-reset": "Хувцамаш юхадаккха",
"htmlform-selectorother-other": "Кхыдола",
+ "logentry-newusers-create": "{{GENDER:$2|Доакъашхочо кхеллай}} учёта яздар $1",
"rightsnone": "(а)",
"revdelete-summary": "хувцамий лоацам",
"searchsuggest-search": "Лаха",
"mergelog": "Unioni",
"revertmerge": "Annulla unioni",
"mergelogpagetext": "Di seguito sono elencate le ultime operazioni di unione della cronologia di due pagine.",
- "history-title": "$1: cronologia delle modifiche",
- "difference-title": "$1: differenze tra le versioni",
- "difference-title-multipage": "$1 e $2: differenze tra le pagine",
+ "history-title": "Cronologia delle modifiche di \"$1\"",
+ "difference-title": "Differenze tra le versioni di \"$1\"",
+ "difference-title-multipage": "Differenze tra le pagine \"$1\" e \"$2\"",
"difference-multipage": "(Differenze fra le pagine)",
"lineno": "Riga $1:",
"compareselectedversions": "Confronta le versioni selezionate",
"special-characters-group-ipa": "IPA",
"special-characters-group-symbols": "Simboli",
"special-characters-group-greek": "Greco",
+ "special-characters-group-greekextended": "Greco esteso",
"special-characters-group-cyrillic": "Cirillico",
"special-characters-group-arabic": "Arabo",
"special-characters-group-arabicextended": "Arabo esteso",
"sessionprovider-generic": "$1-Sessiounen",
"randomrootpage": "Zoufalls-Stammsäit",
"log-action-filter-block": "Typ vun der Spär:",
+ "log-action-filter-protect": "Typ vu Spär",
"log-action-filter-all": "All",
"log-action-filter-block-block": "Spären",
"log-action-filter-block-unblock": "Spär ophiewen",
"articlepage": "Lihek isi laman",
"talk": "Rundiang",
"views": "Caliak",
- "toolbox": "Kotak pakakeh",
+ "toolbox": "Pakakeh",
"userpage": "Lihek laman pangguno",
"projectpage": "Caliak laman proyek",
"imagepage": "Caliak laman berkas",
"nstab-template": "Templat",
"nstab-help": "Bantuan",
"nstab-category": "Kategori",
+ "mainpage-nstab": "Palanta",
"nosuchaction": "Indak ado tindakan tasabuik",
"nosuchactiontext": "Tindakan nan diminta dek URL tasabuik indak valid. Sanak mungkin salah mangetikkan URL, atau mangikuik pautan nan salah. Iko mungkin manunjuakan adonyo suatu bug pado parangkaik lunak nan dipagunoan dek {{SITENAME}}.",
"nosuchspecialpage": "Indak ado laman istimewa tasabuik",
"login-abort-generic": "Proses masuak Sanak indak barasil - Dibatalan",
"loginlanguagelabel": "Baso: $1",
"suspicious-userlogout": "Pamintaan Sanak untuak kalua log ditulak karano tampaknyo dikirim oleh paramban nan rusak atau proksi panyinggah.",
+ "pt-login": "Masuak log",
+ "pt-createaccount": "Buek akun",
"pt-userlogout": "Kalua log",
"php-mail-error-unknown": "Kasalahan nan indak jaleh dalam fungsi mail() PHP",
"user-mail-no-addy": "Mancubo mangirim surel tanpa alamaik surel.",
"minoreditletter": "k",
"newpageletter": "B",
"boteditletter": "b",
+ "rc-change-size-new": "$1 {{PLURAL:$1|byte|bita}} satalah parubahan",
"rc-enhanced-expand": "Tampilkan rincian (paralu JavaScript)",
"rc-enhanced-hide": "Suruakkan rincian",
"recentchangeslinked": "Parubahan takaik",
"tooltip-pt-mycontris": "Daftar jariah Sanak",
"tooltip-pt-login": "Sanak disaranan untuak masuak log; walaupun indak wajib",
"tooltip-pt-logout": "Kalua log",
+ "tooltip-pt-createaccount": "Sanak dianjuaan mambuek akun dan masuak log; walaupun hal iko indak aruih",
"tooltip-ca-talk": "Parudiangan tantang isi laman",
- "tooltip-ca-edit": "Angku dapek manyuntiang laman ko. Silakan gunoan tombol pratonton sabalun manyimpan",
+ "tooltip-ca-edit": "Suntiang laman ko",
"tooltip-ca-addsection": "Mulai bagian baru",
"tooltip-ca-viewsource": "Laman ko dilinduangi.\nSanak hanyo buliah mancaliak sumbernyo sajo",
"tooltip-ca-history": "Revisi sabalunnyo dari laman ko",
"changeemail": "Kái tiān-chú-phoe ê tē-chí",
"changeemail-oldemail": "Chit-má ê E-mail tē-chí:",
"changeemail-newemail": "Sin E-mail ê chū-chí:",
+ "changeemail-password": "Lí-ê {{SITENAME}} bi̍t-bé:",
+ "changeemail-submit": "Kái-piàn tiān-chu-phoe",
+ "changeemail-throttled": "Lí chi̍t-ê-á teng-ji̍p liáu siuⁿ chē kái.\nChiáⁿ tan-thāi $1 kòe-āu chài chhì chi̍t pái.",
+ "changeemail-nochange": "Chhiáⁿ su-ji̍p chi̍t-ê bô-kâng ê sin tiān-chú-phoe chū-chí.",
"bold_sample": "Chho·-thé bûn-jī",
"bold_tip": "Chho·-thé jī",
"italic_sample": "Chhú-thé ê bûn-jī",
"recreate-moveddeleted-warn": "'''Sè-jī: Lí taⁿ chún-pī beh khui ê ia̍h, chêng bat hō͘ lâng thâi tiāu koè.''' Lí tio̍h chim-chiok soà-chiap pian-chi̍p chit ia̍h ê pit-iàu-sèng. Chia ū chit ia̍h ê san-tû kì-lo̍k (deletion log) hō͘ lí chham-khó:",
"edit-conflict": "Siu-kái sio-chhiong",
"defaultmessagetext": "Siat piān ê bûn-jī",
+ "content-model-wikitext": "wikitext",
+ "content-model-text": "sûn bûn-pún",
"content-model-javascript": "JavaScript",
+ "content-json-empty-object": "Khang bu̍t-kiāⁿ",
+ "content-json-empty-array": "Khang tīn-lia̍t",
"post-expand-template-inclusion-warning": "'''Kéng-pò:'''Pau ji̍t lâi ê pán-bôo sioⁿ koè tsē ia̍h tuā.\nŪ chi̍t-koá-á ē bô pau ji̍t lâi.",
"undo-success": "Pian-chi̍p í-keng chhú-siau. Chhiáⁿ khak-tēng, liáu-āu kā ē-kha ho̍k-goân ê kái-piàn pó-chûn--khí-lâi.",
"undo-failure": "Pian-chi̍p bē-tàng chhú-siau, in-ūi chhiong tio̍h kî-kan chhah-ji̍p ê pian-chi̍p.",
"resetpass-wrong-oldpass": "Feil mellombels eller noverande passord.\nDu kan allereie ha byta passordet, eller ha bede om å få eit nytt mellombels passord.",
"resetpass-temp-password": "Mellombels passord:",
"resetpass-abort-generic": "Passordbytet vart stogga av ei utviding.",
+ "resetpass-validity-soft": "Passordet ditt er ikkje gyldig: $1\n\nGjer vel å velja eit nytt passord no, eller klikk «{{int:resetpass-submit-cancel}}» for å endra det seinare.",
"passwordreset": "Attendestilling av passord",
"passwordreset-text-one": "Fyll ut dette skjemaet for å attendestilla passordet ditt.",
"passwordreset-disabled": "↓Tilbakestilling av passord er ikkje aktivert på denne wikien",
"botpasswords-updated-body": "Hasło bota \"$1\" użytkownika \"$2\" zostało zaktualizowane.",
"botpasswords-deleted-title": "Hasło bota usunięte",
"botpasswords-deleted-body": "Hasło bota \"$1\" użytkownika \"$2\" zostało usunięte.",
+ "botpasswords-not-exist": "Użytkownik \"$1\" nie ma hasła dla bota o nazwie \"$2\".",
"resetpass_forbidden": "Hasła nie mogą zostać zmienione",
"resetpass-no-info": "Musisz być zalogowany, by uzyskać bezpośredni dostęp do tej strony.",
"resetpass-submit-loggedin": "Zmień hasło",
"autoredircomment": "Przekierowanie do [[$1]]",
"autosumm-new": "Utworzono nową stronę \"$1\"",
"autosumm-newblank": "Utworzono pustą stronę",
- "size-bytes": "$1 B",
+ "size-bytes": "$1 {{PLURAL:$1|bajt|bajty|bajtów}}",
"size-kilobytes": "$1 KB",
"size-megabytes": "$1 MB",
"size-gigabytes": "$1 GB",
"mw-widgets-titleinput-description-redirect": "przekierowanie do $1",
"api-error-blacklisted": "Wybierz inny, opisowy tytuł.",
"randomrootpage": "Losowa strona (bez podstron)",
+ "log-action-filter-block": "Rodzaj blokady:",
+ "log-action-filter-delete": "Rodzaj usunięcia:",
+ "log-action-filter-protect": "Rodzaj zabezpieczenia:",
+ "log-action-filter-upload": "Rodzaj przesłanych:",
"log-action-filter-all": "Wszystkie",
+ "log-action-filter-block-block": "Zablokowanie",
"log-action-filter-block-reblock": "Zmiana blokady",
"log-action-filter-block-unblock": "Odblokowanie",
"log-action-filter-delete-delete": "Usunięcie strony",
- "log-action-filter-delete-restore": "Przywrócenie strony",
+ "log-action-filter-delete-restore": "Odtworzenie strony",
+ "log-action-filter-delete-event": "Usunięcie wpisu rejestru",
+ "log-action-filter-delete-revision": "Usunięcie wersji",
"log-action-filter-protect-protect": "Zabezpieczenie",
"log-action-filter-protect-modify": "Zmiana zabezpieczenia",
- "log-action-filter-protect-unprotect": "Odbezpieczenie"
+ "log-action-filter-protect-unprotect": "Odbezpieczenie",
+ "log-action-filter-upload-upload": "Nowe przesłane",
+ "log-action-filter-upload-overwrite": "Przesłane ponownie"
}
"mw-widgets-dateinput-placeholder-month": "کککک-م م",
"mw-widgets-titleinput-description-new-page": "تر اوسه پورې دا مخ نشته",
"mw-widgets-titleinput-description-redirect": "$1 ته ورگرځېدنه",
- "randomrootpage": "د ناټاکلې ريښې مخ"
+ "randomrootpage": "د ناټاکلې ريښې مخ",
+ "log-action-filter-all": "ټول",
+ "log-action-filter-block-block": "بنديز لگول"
}
"post-expand-template-inclusion-warning": "'''Aviso''': a soma do tamanho de inclusão de predefinições é muito grande.\nAlgumas predefinições não serão processadas.",
"post-expand-template-inclusion-category": "Páginas com excesso de predefinições",
"post-expand-template-argument-warning": "Aviso: Esta página contém pelo menos um argumento de predefinição com um tamanho muito grande.\nEstes argumentos foram omitidos.",
- "post-expand-template-argument-category": "Páginas com argumentos de predefinições omitidos",
+ "post-expand-template-argument-category": "Páginas com argumentos de predefinições descartados",
"parser-template-loop-warning": "Ciclo de predefinições detectado: [[$1]]",
"parser-template-recursion-depth-warning": "O limite de profundidade de recursividade de predefinição foi ultrapassado ($1)",
"language-converter-depth-warning": "O limite de profundidade do conversor de línguas excedeu a ($1)",
"uploadstash-badtoken": "Não foi possível executar a operação. Talvez as suas credenciais de edição tenham expirado. Tente novamente.",
"uploadstash-errclear": "Não foi possível apagar os ficheiros.",
"uploadstash-refresh": "Atualizar a lista de ficheiros",
+ "uploadstash-thumbnail": "ver miniatura",
"invalid-chunk-offset": "Deslocamento de fragmento inválido",
"img-auth-accessdenied": "Acesso negado",
"img-auth-nopathinfo": "PATH_INFO em falta.\nO seu servidor não está configurado para passar esta informação.\nPode ser baseado em CGI e não consegue suportar img_auth.\nConsulte a documentação em https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
"randomrootpage": "Página raiz aleatória",
"log-action-filter-block": "Tipo de bloqueio:",
"log-action-filter-delete": "Tipo de eliminação:",
+ "log-action-filter-patrol": "Tipo de patrulha:",
"log-action-filter-protect": "Tipo de proteção:",
+ "log-action-filter-upload": "Tipo de carregamento:",
"log-action-filter-all": "Todas",
- "log-action-filter-upload-upload": "Novo carregamento"
+ "log-action-filter-block-block": "Bloquear",
+ "log-action-filter-block-reblock": "Alteração de bloqueio",
+ "log-action-filter-block-unblock": "Desbloquear",
+ "log-action-filter-delete-delete": "Eliminação de página",
+ "log-action-filter-delete-restore": "Restauro de página",
+ "log-action-filter-delete-event": "Eliminação de registo",
+ "log-action-filter-delete-revision": "Eliminação de revisão",
+ "log-action-filter-patrol-patrol": "Patrulha manual",
+ "log-action-filter-patrol-autopatrol": "Patrulha automática",
+ "log-action-filter-protect-protect": "Proteção",
+ "log-action-filter-protect-modify": "Alteração da proteção",
+ "log-action-filter-protect-unprotect": "Desproteção",
+ "log-action-filter-upload-upload": "Novo carregamento",
+ "log-action-filter-upload-overwrite": "Recarregar"
}
"undo-summary-username-hidden": "Edit summary for an undo action where the username of the old revision is hidden.\n\nParameters:\n* $1 - the revision ID being undone\nSee also:\n* {{msg-mw|Undo-summary}}",
"cantcreateaccounttitle": "Used as title of the error message {{msg-mw|Cantcreateaccount-text}}.",
"cantcreateaccount-text": "Used as error message, with the title {{msg-mw|Cantcreateaccounttitle}}.\n* $1 - target IP address\n* $2 - reason or {{msg-mw|Blockednoreason}}\n* $3 - username\nSee also:\n* {{msg-mw|Cantcreateaccount-range-text}}",
- "cantcreateaccount-range-text": "Used as more detailed version of the {{msg-mw|Cantcreateaccount-text}} error message, with the title {{msg-mw|Cantcreateaccounttitle}}.\n* $1 - target IP range\n* $2 - reason or {{msg-mw|Blockednoreason}}\n* $3 - username\n* $4 - current user's IP address",
+ "cantcreateaccount-range-text": "Used as more detailed version of the {{msg-mw|Cantcreateaccount-text}} error message, with the title {{msg-mw|Cantcreateaccounttitle}}.\n* $1 - target IP address range\n* $2 - reason or {{msg-mw|Blockednoreason}}\n* $3 - username\n* $4 - current user's IP address",
"createaccount-hook-aborted": "Placeholder message to return with API errors on account create; passes through the message from a hook {{notranslate}}",
"viewpagelogs": "Link displayed in history of pages",
"nohistory": "Message shown when there are no history to list. See [{{canonicalurl:x|action=history}} example history].\n----\nAlso used as title of error message when the feed is empty. See [{{canonicalurl:x|action=history&feed=atom}} example feed].\n\nSee the error message:\n* {{msg-mw|history-feed-empty}}",
"ipb-unblock": "Used as page title in [[Special:Block]], if the target user is not specified.\n\nSee also:\n* {{msg-mw|Ipb-unblock-addr}}",
"ipb-blocklist": "Used as link text in [[Special:Block]].\n\nThe link points to Specil:BlockList.",
"ipb-blocklist-contribs": "Used in [[Special:Block]].\n* $1 - target username",
+ "ipb-blocklist-duration-left": "Used on [[Special:BlockList]] to show the remaining time (years, months, days, hours, minutes) until the block expires.\n$1 - The duration left",
"unblockip": "Used as legend for the form in [[Special:Unblock]].",
"unblockiptext": "Used in the {{msg-mw|Unblockip}} form on [[Special:Unblock]].",
"ipusubmit": "Used as button text on [{{canonicalurl:Special:BlockList|action=unblock}} Special:BlockList?action=unblock]. To see the message:\n* Go to [[Special:BlockList]]\n* Click \"unblock\" for any block (but you can only see \"unblock\" if you have administrator rights)\n* It is now the button below the form",
"ipb_expiry_temp": "Warning message displayed on [[Special:BlockIP]] if the option \"hide username\" is selected but the expiry time is not infinite.",
"ipb_hide_invalid": "Used as error message in [[Special:Block]].\n* $1 - Number of edits (Value of [[mw:Manual:$wgHideUserContribLimit]])",
"ipb_already_blocked": "{{Identical|$1 is already blocked}}",
- "ipb-needreblock": "Used in [[Special:Block]].\n* $1 - target username",
+ "ipb-needreblock": "Used in [[Special:Block]].\n* $1 - target username, can be used for GENDER support",
"ipb-otherblocks-header": "[[File:Special.Block with other blocks from GlobalBlocking and TorBlocks.png|thumb|Example]]\nUsed on [[Special:Block]] as header for other blocks, i.e. from GlobalBlocking or TorBlocks\n\nParameters:\n* $1 - number of blocks\nSee also:\n* {{msg-mw|Ipblocklist-otherblocks}}",
"unblock-hideuser": "{{doc-singularthey}}",
"ipb_cant_unblock": "Used as error message in [[Special:Unblock]]. Parameters:\n* $1 - block ID",
- "ipb_blocked_as_range": "Used when unblock of a single IP fails. Parameters:\n* $1 - IP address\n* $2 - IP range",
+ "ipb_blocked_as_range": "Used when unblock of a single IP fails. Parameters:\n* $1 - IP address\n* $2 - IP address range",
"ip_range_invalid": "Used as error message in [[Special:Block]].\n\nSee also:\n* {{msg-mw|Range block disabled}}\n* {{msg-mw|Ip range invalid}}\n* {{msg-mw|Ip range toolarge}}",
"ip_range_toolarge": "Used as error message in [[Special:Block]]. Parameters:\n* $1 - a number from 0 to 32 for IPv4 (from 0 to 128 for IPv6); a part of CIDR (Classless Inter-Domain Routing) notation.\nSee also:\n* {{msg-mw|Range block disabled}}\n* {{msg-mw|Ip range invalid}}\n* {{msg-mw|Ip range toolarge}}",
"proxyblocker": "Used in [[Special:BlockMe]].\n\nSee also:\n* {{msg-mw|proxyblocker-disabled}}\n* {{msg-mw|proxyblockreason}}\n* {{msg-mw|proxyblocksuccess}}",
"logentry-protect-protect-cascade": "{{Logentry|[[Special:Log/protect]]}}\n\n* $4 - protect expiry (formatted with {{msg-mw|protect-summary-desc}}, multiple possible)\nFor word \"cascading\" see {{msg-mw|protect-summary-cascade}}",
"logentry-protect-modify": "{{Logentry|[[Special:Log/protect]]}}\n\n* $4 - protect expiry (formatted with {{msg-mw|protect-summary-desc}}, multiple possible)",
"logentry-protect-modify-cascade": "{{Logentry|[[Special:Log/protect]]}}\n\n* $4 - protect expiry (formatted with {{msg-mw|protect-summary-desc}}, multiple possible)\nFor word \"cascading\" see {{msg-mw|protect-summary-cascade}}",
- "logentry-rights-rights": "* $1 - username\n* $2 - (see below)\n* $3 - username\n* $4 - list of user groups or {{msg-mw|Rightsnone}}\n* $5 - list of user groups or {{msg-mw|Rightsnone}}\n----\n{{Logentry|[[Special:Log/rights]]}}",
+ "logentry-rights-rights": "* $1 - username\n* $2 - (see below)\n* $3 - username, also used for GENDER support\n* $4 - list of user groups or {{msg-mw|Rightsnone}}\n* $5 - list of user groups or {{msg-mw|Rightsnone}}\n----\n{{Logentry|[[Special:Log/rights]]}}",
"logentry-rights-rights-legacy": "* $1 - username\n* $2 - (see below)\n* $3 - username\n----\n{{Logentry|[[Special:Log/rights]]}}",
"logentry-rights-autopromote": "* $1 - username\n* $2 - (see below)\n* $3 - (see below)\n* $4 - comma separated list of old user groups or {{msg-mw|Rightsnone}}\n* $5 - comma separated list of new user groups\n----\n{{Logentry|[[Special:Log/rights]]}}",
"logentry-upload-upload": "{{Logentry|[[Special:Log/upload]]}}",
"special-characters-group-ipa": "IPA means a script: \"international phonetic alphabet\" here, and not \"international phonetic association\", the organization behind it.",
"special-characters-group-symbols": "The section name for symbols\n\n{{Identical|Symbol}}",
"special-characters-group-greek": "This is the name of a script, or alphabet, not a language.",
+ "special-characters-group-greekextended": "The name of the Greek Extended character set.",
"special-characters-group-cyrillic": "This is the name of a script, or a group of alphabets, used mainly in Eastern Europe and North and Central Asia.\n{{related|Special-characters-group}}",
"special-characters-group-arabic": "This is the name of a script, or alphabet, not a language.\n{{related|Special-characters-group}}",
"special-characters-group-arabicextended": "This is a description of the additional group of Arabic script characters for languages such as a Persian, Urdu, Pashto and others. This message is supposed to be similar to {{msg-mw|special-characters-group-latinextended}}.\n{{related|Special-characters-group}}",
"nocookieslogin": "{{SITENAME}} folosește module cookie pentru a autentifica utilizatorii. Browser-ul dvs. are cookie-urile dezactivate. Vă rugăm să le activați și să incercați din nou.",
"nocookiesfornew": "Contul de utilizator nu a fost creat, deoarece nu am putut confirma sursa.\nAsigurați-vă că aveți cookie-urile activate, reîncărcați pagina și încercați din nou.",
"noname": "Numele de utilizator pe care l-ați introdus nu este valid.",
- "loginsuccesstitle": "Autentificare reușită",
+ "loginsuccesstitle": "Autentificat(ă)",
"loginsuccess": "'''Ați fost autentificat la {{SITENAME}} ca „$1”.'''",
"nosuchuser": "Nu există nici un utilizator cu numele „$1”.\nNumele de utilizatori sunt sensibile la majuscule.\nVerifică dacă ai scris corect sau [[Special:UserLogin/signup|creează un nou cont de utilizator]].",
"nosuchusershort": "Nu există niciun utilizator cu numele „$1”.\nVerificați ortografierea.",
"special-characters-group-ipa": "Mednarodna fonetična abeceda (IPA)",
"special-characters-group-symbols": "Simboli",
"special-characters-group-greek": "Grški",
+ "special-characters-group-greekextended": "Grščina, razširjeno",
"special-characters-group-cyrillic": "Cirilica",
"special-characters-group-arabic": "Arabski",
"special-characters-group-arabicextended": "Razširjena arabščina",
"perfcachedts": "பின்வரும் தரவுகள் இடைமாற்றைக் கொண்டுள்ளன, தரவுகள் கடைசியாக $1 இல் புதுபிக்கப்பட்டுள்ளன.அதிகபட்சமாக {{PLURAL:$4|ஒரு முடிவு|$4 முடிவுகள்}} இடைமாற்றில் இருக்கலாம்.",
"querypage-no-updates": "இப்பக்கத்துக்கான இற்றைப்படுத்தல்கள் செயலிழக்கச் செய்யப்பட்டுள்ளன. இங்கே உள்ளத் தரவுகள் தற்சமயம் இற்றைப்படுத்தப்படமாட்டாது.",
"viewsource": "மூலத்தைப் பார்",
- "viewsource-title": "$1க்கான மூலத்தைப் பார்",
+ "viewsource-title": "$1 என்பதற்கான மூலத்தைப் பார்",
"actionthrottled": "செயற்பாடு கட்டுப்படுத்தப்பட்டது",
"actionthrottledtext": "எரிதக் காப்பு நடவடிக்கையாகப் பயனொருவர் குறித்த சிறு கால இடைவெளியில் இச்செயற்பாட்டை அதிகளவில் செய்வது தடுக்கப்பட்டுள்ளது. நீர் அவ்வெல்லையைத் தாண்டிவிட்டீர். அருள் கூர்ந்து சில நிமிடங்களில் முயலவும்.",
"protectedpagetext": "இப்பக்கம் தொகுக்கப்படுவதையோ அல்லது பிற செயல்களைத் தவிர்ப்பதற்காகவோ பூட்டப்பட்டுள்ளது.",
"sectioneditnotsupported-text": "இப்பக்கத்தில் உட்பிரிவை தொகுக்க தேவையான ஆதரவில்லை.",
"permissionserrors": "அனுமதி தவறுகள்",
"permissionserrorstext": "பின்வரும் {{PLURAL:$1|காரணத்துக்காக|காரணங்களுக்காக}} நீங்கள் அதைச் செய்ய முடியாது:",
- "permissionserrorstext-withaction": "$2-க்கு தங்களுக்கு அனுமதி இல்லை. அதற்கான {{PLURAL:$1|காரணம்|காரணங்கள்}}:",
+ "permissionserrorstext-withaction": "$2- இதற்கு தங்களுக்கு அனுமதி இல்லை. அதற்கான {{PLURAL:$1|காரணம்|காரணங்கள்}}:",
"recreate-moveddeleted-warn": "'''எச்சரிக்கை: தாங்கள் ஏற்கனவே நீக்கப்பட்ட பக்கமொன்றை மீண்டும் தொடங்க விழைகிறீர்கள்.'''\n\nஇப்பக்கத்தைத் தொடர்ந்து தொகுப்பது சரியானதா என்று எண்ணிப்பார்க்கவும்.\n\nதங்களின் வசதிக்காக இப்பக்கத்தின் நீக்கல் மற்றும் நகர்த்தல் குறிப்புகள் கொடுக்கப்பட்டுள்ளது:",
"moveddeleted-notice": "இது ஒரு நீக்கப்பட்ட பக்கமாகும்.\n\nதங்களின் வசதிக்காக இப்பக்கத்தின் நீக்கல் மற்றும் நகர்த்தல் குறிப்புகள் கொடுக்கப்பட்டுள்ளது.",
"moveddeleted-notice-recent": "மன்னிக்கவும், இந்தப் பக்கம் அண்மையில் நீக்கப்பட்டுள்ளது (24 மணித்தியாலத்திற்குள்). இப்பக்கத்திற்கான நீக்கல் மற்றும் நகர்த்தல் பதிவு கீழே மேற்கோளுக்காக தரப்பட்டுள்ளது.",
"postedit-confirmation-saved": "உங்களது தொகுப்பு சேமிக்கப்பட்டது.",
"edit-already-exists": "புதிய பக்கமொன்றை உருவாக்க முடியாது.\nஇப்பக்கம் ஏற்கனவே உள்ளது.",
"defaultmessagetext": "இயல்பிருப்பு தகவல் உரை",
- "content-failed-to-parse": "à®\89ளà¯\8dளà®\9fà®\95à¯\8dà®\95à®®à¯\8d $2 வà®\95à¯\88 $1 à®\95்காக பாகுபடுத்தல் தோல்வி: $3",
+ "content-failed-to-parse": "à®\89ளà¯\8dளà®\9fà®\95à¯\8dà®\95à®®à¯\8d $2 வà®\95à¯\88 $1 à®\87à®±்காக பாகுபடுத்தல் தோல்வி: $3",
"invalid-content-data": "செல்லாத உள்ளடக்கத் தரவு",
"content-not-allowed-here": "\"$1\" உள்ளடக்கம் [[$2]] பக்கத்தில் அனுமதிக்கப்படவில்லை.",
"editwarning-warning": "இந்த பக்கத்தை விட்டு செல்வது நீங்கள் ஏற்படுத்திய மாற்றங்களை இழக்க வழிவகுக்கும்.\nநீங்கள் புகுபதிந்திருந்தால், இந்த எச்சரிக்கையை உங்கள் விருப்பத்தேர்வில் உள்ள \"{{int:prefs-editing}}\" பகுதி மூலம் நீக்கலாம்.",
"recentchanges-label-newpage": "இந்தத் தொகுப்பு ஒரு புதிய பக்கத்தை உருவாக்கியுள்ளது",
"recentchanges-label-minor": "இது ஒரு சிறு தொகுப்பு",
"recentchanges-label-bot": "இந்த தொகுப்பானது ஒரு தானியங்கியால் செய்யப்பட்டதாகும்",
- "recentchanges-label-unpatrolled": "à®\87நà¯\8dத தà¯\8aà®\95à¯\81பà¯\8dபà¯\81 à®\87னà¯\8dனà¯\81à®®à¯\8d à®°à¯\8bநà¯\8dதிà®\9fபà¯\8dபà®\9fவில்லை",
+ "recentchanges-label-unpatrolled": "à®\87தà¯\8dதà¯\8aà®\95à¯\81பà¯\8dபà¯\81 à®\87னà¯\8dனà¯\81à®®à¯\8d à®\9aà¯\81à®±à¯\8dà®±à¯\81à®\95à¯\8dà®\95ாவலà¯\81à®\95à¯\8dà®\95à¯\81 à®\89ளà¯\8dளாà®\95வில்லை",
"recentchanges-label-plusminus": "இத்தனை பைட்டுகளுக்கு பக்கத்தின் அளவு மாற்றப்பட்டுள்ளது",
"recentchanges-legend-heading": "<strong>குறியீட்டு விளக்கம்:</strong>",
"recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|புதிய பக்கங்கள் பட்டியலையும்]] காணவும்)",
"contributions-title": "$1 இற்கான பயனர் பங்களிப்புகள்",
"mycontris": "பங்களிப்புக்கள்",
"anoncontribs": "பங்களிப்புக்கள்",
- "contribsub2": "{{GENDER:$3|$1}} à®\95்காக ($2)",
+ "contribsub2": "{{GENDER:$3|$1}} à®\87à®±்காக ($2)",
"contributions-userdoesnotexist": "பயனர் கணக்கு \"$1\" ஆனது பதியப்படவில்லை.",
"nocontribs": "இந்த நிபந்தனையுடன் ஒத்துப்போகும் வகையில் மாற்றங்களெதுவும் காணப்படவில்லை.",
"uctop": "(தற்போதைய)",
"pageinfo-category-subcats": "துணைபகுப்புகளின் எண்ணிக்கை",
"pageinfo-category-files": "கோப்புகளின் எண்ணிக்கை",
"markaspatrolleddiff": "ரோந்திட்டதாக குறி",
- "markaspatrolledtext": "à®\87பà¯\8dபà®\95à¯\8dà®\95தà¯\8dதà¯\88 à®°à¯\8bநà¯\8dதிà®\9fà¯\8dà®\9fதாகக் குறி",
+ "markaspatrolledtext": "à®\87தனà¯\88 à®\9aà¯\81à®±à¯\8dà®±à¯\81à®\95à¯\8dà®\95ாவலà¯\8d à®\9aà¯\86யà¯\8dததாகக் குறி",
"markaspatrolledtext-file": "இக்கோப்பு பதிப்பினை ரோந்திட்டதாக குறி",
"markedaspatrolled": "ரோந்திட்டதாக குறிக்கப்பட்டது",
"markedaspatrolledtext": "தெரிவு செய்யப்பட்டத் திருத்தம் [[:$1]] பார்வையிட்டதாக குறிக்கப்பட்டுள்ளது.",
"Matma Rex",
"HakanIST",
"Imabadplayer",
- "İnternion"
+ "İnternion",
+ "Hbseren"
]
},
"tog-underline": "Bağlantıların altını çiz:",
"special-characters-group-ipa": "UFA",
"special-characters-group-symbols": "Simgeler",
"special-characters-group-greek": "Yunan",
+ "special-characters-group-greekextended": "Genişletilmiş Yunanca",
"special-characters-group-cyrillic": "Kiril",
"special-characters-group-arabic": "Arap",
"special-characters-group-arabicextended": "Genişletilmiş Arapça",
"mw-widgets-titleinput-description-redirect": "$1'e yönlendirildi",
"sessionprovider-mediawiki-session-cookiesessionprovider": "çerez tabanlı oturumlar",
"sessionprovider-nocookies": "Çerezler devre dışı olabilir. Çerkezlerin aktif olduğuna emin olun ve yeniden başlatin.",
- "randomrootpage": "Rastgele kök sayfası"
+ "randomrootpage": "Rastgele kök sayfası",
+ "log-action-filter-block": "Blok türü:",
+ "log-action-filter-delete": "Silme türü:",
+ "log-action-filter-patrol": "Devriye türü:",
+ "log-action-filter-protect": "Koruma tipi:",
+ "log-action-filter-upload": "Yükleme türü:",
+ "log-action-filter-all": "Tümü",
+ "log-action-filter-block-block": "Blok",
+ "log-action-filter-block-reblock": "Blok değiştirme",
+ "log-action-filter-block-unblock": "Engeli kaldır",
+ "log-action-filter-delete-delete": "Sayfa silme",
+ "log-action-filter-delete-restore": "Sayfa silmeyi geri al",
+ "log-action-filter-delete-event": "Günlük silme",
+ "log-action-filter-delete-revision": "Gözden geçirmenin silinmesi",
+ "log-action-filter-patrol-patrol": "Manuel devriye",
+ "log-action-filter-patrol-autopatrol": "Otomatik devriye",
+ "log-action-filter-protect-protect": "Koruma",
+ "log-action-filter-protect-modify": "Koruma değişikliği",
+ "log-action-filter-protect-unprotect": "Korunmayan",
+ "log-action-filter-upload-upload": "Yeni yükleme",
+ "log-action-filter-upload-overwrite": "Yeniden yükle"
}
"recentchanges-label-bot": "Necen redakcijan tegi bot",
"recentchanges-label-unpatrolled": "Necidä redakcijad ei völ patruliruinugoi",
"recentchanges-label-plusminus": "Suruden toižetamine baitoiš",
+ "recentchanges-legend-heading": "<strong>Legend:</strong>",
"recentchanges-legend-newpage": "$1 - uz' lehtpol'",
"rcnotefrom": "Alemba oma anttud toižetused '''$2'''-späi ( '''$1'''-hesai).",
"rclistfrom": "Ozutada uded toižetused dataspäi $3 $2 augotaden",
"nocookieslogin": "{{SITENAME}} in nagkikinahanglan hin mga kuki para makapagpalog-in hin mga gumaramit. An im mga kuki in diri nagana.\nAlayon paganaha hira ngan utro liwat.",
"nocookiesfornew": "An imo akawnt han gumaramit in waray nahimo, kay tungod diri kami nakakakompirma han tinikangan.\nSiguradoha nga an mga cookies in nakaandar, igreload ini nga pakli ngan utroha.",
"noname": "Waray ka nakahatag hin maupay nga agnay-hit-gumaramit.",
- "loginsuccesstitle": "Malinamposon an pagsulod",
+ "loginsuccesstitle": "Nakalog-in",
"loginsuccess": "'''Ikaw in nakalog-in ha {{SITENAME}} komo \"$1\".'''",
"nosuchuser": "Waray gumaramit an may-ada ngaran nga \"$1\".\nIt mga agnay-hi-gumaramit in case sensitive.\nPanginano-a it imo pagbaybay, o [[Special:UserLogin/signup|paghimo hin bag-o nga akawnt]].",
"nosuchusershort": "Waray nagamit it may ngaran nga \"$1\".\nKitaa kun amo it im pagbaybay.",
"newarticle": "(Bag-o)",
"newarticletext": "Ginsunod mo an pakli nga waray pa kahihimo. Para ighimo an pakli, tikanga pagmakinilya ha kahon nga aada ha ubos (kitaa an [$1 nabulig nga pakli] para han kadugangan nga pananabutan). Kun sayop an imo pagkanhi, igpidlit an imo kanan panngaykay (''browser'') '''balik''' (''back'') nga piridlitan.",
"anontalkpagetext": "----\n''Ini in hiruhimangraw-nga-pakli para han waray magpakilala nga gumaramit, nga waray pa hinmimo hin akawnt.''\nMagamit la kami hin IP address para makilal-an hiya.\nSugad hini nga IP address, in puydi sinmaro hiton pipira nga mga gumaramit.\nKun ikaw in waray magpakilala nga gumaramit, ngan pag-abat mo in may mga diri naangay nga komento an ginpapadangat ha imo, alayon nala [[Special:UserLogin/signup|paghimo hin akawnt]] o [[Special:UserLogin|pag-log in]] para malikyan an sumurunod nga mga pagkalipat nga dapat para ha iba nga waray magpakilala nga mga gumaramit.",
- "noarticletext": "Waray yana nahasurat hini nga pakli.\nPuyde hi ikaw [[Special:Search/{{PAGENAME}}|magbiling para han ngaran hini nga pakli]] ha iba nga mga pakli,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} binga an mga nanginginlabot nga mga log],\no [{{fullurl:{{FULLPAGENAME}}|action=edit}} igliwat ini nga pakli]</span>.",
+ "noarticletext": "Waray yana teksto ha sulod hinin nga pakli.\nPuyde ka [[Special:Search/{{PAGENAME}}|mamiling hin titulo hinin nga pakli]] ha iba pa nga mga pakli,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pamilnga an may mga pagkahisumpay nga mga talaan],\no [{{fullurl:{{FULLPAGENAME}}|action=edit}} igliwat ini nga pakli]</span>.",
"noarticletext-nopermission": "Waray yana nahasurat hini nga pakli\nPuyde hi ikaw [[Special:Search/{{PAGENAME}}|magbiling han ngaran hini nga pakli]] ha iba nga mga pakli,\no <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} mamiling han mga nanginginlabot nga mga talaan]</span>, kundi diri ka gintutugotan hin paghímò hini nga pakli.",
"missing-revision": "Waray na an rebisyon #$1 han pakli nga ginngaranan nga \"{{FULLPAGENAME}}\".\n\nIni in agsob tungod han pagsunod hin daan nga sumpay hin kaagi ha pakli nga ginpara.\nAn mga detalye in mabibilngan ha [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].",
"userpage-userdoesnotexist": "Diri nakarehistro an akawnt han gumaramit nga \"$1\".\nAlayon pagpamuruotbuot kun karuyag mo maghimo/mag-edit hini nga pakli.",
"grant-createaccount": "Pahimo hin mga account",
"grant-createeditmovepage": "Paghimo, pagliwat, ngan pagbalhin hin mga pakli",
"grant-delete": "Pagpara hin mga pakli, mga rebisyon, ngan mga iginsulod ha log",
+ "grant-sendemail": "Igpadara hin email ngadto ha iba nga mga gumaramit",
+ "grant-uploadeditmovefile": "Pagkarga, pagsaliwan, ngan pagbalhin hin mga file",
+ "grant-uploadfile": "Pagkarga hin bag-o nga mga file",
+ "grant-basic": "Mga panguna nga katungod",
+ "grant-viewdeleted": "Kitaa an mga pinanmara nga file ngan pakli",
+ "grant-viewmywatchlist": "Kitaa an imo mga barantayon",
"newuserlogpage": "Talaan han paghimo hin gumaramit",
"newuserlogpagetext": "Ini an talaan han mga nagkahihimo nga mga gumaramit.",
"rightslog": "Talaan hin mga katungod han gumaramit",
+ "rightslogtext": "Ini an talaan han mga pagbag-o han mga katungod hit gumaramit.",
"action-read": "basaha ini nga pakli",
"action-edit": "liwata ini nga pakli",
"action-createpage": "pahimo hin mga pakli",
"import-rootpage-nosubpage": "Ngaran-lat'ang nga \"$1\" han gamot-pakli in diri natugot hin mga bahin-pakli.",
"importlogpage": "Talaan hin pan-aangbit",
"javascripttest-pagetext-skins": "Pagpili hin panit para ha pag-paandar han:",
- "tooltip-pt-userpage": "An imo pakli hin gumaramit",
- "tooltip-pt-mytalk": "An imo pakli hin hiruhimangraw",
- "tooltip-pt-preferences": "An imo mga karuyag",
+ "tooltip-pt-userpage": "{{GENDER:|An imo gumaramit}} nga pakli",
+ "tooltip-pt-mytalk": "{{GENDER:|An imo}} hiruhimangraw nga pakli",
+ "tooltip-pt-preferences": "{{GENDER:|An imo}} mga karuyag",
"tooltip-pt-watchlist": "An talaan hin mga pakli nga imo ginsisinubay para hin mga kabag-ohan",
- "tooltip-pt-mycontris": "Talaan han imo mga ámot",
+ "tooltip-pt-mycontris": "Listahan han {{GENDER:|imo}} mga gin-amot",
"tooltip-pt-login": "Gin-aaghat ka nga mag log-in, pero diri ini ginpipirit.",
"tooltip-pt-logout": "gawas",
"tooltip-pt-createaccount": "Ginaag-hat ka nga maghimo hin account ngan maglog-in; pero diri ini mandatorya",
"tooltip-t-recentchangeslinked": "Mga bag-o nga kabag-ohan ha mga pakli nga nahasumpay tikang hini nga pakli",
"tooltip-feed-rss": "RSS nga pangarga para hini nga pakli",
"tooltip-feed-atom": "Atom nga pangarga para hini nga pakli",
- "tooltip-t-contributions": "Kitaa an talaan hin mga amot hini nga nágámit",
+ "tooltip-t-contributions": "Kitaa an listahan hin mga amot {{GENDER:$1|hinin nga gumaramit}}",
"tooltip-t-emailuser": "Padad-i hin e-mail ini nga nágámit",
"tooltip-t-upload": "Pagkarga hin mga paypay",
"tooltip-t-specialpages": "Talaan hin mga pinaurog nga pakli",
"special-characters-group-khmer": "כמער",
"special-characters-title-endash": "ען טירע",
"special-characters-title-emdash": "עם טירע",
- "special-characters-title-minus": "מינוס"
+ "special-characters-title-minus": "מינוס",
+ "log-action-filter-upload": "טיפ ארויפֿלאד:",
+ "log-action-filter-all": "אַלע",
+ "log-action-filter-delete-delete": "אויסמעקן בלאט",
+ "log-action-filter-protect-unprotect": "אראפנעמען שיץ"
}
"revdelete-uname-unhid": "公开用户名",
"revdelete-restricted": "应用对管理员的限制",
"revdelete-unrestricted": "删除对管理员的限制",
- "logentry-block-block": "$1{{GENDER:$2|å°\81ç¦\81äº\86}}{{GENDER:$4|$3}}ï¼\8cæ\8c\81ç»æ\97¶é\97´$5 $6",
+ "logentry-block-block": "$1{{GENDER:$2|å°\81ç¦\81äº\86}}{{GENDER:$4|$3}}ï¼\8cæ\9c\9fé\99\90è\87³$5 $6",
"logentry-block-unblock": "$1{{GENDER:$2|解封了}}{{GENDER:$4|$3}}",
"logentry-block-reblock": "$1将{{GENDER:$4|$3}}的封禁设置{{GENDER:$2|更改为}}持续时间$5 $6",
"logentry-suppress-block": "$1{{GENDER:$2|封禁了}}{{GENDER:$4|$3}},持续时间$5 $6",
"special-characters-group-ipa": "国际音标",
"special-characters-group-symbols": "符号",
"special-characters-group-greek": "希腊字母",
+ "special-characters-group-greekextended": "希腊字母扩展",
"special-characters-group-cyrillic": "西里尔字母",
"special-characters-group-arabic": "阿拉伯字母",
"special-characters-group-arabicextended": "扩展阿拉伯字母",
'namespace' => [ '1', 'NAAMSPASIE', 'NAMESPACE' ],
'talkspace' => [ '1', 'BESPREKINGSBLADSY', 'TALKSPACE' ],
'fullpagename' => [ '1', 'VOLBLADSYNAAM', 'FULLPAGENAME' ],
- 'img_thumbnail' => [ '1', 'duimnael', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'duimnael', 'thumb', 'thumbnail' ],
'img_right' => [ '1', 'regs', 'right' ],
'img_left' => [ '1', 'links', 'left' ],
'img_none' => [ '1', 'geen', 'none' ],
'img_center' => [ '1', 'senter', 'center', 'centre' ],
- 'img_framed' => [ '1', 'omraam', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'omraam', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'raamloos', 'frameless' ],
'img_border' => [ '1', 'raam', 'border' ],
'img_top' => [ '1', 'bo', 'top' ],
'namespace' => [ '1', 'ESPACIODENOMBRES', 'ESPACIODENOMBRE', 'NAMESPACE' ],
'namespacee' => [ '1', 'ESPACIODENOMBRESE', 'ESPACIODENOMBREC', 'NAMESPACEE' ],
'img_right' => [ '1', 'dreita', 'derecha', 'dcha', 'der', 'right' ],
- 'img_left' => [ '1', 'cucha', 'zurda', 'izquierda', 'izda', 'izq', 'left' ],
+ 'img_left' => [ '1', 'cucha', 'izquierda', 'zurda', 'izda', 'izq', 'left' ],
'ns' => [ '0', 'EN:', 'EDN:', 'NS:' ],
'displaytitle' => [ '1', 'TÍTOL', 'MOSTRARTÍTULO', 'MOSTRARTITULO', 'DISPLAYTITLE' ],
'currentversion' => [ '1', 'BERSIÓNAUTUAL', 'BERSIONAUTUAL', 'REVISIÓNACTUAL', 'VERSIONACTUAL', 'VERSIÓNACTUAL', 'CURRENTVERSION' ],
'subst' => [ '0', 'نسخ:', 'SUBST:' ],
'safesubst' => [ '0', 'نسخ_آمن:', 'SAFESUBST:' ],
'msgnw' => [ '0', 'رسالة_بدون_تهيئة:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'تصغير', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'تصغير', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'تصغير=$1', 'مصغر=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'يمين', 'right' ],
'img_left' => [ '1', 'يسار', 'left' ],
'img_none' => [ '1', 'بدون', 'بلا', 'none' ],
'img_width' => [ '1', '$1بك', '$1عن', '$1px' ],
'img_center' => [ '1', 'مركز', 'center', 'centre' ],
- 'img_framed' => [ '1', 'إطار', 'بإطار', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'إطار', 'بإطار', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'لاإطار', 'frameless' ],
'img_lang' => [ '1', 'لغة=$1', 'lang=$1' ],
'img_page' => [ '1', 'صفحة=$1', 'صفحة_$1', 'page=$1', 'page $1' ],
'pagenamee' => [ '1', 'ܟܘܢܝܐ_ܕܦܐܬܐ', 'PAGENAMEE' ],
'namespace' => [ '1', 'ܚܩܠܐ', 'NAMESPACE' ],
'msg' => [ '0', 'ܐܓܪܬܐ:', 'MSG:' ],
- 'img_thumbnail' => [ '1', 'ܙܥܘܪܬܐ', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'ܙܥܘܪܬܐ', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'ܙܥܘܪܬܐ=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'ܝܡܝܢܐ', 'right' ],
'img_left' => [ '1', 'ܣܡܠܐ', 'left' ],
'subst' => [ '0', 'نسخ:', 'إحلال:', 'SUBST:' ],
'safesubst' => [ '0', 'نسخ_آمن:', 'SAFESUBST:' ],
'msgnw' => [ '0', 'رسالة_من_غير_تهيئه:', 'رسالة_بدون_تهيئة:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'تصغير', 'مصغر', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'تصغير', 'مصغر', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'تصغير=$1', 'مصغر=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'يمين', 'right' ],
'img_left' => [ '1', 'يسار', 'left' ],
'img_none' => [ '1', 'بدون', 'بلا', 'none' ],
'img_width' => [ '1', '$1بك', '$1عن', '$1px' ],
'img_center' => [ '1', 'مركز', 'center', 'centre' ],
- 'img_framed' => [ '1', 'إطار', 'بإطار', 'framed', 'enframed', 'frame' ],
- 'img_frameless' => [ '1', 'Ù\85Ù\86_غÙ\8aر_اطار', 'Ù\84اإطار', 'frameless' ],
+ 'img_framed' => [ '1', 'إطار', 'بإطار', 'frame', 'framed', 'enframed' ],
+ 'img_frameless' => [ '1', 'Ù\84اإطار', 'Ù\85Ù\86_غÙ\8aر_اطار', 'frameless' ],
'img_lang' => [ '1', 'لغه=$1', 'لغة=$1', 'lang=$1' ],
'img_page' => [ '1', 'صفح=$1', 'صفحه_$1', 'صفحة=$1', 'صفحة_$1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'معدول', 'معدول=$1', 'معدول_$1', 'upright', 'upright=$1', 'upright $1' ],
'img_right' => [ '1', 'ساغ', 'راست', 'right' ],
'img_left' => [ '1', 'سول', 'چپ', 'left' ],
'img_none' => [ '1', 'هئچ', 'هیچ', 'none' ],
- 'img_framed' => [ '1', 'قابیق', 'قاب', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'قابیق', 'قاب', 'frame', 'framed', 'enframed' ],
];
'img_left' => [ '1', 'wala', 'left' ],
'img_none' => [ '1', 'mayò', 'none' ],
'img_center' => [ '1', 'sentro', 'tangâ', 'center', 'centre' ],
- 'img_framed' => [ '1', 'nakakawadro', 'kwadro', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'nakakawadro', 'kwadro', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'daing kwadro', 'frameless' ],
'img_page' => [ '1', 'pahina=$1', 'pahina $1', 'page=$1', 'page $1' ],
'localurl' => [ '0', 'LOKALURL', 'LOCALURL:' ],
];
$magicWords = [
- 'img_thumbnail' => [ '1', 'міні', 'мініяцюра', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'міні', 'мініяцюра', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'міні=$1', 'мініяцюра=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'справа', 'right' ],
'img_left' => [ '1', 'злева', 'left' ],
'img_none' => [ '1', 'няма', 'none' ],
'img_width' => [ '1', '$1пкс', '$1px' ],
'img_center' => [ '1', 'цэнтр', 'center', 'centre' ],
- 'img_framed' => [ '1', 'безрамкі', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'безрамкі', 'frame', 'framed', 'enframed' ],
];
$bookstoreList = [
'msg' => [ '0', 'СЪОБЩ:', 'MSG:' ],
'subst' => [ '0', 'ЗАМЕСТ:', 'SUBST:' ],
'msgnw' => [ '0', 'СЪОБЩБУ:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'мини', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'мини', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'мини=$1', 'thumbnail=$1', 'thumb=$1' ],
- 'img_right' => [ '1', 'вдÑ\8fÑ\81но', 'дясно', 'д', 'right' ],
- 'img_left' => [ '1', 'влÑ\8fво', 'ляво', 'л', 'left' ],
+ 'img_right' => [ '1', 'дÑ\8fÑ\81но', 'вдясно', 'д', 'right' ],
+ 'img_left' => [ '1', 'лÑ\8fво', 'вляво', 'л', 'left' ],
'img_none' => [ '1', 'н', 'none' ],
'img_width' => [ '1', '$1пкс', '$1п', '$1px' ],
- 'img_center' => [ '1', 'център', 'центр', 'ц', 'center', 'centre' ],
- 'img_framed' => [ '1', 'рамка', 'врамка', 'framed', 'enframed', 'frame' ],
+ 'img_center' => [ '1', 'център', 'ц', 'центр', 'center', 'centre' ],
+ 'img_framed' => [ '1', 'рамка', 'врамка', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'безрамка', 'frameless' ],
'img_border' => [ '1', 'ръб', 'контур', 'border' ],
'int' => [ '0', 'ВЪТР:', 'INT:' ],
'msg' => [ '0', 'POR:', 'MSG:' ],
'subst' => [ '0', 'ZAMJENI:', 'SUBST:' ],
'msgnw' => [ '0', 'NVPOR:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'mini', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'mini', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'mini=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'desno', 'd', 'right' ],
'img_left' => [ '1', 'lijevo', 'l', 'left' ],
'img_none' => [ '1', 'n', 'bez', 'none' ],
'img_width' => [ '1', '$1piksel', '$1p', '$1px' ],
'img_center' => [ '1', 'centar', 'c', 'center', 'centre' ],
- 'img_framed' => [ '1', 'okvir', 'ram', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'okvir', 'ram', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'bez_okvira', 'frameless' ],
'img_page' => [ '1', 'stranica=$1', 'stranica $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'na_gore', 'na_gore=$1', 'na_gore_$1', 'upright', 'upright=$1', 'upright $1' ],
'msg' => [ '0', 'ХААМ:', 'СООБЩЕНИЕ:', 'СООБЩ:', 'MSG:' ],
'subst' => [ '0', 'ХӀОТТОР:', 'ХӀОТТ:', 'ПОДСТАНОВКА:', 'ПОДСТ:', 'SUBST:' ],
'msgnw' => [ '0', 'ВИКИ_ХААМ_БОЦАШ:', 'СООБЩ_БЕЗ_ВИКИ:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'жима', 'жимо', 'мини', 'миниаÑ\82Ñ\8eÑ\80а', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'мини', 'жима', 'жимо', 'миниаÑ\82Ñ\8eÑ\80а', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'жима=$1', 'жимо=$1', 'мини=$1', 'миниатюра=$1', 'thumbnail=$1', 'thumb=$1' ],
- 'img_right' => [ '1', 'бакъхьа', 'справа', 'right' ],
- 'img_left' => [ '1', 'Ñ\85аÑ\80Ñ\86Ñ\85Ñ\8cа', 'Ñ\81лева', 'left' ],
+ 'img_right' => [ '1', 'справа', 'бакъхьа', 'right' ],
+ 'img_left' => [ '1', 'Ñ\81лева', 'Ñ\85аÑ\80Ñ\86Ñ\85Ñ\8cа', 'left' ],
'img_none' => [ '1', 'йоцуш', 'без', 'none' ],
'img_width' => [ '1', '$1пкс', '$1px' ],
- 'img_center' => [ '1', 'Ñ\8eккÑ\8a', 'Ñ\86енÑ\82Ñ\80', 'center', 'centre' ],
- 'img_framed' => [ '1', 'гурабе', 'обрамить', 'framed', 'enframed', 'frame' ],
- 'img_frameless' => [ '1', 'гÑ\83Ñ\80абоÑ\86аÑ\88', 'безÑ\80амки', 'frameless' ],
+ 'img_center' => [ '1', 'Ñ\86енÑ\82Ñ\80', 'Ñ\8eккÑ\8a', 'center', 'centre' ],
+ 'img_framed' => [ '1', 'гурабе', 'обрамить', 'frame', 'framed', 'enframed' ],
+ 'img_frameless' => [ '1', 'безÑ\80амки', 'гÑ\83Ñ\80абоÑ\86аÑ\88', 'frameless' ],
'img_page' => [ '1', 'агlо=$1', 'агlо_$1', 'page_$1', 'страница=$1', 'страница_$1', 'страница $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'бакъхьалакхо', 'бакъхьалакхо=$1', 'бакъхьалакхо_$1', 'upright_$1', 'сверхусправа', 'сверхусправа=$1', 'сверхусправа_$1', 'сверхусправа $1', 'upright', 'upright=$1', 'upright $1' ],
'img_border' => [ '1', 'доза', 'граница', 'border' ],
'img_baseline' => [ '1', 'бух', 'основание', 'baseline' ],
- 'img_sub' => [ '1', 'бÑ\83Ñ\85а', 'под', 'sub' ],
+ 'img_sub' => [ '1', 'под', 'бÑ\83Ñ\85а', 'sub' ],
'img_super' => [ '1', 'тӀе', 'над', 'super', 'sup' ],
'img_top' => [ '1', 'лакхахь', 'сверху', 'top' ],
'img_text_top' => [ '1', 'лакххьара-йоза', 'текст-сверху', 'text-top' ],
];
$magicWords = [
- 'img_thumbnail' => [ '1', 'وێنۆک', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'وێنۆک', 'thumb', 'thumbnail' ],
'img_right' => [ '1', 'ڕاست', 'right' ],
'img_left' => [ '1', 'چەپ', 'left' ],
'img_width' => [ '1', '$1پیکسڵ', '$1px' ],
'img_center' => [ '1', 'ناوەڕاست', 'center', 'centre' ],
- 'img_framed' => [ '1', 'چوارچێوە', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'چوارچێوە', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'بێچوارچێوە', 'frameless' ],
'img_border' => [ '1', 'سنوور', 'border' ],
];
'Filepath' => [ 'Cesta_k_souboru' ],
'Import' => [ 'Importovat_stránky' ],
'Invalidateemail' => [ 'Zneplatnit_e-mail', 'Zrušit_potvrzení_e-mailu' ],
- 'BlockList' => [ 'Blokovaní_uživatelé', 'Blokovani_uzivatele' ],
+ 'BlockList' => [ 'Blokovaní_uživatelé', 'Blokovani_uzivatele', 'Zablokovaní_uživatelé' ],
'LinkSearch' => [ 'Hledání_odkazů', 'Hledani_odkazu' ],
'Listadmins' => [ 'Seznam_správců', 'Seznam_spravcu' ],
'Listbots' => [ 'Seznam_botů', 'Seznam_botu' ],
'Listfiles' => [ 'Seznam_souborů', 'Seznam_souboru' ],
- 'Listgrouprights' => [ 'Seznam_uživatelských_práv', 'Seznam_uzivatelskych_prav' ],
+ 'Listgrouprights' => [ 'Práva_uživatelských_skupin', 'Seznam_uživatelských_práv', 'Seznam_uzivatelskych_prav' ],
'Listredirects' => [ 'Seznam_přesměrování', 'Seznam_presmerovani' ],
'Listusers' => [ 'Uživatelé', 'Uzivatele', 'Seznam_uživatelů', 'Seznam_uzivatelu' ],
'Lockdb' => [ 'Zamknout_databázi', 'Zamknout_databazi' ],
'Mostlinkedcategories' => [ 'Nejpoužívanější_kategorie', 'Nejpouzivanejsi_kategorie' ],
'Mostlinkedtemplates' => [ 'Nejpoužívanější_šablony', 'Nejpouzivanejsi_sablony' ],
'Mostrevisions' => [ 'Stránky_s_nejvíce_editacemi', 'Stranky_s_nejvice_editacemi', 'Stránky_s_nejvyšším_počtem_editací' ],
- 'Movepage' => [ 'Přesunout_stránku' ],
+ 'Movepage' => [ 'Přesunout_stránku', 'Přejmenovat_stránku' ],
'Mycontributions' => [ 'Mé_příspěvky', 'Me_prispevky' ],
'Mypage' => [ 'Moje_stránka', 'Moje_stranka' ],
'Mytalk' => [ 'Moje_diskuse' ],
'subjectpagenamee' => [ '1', 'NÁZEVČLÁNKUE', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
'subst' => [ '0', 'VLOŽIT:', 'SUBST:' ],
'msgnw' => [ '0', 'VLOŽITNW:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'náhled', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'náhled', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'náhled=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'vpravo', 'right' ],
'img_left' => [ '1', 'vlevo', 'left' ],
'img_none' => [ '1', 'žádné', 'none' ],
'img_width' => [ '1', '$1pixelů', '$1px' ],
'img_center' => [ '1', 'střed', 'center', 'centre' ],
- 'img_framed' => [ '1', 'rám', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'rám', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'bezrámu', 'frameless' ],
'img_lang' => [ '1', 'jazyk=$1', 'lang=$1' ],
'img_page' => [ '1', 'strana=$1', 'strana_$1', 'page=$1', 'page $1' ],
'subpagenamee' => [ '1', 'ENWISDUDALENE', 'SUBPAGENAMEE' ],
'talkpagename' => [ '1', 'ENWTUDALENSGWRS', 'TALKPAGENAME' ],
'talkpagenamee' => [ '1', 'ENWTUDALENSGWRSE', 'TALKPAGENAMEE' ],
- 'img_thumbnail' => [ '1', 'ewin_bawd', 'bawd', 'mân-lun', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'bawd', 'ewin_bawd', 'mân-lun', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'mân-lun=$1', 'bawd=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'de', 'right' ],
'img_left' => [ '1', 'chwith', 'left' ],
'subjectpagenamee' => [ '1', 'HAUPTSEITENNAME_URL', 'VORDERSEITE_URL', 'HAUPTSEITE_URL', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
'subst' => [ '0', 'ERS:', 'SUBST:' ],
'safesubst' => [ '0', 'SICHER_ERS:', 'SICHERERS:', 'SAFESUBST:' ],
- 'img_thumbnail' => [ '1', 'mini', 'miniatur', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'miniatur', 'mini', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'miniatur=$1', 'mini=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'rechts', 'right' ],
'img_left' => [ '1', 'links', 'left' ],
'img_none' => [ '1', 'ohne', 'none' ],
'img_center' => [ '1', 'zentriert', 'center', 'centre' ],
- 'img_framed' => [ '1', 'gerahmt', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'gerahmt', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'rahmenlos', 'frameless' ],
'img_lang' => [ '1', 'sprache=$1', 'lang=$1' ],
'img_page' => [ '1', 'seite=$1', 'seite_$1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'hochkant', 'hochkant=$1', 'hochkant_$1', 'upright', 'upright=$1', 'upright $1' ],
'img_border' => [ '1', 'rand', 'border' ],
'img_baseline' => [ '1', 'grundlinie', 'baseline' ],
- 'img_sub' => [ '1', 'tiefgestellt', 'tief', 'sub' ],
- 'img_super' => [ '1', 'hochgestellt', 'hoch', 'super', 'sup' ],
+ 'img_sub' => [ '1', 'tief', 'tiefgestellt', 'sub' ],
+ 'img_super' => [ '1', 'hoch', 'hochgestellt', 'super', 'sup' ],
'img_top' => [ '1', 'oben', 'top' ],
'img_text_top' => [ '1', 'text-oben', 'text-top' ],
'img_middle' => [ '1', 'mitte', 'middle' ],
'subst' => [ '0', 'KOPYAKE', 'ATEBERDE', 'SUBST:' ],
'safesubst' => [ '0', 'EMELEYATEBERDE', 'SAFESUBST:' ],
'msgnw' => [ '0', 'MSCNW:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'resmoqıckek', 'qıckek', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'resmoqıckek', 'qıckek', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'resmoqıckek=$1', 'qıckek=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'raşt', 'right' ],
'img_left' => [ '1', 'çep', 'left' ],
'img_none' => [ '1', 'çıniyo', 'none' ],
'img_width' => [ '1', '$1pik', '$1piksel', '$1px' ],
'img_center' => [ '1', 'werte', 'miyan', 'center', 'centre' ],
- 'img_framed' => [ '1', 'çerçeweyın', 'çerçewekerden', 'çerçewe', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'çerçeweyın', 'çerçewekerden', 'çerçewe', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'béçerçewe', 'frameless' ],
'img_lang' => [ '1', 'zuwan=1$', 'lang=$1' ],
'img_page' => [ '1', 'pera=$1', 'pera_$1', 'page=$1', 'page $1' ],
'img_border' => [ '1', 'sinor', 'border' ],
'img_baseline' => [ '1', 'Sinoréerdi', 'baseline' ],
'img_sub' => [ '1', 'anvar', 'sub' ],
- 'img_super' => [ '1', 'corén', 'cor', 'super', 'sup' ],
+ 'img_super' => [ '1', 'cor', 'corén', 'super', 'sup' ],
'img_top' => [ '1', 'gedug', 'top' ],
'img_text_top' => [ '1', 'gedug-metin', 'text-top' ],
'img_middle' => [ '1', 'merkez', 'middle' ],
'msg' => [ '0', 'ΚΕΙΜΕΝΟ:', 'MSG:' ],
'subst' => [ '0', 'ΑΛΛΑΓΗ:', 'SUBST:' ],
'msgnw' => [ '0', 'ΑΠΛΟΚΕΙΜΕΝΟ:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'μικρογραφία', 'μινιατούρα', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'μικρογραφία', 'μινιατούρα', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'μικρογραφία=$1', 'μινιατούρα=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'δεξιά', 'right' ],
'img_left' => [ '1', 'αριστερά', 'left' ],
'img_none' => [ '1', 'καθόλου', 'none' ],
'img_width' => [ '1', '$1εσ', '$1px' ],
'img_center' => [ '1', 'κέντρο', 'center', 'centre' ],
- 'img_framed' => [ '1', 'με-πλαίσιο', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'με-πλαίσιο', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'χωρίς-πλαίσιο', 'frameless' ],
'img_page' => [ '1', 'σελίδα=$1', 'σελίδα_$1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'κατακόρυφα', 'κατακόρυφα=$1', 'κατακόρυφα_$1', 'upright', 'upright=$1', 'upright $1' ],
* IDs must be valid identifiers, they cannot contain hyphens.
* CASE is 0 to match all case variants, 1 for case-sensitive
*
- * Note to translators:
- * Please include the English words as synonyms. This allows people
- * from other wikis to contribute more easily.
+ * Note to localisers:
+ * - Include the English magic words as synonyms. This allows people from other
+ * that do no speak the language to contribute more easily.
+ * - Order the aliases so that common aliases are occur before more rarely
+ * used aliases. Tools are expected to use the first alias.
*
* This array can be modified at runtime with the LanguageGetMagic hook
*/
'subst' => [ 0, 'SUBST:' ],
'safesubst' => [ 0, 'SAFESUBST:' ],
'msgnw' => [ 0, 'MSGNW:' ],
- 'img_thumbnail' => [ 1, 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ 1, 'thumb', 'thumbnail' ],
'img_manualthumb' => [ 1, 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ 1, 'right' ],
'img_left' => [ 1, 'left' ],
'img_none' => [ 1, 'none' ],
'img_width' => [ 1, '$1px' ],
'img_center' => [ 1, 'center', 'centre' ],
- 'img_framed' => [ 1, 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ 1, 'frame', 'framed', 'enframed' ],
'img_frameless' => [ 1, 'frameless' ],
'img_lang' => [ 1, 'lang=$1' ],
'img_page' => [ 1, 'page=$1', 'page $1' ],
'subst' => [ '0', 'ANSTAT:', 'SUBST:' ],
'safesubst' => [ '0', 'SEKURANSTAT:', 'SAFESUBST:' ],
'msgnw' => [ '0', 'NVMSĜ:', 'NVMSGX:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'eta', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'eta', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'eta=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'dekstra', 'dekstre', 'right' ],
'img_left' => [ '1', 'maldekstra', 'maldekstre', 'left' ],
- 'img_none' => [ '1', 'nenio', 'neniu', 'none' ],
+ 'img_none' => [ '1', 'neniu', 'nenio', 'none' ],
'img_width' => [ '1', '$1ra', '$1px' ],
'img_center' => [ '1', 'centra', 'meza', 'center', 'centre' ],
- 'img_framed' => [ '1', 'kadro', 'enkadrita', 'enkadrite', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'kadro', 'enkadrita', 'enkadrite', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'senkadra', 'frameless' ],
'img_page' => [ '1', 'paĝo=$1', 'paĝo $1', 'pagxo=$1', 'pagxo_$1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'altdekstre', 'altdekstre=$1', 'altdekstre_$1', 'upright', 'upright=$1', 'upright $1' ],
'subjectpagenamee' => [ '1', 'NOMBREDEPAGINADETEMAC', 'NOMBREDEPÁGINADETEMAC', 'NOMBREDEPÁGINADEASUNTOC', 'NOMBREDEPAGINADEASUNTOC', 'NOMBREDEPAGINADEARTICULOC', 'NOMBREDEPÁGINADEARTÍCULOC', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
'msg' => [ '0', 'MSJ:', 'MSG:' ],
'subst' => [ '0', 'SUST:', 'FIJAR:', 'SUBST:' ],
- 'img_thumbnail' => [ '1', 'miniaturadeimagen', 'miniatura', 'mini', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'miniaturadeimagen', 'miniatura', 'mini', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'miniaturadeimagen=$1', 'miniatura=$1', 'thumbnail=$1', 'thumb=$1' ],
- 'img_right' => [ '1', 'derecha', 'dcha', 'der', 'right' ],
+ 'img_right' => [ '1', 'derecha', 'der', 'dcha', 'right' ],
'img_left' => [ '1', 'izquierda', 'izda', 'izq', 'left' ],
- 'img_none' => [ '1', 'ninguna', 'nada', 'no', 'ninguno', 'none' ],
+ 'img_none' => [ '1', 'no', 'ninguna', 'ninguno', 'nada', 'none' ],
'img_center' => [ '1', 'centro', 'centrado', 'centrada', 'centrar', 'center', 'centre' ],
- 'img_framed' => [ '1', 'marco', 'enmarcado', 'enmarcada', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'marco', 'enmarcado', 'enmarcada', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'sinmarco', 'sin_enmarcar', 'sinenmarcar', 'frameless' ],
'img_lang' => [ '1', 'idioma=$1', 'lang=$1' ],
'img_page' => [ '1', 'pagina=$1', 'página=$1', 'pagina_$1', 'página_$1', 'page=$1', 'page $1' ],
'talkpagename' => [ '1', 'ARUTELUNIMI', 'TALKPAGENAME' ],
'talkpagenamee' => [ '1', 'ARUTELUNIMI1', 'TALKPAGENAMEE' ],
'subst' => [ '0', 'ASENDA:', 'SUBST:' ],
- 'img_thumbnail' => [ '1', 'pisi', 'pisipilt', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'pisi', 'pisipilt', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'pisi=$1', 'pisipilt=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'paremal', 'right' ],
'img_left' => [ '1', 'vasakul', 'left' ],
'img_none' => [ '1', 'tühi', 'none' ],
'img_center' => [ '1', 'keskel', 'center', 'centre' ],
- 'img_framed' => [ '1', 'raam', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'raam', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'raamita', 'frameless' ],
'img_lang' => [ '1', 'keel=$1', 'lang=$1' ],
'img_page' => [ '1', 'lehekülg=$1', 'lehekülg_$1', 'page=$1', 'page $1' ],
'subst' => [ '0', 'جایگزین:', 'جا:', 'SUBST:' ],
'safesubst' => [ '0', 'جایگزین_امن:', 'جام:', 'SAFESUBST:' ],
'msgnw' => [ '0', 'پیغامبیبسط:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'بندانگشتی', 'انگشتدان', 'انگشتی', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'بندانگشتی', 'انگشتی', 'انگشتدان', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'بندانگشتی=$1', 'انگشتدان=$1', 'انگشتی=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'راست', 'right' ],
'img_left' => [ '1', 'چپ', 'left' ],
'img_none' => [ '1', 'هیچ', 'none' ],
'img_width' => [ '1', '$1پیکسل', '$1px' ],
'img_center' => [ '1', 'وسط', 'center', 'centre' ],
- 'img_framed' => [ '1', 'قاب', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'قاب', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'بیقاب', 'بیقاب', 'بی_قاب', 'frameless' ],
'img_lang' => [ '1', 'زبان=$1', 'lang=$1' ],
'img_page' => [ '1', 'صفحه=$1', 'صفحه_$1', 'page=$1', 'page $1' ],
'subjectpagename' => [ '1', 'AIHESIVUNIMI', 'ARTIKKELISIVUNIMI', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ],
'subjectpagenamee' => [ '1', 'AIHESIVUNIMIE', 'ARTIKKELISIVUNIMIE', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
'subst' => [ '0', 'VASTINE:', 'SUBST:' ],
- 'img_thumbnail' => [ '1', 'pienoiskuva', 'pienois', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'pienoiskuva', 'pienois', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'pienoiskuva=$1', 'pienois=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'oikea', 'right' ],
'img_left' => [ '1', 'vasen', 'left' ],
'img_none' => [ '1', 'tyhjä', 'none' ],
- 'img_center' => [ '1', 'keskitetty', 'keski', 'center', 'centre' ],
- 'img_framed' => [ '1', 'kehys', 'kehystetty', 'framed', 'enframed', 'frame' ],
+ 'img_center' => [ '1', 'keski', 'keskitetty', 'center', 'centre' ],
+ 'img_framed' => [ '1', 'kehys', 'kehystetty', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'kehyksetön', 'frameless' ],
'img_page' => [ '1', 'sivu=$1', 'sivu_$1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'yläoikea', 'yläoikea=$1', 'yläoikea_$1', 'upright', 'upright=$1', 'upright $1' ],
'talkpagenamee' => [ '1', 'NOMPAGEDISCUSSIONX', 'TALKPAGENAMEE' ],
'subjectpagename' => [ '1', 'NOMPAGESUJET', 'NOMPAGEARTICLE', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ],
'subjectpagenamee' => [ '1', 'NOMPAGESUJETX', 'NOMPAGEARTICLEX', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
- 'img_thumbnail' => [ '1', 'vignette', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'vignette', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'vignette=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'droite', 'right' ],
'img_left' => [ '1', 'gauche', 'left' ],
'img_none' => [ '1', 'néant', 'neant', 'none' ],
'img_center' => [ '1', 'centré', 'center', 'centre' ],
- 'img_framed' => [ '1', 'cadre', 'encadré', 'encadre', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'cadre', 'encadré', 'encadre', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'sans_cadre', 'non_encadré', 'non_encadre', 'frameless' ],
'img_lang' => [ '1', 'langue=$1', 'lang=$1' ],
'img_upright' => [ '1', 'redresse', 'redresse=$1', 'redresse_$1', 'upright', 'upright=$1', 'upright $1' ],
'img_border' => [ '1', 'bordure', 'border' ],
- 'img_baseline' => [ '1', 'ligne-de-base', 'base', 'baseline' ],
+ 'img_baseline' => [ '1', 'base', 'ligne-de-base', 'baseline' ],
'img_sub' => [ '1', 'indice', 'ind', 'sub' ],
'img_super' => [ '1', 'exposant', 'exp', 'super', 'sup' ],
'img_top' => [ '1', 'haut', 'top' ],
'subjectpagenamee' => [ '1', 'NOM_DE_LA_PÂGE_DU_SUJÈT_URL', 'NOM_DE_LA_PÂGE_DE_L_ARTICLLO_URL', 'NOMPAGESUJETX', 'NOMPAGEARTICLEX', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
'msg' => [ '0', 'MSJ:', 'MSG:' ],
'msgnw' => [ '0', 'MSJNV:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'figura', 'vignette', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'figura', 'vignette', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'figura=$1', 'vignette=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'drêta', 'droite', 'right' ],
'img_left' => [ '1', 'gôche', 'gauche', 'left' ],
'img_none' => [ '1', 'vouedo', 'néant', 'neant', 'none' ],
'img_center' => [ '1', 'centrâ', 'centré', 'center', 'centre' ],
- 'img_framed' => [ '1', 'encâdrâ', 'câdro', 'cadre', 'encadré', 'encadre', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'encâdrâ', 'câdro', 'cadre', 'encadré', 'encadre', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'sen_câdro', 'pas_encâdrâ', 'sans_cadre', 'non_encadré', 'non_encadre', 'frameless' ],
'img_page' => [ '1', 'pâge=$1', 'pâge $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'drêt', 'drêt=$1', 'drêt $1', 'redresse', 'redresse=$1', 'redresse $1', 'redresse_$1', 'upright', 'upright=$1', 'upright $1' ],
'msg' => [ '0', 'TCHT:', 'MSG:' ],
'subst' => [ '0', 'IONAD:', 'SUBST:' ],
'msgnw' => [ '0', 'TCHTFS:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'mionsamhail', 'mion', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'mion', 'mionsamhail', 'thumb', 'thumbnail' ],
'img_right' => [ '1', 'deas', 'right' ],
'img_left' => [ '1', 'clé', 'left' ],
'img_none' => [ '1', 'faic', 'none' ],
'img_center' => [ '1', 'lár', 'center', 'centre' ],
- 'img_framed' => [ '1', 'fráma', 'frámaithe', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'fráma', 'frámaithe', 'frame', 'framed', 'enframed' ],
'int' => [ '0', 'INMH:', 'INT:' ],
'sitename' => [ '1', 'AINMANTSUÍMH', 'SITENAME' ],
'ns' => [ '0', 'AS:', 'NS:' ],
'basepagename' => [ '1', 'NOMEDAPÁXINABASE', 'NOMEDAPAGINABASE', 'NOMEDAPÁGINABASE', 'BASEPAGENAME' ],
'talkpagename' => [ '1', 'NOMEDAPÁXINADECONVERSA', 'NOMEDAPAGINADEDISCUSSAO', 'NOMEDAPÁGINADEDISCUSSÃO', 'TALKPAGENAME' ],
'subjectpagename' => [ '1', 'NOMEDAPÁXINADECONTIDO', 'NOMEDAPAGINADECONTEUDO', 'NOMEDAPÁGINADECONTEÚDO', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ],
- 'img_thumbnail' => [ '1', 'miniatura', 'miniaturadaimaxe', 'miniaturadaimagem', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'miniatura', 'miniaturadaimagem', 'miniaturadaimaxe', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'miniatura=$1', 'miniaturadaimaxe=$1', 'miniaturadaimagem=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'dereita', 'direita', 'right' ],
'img_left' => [ '1', 'esquerda', 'left' ],
'img_none' => [ '1', 'ningún', 'nenhum', 'none' ],
'img_center' => [ '1', 'centro', 'center', 'centre' ],
- 'img_framed' => [ '1', 'conmarco', 'conbordo', 'marco', 'commoldura', 'comborda', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'conmarco', 'marco', 'conbordo', 'commoldura', 'comborda', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'senmarco', 'senbordo', 'semmoldura', 'semborda', 'frameless' ],
'img_page' => [ '1', 'páxina=$1', 'páxina_$1', 'página=$1', 'página_$1', 'página $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'arribaádereita', 'arribaádereita=$1', 'arribaádereita_$1', 'superiordireito', 'superiordireito=$1', 'superiordireito_$1', 'superiordireito $1', 'upright', 'upright=$1', 'upright $1' ],
- 'img_border' => [ '1', 'bordo', 'borda', 'border' ],
+ 'img_border' => [ '1', 'borda', 'bordo', 'border' ],
'img_baseline' => [ '1', 'liñadebase', 'linhadebase', 'baseline' ],
'img_top' => [ '1', 'arriba', 'acima', 'top' ],
'img_text_top' => [ '1', 'texto-arriba', 'text-top' ],
'subst' => [ '0', 'ס:', 'SUBST:' ],
'safesubst' => [ '0', 'ס בטוח:', 'SAFESUBST:' ],
'msgnw' => [ '0', 'הכללת מקור', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'ממוזער', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'ממוזער', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'ממוזער=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'ימין', 'right' ],
'img_left' => [ '1', 'שמאל', 'left' ],
'img_none' => [ '1', 'ללא', 'none' ],
'img_width' => [ '1', '$1 פיקסלים', '$1px' ],
'img_center' => [ '1', 'מרכז', 'center', 'centre' ],
- 'img_framed' => [ '1', '×\9e×\9e×\95ס×\92ר', '×\9eס×\92רת', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', '×\9eס×\92רת', '×\9e×\9e×\95ס×\92ר', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'לא ממוסגר', 'ללא מסגרת', 'frameless' ],
'img_page' => [ '1', 'דף=$1', 'דף $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'ימין למעלה', 'ימין למעלה=$1', 'ימין למעלה $1', 'upright', 'upright=$1', 'upright $1' ],
- 'img_border' => [ '1', 'גבולות', 'גבול', 'border' ],
+ 'img_border' => [ '1', 'גבול', 'גבולות', 'border' ],
'img_baseline' => [ '1', 'שורת הבסיס', 'baseline' ],
'img_sub' => [ '1', 'תחתי', 'sub' ],
'img_super' => [ '1', 'עילי', 'super', 'sup' ],
'subst' => [ '0', 'प्रति:', 'SUBST:' ],
'safesubst' => [ '0', 'सुरक्षित_प्रति:', 'SAFESUBST:' ],
'msgnw' => [ '0', 'सन्देश_नोविकी:', 'संदेश_नोविकी:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'अंगूठाकार', 'अंगूठा', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'अंगूठाकार', 'अंगूठा', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'अंगूठाकार=$1', 'अंगूठा=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'दाएँ', 'दायें', 'दाएं', 'right' ],
- 'img_left' => [ '1', 'बाà¤\8fà¤\81', 'बायà¥\87à¤\82', 'बाà¤\8fं', 'left' ],
+ 'img_left' => [ '1', 'बाà¤\8fà¤\81', 'बाà¤\8fà¤\82', 'बायà¥\87ं', 'left' ],
'img_none' => [ '1', 'कोई_नहीं', 'none' ],
'img_width' => [ '1', '$1पिक्सेल', '$1px' ],
- 'img_center' => [ '1', 'à¤\95à¥\87नà¥\8dदà¥\8dर', 'à¤\95à¥\87à¤\82द्र', 'केन्द्रित', 'केंद्रित', 'center', 'centre' ],
- 'img_framed' => [ '1', 'फ़à¥\8dरà¥\87म', 'फà¥\8dरà¥\87म', 'framed', 'enframed', 'frame' ],
+ 'img_center' => [ '1', 'à¤\95à¥\87à¤\82दà¥\8dर', 'à¤\95à¥\87नà¥\8dद्र', 'केन्द्रित', 'केंद्रित', 'center', 'centre' ],
+ 'img_framed' => [ '1', 'फà¥\8dरà¥\87म', 'फ़à¥\8dरà¥\87म', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'फ़्रेमहीन', 'फ्रेमहीन', 'frameless' ],
'img_lang' => [ '1', 'भाषा=$1', 'lang=$1' ],
'img_page' => [ '1', 'पृष्ठ=$1', 'पृष्ठ_$1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'खड़ी', 'खड़ी=$1', 'खड़ी_$1', 'upright', 'upright=$1', 'upright $1' ],
- 'img_border' => [ '1', 'à¤\95िनारा', 'बà¥\89रà¥\8dडर', 'border' ],
+ 'img_border' => [ '1', 'बà¥\89रà¥\8dडर', 'à¤\95िनारा', 'border' ],
'img_baseline' => [ '1', 'आधार_रेखा', 'baseline' ],
'img_sub' => [ '1', 'पद', 'sub' ],
'img_super' => [ '1', 'मूर्ध', 'super', 'sup' ],
'subjectpagename' => [ '1', 'IMEGLAVNESTRANICE', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ],
'subjectpagenamee' => [ '1', 'IMEGLAVNESTRANICEE', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
'subst' => [ '0', 'ZAMJENA:', 'SUBST:' ],
- 'img_thumbnail' => [ '1', 'minijatura', 'mini', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'mini', 'minijatura', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'minijatura=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'desno', 'right' ],
'img_left' => [ '1', 'lijevo', 'left' ],
'img_none' => [ '1', 'ništa', 'none' ],
'img_center' => [ '1', 'središte', 'center', 'centre' ],
- 'img_framed' => [ '1', 'okvir', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'okvir', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'bezokvira', 'frameless' ],
'img_lang' => [ '1', 'jezik=$1', 'lang=$1' ],
'img_page' => [ '1', 'stranica=$1', 'stranica $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'uspravno=$1', 'uspravno $1', 'upright', 'upright=$1', 'upright $1' ],
'img_border' => [ '1', 'obrub', 'border' ],
'img_baseline' => [ '1', 'osnovnacrta', 'baseline' ],
- 'img_sub' => [ '1', 'potpis', 'ind', 'sub' ],
+ 'img_sub' => [ '1', 'ind', 'potpis', 'sub' ],
'img_super' => [ '1', 'natpis', 'eks', 'super', 'sup' ],
'img_top' => [ '1', 'vrh', 'top' ],
'img_text_top' => [ '1', 'tekst-vrh', 'text-top' ],
'subjectpagenamee' => [ '1', 'SZÓCIKKNEVEE', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
'msg' => [ '0', 'ÜZENET:', 'ÜZ:', 'MSG:' ],
'subst' => [ '0', 'BEILLESZT:', 'BEMÁSOL:', 'SUBST:' ],
- 'img_thumbnail' => [ '1', 'bélyegkép', 'bélyeg', 'miniatűr', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'bélyegkép', 'bélyeg', 'miniatűr', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'bélyegkép=$1', 'bélyeg=$1', 'miniatűr=$1', 'thumbnail=$1', 'thumb=$1' ],
- 'img_right' => [ '1', 'jobb', 'jobbra', 'right' ],
- 'img_left' => [ '1', 'bal', 'balra', 'left' ],
+ 'img_right' => [ '1', 'jobbra', 'jobb', 'right' ],
+ 'img_left' => [ '1', 'balra', 'bal', 'left' ],
'img_none' => [ '1', 'semmi', 'none' ],
- 'img_center' => [ '1', 'közép', 'középre', 'center', 'centre' ],
- 'img_framed' => [ '1', 'keretezett', 'keretes', 'keretben', 'kerettel', 'framed', 'enframed', 'frame' ],
+ 'img_center' => [ '1', 'középre', 'közép', 'center', 'centre' ],
+ 'img_framed' => [ '1', 'keretezett', 'keretben', 'keretes', 'kerettel', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'keretnélküli', 'frameless' ],
'img_page' => [ '1', 'oldal=$1', 'oldal $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'fennjobbra', 'fennjobbra=$1', 'fennjobbra $1', 'upright', 'upright=$1', 'upright $1' ],
'img_top' => [ '1', 'fenn', 'fent', 'top' ],
'img_text_top' => [ '1', 'szöveg-fenn', 'szöveg-fent', 'text-top' ],
'img_middle' => [ '1', 'vközépen', 'vközépre', 'middle' ],
- 'img_bottom' => [ '1', 'lenn', 'lent', 'bottom' ],
+ 'img_bottom' => [ '1', 'lent', 'lenn', 'bottom' ],
'img_text_bottom' => [ '1', 'szöveg-lenn', 'szöveg-lent', 'text-bottom' ],
'sitename' => [ '1', 'WIKINEVE', 'SITENAME' ],
'ns' => [ '0', 'NÉVTÉR:', 'NS:' ],
'subjectpagenamee' => [ '1', 'ՀՈԴՎԱԾԻ_ԷՋԻ_ԱՆՎԱՆՈՒՄԸ_2', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
'msg' => [ '0', 'ՀՈՂՈՐԴ՝', 'MSG:' ],
'msgnw' => [ '0', 'ՀՈՂՈՐԴ_ԱՌԱՆՑ_ՎԻՔԻԻ՝', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'մինի', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'մինի', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'մինի=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'աջից', 'right' ],
'img_left' => [ '1', 'ձախից', 'left' ],
'img_none' => [ '1', 'առանց', 'none' ],
'img_width' => [ '1', '$1փքս', '$1px' ],
'img_center' => [ '1', 'կենտրոն', 'center', 'centre' ],
- 'img_framed' => [ '1', 'շրջափակել', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'շրջափակել', 'frame', 'framed', 'enframed' ],
'img_page' => [ '1', 'էջը=$1', 'էջ $1', 'page=$1', 'page $1' ],
'int' => [ '0', 'ՆԵՐՔ՝', 'INT:' ],
'sitename' => [ '1', 'ԿԱՅՔԻ_ԱՆՈՒՆԸ', 'SITENAME' ],
'msg' => [ '0', 'PSN:', 'PESAN:', 'MSG:' ],
'subst' => [ '0', 'GNT:', 'GANTI:', 'TUKAR:', 'SUBST:' ],
'msgnw' => [ '0', 'TPL:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'jmpl', 'jempol', 'mini', 'miniatur', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'jmpl', 'jempol', 'mini', 'miniatur', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'jmpl=$1', 'jempol=$1', 'mini=$1', 'miniatur=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'ka', 'kanan', 'right' ],
- 'img_left' => [ '1', 'ki', 'kiri', 'left' ],
+ 'img_left' => [ '1', 'kiri', 'ki', 'left' ],
'img_none' => [ '1', 'nir', 'tanpa', 'none' ],
'img_center' => [ '1', 'pus', 'pusat', 'center', 'centre' ],
- 'img_framed' => [ '1', 'bing', 'bingkai', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'bingkai', 'bing', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'nirbing', 'tanpabingkai', 'frameless' ],
'img_lang' => [ '1', 'bhs=$1', 'lang=$1' ],
'img_page' => [ '1', 'hal=$1', 'halaman=$1', 'hal_$1', 'halaman_$1', 'page=$1', 'page $1' ],
'subpagename' => [ '1', 'NOMESOTTOPAGINA', 'SUBPAGENAME' ],
'subpagenamee' => [ '1', 'NOMESOTTOPAGINAE', 'SUBPAGENAMEE' ],
'subst' => [ '0', 'SOST:', 'SUBST:' ],
- 'img_thumbnail' => [ '1', 'miniatura', 'min', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'miniatura', 'min', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'miniatura=$1', 'min=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'destra', 'right' ],
'img_left' => [ '1', 'sinistra', 'left' ],
'img_none' => [ '1', 'nessuno', 'none' ],
'img_center' => [ '1', 'centro', 'center', 'centre' ],
- 'img_framed' => [ '1', 'riquadrato', 'incorniciato', 'originale', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'riquadrato', 'originale', 'incorniciato', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'senza_cornice', 'frameless' ],
'img_page' => [ '1', 'pagina=$1', 'pagina_$1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'verticale', 'verticale=$1', 'verticale_$1', 'upright', 'upright=$1', 'upright $1' ],
'subst' => [ '0', '展開:', '展開:', 'SUBST:' ],
'safesubst' => [ '0', '安全展開:', 'SAFESUBST:' ],
'msgnw' => [ '0', 'ウィキ無効メッセージ:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'サムネイル', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'サムネイル', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', '代替画像=$1', 'サムネイル=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', '右', 'right' ],
'img_left' => [ '1', '左', 'left' ],
'img_none' => [ '1', 'なし', '無し', 'none' ],
'img_width' => [ '1', '$1ピクセル', '$1px' ],
'img_center' => [ '1', '中央', 'center', 'centre' ],
- 'img_framed' => [ '1', 'フレーム', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'フレーム', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'フレームなし', 'frameless' ],
'img_page' => [ '1', 'ページ=$1', 'ページ $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', '右上', 'upright', 'upright=$1', 'upright $1' ],
'img_border' => [ '1', '境界', 'ボーダー', 'border' ],
- 'img_baseline' => [ '1', '下線', 'ベースライン', 'baseline' ],
+ 'img_baseline' => [ '1', 'ベースライン', '下線', 'baseline' ],
'img_sub' => [ '1', '下付き', 'sub' ],
'img_super' => [ '1', '上付き', 'super', 'sup' ],
'img_top' => [ '1', '上端', 'top' ],
'namespace' => [ '1', 'სახელთა_სივრცე', 'NAMESPACE' ],
'fullpagename' => [ '1', 'გვერდის_სრული_სახელი', 'FULLPAGENAME' ],
'subst' => [ '0', 'მიდგმ:', 'SUBST:' ],
- 'img_thumbnail' => [ '1', 'მინიატიურა', 'მინი', 'მინიასლი', 'ცეროდენა', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'მინი', 'მინიატიურა', 'მინიასლი', 'ცეროდენა', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'მინიატიურა=$1', 'მინი=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'მარჯვნივ', 'right' ],
'img_left' => [ '1', 'მარცხნივ', 'left' ],
'talkpagename' => [ '1', 'ឈ្មោះទំព័រពិភាក្សា', 'TALKPAGENAME' ],
'msg' => [ '0', 'សារ:', 'MSG:' ],
'msgnw' => [ '0', 'សារមិនមែនជាកូដវិគី:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'រូបភាពតូច', 'រូបតូច', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'រូបភាពតូច', 'រូបតូច', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'រូបភាពតូច=$1', 'រូបតូច=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'ស្តាំ', 'ខាងស្តាំ', 'right' ],
'img_left' => [ '1', 'ធ្វេង', 'ខាងធ្វេង', 'left' ],
'img_none' => [ '1', 'ទទេ', 'គ្មាន', 'none' ],
'img_width' => [ '1', '$1ភីកសែល', '$1ភស', '$1px' ],
'img_center' => [ '1', 'កណ្តាល', 'center', 'centre' ],
- 'img_framed' => [ '1', 'ស៊ុម', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'ស៊ុម', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'គ្មានស៊ុម', 'frameless' ],
'img_page' => [ '1', 'ទំព័រ=$1', 'ទំព័រ$1', 'page=$1', 'page $1' ],
'img_top' => [ '1', 'ផ្នែកលើ', 'ផ្នែកខាងលើ', 'top' ],
'subst' => [ '0', '풀기:', 'SUBST:' ],
'safesubst' => [ '0', '안전풀기:', 'SAFESUBST:' ],
'msgnw' => [ '0', '위키잘못메시지:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', '섬네일', '썸네일', '축소판', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', '섬네일', '썸네일', '축소판', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', '섬네일=$1', '썸네일=$1', '축소판=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', '오른쪽', 'right' ],
'img_left' => [ '1', '왼쪽', 'left' ],
'img_none' => [ '1', '없음', 'none' ],
'img_width' => [ '1', '$1픽셀', '$1px' ],
'img_center' => [ '1', '가운데', 'center', 'centre' ],
- 'img_framed' => [ '1', '프레임', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', '프레임', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', '프레임없음', 'frameless' ],
'img_lang' => [ '1', '언어=$1', 'lang=$1' ],
'img_page' => [ '1', '문서=$1', 'page=$1', 'page $1' ],
'nogallery' => [ '0', '__KEIN_JALLERIE__', '__KEINE_GALERIE__', '__KEINEGALERIE__', '__NOGALLERY__' ],
'toc' => [ '0', '__ENHALLT__', '__INHALTSVERZEICHNIS__', '__TOC__' ],
'img_right' => [ '1', 'rähß', 'räts', 'rechts', 'right' ],
- 'img_left' => [ '1', 'lengks', 'lenks', 'links', 'left' ],
+ 'img_left' => [ '1', 'links', 'lengks', 'lenks', 'left' ],
'language' => [ '0', '#SHPROOCH:', '#SPROCH:', '#SPRACHE:', '#LANGUAGE:' ],
'hiddencat' => [ '1', '__VERSHTOCHE_SAACHJRUPP__', '__VERSTECKTE_KATEGORIE__', '__WARTUNGSKATEGORIE__', '__HIDDENCAT__' ],
];
'numberofedits' => [ '1', 'NIVERAJANJYOW', 'NUMBEROFEDITS' ],
'pagename' => [ '1', 'HANOWANFOLEN', 'PAGENAME' ],
'fullpagename' => [ '1', 'HANOWLEUNANFOLEN', 'FULLPAGENAME' ],
- 'img_thumbnail' => [ '1', 'skeusennik', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'skeusennik', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'skeusennik=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'dyhow', 'right' ],
'img_left' => [ '1', 'kledh', 'left' ],
'img_none' => [ '1', 'nagonan', 'none' ],
'img_center' => [ '1', 'kresel', 'center', 'centre' ],
- 'img_framed' => [ '1', 'fremys', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'fremys', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'hebfram', 'frameless' ],
'img_page' => [ '1', 'folen=$1', 'folen_$1', 'page=$1', 'page $1' ],
'img_top' => [ '1', 'gwartha', 'top' ],
'namespace' => [ '1', 'Nummraum', 'NAMENSRAUM', 'NAMESPACE' ],
'subjectspace' => [ '1', 'Haaptnummraum', 'HAUPTNAMENSRAUM', 'SUBJECTSPACE', 'ARTICLESPACE' ],
'subjectpagename' => [ '1', 'Haaptsäit', 'HAUPTSEITE', 'HAUPTSEITENNAME', 'VORDERSEITE', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ],
- 'img_thumbnail' => [ '1', 'Miniatur', 'miniatur', 'mini', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'miniatur', 'Miniatur', 'mini', 'thumb', 'thumbnail' ],
'img_right' => [ '1', 'riets', 'rechts', 'right' ],
'img_left' => [ '1', 'lénks', 'links', 'left' ],
- 'img_none' => [ '1', 'ouni', 'ohne', 'none' ],
+ 'img_none' => [ '1', 'ohne', 'ouni', 'none' ],
'img_center' => [ '1', 'zentréiert', 'zentriert', 'center', 'centre' ],
- 'img_framed' => [ '1', 'gerummt', 'gerahmt', 'framed', 'enframed', 'frame' ],
- 'img_frameless' => [ '1', 'net_gerummt', 'rahmenlos', 'frameless' ],
+ 'img_framed' => [ '1', 'gerummt', 'gerahmt', 'frame', 'framed', 'enframed' ],
+ 'img_frameless' => [ '1', 'rahmenlos', 'net_gerummt', 'frameless' ],
'img_page' => [ '1', 'Säit=$1', 'Säit_$1', 'seite=$1', 'seite $1', 'page=$1', 'page $1' ],
- 'img_border' => [ '1', 'bord', 'rand', 'border' ],
+ 'img_border' => [ '1', 'rand', 'bord', 'border' ],
'img_top' => [ '1', 'uewen', 'oben', 'top' ],
'img_middle' => [ '1', 'mëtt', 'mitte', 'middle' ],
'img_bottom' => [ '1', 'ënnen', 'unten', 'bottom' ],
'numberoffiles' => [ '1', 'FAILŲSKAIČIUS', 'NUMBEROFFILES' ],
'numberofusers' => [ '1', 'NAUDOTOJŲSKAIČIUS', 'NUMBEROFUSERS' ],
'numberofedits' => [ '1', 'KEITIMŲSKAIČIUS', 'NUMBEROFEDITS' ],
- 'img_thumbnail' => [ '1', 'miniatiūra', 'mini', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'miniatiūra', 'mini', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'miniatiūra=$1', 'mini=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'dešinėje', 'right' ],
'img_left' => [ '1', 'kairėje', 'left' ],
'img_right' => [ '1', 'ankavanana', 'droite', 'right' ],
'img_left' => [ '1', 'ankavia', 'gauche', 'left' ],
'img_none' => [ '1', 'tsymisy', 'néant', 'neant', 'none' ],
- 'img_center' => [ '1', 'ampivoany', 'anivony', 'centré', 'center', 'centre' ],
+ 'img_center' => [ '1', 'centré', 'ampivoany', 'anivony', 'center', 'centre' ],
'img_page' => [ '1', 'pejy $1', 'page=$1', 'page $1' ],
'img_border' => [ '1', 'sisiny', 'bordure', 'border' ],
'img_top' => [ '1', 'ambony', 'haut', 'top' ],
];
$magicWords = [
- 'img_right' => [ '1', 'пурла', 'справа', 'right' ],
+ 'img_right' => [ '1', 'справа', 'пурла', 'right' ],
'img_left' => [ '1', 'шола', 'слева', 'left' ],
'img_border' => [ '1', 'чек', 'граница', 'border' ],
'img_sub' => [ '1', 'йымалне', 'под', 'sub' ],
'subst' => [ '0', 'ЗАМЕНИ:', 'SUBST:' ],
'safesubst' => [ '0', 'БЕЗБЗАМЕНИ', 'SAFESUBST:' ],
'msgnw' => [ '0', 'ИЗВЕШТNW:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'мини', 'мини-слика', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'мини', 'мини-слика', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'мини-слика=$1', 'мини=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'десно', 'д', 'right' ],
'img_left' => [ '1', 'лево', 'л', 'left' ],
'img_none' => [ '1', 'н', 'нема', 'none' ],
'img_width' => [ '1', '$1пкс', '$1п', '$1px' ],
'img_center' => [ '1', 'центар', 'ц', 'center', 'centre' ],
- 'img_framed' => [ '1', 'рамка', 'ворамка', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'рамка', 'ворамка', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'безрамка', 'frameless' ],
'img_lang' => [ '1', 'јаз=$1', 'lang=$1' ],
'img_page' => [ '1', 'страница=$1', 'страница_$1', 'page=$1', 'page $1' ],
'subst' => [ '0', 'ബദൽ:', 'ഉൾപ്പെടുത്തൽ:', 'SUBST:' ],
'safesubst' => [ '0', 'സംരക്ഷിതബദൽ:', 'സംരക്ഷിതയുൾപ്പെടുത്തൽ:', 'SAFESUBST:' ],
'msgnw' => [ '0', 'മൂലരൂപം:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'ലഘുചിത്രം', 'ലഘു', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'ലഘുചിത്രം', 'ലഘു', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'ലഘുചിത്രം=$1', 'ലഘു=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'വലത്ത്', 'വലത്', 'right' ],
'img_left' => [ '1', 'ഇടത്ത്', 'ഇടത്', 'left' ],
'img_none' => [ '1', 'ശൂന്യം', 'none' ],
'img_width' => [ '1', '$1ബിന്ദു', '$1px' ],
'img_center' => [ '1', 'നടുവിൽ', 'നടുക്ക്', 'center', 'centre' ],
- 'img_framed' => [ '1', 'ചട്ടം', 'ചട്ടത്തിൽ', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'ചട്ടം', 'ചട്ടത്തിൽ', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'ചട്ടരഹിതം', 'frameless' ],
'img_lang' => [ '1', 'ഭാഷ=$1', 'lang=$1' ],
'img_page' => [ '1', 'താൾ=$1', 'താൾ_$1', 'page=$1', 'page $1' ],
'msg' => [ '0', 'संदेश:', 'निरोप:', 'MSG:' ],
'subst' => [ '0', 'पर्याय:', 'समाविष्टी:', 'अबाह्य:', 'निरकंसबिंब:', 'कंसत्याग:', 'साचाहिन:', 'साचान्तर:', 'साचापरिस्फोट:', 'साचोद्घाटन:', 'SUBST:' ],
'msgnw' => [ '0', 'संदेशनवा:', 'निरोपनवा:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'इवलेसे', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'इवलेसे', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'इवलेसे=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'उजवे', 'right' ],
'img_left' => [ '1', 'डावे', 'left' ],
'img_none' => [ '1', 'कोणतेचनाही', 'नन्ना', 'none' ],
'img_width' => [ '1', '$1अंश', '$1कणी', '$1पक्ष', '$1px' ],
'img_center' => [ '1', 'मध्यवर्ती', 'center', 'centre' ],
- 'img_framed' => [ '1', 'चौकट', 'फ़्रेम', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'चौकट', 'फ़्रेम', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'विनाचौकट', 'विनाफ़्रेम', 'frameless' ],
'img_page' => [ '1', 'पान=$1', 'पान_$1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'उभा', 'उभा=$1', 'उभा_$1', 'upright', 'upright=$1', 'upright $1' ],
'msg' => [ '0', 'MSĠ:', 'MSG:' ],
'subst' => [ '0', 'BIDDEL:', 'SUBST:' ],
'msgnw' => [ '0', 'MSĠEW:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'daqsminuri', 'minuri', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'daqsminuri', 'minuri', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'daqsminuri=$1', 'minuri=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'lemin', 'right' ],
'img_left' => [ '1', 'xellug', 'left' ],
'img_none' => [ '1', 'xejn', 'none' ],
'img_center' => [ '1', 'nofs', 'ċentrali', 'ċentru', 'center', 'centre' ],
- 'img_framed' => [ '1', 'tilat', 'b\'tilar', 'tilar', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'tilat', 'b\'tilar', 'tilar', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'bla_tilar', 'frameless' ],
'img_page' => [ '1', 'paġna=$1', 'paġna $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'wieqaf', 'wieqaf=$1', 'wieqaf $1', 'upright', 'upright=$1', 'upright $1' ],
'fullpagename' => [ '1', 'ЛОПАЛЕМКУВАКАСТО', 'ПОЛНОЕ_НАЗВАНИЕ_СТРАНИЦЫ', 'FULLPAGENAME' ],
'talkpagename' => [ '1', 'КОРТАМОЛОПАЛЕМ', 'НАЗВАНИЕ_СТРАНИЦЫ_ОБСУЖДЕНИЯ', 'TALKPAGENAME' ],
'msg' => [ '0', 'ПАЧТЯМНЭ:', 'СООБЩЕНИЕ:', 'СООБЩ:', 'MSG:' ],
- 'img_thumbnail' => [ '1', 'кенжешка', 'мини', 'миниатюра', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'кенжешка', 'мини', 'миниатюра', 'thumb', 'thumbnail' ],
'img_right' => [ '1', 'вить_кедь', 'справа', 'right' ],
'img_left' => [ '1', 'керш_кедь', 'слева', 'left' ],
'img_none' => [ '1', 'вейкеяк_арась', 'без', 'none' ],
'img_center' => [ '1', 'куншкасо', 'центр', 'center', 'centre' ],
- 'img_framed' => [ '1', 'кундсо', 'обрамить', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'кундсо', 'обрамить', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'кундовтомо', 'безрамки', 'frameless' ],
'img_page' => [ '1', 'лопа=$1', 'лопа_$1', 'страница=$1', 'страница_$1', 'страница $1', 'page=$1', 'page $1' ],
'img_top' => [ '1', 'верькс', 'сверху', 'top' ],
'pagename' => [ '1', 'SIETNAAM', 'SEITENNAME', 'PAGENAME' ],
'pagenamee' => [ '1', 'SIETNAAME', 'SEITENNAME_URL', 'PAGENAMEE' ],
'namespace' => [ '1', 'NAAMRUUM', 'NAMENSRAUM', 'NAMESPACE' ],
- 'img_thumbnail' => [ '1', 'duum', 'miniatur', 'mini', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'duum', 'miniatur', 'mini', 'thumb', 'thumbnail' ],
'img_right' => [ '1', 'rechts', 'right' ],
'img_left' => [ '1', 'links', 'left' ],
'img_none' => [ '1', 'keen', 'ohne', 'none' ],
- 'img_center' => [ '1', 'merrn', 'zentriert', 'center', 'centre' ],
- 'img_framed' => [ '1', 'rahmt', 'gerahmt', 'framed', 'enframed', 'frame' ],
+ 'img_center' => [ '1', 'zentriert', 'merrn', 'center', 'centre' ],
+ 'img_framed' => [ '1', 'gerahmt', 'rahmt', 'frame', 'framed', 'enframed' ],
'sitename' => [ '1', 'STEEDNAAM', 'PROJEKTNAME', 'SITENAME' ],
'ns' => [ '0', 'NR:', 'NS:' ],
'localurl' => [ '0', 'STEEDURL:', 'LOKALE_URL:', 'LOCALURL:' ],
'subst' => [ '0', 'VERV:', 'SUBST:' ],
'safesubst' => [ '0', 'VEILIGVERV:', 'SAFESUBST:' ],
'msgnw' => [ '0', 'BERICHTNW', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'miniatuur', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'miniatuur', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'miniatuur=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'rechts', 'right' ],
'img_left' => [ '1', 'links', 'left' ],
'img_none' => [ '1', 'geen', 'none' ],
'img_center' => [ '1', 'gecentreerd', 'center', 'centre' ],
- 'img_framed' => [ '1', 'omkaderd', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'omkaderd', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'kaderloos', 'frameless' ],
'img_lang' => [ '1', 'taal=$1', 'lang=$1' ],
'img_page' => [ '1', 'pagina=$1', 'pagina_$1', 'page=$1', 'page $1' ],
'subst' => [ '0', 'LIMINN:', 'SUBST:' ],
'safesubst' => [ '0', 'TRYGGLIMINN:', 'SAFESUBST:' ],
'msgnw' => [ '0', 'IKWIKMELD:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'mini', 'miniatyr', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'mini', 'miniatyr', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'mini=$1', 'miniatyr=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'høgre', 'høyre', 'right' ],
'img_left' => [ '1', 'venstre', 'left' ],
'img_none' => [ '1', 'ingen', 'none' ],
'img_width' => [ '1', '$1pk', '$1px' ],
'img_center' => [ '1', 'sentrum', 'center', 'centre' ],
- 'img_framed' => [ '1', 'ramme', 'ramma', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'ramme', 'ramma', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'rammelaus', 'frameless' ],
'img_lang' => [ '1', 'språk=$1', 'lang=$1' ],
'img_page' => [ '1', 'side=$1', 'side_$1', 'page=$1', 'page $1' ],
'talkpagenamee' => [ '1', 'NOMPAGINADISCUSSIONX', 'TALKPAGENAMEE' ],
'subjectpagename' => [ '1', 'NOMPAGINASUBJECTE', 'NOMPAGINASUBJÈCTE', 'NOMPAGINAARTICLE', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ],
'subjectpagenamee' => [ '1', 'NOMPAGINASUBJECTEX', 'NOMPAGINASUBJÈCTEX', 'NOMPAGINAARTICLEX', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
- 'img_thumbnail' => [ '1', 'vinheta', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'vinheta', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'vinheta=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'drecha', 'dreta', 'right' ],
'img_left' => [ '1', 'esquèrra', 'senèstra', 'gaucha', 'left' ],
'img_none' => [ '1', 'neant', 'nonrés', 'none' ],
'img_center' => [ '1', 'centrat', 'center', 'centre' ],
- 'img_framed' => [ '1', 'quadre', 'enquagrat', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'quadre', 'enquagrat', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'sens_quadre', 'frameless' ],
'img_upright' => [ '1', 'redreça', 'redreça$1', 'redreça $1', 'upright', 'upright=$1', 'upright $1' ],
'img_border' => [ '1', 'bordadura', 'border' ],
'img_none' => [ '1', 'କିଛି_ନୁହେଁ', 'none' ],
'img_width' => [ '1', '$1_ପିକସେଲ', '$1px' ],
'img_center' => [ '1', 'କେନ୍ଦ୍ର', 'center', 'centre' ],
- 'img_framed' => [ '1', 'ଫ୍ରେମକରା', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'ଫ୍ରେମକରା', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'ଫ୍ରେମନଥିବା', 'frameless' ],
'img_border' => [ '1', 'ବର୍ଡର', 'border' ],
'img_baseline' => [ '1', 'ବେସଲାଇନ', 'baseline' ],
'numberofpages' => [ '1', 'ФÆРСТЫНЫМÆЦ', 'КОЛИЧЕСТВО_СТРАНИЦ', 'NUMBEROFPAGES' ],
'numberofarticles' => [ '1', 'УАЦТЫНЫМÆЦ', 'КОЛИЧЕСТВО_СТАТЕЙ', 'NUMBEROFARTICLES' ],
'pagename' => [ '1', 'ФАРСЫНОМ', 'НАЗВАНИЕ_СТРАНИЦЫ', 'PAGENAME' ],
- 'img_thumbnail' => [ '1', 'кÑ\8aаддæÑ\80гонд', 'кÑ\8aаддæÑ\80', 'мини', 'миниаÑ\82Ñ\8eÑ\80а', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'мини', 'кÑ\8aаддæÑ\80гонд', 'кÑ\8aаддæÑ\80', 'миниаÑ\82Ñ\8eÑ\80а', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'къаддæргонд=$1', 'къаддæр=$1', 'мини=$1', 'миниатюра=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'рахиз', 'справа', 'right' ],
'img_left' => [ '1', 'галиу', 'слева', 'left' ],
'basepagename' => [ '1', 'BAZOWANAZWASTRONY', 'BASEPAGENAME' ],
'talkpagename' => [ '1', 'NAZWASTRONYDYSKUSJI', 'TALKPAGENAME' ],
'subst' => [ '0', 'podst:', 'SUBST:' ],
- 'img_thumbnail' => [ '1', 'mały', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'mały', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'mały=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'prawo', 'right' ],
'img_left' => [ '1', 'lewo', 'left' ],
'img_none' => [ '1', 'brak', 'none' ],
'img_center' => [ '1', 'centruj', 'center', 'centre' ],
- 'img_framed' => [ '1', 'ramka', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'ramka', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'bezramki', 'bez_ramki', 'frameless' ],
'img_page' => [ '1', 'strona=$1', 'page=$1', 'page $1' ],
'img_border' => [ '1', 'tło', 'border' ],
'fullpagename' => [ '1', 'دمخ_بشپړنوم', 'FULLPAGENAME' ],
'fullpagenamee' => [ '1', 'دمخ_بشپړنوم_نښه', 'FULLPAGENAMEE' ],
'msg' => [ '0', 'پیغام:', 'پ:', 'MSG:' ],
- 'img_thumbnail' => [ '1', 'بټنوک', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'بټنوک', 'thumb', 'thumbnail' ],
'img_right' => [ '1', 'ښي', 'right' ],
'img_left' => [ '1', 'کيڼ', 'left' ],
'img_none' => [ '1', 'هېڅ', 'none' ],
'talkpagenamee' => [ '1', 'NOMEDAPAGINADEDISCUSSAOC', 'NOMEDAPÁGINADEDISCUSSÃOC', 'TALKPAGENAMEE' ],
'subjectpagename' => [ '1', 'NOMEDAPAGINADECONTEUDO', 'NOMEDAPÁGINADECONTEÚDO', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ],
'subjectpagenamee' => [ '1', 'NOMEDAPAGINADECONTEUDOC', 'NOMEDAPÁGINADECONTEÚDOC', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
- 'img_thumbnail' => [ '1', 'miniaturadaimagem', 'miniatura', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'miniaturadaimagem', 'miniatura', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'miniaturadaimagem=$1', 'miniatura=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'direita', 'right' ],
'img_left' => [ '1', 'esquerda', 'left' ],
'img_none' => [ '1', 'nenhum', 'none' ],
'img_center' => [ '1', 'centro', 'center', 'centre' ],
- 'img_framed' => [ '1', 'commoldura', 'comborda', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'commoldura', 'comborda', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'semmoldura', 'semborda', 'frameless' ],
'img_page' => [ '1', 'página=$1', 'página_$1', 'página $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'superiordireito', 'superiordireito=$1', 'superiordireito_$1', 'superiordireito $1', 'upright', 'upright=$1', 'upright $1' ],
'msg' => [ '0', 'WILLA:', 'MSJ:', 'MSG:' ],
'subst' => [ '0', 'WAKCHAY:', 'SUST:', 'FIJAR:', 'SUBST:' ],
'msgnw' => [ '0', 'WILLAMUSUQ:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'rikchacha', 'miniaturadeimagen', 'miniatura', 'mini', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'rikchacha', 'miniaturadeimagen', 'mini', 'miniatura', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'rikchacha=$1', 'miniaturadeimagen=$1', 'miniatura=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'paña', 'alliq', 'derecha', 'dcha', 'der', 'right' ],
'img_left' => [ '1', 'lluqi', 'ichuq', 'izquierda', 'izda', 'izq', 'left' ],
'img_none' => [ '1', 'manaima', 'mana', 'ninguna', 'nada', 'no', 'ninguno', 'none' ],
'img_center' => [ '1', 'chawpi', 'centro', 'centrado', 'centrada', 'centrar', 'center', 'centre' ],
- 'img_framed' => [ '1', 'inchuyuq', 'inchu', 'marco', 'enmarcado', 'enmarcada', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'inchuyuq', 'inchu', 'marco', 'enmarcado', 'enmarcada', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'inchunnaq', 'sinmarco', 'sin_embarcar', 'sinenmarcar', 'sin_enmarcar', 'frameless' ],
'img_page' => [ '1', 'panqa=$1', 'pagina=$1', 'página=$1', 'pagina_$1', 'página_$1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'sayaq', 'sayaq=$1', 'upright', 'upright=$1', 'upright $1' ],
$magicWords = [
'redirect' => [ '0', '#RENVIAMENT', '#REDIRECT' ],
- 'img_thumbnail' => [ '1', 'miniatura', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'miniatura', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'miniatura=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_upright' => [ '1', 'sidretg', 'sidretg=$1', 'sidretg_$1', 'upright', 'upright=$1', 'upright $1' ],
];
'subjectpagenamee' => [ '1', 'NUMEEPAGINASUBIECT', 'NUMEEPAGINAARTICOL', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
'msg' => [ '0', 'MSJ:', 'MSG:' ],
'msgnw' => [ '0', 'MSJNOU:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'miniatura', 'mini', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'miniatura', 'mini', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'miniatura=$1', 'mini=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'dreapta', 'right' ],
'img_left' => [ '1', 'stanga', 'left' ],
'img_none' => [ '1', 'nu', 'none' ],
'img_center' => [ '1', 'centru', 'center', 'centre' ],
- 'img_framed' => [ '1', 'cadru', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'cadru', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'faracadru', 'frameless' ],
'img_page' => [ '1', 'pagina=$1', 'pagina $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'dreaptasus', 'dreaptasus=$1', 'dreaptasus $1', 'upright', 'upright=$1', 'upright $1' ],
'subst' => [ '0', 'ПОДСТАНОВКА:', 'ПОДСТ:', 'SUBST:' ],
'safesubst' => [ '0', 'ЗАЩПОДСТ:', 'SAFESUBST:' ],
'msgnw' => [ '0', 'СООБЩ_БЕЗ_ВИКИ:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'мини', 'миниатюра', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'мини', 'миниатюра', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'мини=$1', 'миниатюра=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'справа', 'right' ],
'img_left' => [ '1', 'слева', 'left' ],
'img_none' => [ '1', 'без', 'none' ],
'img_width' => [ '1', '$1пкс', '$1px' ],
'img_center' => [ '1', 'центр', 'center', 'centre' ],
- 'img_framed' => [ '1', 'обрамить', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'обрамить', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'безрамки', 'frameless' ],
'img_page' => [ '1', 'страница=$1', 'страница $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'сверхусправа', 'сверхусправа=$1', 'сверхусправа $1', 'upright', 'upright=$1', 'upright $1' ],
'subjectpagename' => [ '1', 'विषयपृष्ठनाम', 'लेखपृष्ठनाम', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ],
'msg' => [ '0', 'सन्देश:', 'MSG:' ],
'msgnw' => [ '0', 'नूतनसन्देश:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'लà¤\98à¥\81तà¥\8dतम', 'सà¤\99à¥\8dà¤\95à¥\81à¤\9aितà¤\9aितà¥\8dर', 'à¤\85à¤\99à¥\8dà¤\97à¥\81षà¥\8dठ', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'लà¤\98à¥\81तà¥\8dतम', 'à¤\85à¤\99à¥\8dà¤\97à¥\81षà¥\8dठ', 'सà¤\99à¥\8dà¤\95à¥\81à¤\9aितà¤\9aितà¥\8dर', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'सङ्कुचितचित्र=$1', 'अङ्गुष्ठ=$1', 'लघुत्तमचित्र=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'दक्षिणत', 'right' ],
'img_left' => [ '1', 'वामतः', 'left' ],
'img_none' => [ '1', 'नैव', 'none' ],
'img_width' => [ '1', '$1पिट', '$1px' ],
'img_center' => [ '1', 'मध्य', 'center', 'centre' ],
- 'img_framed' => [ '1', 'आबन्ध', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'आबन्ध', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'निराबन्ध', 'frameless' ],
'img_page' => [ '1', 'पृष्ठ=$1', 'पृष्ठ $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'उन्नत', 'उन्नत=$1', 'उन्नत $1', 'upright', 'upright=$1', 'upright $1' ],
'numberofactiveusers' => [ '1', 'AKTIIVAGEAVAHEDDJIIDMEARRI', ' AKTIIVAGEAVAHEADDJIMEARRI', ' AKTIIVAGEAVAHEADDJEMEARRI', 'NUMBEROFACTIVEUSERS' ],
'numberofedits' => [ '1', 'RIEVDADUSAIDMEARRI', ' RIEVDADUSMEARRI', 'NUMBEROFEDITS' ],
'subst' => [ '0', 'LIIBME:', 'SUBST:' ],
- 'img_thumbnail' => [ '1', 'mini', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'mini', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'mini=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'olgeš', 'right' ],
'img_left' => [ '1', 'gurut', 'left' ],
'msg' => [ '0', 'POR:', 'MSG:' ],
'subst' => [ '0', 'ZAMJENI:', 'ZAMENI:', 'ZAMJENA:', 'SUBST:' ],
'msgnw' => [ '0', 'NVPOR:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'minijatura', 'mini', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'mini', 'minijatura', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'minijatura=$1', 'mini=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'desno', 'right' ],
'img_left' => [ '1', 'lijevo', 'levo', 'left' ],
- 'img_none' => [ '1', 'n', 'bez', 'ništa', 'none' ],
- 'img_center' => [ '1', 'centar', 'središte', 'c', 'center', 'centre' ],
- 'img_framed' => [ '1', 'okvir', 'ram', 'framed', 'enframed', 'frame' ],
- 'img_frameless' => [ '1', 'bez_okvira', 'bezokvira', 'frameless' ],
+ 'img_none' => [ '1', 'n', 'ništa', 'bez', 'none' ],
+ 'img_center' => [ '1', 'centar', 'c', 'središte', 'center', 'centre' ],
+ 'img_framed' => [ '1', 'okvir', 'ram', 'frame', 'framed', 'enframed' ],
+ 'img_frameless' => [ '1', 'bezokvira', 'bez_okvira', 'frameless' ],
'img_page' => [ '1', 'stranica=$1', 'stranica_$1', 'strana=$1', 'strana_$1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'na_gore', 'na_gore=$1', 'na_gore_$1', 'uspravno', 'uspravno=$1', 'uspravno_$1', 'upright', 'upright=$1', 'upright $1' ],
'img_border' => [ '1', 'granica', 'obrub', 'border' ],
'subjectpagenamee' => [ '1', 'NÁZOVČLÁNKUE', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
'msg' => [ '0', 'SPRÁVA:', 'MSG:' ],
'subst' => [ '0', 'NAHR:', 'SUBST:' ],
- 'img_thumbnail' => [ '1', 'náhľad', 'náhľadobrázka', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'náhľad', 'náhľadobrázka', 'thumb', 'thumbnail' ],
'img_right' => [ '1', 'vpravo', 'right' ],
'img_left' => [ '1', 'vľavo', 'left' ],
'img_none' => [ '1', 'žiadny', 'none' ],
'img_width' => [ '1', '$1bod', '$1px' ],
'img_center' => [ '1', 'stred', 'center', 'centre' ],
- 'img_framed' => [ '1', 'rám', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'rám', 'frame', 'framed', 'enframed' ],
'img_border' => [ '1', 'okraj', 'border' ],
'sitename' => [ '1', 'NÁZOVLOKALITY', 'SITENAME' ],
'ns' => [ '0', 'MP:', 'NS:' ],
'forcetoc' => [ '0', '__VSILIKAZALOVSEBINE__', '__FORCETOC__' ],
'toc' => [ '0', '__POGLAVJE__', '__TOC__' ],
'noeditsection' => [ '0', '__BREZUREJANJARAZDELKOV__', '__NOEDITSECTION__' ],
- 'img_thumbnail' => [ '1', 'sličica', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'sličica', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'sličica=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'desno', 'right' ],
'img_left' => [ '1', 'levo', 'left' ],
'img_none' => [ '1', 'brez', 'none' ],
'img_width' => [ '1', '$1_pik', '$1px' ],
'img_center' => [ '1', 'sredina', 'sredinsko', 'center', 'centre' ],
- 'img_framed' => [ '1', 'okvir', 'okvirjeno', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'okvir', 'okvirjeno', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'brezokvirja', 'frameless' ],
'img_page' => [ '1', 'stran=$1', 'm_stran $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'zgorajdesno', 'zgorajdesno=$1', 'zgorajdesno $1', 'upright', 'upright=$1', 'upright $1' ],
'talkpagename' => [ '1', 'EMRIIFAQESSËDISKUTIMIT', 'TALKPAGENAME' ],
'talkpagenamee' => [ '1', 'EMRIIFAQESSËDISKUTIMITE', 'TALKPAGENAMEE' ],
'subst' => [ '0', 'ZËVN', 'SUBST:' ],
- 'img_thumbnail' => [ '1', 'parapamje', 'pamje', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'parapamje', 'pamje', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'parapamje=$1', 'pamje=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'djathtas', 'right' ],
'img_left' => [ '1', 'majtas', 'left' ],
'img_none' => [ '1', 's\'ka', 'none' ],
'img_center' => [ '1', 'qendër', 'qendrore', 'center', 'centre' ],
- 'img_framed' => [ '1', 'i_kornizuar', 'pa_kornizë', 'kornizë', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'i_kornizuar', 'pa_kornizë', 'kornizë', 'frame', 'framed', 'enframed' ],
'img_page' => [ '1', 'faqja=$1', 'faqja $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'lartdjathtas', 'lartdjathtas=$1', 'lartdjathtas $1', 'upright', 'upright=$1', 'upright $1' ],
'img_border' => [ '1', 'kufi', 'border' ],
'msg' => [ '0', 'MED:', 'MSG:' ],
'subst' => [ '0', 'BYT:', 'SUBST:' ],
'msgnw' => [ '0', 'MEDNW:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'miniatyr', 'mini', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'miniatyr', 'mini', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'miniatyr=$1', 'mini=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'höger', 'right' ],
'img_left' => [ '1', 'vänster', 'left' ],
'img_none' => [ '1', 'ingen', 'none' ],
'img_center' => [ '1', 'centrerad', 'center', 'centre' ],
- 'img_framed' => [ '1', 'inramad', 'ram', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'ram', 'inramad', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'ramlös', 'frameless' ],
'img_page' => [ '1', 'sida=$1', 'sida $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'stående', 'stående=$1', 'stående $1', 'upright', 'upright=$1', 'upright $1' ],
'subst' => [ '0', 'YK:', 'YERİNEKOY:', 'KOPYALA:', 'AKTAR:', 'YAPIŞTIR:', 'SUBST:' ],
'safesubst' => [ '0', 'GÜVENLİYERİNEKOY:', 'GÜVENLİKOPYALA:', 'GÜVENLİAKTAR:', 'GÜVENLİYAPIŞTIR:', 'SAFESUBST:' ],
'msgnw' => [ '0', 'MSJYN:', 'İLTYN:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'küçükresim', 'küçük', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'küçükresim', 'küçük', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'küçükresim=$1', 'küçük=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'sağ', 'right' ],
'img_left' => [ '1', 'sol', 'left' ],
'img_none' => [ '1', 'yok', 'none' ],
'img_width' => [ '1', '$1pik', '$1piksel', '$1px' ],
'img_center' => [ '1', 'orta', 'center', 'centre' ],
- 'img_framed' => [ '1', 'çerçeveli', 'çerçeve', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'çerçeveli', 'çerçeve', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'çerçevesiz', 'frameless' ],
'img_page' => [ '1', 'sayfa=$1', 'sayfa $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'dikey', 'dikey=$1', 'dikey $1', 'upright', 'upright=$1', 'upright $1' ],
'img_baseline' => [ '1', 'tabançizgisi', 'altçizgi', 'baseline' ],
'img_sub' => [ '1', 'alt', 'sub' ],
'img_super' => [ '1', 'üst', 'üs', 'super', 'sup' ],
- 'img_top' => [ '1', 'tavan', 'tepe', 'top' ],
+ 'img_top' => [ '1', 'tepe', 'tavan', 'top' ],
'img_text_top' => [ '1', 'metin-tavan', 'metin-tepe', 'text-top' ],
'img_middle' => [ '1', 'merkez', 'middle' ],
'img_bottom' => [ '1', 'taban', 'bottom' ],
'subst' => [ '0', 'ПІДСТ:', 'ПІДСТАНОВКА:', 'ПОДСТАНОВКА:', 'ПОДСТ:', 'SUBST:' ],
'safesubst' => [ '0', 'БЕЗПЕЧНА_ПІДСТАНОВКА:', 'ЗАЩПОДСТ:', 'SAFESUBST:' ],
'msgnw' => [ '0', 'ПОВІД_БЕЗ_ВІКІ:', 'СООБЩ_БЕЗ_ВИКИ:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'міні', 'мініатюра', 'мини', 'миниатюра', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'міні', 'мини', 'мініатюра', 'миниатюра', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'міні=$1', 'мініатюра=$1', 'мини=$1', 'миниатюра=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'праворуч', 'справа', 'right' ],
'img_left' => [ '1', 'ліворуч', 'слева', 'left' ],
'img_none' => [ '1', 'без', 'none' ],
'img_width' => [ '1', '$1пкс', '$1px' ],
'img_center' => [ '1', 'центр', 'center', 'centre' ],
- 'img_framed' => [ '1', 'обрамити', 'рамка', 'обрамить', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'обрамити', 'рамка', 'обрамить', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'безрамки', 'frameless' ],
'img_page' => [ '1', 'сторінка=$1', 'сторінка_$1', 'страница=$1', 'страница $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'зверхуправоруч', 'зверхуправоруч=$1', 'зверхуправоруч_$1', 'сверхусправа', 'сверхусправа=$1', 'сверхусправа $1', 'upright', 'upright=$1', 'upright $1' ],
'msg' => [ '0', 'پیغام:', 'MSG:' ],
'subst' => [ '0', 'جا:', 'نقل:', 'SUBST:' ],
'safesubst' => [ '0', 'محفوظ_جا:', 'محفوظ_نقل:', 'SAFESUBST:' ],
- 'img_thumbnail' => [ '1', 'تصغیر', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'تصغیر', 'thumb', 'thumbnail' ],
'img_right' => [ '1', 'دائیں', 'right' ],
'img_left' => [ '1', 'بائیں', 'left' ],
'img_center' => [ '1', 'درمیان', 'center', 'centre' ],
'subst' => [ '0', 'THẾ:', 'SUBST:' ],
'safesubst' => [ '0', 'THẾ_AN_TOÀN:', 'SAFESUBST:' ],
'msgnw' => [ '0', 'NHẮN_MỚI:', 'NHẮNMỚI:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'nhỏ', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'nhỏ', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'nhỏ=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'phải', 'right' ],
'img_left' => [ '1', 'trái', 'left' ],
'img_none' => [ '1', 'không', 'none' ],
'img_center' => [ '1', 'giữa', 'center', 'centre' ],
- 'img_framed' => [ '1', 'khung', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'khung', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'không_khung', 'frameless' ],
'img_lang' => [ '1', 'tiếng=$1', 'ngôn_ngữ=$1', 'lang=$1' ],
'img_page' => [ '1', 'trang=$1', 'trang_$1', 'page=$1', 'page $1' ],
'subpagename' => [ '1', 'אונטערבלאטנאמען', 'שם דף המשנה', 'SUBPAGENAME' ],
'talkpagename' => [ '1', 'רעדנבלאטנאמען', 'שם דף השיחה', 'TALKPAGENAME' ],
'subst' => [ '0', 'ס:', 'SUBST:' ],
- 'img_thumbnail' => [ '1', 'קליין', 'ממוזער', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'קליין', 'ממוזער', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'קליין=$1', 'ממוזער=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'רעכטס', 'ימין', 'right' ],
'img_left' => [ '1', 'לינקס', 'שמאל', 'left' ],
# A list of unicode numerals is available at:
# http://www.fileformat.info/info/unicode/category/Nd/list.htm
- private $mLangs = array(
+ private $mLangs = [
'Ar', 'As', 'Bh', 'Bo', 'Dz',
'Fa', 'Gu', 'Hi', 'Km', 'Kn',
'Ks', 'Lo', 'Ml', 'Mr', 'Ne',
'New', 'Or', 'Pa', 'Pi', 'Sa'
- );
+ ];
public function __construct() {
parent::__construct();
def manualWordsTable(path, conv_table, reconv_table):
fp = open(path, 'r', encoding='U8')
- reconv_table = {}
+ reconv_table = reconv_table.copy()
+ out_table = {}
wordlist = [line.split('#')[0].strip() for line in fp]
wordlist = list(set(wordlist))
wordlist.sort(key=lambda w: (len(w), w), reverse=True)
new_word = translate(word, conv_table)
rcv_word = translate(word, reconv_table)
if word != rcv_word:
- reconv_table[word] = word
- reconv_table[new_word] = word
- return reconv_table
+ reconv_table[word] = out_table[word] = word
+ reconv_table[new_word] = out_table[new_word] = word
+ return out_table
def defaultWordsTable(src_wordlist, src_tomany, char_conv_table,
$this->addOption( 'start', 'Name of file to start with', false, true );
$this->addOption( 'end', 'Name of file to end with', false, true );
+ $this->addOption(
+ 'mediatype',
+ 'Only refresh files with this media type, e.g. BITMAP, UNKNOWN etc.',
+ false,
+ true
+ );
$this->addOption(
'mime',
- '(Inefficient!) Only refresh files with this MIME type. Can accept wild-card image/*',
+ "Only refresh files with this MIME type. Can accept wild-card 'image/*'. "
+ . "Potentially inefficient unless 'mediatype' is also specified",
false,
true
);
$end = $this->getOption( 'end', false );
$mime = $this->getOption( 'mime', false );
+ $mediatype = $this->getOption( 'mediatype', false );
$like = $this->getOption( 'metadata-contains', false );
if ( $end !== false ) {
$conds['img_minor_mime'] = $minor;
}
}
+ if ( $mediatype !== false ) {
+ $conds['img_media_type'] = $mediatype;
+ }
if ( $like ) {
$conds[] = 'img_metadata ' . $dbw->buildLike( $dbw->anyString(), $like, $dbw->anyString() );
}
"devDependencies": {
"grunt": "0.4.5",
"grunt-cli": "0.1.13",
- "grunt-banana-checker": "0.4.0",
+ "grunt-banana-checker": "0.5.0",
"grunt-contrib-copy": "1.0.0",
"grunt-contrib-jshint": "1.0.0",
"grunt-contrib-watch": "1.0.0",
'ca' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-ca.js',
'cs' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-cs.js',
'da' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-da.js',
+ 'de-at' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-de-AT.js',
+ 'de-ch' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-de-CH.js',
'de' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-de.js',
'el' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-el.js',
'en-au' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-en-AU.js',
--- /dev/null
+/* Austrian German initialisation for the jQuery UI date picker plugin. */
+jQuery(function($){
+ $.datepicker.regional['de-AT'] = {
+ closeText: 'schließen',
+ prevText: '<zurück',
+ nextText: 'Vor>',
+ currentText: 'heute',
+ monthNames: ['Jänner','Februar','März','April','Mai','Juni',
+ 'Juli','August','September','Oktober','November','Dezember'],
+ monthNamesShort: ['Jän','Feb','Mär','Apr','Mai','Jun',
+ 'Jul','Aug','Sep','Okt','Nov','Dez'],
+ dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
+ dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
+ dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
+ weekHeader: 'KW',
+ dateFormat: 'dd.mm.yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['de-AT']);
+});
--- /dev/null
+/* Swiss Standard German initialisation for the jQuery UI date picker plugin. */
+jQuery(function($){
+ $.datepicker.regional['de-CH'] = {
+ closeText: 'schliessen',
+ prevText: '<zurück',
+ nextText: 'Vor>',
+ currentText: 'heute',
+ monthNames: ['Januar','Februar','März','April','Mai','Juni',
+ 'Juli','August','September','Oktober','November','Dezember'],
+ monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',
+ 'Jul','Aug','Sep','Okt','Nov','Dez'],
+ dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
+ dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
+ dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
+ weekHeader: 'KW',
+ dateFormat: 'dd.mm.yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['de-CH']);
+});
"greek": [
"Α", "Ά", "α", "ά", "Β", "β", "Γ", "γ", "Δ", "δ", "Ε", "Έ", "ε", "έ", "Ζ", "ζ", "Η", "Ή", "η", "ή", "Θ", "θ", "Ι", "Ί", "ι", "ί", "Κ", "κ", "Λ", "λ", "Μ", "μ", "Ν", "ν", "Ξ", "ξ", "Ο", "Ό", "ο", "ό", "Π", "π", "Ρ", "ρ", "Σ", "σ", "ς", "Τ", "τ", "Υ", "Ύ", "υ", "ύ", "Φ", "φ", "Χ", "χ", "Ψ", "ψ", "Ω", "Ώ", "ω", "ώ"
],
+ "greekextended": [
+ "ἀ", "ἁ", "ἂ", "ἃ", "ἄ", "ἅ", "ἆ", "ἇ", "Ἀ", "Ἁ", "Ἂ", "Ἃ", "Ἄ", "Ἅ", "Ἆ", "Ἇ", "ἐ", "ἑ", "ἒ", "ἓ", "ἔ", "ἕ", "Ἐ", "Ἑ", "Ἒ", "Ἓ", "Ἔ", "Ἕ", "ἠ", "ἡ", "ἢ", "ἣ", "ἤ", "ἥ", "ἦ", "ἧ", "Ἠ", "Ἡ", "Ἢ", "Ἣ", "Ἤ", "Ἥ", "Ἦ", "Ἧ", "ἰ", "ἱ", "ἲ", "ἳ", "ἴ", "ἵ", "ἶ", "ἷ", "Ἰ", "Ἱ", "Ἲ", "Ἳ", "Ἴ", "Ἵ", "Ἶ", "Ἷ", "ὀ", "ὁ", "ὂ", "ὃ", "ὄ", "ὅ", "Ὀ", "Ὁ", "Ὂ", "Ὃ", "Ὄ", "Ὅ", "ὐ", "ὑ", "ὒ", "ὓ", "ὔ", "ὕ", "ὖ", "ὗ", "Ὑ", "Ὓ", "Ὕ", "Ὗ", "ὠ", "ὡ", "ὢ", "ὣ", "ὤ", "ὥ", "ὦ", "ὧ", "Ὠ", "Ὡ", "Ὢ", "Ὣ", "Ὤ", "Ὥ", "Ὦ", "Ὧ", "ὰ", "ά", "ὲ", "έ", "ὴ", "ή", "ὶ", "ί", "ὸ", "ό", "ὺ", "ύ", "ὼ", "ώ", "ᾀ", "ᾁ", "ᾂ", "ᾃ", "ᾄ", "ᾅ", "ᾆ", "ᾇ", "ᾈ", "ᾉ", "ᾊ", "ᾋ", "ᾌ", "ᾍ", "ᾎ", "ᾏ", "ᾐ", "ᾑ", "ᾒ", "ᾓ", "ᾔ", "ᾕ", "ᾖ", "ᾗ", "ᾘ", "ᾙ", "ᾚ", "ᾛ", "ᾜ", "ᾝ", "ᾞ", "ᾟ", "ᾠ", "ᾡ", "ᾢ", "ᾣ", "ᾤ", "ᾥ", "ᾦ", "ᾧ", "ᾨ", "ᾩ", "ᾪ", "ᾫ", "ᾬ", "ᾭ", "ᾮ", "ᾯ", "ᾰ", "ᾱ", "ᾲ", "ᾳ", "ᾴ", "ᾶ", "ᾷ", "Ᾰ", "Ᾱ", "Ὰ", "Ά", "ᾼ", "᾽", "ι", "᾿", "῀", "῁", "ῂ", "ῃ", "ῄ", "ῆ", "ῇ", "Ὲ", "Έ", "Ὴ", "Ή", "ῌ", "῍", "῎", "῏", "ῐ", "ῑ", "ῒ", "ΐ", "ῖ", "ῗ", "Ῐ", "Ῑ", "Ὶ", "Ί", "῝", "῞", "῟", "ῠ", "ῡ", "ῢ", "ΰ", "ῤ", "ῥ", "ῦ", "ῧ", "Ῠ", "Ῡ", "Ὺ", "Ύ", "Ῥ", "῭", "΅", "`", "ῲ", "ῳ", "ῴ", "ῶ", "ῷ", "Ὸ", "Ό", "Ὼ", "Ώ", "ῼ", "´", "῾"
+ ],
"cyrillic": [
"А", "а", "Ӑ", "ӑ", "Ӓ", "ӓ", "Ә", "ә", "Ӛ", "ӛ", "Б", "б", "В", "в", "Г", "г", "Ґ", "ґ", "Ӷ", "ӷ", "Ѓ", "ѓ", "Ӻ", "ӻ", "Ғ", "ғ", "Ҕ", "ҕ", "Д", "д", "Ԁ", "ԁ", "Ԃ", "ԃ", "Ђ", "ђ", "Е", "е", "Ѐ", "ѐ", "Є", "є", "Ё", "ё", "Ӗ", "ӗ", "Ҽ", "ҽ", "Ҿ", "ҿ", "Ж", "ж", "Җ", "җ", "Ӂ", "ӂ", "Ӝ", "ӝ", "З", "з", "Ҙ", "ҙ", "Ӟ", "ӟ", "Ԑ", "ԑ", "Ӡ", "ӡ", "Ѕ", "ѕ", "Ԅ", "ԅ", "Ԇ", "ԇ", "И", "и", "І", "і", "Ї", "ї",
[
return xhr;
}
} )
+ .then( null, function ( code, data, result, jqXHR ) {
+ if ( code !== 'http' ) {
+ // Not really an error, work around mw.Api thinking it is.
+ return $.Deferred()
+ .resolve( result, jqXHR )
+ .promise();
+ }
+ return this;
+ } )
.fail( function ( code, data ) {
var details = 'HTTP error: ' + data.exception;
$result.empty()
.done( function ( result, textStatus, jqXHR ) {
if ( result === undefined || result === null || result === '' ) {
apiDeferred.reject( 'ok-but-empty',
- 'OK response but empty result (check HTTP headers?)'
+ 'OK response but empty result (check HTTP headers?)',
+ result,
+ jqXHR
);
} else if ( result.error ) {
var code = result.error.code === undefined ? 'unknown' : result.error.code;
- apiDeferred.reject( code, result );
+ apiDeferred.reject( code, result, result, jqXHR );
} else {
apiDeferred.resolve( result, jqXHR );
}
// Bind because it throws TypeError if context is not window
? window.requestIdleCallback.bind( window )
: mw.requestIdleCallbackInternal;
-}( mediaWiki, jQuery ) );
+}( mediaWiki ) );
* @return {jQuery.Promise}
*/
getGroups: function ( callback ) {
- return getUserInfo().then(
- function ( userInfo ) { return userInfo.groups; },
- function () { return []; }
- ).done( callback );
+ var userGroups = mw.config.get( 'wgUserGroups', [] );
+
+ // Uses promise for backwards compatibility
+ return $.Deferred().resolve( userGroups ).done( callback );
},
/**
$wikiId = 'enwiki'; // $wgConf has a fake entry for this
// @codingStandardsIgnoreStart Generic.Files.LineLength
- return array(
+ return [
// Linker::formatComment
- array(
+ [
'a<script>b',
'a<script>b',
- ),
- array(
+ ],
+ [
'a—b',
'a—b',
- ),
- array(
+ ],
+ [
"'''not bolded'''",
"'''not bolded'''",
- ),
- array(
+ ],
+ [
"try <script>evil</scipt> things",
"try <script>evil</scipt> things",
- ),
+ ],
// Linker::formatAutocomments
- array(
+ [
'<a href="/wiki/Special:BlankPage#autocomment" title="Special:BlankPage">→</a><span dir="auto"><span class="autocomment">autocomment</span></span>',
"/* autocomment */",
- ),
- array(
+ ],
+ [
'<a href="/wiki/Special:BlankPage#linkie.3F" title="Special:BlankPage">→</a><span dir="auto"><span class="autocomment"><a href="/wiki/index.php?title=Linkie%3F&action=edit&redlink=1" class="new" title="Linkie? (page does not exist)">linkie?</a></span></span>',
"/* [[linkie?]] */",
- ),
- array(
+ ],
+ [
'<a href="/wiki/Special:BlankPage#autocomment" title="Special:BlankPage">→</a><span dir="auto"><span class="autocomment">autocomment: </span> post</span>',
"/* autocomment */ post",
- ),
- array(
+ ],
+ [
'pre <a href="/wiki/Special:BlankPage#autocomment" title="Special:BlankPage">→</a><span dir="auto"><span class="autocomment">autocomment</span></span>',
"pre /* autocomment */",
- ),
- array(
+ ],
+ [
'pre <a href="/wiki/Special:BlankPage#autocomment" title="Special:BlankPage">→</a><span dir="auto"><span class="autocomment">autocomment: </span> post</span>',
"pre /* autocomment */ post",
- ),
- array(
+ ],
+ [
'<a href="/wiki/Special:BlankPage#autocomment" title="Special:BlankPage">→</a><span dir="auto"><span class="autocomment">autocomment: </span> multiple? <a href="/wiki/Special:BlankPage#autocomment2" title="Special:BlankPage">→</a><span dir="auto"><span class="autocomment">autocomment2: </span> </span></span>',
"/* autocomment */ multiple? /* autocomment2 */ ",
- ),
- array(
+ ],
+ [
'<a href="/wiki/Special:BlankPage#autocomment_containing_.2F.2A" title="Special:BlankPage">→</a><span dir="auto"><span class="autocomment">autocomment containing /*: </span> T70361</span>',
"/* autocomment containing /* */ T70361"
- ),
- array(
+ ],
+ [
'<a href="/wiki/Special:BlankPage#autocomment_containing_.22quotes.22" title="Special:BlankPage">→</a><span dir="auto"><span class="autocomment">autocomment containing "quotes"</span></span>',
"/* autocomment containing \"quotes\" */"
- ),
- array(
+ ],
+ [
'<a href="/wiki/Special:BlankPage#autocomment_containing_.3Cscript.3Etags.3C.2Fscript.3E" title="Special:BlankPage">→</a><span dir="auto"><span class="autocomment">autocomment containing <script>tags</script></span></span>',
"/* autocomment containing <script>tags</script> */"
- ),
- array(
+ ],
+ [
'<a href="#autocomment">→</a><span dir="auto"><span class="autocomment">autocomment</span></span>',
"/* autocomment */",
false, true
- ),
- array(
+ ],
+ [
'<span dir="auto"><span class="autocomment">autocomment</span></span>',
"/* autocomment */",
null
- ),
- array(
+ ],
+ [
'<a href="/wiki/Special:BlankPage#autocomment" title="Special:BlankPage">→</a><span dir="auto"><span class="autocomment">autocomment</span></span>',
"/* autocomment */",
false, false
- ),
- array(
+ ],
+ [
'<a class="external" rel="nofollow" href="//en.example.org/w/Special:BlankPage#autocomment">→</a><span dir="auto"><span class="autocomment">autocomment</span></span>',
"/* autocomment */",
false, false, $wikiId
- ),
+ ],
// Linker::formatLinksInComment
- array(
+ [
'abc <a href="/wiki/index.php?title=Link&action=edit&redlink=1" class="new" title="Link (page does not exist)">link</a> def',
"abc [[link]] def",
- ),
- array(
+ ],
+ [
'abc <a href="/wiki/index.php?title=Link&action=edit&redlink=1" class="new" title="Link (page does not exist)">text</a> def',
"abc [[link|text]] def",
- ),
- array(
+ ],
+ [
'abc <a href="/wiki/Special:BlankPage" title="Special:BlankPage">Special:BlankPage</a> def',
"abc [[Special:BlankPage|]] def",
- ),
- array(
+ ],
+ [
'abc <a href="/wiki/index.php?title=%C4%84%C5%9B%C5%BC&action=edit&redlink=1" class="new" title="Ąśż (page does not exist)">ąśż</a> def',
"abc [[%C4%85%C5%9B%C5%BC]] def",
- ),
- array(
+ ],
+ [
'abc <a href="/wiki/Special:BlankPage#section" title="Special:BlankPage">#section</a> def',
"abc [[#section]] def",
- ),
- array(
+ ],
+ [
'abc <a href="/wiki/index.php?title=/subpage&action=edit&redlink=1" class="new" title="/subpage (page does not exist)">/subpage</a> def',
"abc [[/subpage]] def",
- ),
- array(
+ ],
+ [
'abc <a href="/wiki/index.php?title=%22evil!%22&action=edit&redlink=1" class="new" title=""evil!" (page does not exist)">"evil!"</a> def',
"abc [[\"evil!\"]] def",
- ),
- array(
+ ],
+ [
'abc [[<script>very evil</script>]] def',
"abc [[<script>very evil</script>]] def",
- ),
- array(
+ ],
+ [
'abc [[|]] def',
"abc [[|]] def",
- ),
- array(
+ ],
+ [
'abc <a href="/wiki/index.php?title=Link&action=edit&redlink=1" class="new" title="Link (page does not exist)">link</a> def',
"abc [[link]] def",
false, false
- ),
- array(
+ ],
+ [
'abc <a class="external" rel="nofollow" href="//en.example.org/w/Link">link</a> def',
"abc [[link]] def",
false, false, $wikiId
- )
- );
+ ],
+ ];
// @codingStandardsIgnoreEnd
}
public static function provideCasesForFormatLinksInComment() {
// @codingStandardsIgnoreStart Generic.Files.LineLength
- return array(
- array(
+ return [
+ [
'foo bar <a href="/wiki/Special:BlankPage" title="Special:BlankPage">Special:BlankPage</a>',
'foo bar [[Special:BlankPage]]',
null,
- ),
- array(
+ ],
+ [
'<a class="external" rel="nofollow" href="//en.example.org/w/Foo%27bar">Foo\'bar</a>',
"[[Foo'bar]]",
'enwiki',
- ),
- array(
+ ],
+ [
'foo bar <a class="external" rel="nofollow" href="//en.example.org/w/Special:BlankPage">Special:BlankPage</a>',
'foo bar [[Special:BlankPage]]',
'enwiki',
- ),
- );
+ ],
+ ];
// @codingStandardsIgnoreEnd
}
}
public static function provideMakeResourceLoaderLink() {
// @codingStandardsIgnoreStart Generic.Files.LineLength
- return array(
+ return [
// Load module script only
- array(
- array( 'test.foo', ResourceLoaderModule::TYPE_SCRIPTS ),
+ [
+ [ 'test.foo', ResourceLoaderModule::TYPE_SCRIPTS ],
"<script>(window.RLQ=window.RLQ||[]).push(function(){"
. 'mw.loader.load("http://127.0.0.1:8080/w/load.php?debug=false\u0026lang=en\u0026modules=test.foo\u0026only=scripts\u0026skin=fallback");'
. "});</script>"
- ),
- array(
+ ],
+ [
// Don't condition wrap raw modules (like the startup module)
- array( 'test.raw', ResourceLoaderModule::TYPE_SCRIPTS ),
+ [ 'test.raw', ResourceLoaderModule::TYPE_SCRIPTS ],
'<script async src="http://127.0.0.1:8080/w/load.php?debug=false&lang=en&modules=test.raw&only=scripts&skin=fallback"></script>'
- ),
+ ],
// Load module styles only
// This also tests the order the modules are put into the url
- array(
- array( array( 'test.baz', 'test.foo', 'test.bar' ), ResourceLoaderModule::TYPE_STYLES ),
+ [
+ [ [ 'test.baz', 'test.foo', 'test.bar' ], ResourceLoaderModule::TYPE_STYLES ],
'<link rel=stylesheet href="http://127.0.0.1:8080/w/load.php?debug=false&lang=en&modules=test.bar%2Cbaz%2Cfoo&only=styles&skin=fallback">'
- ),
+ ],
// Load private module (only=scripts)
- array(
- array( 'test.quux', ResourceLoaderModule::TYPE_SCRIPTS ),
+ [
+ [ 'test.quux', ResourceLoaderModule::TYPE_SCRIPTS ],
"<script>(window.RLQ=window.RLQ||[]).push(function(){"
. "mw.test.baz({token:123});mw.loader.state({\"test.quux\":\"ready\"});"
. "});</script>"
- ),
+ ],
// Load private module (combined)
- array(
- array( 'test.quux', ResourceLoaderModule::TYPE_COMBINED ),
+ [
+ [ 'test.quux', ResourceLoaderModule::TYPE_COMBINED ],
"<script>(window.RLQ=window.RLQ||[]).push(function(){"
. "mw.loader.implement(\"test.quux\",function($,jQuery){"
. "mw.test.baz({token:123});},{\"css\":[\".mw-icon{transition:none}"
. "\"]});});</script>"
- ),
+ ],
// Load no modules
- array(
- array( array(), ResourceLoaderModule::TYPE_COMBINED ),
+ [
+ [ [], ResourceLoaderModule::TYPE_COMBINED ],
'',
- ),
+ ],
// noscript group
- array(
- array( 'test.noscript', ResourceLoaderModule::TYPE_STYLES ),
+ [
+ [ 'test.noscript', ResourceLoaderModule::TYPE_STYLES ],
'<noscript><link rel=stylesheet href="http://127.0.0.1:8080/w/load.php?debug=false&lang=en&modules=test.noscript&only=styles&skin=fallback"></noscript>'
- ),
+ ],
// Load two modules in separate groups
- array(
- array( array( 'test.group.foo', 'test.group.bar' ), ResourceLoaderModule::TYPE_COMBINED ),
+ [
+ [ [ 'test.group.foo', 'test.group.bar' ], ResourceLoaderModule::TYPE_COMBINED ],
"<script>(window.RLQ=window.RLQ||[]).push(function(){"
. 'mw.loader.load("http://127.0.0.1:8080/w/load.php?debug=false\u0026lang=en\u0026modules=test.group.bar\u0026skin=fallback");'
. "});</script>\n"
. "<script>(window.RLQ=window.RLQ||[]).push(function(){"
. 'mw.loader.load("http://127.0.0.1:8080/w/load.php?debug=false\u0026lang=en\u0026modules=test.group.foo\u0026skin=fallback");'
. "});</script>"
- ),
- );
+ ],
+ ];
// @codingStandardsIgnoreEnd
}
*/
public function testLength() {
// @codingStandardsIgnoreStart Ignore long line warnings
- $matches = $this->basicRouter->parse( "/wiki/Lorem_ipsum_dolor_sit_amet,_consectetur_adipisicing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." );
- $this->assertEquals( $matches, array( 'title' => "Lorem_ipsum_dolor_sit_amet,_consectetur_adipisicing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." ) );
+ $matches = $this->basicRouter->parse(
+ "/wiki/Lorem_ipsum_dolor_sit_amet,_consectetur_adipisicing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum."
+ );
+ $this->assertEquals(
+ $matches,
+ [ 'title' => "Lorem_ipsum_dolor_sit_amet,_consectetur_adipisicing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." ]
+ );
// @codingStandardsIgnoreEnd
}
$this->assertEquals( 'hello hello.', $rev->getContent()->getNativeData() );
}
- /**
- * @covers Revision::getRawText
- */
- public function testGetRawText() {
- $this->hideDeprecated( 'Revision::getRawText' );
-
- $orig = $this->makeRevision( [ 'text' => 'hello hello raw.' ] );
- $rev = Revision::newFromId( $orig->getId() );
-
- $this->assertEquals( 'hello hello raw.', $rev->getRawText() );
- }
-
/**
* @covers Revision::getContentModel
*/
$this->assertEquals( $expectedText, $rev->getText( $audience ) );
}
- /**
- * @group Database
- * @dataProvider dataGetText
- * @covers Revision::getRawText
- */
- public function testGetRawText( $text, $title, $model, $format, $audience, $expectedText ) {
- $this->hideDeprecated( 'Revision::getRawText' );
-
- $rev = $this->newTestRevision( $text, $title, $model, $format );
-
- $this->assertEquals( $expectedText, $rev->getRawText( $audience ) );
- }
-
public function dataGetSize() {
return [
[ "hello world.", CONTENT_MODEL_WIKITEXT, 12 ],
<?php
+use Liuggio\StatsdClient\Factory\StatsdDataFactory;
/**
* @author Addshore
return $fakeRow;
}
+ private function newWatchedItemStore( LoadBalancer $loadBalancer, HashBagOStuff $cache ) {
+ return new WatchedItemStore(
+ $loadBalancer,
+ $cache
+ );
+ }
+
public function testGetDefaultInstance() {
$instanceOne = WatchedItemStore::getDefaultInstance();
$instanceTwo = WatchedItemStore::getDefaultInstance();
$mockCache->expects( $this->never() )->method( 'set' );
$mockCache->expects( $this->never() )->method( 'delete' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
$mockCache->expects( $this->never() )->method( 'set' );
$mockCache->expects( $this->never() )->method( 'delete' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
$mockCache->expects( $this->never() )->method( 'set' );
$mockCache->expects( $this->never() )->method( 'delete' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
$mockCache->expects( $this->never() )->method( 'set' );
$mockCache->expects( $this->never() )->method( 'delete' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
$mockCache->expects( $this->never() )->method( 'get' );
$mockCache->expects( $this->never() )->method( 'delete' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
$mockCache->expects( $this->never() )->method( 'set' );
$mockCache->expects( $this->never() )->method( 'delete' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
$mockCache->expects( $this->never() )->method( 'set' );
$mockCache->expects( $this->never() )->method( 'delete' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
$mockCache->expects( $this->never() )->method( 'set' );
$mockCache->expects( $this->never() )->method( 'delete' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
$mockCache->expects( $this->never() )->method( 'get' );
$mockCache->expects( $this->never() )->method( 'delete' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
$mockCache->expects( $this->never() )->method( 'get' );
$mockCache->expects( $this->never() )->method( 'delete' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
$mockCache->expects( $this->never() )->method( 'get' );
$mockCache->expects( $this->never() )->method( 'delete' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
)
->will( $this->returnValue( new FakeResultWrapper( [] ) ) );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$this->getMockCache()
);
$mockCache->expects( $this->never() )->method( 'get' );
$mockCache->expects( $this->never() )->method( 'delete' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
$mockCache->expects( $this->never() )->method( 'get' );
$mockCache->expects( $this->never() )->method( 'delete' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
$mockCache->expects( $this->never() )->method( 'get' );
$mockCache->expects( $this->never() )->method( 'delete' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
->method( 'delete' )
->with( '0:Some_Page:1' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
$mockCache->expects( $this->never() )
->method( 'delete' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
->method( 'delete' )
->with( '1:Some_Page:1' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
$mockCache->expects( $this->never() )
->method( 'delete' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
$mockCache->expects( $this->never() )
->method( 'delete' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
'0:SomeDbKey:1'
);
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
$mockCache->expects( $this->never() )->method( 'get' );
$mockCache->expects( $this->never() )->method( 'delete' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
$mockCache->expects( $this->never() )->method( 'get' );
$mockCache->expects( $this->never() )->method( 'delete' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
->method( 'delete' )
->with( '0:SomeDbKey:1' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
->method( 'delete' )
->with( '0:SomeDbKey:1' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
$mockCache->expects( $this->never() )
->method( 'delete' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
'0:SomeDbKey:1'
);
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
)
->will( $this->returnValue( $cachedItem ) );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
->with( '0:SomeDbKey:1' )
->will( $this->returnValue( false ) );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
$mockCache->expects( $this->never() )->method( 'get' );
$mockCache->expects( $this->never() )->method( 'delete' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
$mockCache->expects( $this->never() )->method( 'get' );
$mockCache->expects( $this->never() )->method( 'set' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
)
->will( $this->returnValue( [] ) );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$mockLoadBalancer,
$mockCache
);
}
public function testGetWatchedItemsForUser_badSortOptionThrowsException() {
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $this->getMockDb() ),
$this->getMockCache()
);
'0:SomeDbKey:1'
);
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
->with( '0:SomeDbKey:1' )
->will( $this->returnValue( false ) );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
$mockCache->expects( $this->never() )->method( 'get' );
$mockCache->expects( $this->never() )->method( 'delete' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
$mockCache->expects( $this->never() )->method( 'set' );
$mockCache->expects( $this->never() )->method( 'delete' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
$mockCache->expects( $this->never() )->method( 'set' );
$mockCache->expects( $this->never() )->method( 'delete' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
$mockCache->expects( $this->never() )->method( 'set' );
$mockCache->expects( $this->never() )->method( 'delete' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
$mockCache->expects( $this->never() )->method( 'set' );
$mockCache->expects( $this->never() )->method( 'delete' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
$mockCache = $this->getMockCache();
$mockCache->expects( $this->never() )->method( $this->anything() );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
$mockCache->expects( $this->never() )->method( 'set' );
$mockCache->expects( $this->never() )->method( 'delete' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
$mockCache->expects( $this->never() )->method( 'set' );
$mockCache->expects( $this->never() )->method( 'delete' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
->method( 'delete' )
->with( '0:SomeDbKey:1' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
$mockDb->expects( $this->never() )
->method( 'delete' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
$mockDb->expects( $this->never() )
->method( 'delete' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
$mockDb->expects( $this->never() )
->method( 'delete' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
$mockCache->expects( $this->never() )->method( 'get' );
$mockCache->expects( $this->never() )->method( 'delete' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
$mockCache->expects( $this->never() )->method( 'get' );
$mockCache->expects( $this->never() )->method( 'delete' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
->method( 'delete' )
->with( '0:SomeDbKey:1' );
- $store = new WatchedItemStore(
+ $store = $this->newWatchedItemStore(
$this->getMockLoadBalancer( $mockDb ),
$mockCache
);
public static function provideGeneralEncoding() {
// @codingStandardsIgnoreStart Generic.Files.LineLength
return array_merge(
- self::addFormatVersion( 1, array(
+ self::addFormatVersion( 1, [
// Basic types
- array( array( null ), 'a:1:{i:0;N;}' ),
- array( array( true ), 'a:1:{i:0;s:0:"";}' ),
- array( array( false ), 'a:0:{}' ),
- array( array( true, ApiResult::META_BC_BOOLS => array( 0 ) ),
- 'a:1:{i:0;b:1;}' ),
- array( array( false, ApiResult::META_BC_BOOLS => array( 0 ) ),
- 'a:1:{i:0;b:0;}' ),
- array( array( 42 ), 'a:1:{i:0;i:42;}' ),
- array( array( 42.5 ), 'a:1:{i:0;d:42.5;}' ),
- array( array( 1e42 ), 'a:1:{i:0;d:1.0E+42;}' ),
- array( array( 'foo' ), 'a:1:{i:0;s:3:"foo";}' ),
- array( array( 'fóo' ), 'a:1:{i:0;s:4:"fóo";}' ),
+ [ [ null ], 'a:1:{i:0;N;}' ],
+ [ [ true ], 'a:1:{i:0;s:0:"";}' ],
+ [ [ false ], 'a:0:{}' ],
+ [ [ true, ApiResult::META_BC_BOOLS => [ 0 ] ],
+ 'a:1:{i:0;b:1;}' ],
+ [ [ false, ApiResult::META_BC_BOOLS => [ 0 ] ],
+ 'a:1:{i:0;b:0;}' ],
+ [ [ 42 ], 'a:1:{i:0;i:42;}' ],
+ [ [ 42.5 ], 'a:1:{i:0;d:42.5;}' ],
+ [ [ 1e42 ], 'a:1:{i:0;d:1.0E+42;}' ],
+ [ [ 'foo' ], 'a:1:{i:0;s:3:"foo";}' ],
+ [ [ 'fóo' ], 'a:1:{i:0;s:4:"fóo";}' ],
// Arrays and objects
- array( array( array() ), 'a:1:{i:0;a:0:{}}' ),
- array( array( array( 1 ) ), 'a:1:{i:0;a:1:{i:0;i:1;}}' ),
- array( array( array( 'x' => 1 ) ), 'a:1:{i:0;a:1:{s:1:"x";i:1;}}' ),
- array( array( array( 2 => 1 ) ), 'a:1:{i:0;a:1:{i:2;i:1;}}' ),
- array( array( (object)array() ), 'a:1:{i:0;a:0:{}}' ),
- array( array( array( 1, ApiResult::META_TYPE => 'assoc' ) ), 'a:1:{i:0;a:1:{i:0;i:1;}}' ),
- array( array( array( 'x' => 1, ApiResult::META_TYPE => 'array' ) ), 'a:1:{i:0;a:1:{i:0;i:1;}}' ),
- array( array( array( 'x' => 1, ApiResult::META_TYPE => 'kvp' ) ), 'a:1:{i:0;a:1:{s:1:"x";i:1;}}' ),
- array( array( array( 'x' => 1, ApiResult::META_TYPE => 'BCkvp', ApiResult::META_KVP_KEY_NAME => 'key' ) ),
- 'a:1:{i:0;a:1:{i:0;a:2:{s:3:"key";s:1:"x";s:1:"*";i:1;}}}' ),
- array( array( array( 'x' => 1, ApiResult::META_TYPE => 'BCarray' ) ), 'a:1:{i:0;a:1:{s:1:"x";i:1;}}' ),
- array( array( array( 'a', 'b', ApiResult::META_TYPE => 'BCassoc' ) ), 'a:1:{i:0;a:2:{i:0;s:1:"a";i:1;s:1:"b";}}' ),
+ [ [ [] ], 'a:1:{i:0;a:0:{}}' ],
+ [ [ [ 1 ] ], 'a:1:{i:0;a:1:{i:0;i:1;}}' ],
+ [ [ [ 'x' => 1 ] ], 'a:1:{i:0;a:1:{s:1:"x";i:1;}}' ],
+ [ [ [ 2 => 1 ] ], 'a:1:{i:0;a:1:{i:2;i:1;}}' ],
+ [ [ (object)[] ], 'a:1:{i:0;a:0:{}}' ],
+ [ [ [ 1, ApiResult::META_TYPE => 'assoc' ] ], 'a:1:{i:0;a:1:{i:0;i:1;}}' ],
+ [ [ [ 'x' => 1, ApiResult::META_TYPE => 'array' ] ], 'a:1:{i:0;a:1:{i:0;i:1;}}' ],
+ [ [ [ 'x' => 1, ApiResult::META_TYPE => 'kvp' ] ], 'a:1:{i:0;a:1:{s:1:"x";i:1;}}' ],
+ [ [ [ 'x' => 1, ApiResult::META_TYPE => 'BCkvp', ApiResult::META_KVP_KEY_NAME => 'key' ] ],
+ 'a:1:{i:0;a:1:{i:0;a:2:{s:3:"key";s:1:"x";s:1:"*";i:1;}}}' ],
+ [ [ [ 'x' => 1, ApiResult::META_TYPE => 'BCarray' ] ], 'a:1:{i:0;a:1:{s:1:"x";i:1;}}' ],
+ [ [ [ 'a', 'b', ApiResult::META_TYPE => 'BCassoc' ] ], 'a:1:{i:0;a:2:{i:0;s:1:"a";i:1;s:1:"b";}}' ],
// Content
- array( array( 'content' => 'foo', ApiResult::META_CONTENT => 'content' ),
- 'a:1:{s:1:"*";s:3:"foo";}' ),
+ [ [ 'content' => 'foo', ApiResult::META_CONTENT => 'content' ],
+ 'a:1:{s:1:"*";s:3:"foo";}' ],
// BC Subelements
- array( array( 'foo' => 'foo', ApiResult::META_BC_SUBELEMENTS => array( 'foo' ) ),
- 'a:1:{s:3:"foo";a:1:{s:1:"*";s:3:"foo";}}' ),
- ) ),
- self::addFormatVersion( 2, array(
+ [ [ 'foo' => 'foo', ApiResult::META_BC_SUBELEMENTS => [ 'foo' ] ],
+ 'a:1:{s:3:"foo";a:1:{s:1:"*";s:3:"foo";}}' ],
+ ] ),
+ self::addFormatVersion( 2, [
// Basic types
- array( array( null ), 'a:1:{i:0;N;}' ),
- array( array( true ), 'a:1:{i:0;b:1;}' ),
- array( array( false ), 'a:1:{i:0;b:0;}' ),
- array( array( true, ApiResult::META_BC_BOOLS => array( 0 ) ),
- 'a:1:{i:0;b:1;}' ),
- array( array( false, ApiResult::META_BC_BOOLS => array( 0 ) ),
- 'a:1:{i:0;b:0;}' ),
- array( array( 42 ), 'a:1:{i:0;i:42;}' ),
- array( array( 42.5 ), 'a:1:{i:0;d:42.5;}' ),
- array( array( 1e42 ), 'a:1:{i:0;d:1.0E+42;}' ),
- array( array( 'foo' ), 'a:1:{i:0;s:3:"foo";}' ),
- array( array( 'fóo' ), 'a:1:{i:0;s:4:"fóo";}' ),
+ [ [ null ], 'a:1:{i:0;N;}' ],
+ [ [ true ], 'a:1:{i:0;b:1;}' ],
+ [ [ false ], 'a:1:{i:0;b:0;}' ],
+ [ [ true, ApiResult::META_BC_BOOLS => [ 0 ] ],
+ 'a:1:{i:0;b:1;}' ],
+ [ [ false, ApiResult::META_BC_BOOLS => [ 0 ] ],
+ 'a:1:{i:0;b:0;}' ],
+ [ [ 42 ], 'a:1:{i:0;i:42;}' ],
+ [ [ 42.5 ], 'a:1:{i:0;d:42.5;}' ],
+ [ [ 1e42 ], 'a:1:{i:0;d:1.0E+42;}' ],
+ [ [ 'foo' ], 'a:1:{i:0;s:3:"foo";}' ],
+ [ [ 'fóo' ], 'a:1:{i:0;s:4:"fóo";}' ],
// Arrays and objects
- array( array( array() ), 'a:1:{i:0;a:0:{}}' ),
- array( array( array( 1 ) ), 'a:1:{i:0;a:1:{i:0;i:1;}}' ),
- array( array( array( 'x' => 1 ) ), 'a:1:{i:0;a:1:{s:1:"x";i:1;}}' ),
- array( array( array( 2 => 1 ) ), 'a:1:{i:0;a:1:{i:2;i:1;}}' ),
- array( array( (object)array() ), 'a:1:{i:0;a:0:{}}' ),
- array( array( array( 1, ApiResult::META_TYPE => 'assoc' ) ), 'a:1:{i:0;a:1:{i:0;i:1;}}' ),
- array( array( array( 'x' => 1, ApiResult::META_TYPE => 'array' ) ), 'a:1:{i:0;a:1:{i:0;i:1;}}' ),
- array( array( array( 'x' => 1, ApiResult::META_TYPE => 'kvp' ) ), 'a:1:{i:0;a:1:{s:1:"x";i:1;}}' ),
- array( array( array( 'x' => 1, ApiResult::META_TYPE => 'BCkvp', ApiResult::META_KVP_KEY_NAME => 'key' ) ),
- 'a:1:{i:0;a:1:{s:1:"x";i:1;}}' ),
- array( array( array( 'x' => 1, ApiResult::META_TYPE => 'BCarray' ) ), 'a:1:{i:0;a:1:{i:0;i:1;}}' ),
- array( array( array( 'a', 'b', ApiResult::META_TYPE => 'BCassoc' ) ), 'a:1:{i:0;a:2:{i:0;s:1:"a";i:1;s:1:"b";}}' ),
+ [ [ [] ], 'a:1:{i:0;a:0:{}}' ],
+ [ [ [ 1 ] ], 'a:1:{i:0;a:1:{i:0;i:1;}}' ],
+ [ [ [ 'x' => 1 ] ], 'a:1:{i:0;a:1:{s:1:"x";i:1;}}' ],
+ [ [ [ 2 => 1 ] ], 'a:1:{i:0;a:1:{i:2;i:1;}}' ],
+ [ [ (object)[] ], 'a:1:{i:0;a:0:{}}' ],
+ [ [ [ 1, ApiResult::META_TYPE => 'assoc' ] ], 'a:1:{i:0;a:1:{i:0;i:1;}}' ],
+ [ [ [ 'x' => 1, ApiResult::META_TYPE => 'array' ] ], 'a:1:{i:0;a:1:{i:0;i:1;}}' ],
+ [ [ [ 'x' => 1, ApiResult::META_TYPE => 'kvp' ] ], 'a:1:{i:0;a:1:{s:1:"x";i:1;}}' ],
+ [ [ [ 'x' => 1, ApiResult::META_TYPE => 'BCkvp', ApiResult::META_KVP_KEY_NAME => 'key' ] ],
+ 'a:1:{i:0;a:1:{s:1:"x";i:1;}}' ],
+ [ [ [ 'x' => 1, ApiResult::META_TYPE => 'BCarray' ] ], 'a:1:{i:0;a:1:{i:0;i:1;}}' ],
+ [ [ [ 'a', 'b', ApiResult::META_TYPE => 'BCassoc' ] ], 'a:1:{i:0;a:2:{i:0;s:1:"a";i:1;s:1:"b";}}' ],
// Content
- array( array( 'content' => 'foo', ApiResult::META_CONTENT => 'content' ),
- 'a:1:{s:7:"content";s:3:"foo";}' ),
+ [ [ 'content' => 'foo', ApiResult::META_CONTENT => 'content' ],
+ 'a:1:{s:7:"content";s:3:"foo";}' ],
// BC Subelements
- array( array( 'foo' => 'foo', ApiResult::META_BC_SUBELEMENTS => array( 'foo' ) ),
- 'a:1:{s:3:"foo";s:3:"foo";}' ),
- ) )
+ [ [ 'foo' => 'foo', ApiResult::META_BC_SUBELEMENTS => [ 'foo' ] ],
+ 'a:1:{s:3:"foo";s:3:"foo";}' ],
+ ] )
);
// @codingStandardsIgnoreEnd
}
public static function provideGeneralEncoding() {
// @codingStandardsIgnoreStart Generic.Files.LineLength
- return array(
+ return [
// Basic types
- array( array( null, 'a' => null ), '<?xml version="1.0"?><api><_v _idx="0" /></api>' ),
- array( array( true, 'a' => true ), '<?xml version="1.0"?><api a=""><_v _idx="0">true</_v></api>' ),
- array( array( false, 'a' => false ), '<?xml version="1.0"?><api><_v _idx="0">false</_v></api>' ),
- array( array( true, 'a' => true, ApiResult::META_BC_BOOLS => array( 0, 'a' ) ),
- '<?xml version="1.0"?><api a=""><_v _idx="0">1</_v></api>' ),
- array( array( false, 'a' => false, ApiResult::META_BC_BOOLS => array( 0, 'a' ) ),
- '<?xml version="1.0"?><api><_v _idx="0"></_v></api>' ),
- array( array( 42, 'a' => 42 ), '<?xml version="1.0"?><api a="42"><_v _idx="0">42</_v></api>' ),
- array( array( 42.5, 'a' => 42.5 ), '<?xml version="1.0"?><api a="42.5"><_v _idx="0">42.5</_v></api>' ),
- array( array( 1e42, 'a' => 1e42 ), '<?xml version="1.0"?><api a="1.0E+42"><_v _idx="0">1.0E+42</_v></api>' ),
- array( array( 'foo', 'a' => 'foo' ), '<?xml version="1.0"?><api a="foo"><_v _idx="0">foo</_v></api>' ),
- array( array( 'fóo', 'a' => 'fóo' ), '<?xml version="1.0"?><api a="fóo"><_v _idx="0">fóo</_v></api>' ),
+ [ [ null, 'a' => null ], '<?xml version="1.0"?><api><_v _idx="0" /></api>' ],
+ [ [ true, 'a' => true ], '<?xml version="1.0"?><api a=""><_v _idx="0">true</_v></api>' ],
+ [ [ false, 'a' => false ], '<?xml version="1.0"?><api><_v _idx="0">false</_v></api>' ],
+ [ [ true, 'a' => true, ApiResult::META_BC_BOOLS => [ 0, 'a' ] ],
+ '<?xml version="1.0"?><api a=""><_v _idx="0">1</_v></api>' ],
+ [ [ false, 'a' => false, ApiResult::META_BC_BOOLS => [ 0, 'a' ] ],
+ '<?xml version="1.0"?><api><_v _idx="0"></_v></api>' ],
+ [ [ 42, 'a' => 42 ], '<?xml version="1.0"?><api a="42"><_v _idx="0">42</_v></api>' ],
+ [ [ 42.5, 'a' => 42.5 ], '<?xml version="1.0"?><api a="42.5"><_v _idx="0">42.5</_v></api>' ],
+ [ [ 1e42, 'a' => 1e42 ], '<?xml version="1.0"?><api a="1.0E+42"><_v _idx="0">1.0E+42</_v></api>' ],
+ [ [ 'foo', 'a' => 'foo' ], '<?xml version="1.0"?><api a="foo"><_v _idx="0">foo</_v></api>' ],
+ [ [ 'fóo', 'a' => 'fóo' ], '<?xml version="1.0"?><api a="fóo"><_v _idx="0">fóo</_v></api>' ],
// Arrays and objects
- array( array( array() ), '<?xml version="1.0"?><api><_v /></api>' ),
- array( array( array( 'x' => 1 ) ), '<?xml version="1.0"?><api><_v x="1" /></api>' ),
- array( array( array( 2 => 1 ) ), '<?xml version="1.0"?><api><_v><_v _idx="2">1</_v></_v></api>' ),
- array( array( (object)array() ), '<?xml version="1.0"?><api><_v /></api>' ),
- array( array( array( 1, ApiResult::META_TYPE => 'assoc' ) ), '<?xml version="1.0"?><api><_v><_v _idx="0">1</_v></_v></api>' ),
- array( array( array( 'x' => 1, ApiResult::META_TYPE => 'array' ) ), '<?xml version="1.0"?><api><_v><_v>1</_v></_v></api>' ),
- array( array( array( 'x' => 1, 'y' => array( 'z' => 1 ), ApiResult::META_TYPE => 'kvp' ) ),
- '<?xml version="1.0"?><api><_v><_v _name="x" xml:space="preserve">1</_v><_v _name="y"><z xml:space="preserve">1</z></_v></_v></api>' ),
- array( array( array( 'x' => 1, ApiResult::META_TYPE => 'kvp', ApiResult::META_INDEXED_TAG_NAME => 'i', ApiResult::META_KVP_KEY_NAME => 'key' ) ),
- '<?xml version="1.0"?><api><_v><i key="x" xml:space="preserve">1</i></_v></api>' ),
- array( array( array( 'x' => 1, ApiResult::META_TYPE => 'BCkvp', ApiResult::META_KVP_KEY_NAME => 'key' ) ),
- '<?xml version="1.0"?><api><_v><_v key="x" xml:space="preserve">1</_v></_v></api>' ),
- array( array( array( 'x' => 1, ApiResult::META_TYPE => 'BCarray' ) ), '<?xml version="1.0"?><api><_v x="1" /></api>' ),
- array( array( array( 'a', 'b', ApiResult::META_TYPE => 'BCassoc' ) ), '<?xml version="1.0"?><api><_v><_v _idx="0">a</_v><_v _idx="1">b</_v></_v></api>' ),
+ [ [ [] ], '<?xml version="1.0"?><api><_v /></api>' ],
+ [ [ [ 'x' => 1 ] ], '<?xml version="1.0"?><api><_v x="1" /></api>' ],
+ [ [ [ 2 => 1 ] ], '<?xml version="1.0"?><api><_v><_v _idx="2">1</_v></_v></api>' ],
+ [ [ (object)[] ], '<?xml version="1.0"?><api><_v /></api>' ],
+ [ [ [ 1, ApiResult::META_TYPE => 'assoc' ] ], '<?xml version="1.0"?><api><_v><_v _idx="0">1</_v></_v></api>' ],
+ [ [ [ 'x' => 1, ApiResult::META_TYPE => 'array' ] ], '<?xml version="1.0"?><api><_v><_v>1</_v></_v></api>' ],
+ [ [ [ 'x' => 1, 'y' => [ 'z' => 1 ], ApiResult::META_TYPE => 'kvp' ] ],
+ '<?xml version="1.0"?><api><_v><_v _name="x" xml:space="preserve">1</_v><_v _name="y"><z xml:space="preserve">1</z></_v></_v></api>' ],
+ [ [ [ 'x' => 1, ApiResult::META_TYPE => 'kvp', ApiResult::META_INDEXED_TAG_NAME => 'i', ApiResult::META_KVP_KEY_NAME => 'key' ] ],
+ '<?xml version="1.0"?><api><_v><i key="x" xml:space="preserve">1</i></_v></api>' ],
+ [ [ [ 'x' => 1, ApiResult::META_TYPE => 'BCkvp', ApiResult::META_KVP_KEY_NAME => 'key' ] ],
+ '<?xml version="1.0"?><api><_v><_v key="x" xml:space="preserve">1</_v></_v></api>' ],
+ [ [ [ 'x' => 1, ApiResult::META_TYPE => 'BCarray' ] ], '<?xml version="1.0"?><api><_v x="1" /></api>' ],
+ [ [ [ 'a', 'b', ApiResult::META_TYPE => 'BCassoc' ] ], '<?xml version="1.0"?><api><_v><_v _idx="0">a</_v><_v _idx="1">b</_v></_v></api>' ],
// Content
- array( array( 'content' => 'foo', ApiResult::META_CONTENT => 'content' ),
- '<?xml version="1.0"?><api xml:space="preserve">foo</api>' ),
+ [ [ 'content' => 'foo', ApiResult::META_CONTENT => 'content' ],
+ '<?xml version="1.0"?><api xml:space="preserve">foo</api>' ],
// Specified element name
- array( array( 'foo', 'bar', ApiResult::META_INDEXED_TAG_NAME => 'itn' ),
- '<?xml version="1.0"?><api><itn>foo</itn><itn>bar</itn></api>' ),
+ [ [ 'foo', 'bar', ApiResult::META_INDEXED_TAG_NAME => 'itn' ],
+ '<?xml version="1.0"?><api><itn>foo</itn><itn>bar</itn></api>' ],
// Subelements
- array( array( 'a' => 1, 's' => 1, '_subelements' => array( 's' ) ),
- '<?xml version="1.0"?><api a="1"><s xml:space="preserve">1</s></api>' ),
+ [ [ 'a' => 1, 's' => 1, '_subelements' => [ 's' ] ],
+ '<?xml version="1.0"?><api a="1"><s xml:space="preserve">1</s></api>' ],
// Content and subelement
- array( array( 'a' => 1, 'content' => 'foo', ApiResult::META_CONTENT => 'content' ),
- '<?xml version="1.0"?><api a="1" xml:space="preserve">foo</api>' ),
- array( array( 's' => array(), 'content' => 'foo', ApiResult::META_CONTENT => 'content' ),
- '<?xml version="1.0"?><api><s /><content xml:space="preserve">foo</content></api>' ),
- array(
- array(
+ [ [ 'a' => 1, 'content' => 'foo', ApiResult::META_CONTENT => 'content' ],
+ '<?xml version="1.0"?><api a="1" xml:space="preserve">foo</api>' ],
+ [ [ 's' => [], 'content' => 'foo', ApiResult::META_CONTENT => 'content' ],
+ '<?xml version="1.0"?><api><s /><content xml:space="preserve">foo</content></api>' ],
+ [
+ [
's' => 1,
'content' => 'foo',
ApiResult::META_CONTENT => 'content',
- ApiResult::META_SUBELEMENTS => array( 's' )
- ),
+ ApiResult::META_SUBELEMENTS => [ 's' ]
+ ],
'<?xml version="1.0"?><api><s xml:space="preserve">1</s><content xml:space="preserve">foo</content></api>'
- ),
+ ],
// BC Subelements
- array( array( 'foo' => 'foo', ApiResult::META_BC_SUBELEMENTS => array( 'foo' ) ),
- '<?xml version="1.0"?><api><foo xml:space="preserve">foo</foo></api>' ),
+ [ [ 'foo' => 'foo', ApiResult::META_BC_SUBELEMENTS => [ 'foo' ] ],
+ '<?xml version="1.0"?><api><foo xml:space="preserve">foo</foo></api>' ],
// Name mangling
- array( array( 'foo.bar' => 1 ), '<?xml version="1.0"?><api foo.bar="1" />' ),
- array( array( '' => 1 ), '<?xml version="1.0"?><api _="1" />' ),
- array( array( 'foo bar' => 1 ), '<?xml version="1.0"?><api _foo.20.bar="1" />' ),
- array( array( 'foo:bar' => 1 ), '<?xml version="1.0"?><api _foo.3A.bar="1" />' ),
- array( array( 'foo%.bar' => 1 ), '<?xml version="1.0"?><api _foo.25..2E.bar="1" />' ),
- array( array( '4foo' => 1, 'foo4' => 1 ), '<?xml version="1.0"?><api _4foo="1" foo4="1" />' ),
- array( array( "foo\xe3\x80\x80bar" => 1 ), '<?xml version="1.0"?><api _foo.3000.bar="1" />' ),
- array( array( 'foo:bar' => 1, ApiResult::META_PRESERVE_KEYS => array( 'foo:bar' ) ),
- '<?xml version="1.0"?><api foo:bar="1" />' ),
- array( array( 'a', 'b', ApiResult::META_INDEXED_TAG_NAME => 'foo bar' ),
- '<?xml version="1.0"?><api><_foo.20.bar>a</_foo.20.bar><_foo.20.bar>b</_foo.20.bar></api>' ),
+ [ [ 'foo.bar' => 1 ], '<?xml version="1.0"?><api foo.bar="1" />' ],
+ [ [ '' => 1 ], '<?xml version="1.0"?><api _="1" />' ],
+ [ [ 'foo bar' => 1 ], '<?xml version="1.0"?><api _foo.20.bar="1" />' ],
+ [ [ 'foo:bar' => 1 ], '<?xml version="1.0"?><api _foo.3A.bar="1" />' ],
+ [ [ 'foo%.bar' => 1 ], '<?xml version="1.0"?><api _foo.25..2E.bar="1" />' ],
+ [ [ '4foo' => 1, 'foo4' => 1 ], '<?xml version="1.0"?><api _4foo="1" foo4="1" />' ],
+ [ [ "foo\xe3\x80\x80bar" => 1 ], '<?xml version="1.0"?><api _foo.3000.bar="1" />' ],
+ [ [ 'foo:bar' => 1, ApiResult::META_PRESERVE_KEYS => [ 'foo:bar' ] ],
+ '<?xml version="1.0"?><api foo:bar="1" />' ],
+ [ [ 'a', 'b', ApiResult::META_INDEXED_TAG_NAME => 'foo bar' ],
+ '<?xml version="1.0"?><api><_foo.20.bar>a</_foo.20.bar><_foo.20.bar>b</_foo.20.bar></api>' ],
// includenamespace param
- array( array( 'x' => 'foo' ), '<?xml version="1.0"?><api x="foo" xmlns="http://www.mediawiki.org/xml/api/" />',
- array( 'includexmlnamespace' => 1 ) ),
+ [ [ 'x' => 'foo' ], '<?xml version="1.0"?><api x="foo" xmlns="http://www.mediawiki.org/xml/api/" />',
+ [ 'includexmlnamespace' => 1 ] ],
// xslt param
- array( array(), '<?xml version="1.0"?><api><warnings><xml xml:space="preserve">Invalid or non-existent stylesheet specified</xml></warnings></api>',
- array( 'xslt' => 'DoesNotExist' ) ),
- array( array(), '<?xml version="1.0"?><api><warnings><xml xml:space="preserve">Stylesheet should be in the MediaWiki namespace.</xml></warnings></api>',
- array( 'xslt' => 'ApiFormatXmlTest' ) ),
- array( array(), '<?xml version="1.0"?><api><warnings><xml xml:space="preserve">Stylesheet should have .xsl extension.</xml></warnings></api>',
- array( 'xslt' => 'MediaWiki:ApiFormatXmlTest' ) ),
- array( array(),
+ [ [], '<?xml version="1.0"?><api><warnings><xml xml:space="preserve">Invalid or non-existent stylesheet specified</xml></warnings></api>',
+ [ 'xslt' => 'DoesNotExist' ] ],
+ [ [], '<?xml version="1.0"?><api><warnings><xml xml:space="preserve">Stylesheet should be in the MediaWiki namespace.</xml></warnings></api>',
+ [ 'xslt' => 'ApiFormatXmlTest' ] ],
+ [ [], '<?xml version="1.0"?><api><warnings><xml xml:space="preserve">Stylesheet should have .xsl extension.</xml></warnings></api>',
+ [ 'xslt' => 'MediaWiki:ApiFormatXmlTest' ] ],
+ [ [],
'<?xml version="1.0"?><?xml-stylesheet href="' .
htmlspecialchars( Title::newFromText( 'MediaWiki:ApiFormatXmlTest.xsl' )->getLocalURL( 'action=raw' ) ) .
'" type="text/xsl" ?><api />',
- array( 'xslt' => 'MediaWiki:ApiFormatXmlTest.xsl' ) ),
- );
+ [ 'xslt' => 'MediaWiki:ApiFormatXmlTest.xsl' ] ],
+ ];
// @codingStandardsIgnoreEnd
}
*/
public static function provideMakeRedirectContent() {
// @codingStandardsIgnoreStart Generic.Files.LineLength
- return array(
- array( 'MediaWiki:MonoBook.css', "/* #REDIRECT */@import url(//example.org/w/index.php?title=MediaWiki:MonoBook.css&action=raw&ctype=text/css);" ),
- array( 'User:FooBar/common.css', "/* #REDIRECT */@import url(//example.org/w/index.php?title=User:FooBar/common.css&action=raw&ctype=text/css);" ),
- array( 'Gadget:FooBaz.css', "/* #REDIRECT */@import url(//example.org/w/index.php?title=Gadget:FooBaz.css&action=raw&ctype=text/css);" ),
- );
+ return [
+ [
+ 'MediaWiki:MonoBook.css',
+ "/* #REDIRECT */@import url(//example.org/w/index.php?title=MediaWiki:MonoBook.css&action=raw&ctype=text/css);"
+ ],
+ [
+ 'User:FooBar/common.css',
+ "/* #REDIRECT */@import url(//example.org/w/index.php?title=User:FooBar/common.css&action=raw&ctype=text/css);"
+ ],
+ [
+ 'Gadget:FooBaz.css',
+ "/* #REDIRECT */@import url(//example.org/w/index.php?title=Gadget:FooBaz.css&action=raw&ctype=text/css);"
+ ],
+ ];
// @codingStandardsIgnoreEnd
}
}
*/
public static function provideMakeRedirectContent() {
// @codingStandardsIgnoreStart Generic.Files.LineLength
- return array(
- array( 'MediaWiki:MonoBook.js', '/* #REDIRECT */mw.loader.load("//example.org/w/index.php?title=MediaWiki:MonoBook.js\u0026action=raw\u0026ctype=text/javascript");' ),
- array( 'User:FooBar/common.js', '/* #REDIRECT */mw.loader.load("//example.org/w/index.php?title=User:FooBar/common.js\u0026action=raw\u0026ctype=text/javascript");' ),
- array( 'Gadget:FooBaz.js', '/* #REDIRECT */mw.loader.load("//example.org/w/index.php?title=Gadget:FooBaz.js\u0026action=raw\u0026ctype=text/javascript");' ),
- );
+ return [
+ [
+ 'MediaWiki:MonoBook.js',
+ '/* #REDIRECT */mw.loader.load("//example.org/w/index.php?title=MediaWiki:MonoBook.js\u0026action=raw\u0026ctype=text/javascript");'
+ ],
+ [
+ 'User:FooBar/common.js',
+ '/* #REDIRECT */mw.loader.load("//example.org/w/index.php?title=User:FooBar/common.js\u0026action=raw\u0026ctype=text/javascript");'
+ ],
+ [
+ 'Gadget:FooBaz.js',
+ '/* #REDIRECT */mw.loader.load("//example.org/w/index.php?title=Gadget:FooBaz.js\u0026action=raw\u0026ctype=text/javascript");'
+ ],
+ ];
// @codingStandardsIgnoreEnd
}
}
];
}
- /**
- * @todo Test needs database!
- */
- /*
- public function getRedirectChain() {
- $text = $this->getNativeData();
- return Title::newFromRedirectArray( $text );
- }
- */
-
/**
* @todo Test needs database!
*/
],
// @codingStandardsIgnoreStart Generic.Files.LineLength
- array(
+ [
'/* #REDIRECT */mw.loader.load("//example.org/w/index.php?title=MediaWiki:MonoBook.js\u0026action=raw\u0026ctype=text/javascript");',
'/* #REDIRECT */mw.loader.load("//example.org/w/index.php?title=TestUpdateRedirect_target\u0026action=raw\u0026ctype=text/javascript");'
- )
+ ]
// @codingStandardsIgnoreEnd
];
}
*/
public static function provideGetRedirectTarget() {
// @codingStandardsIgnoreStart Generic.Files.LineLength
- return array(
- array( 'MediaWiki:MonoBook.js', '/* #REDIRECT */mw.loader.load("//example.org/w/index.php?title=MediaWiki:MonoBook.js\u0026action=raw\u0026ctype=text/javascript");' ),
- array( 'User:FooBar/common.js', '/* #REDIRECT */mw.loader.load("//example.org/w/index.php?title=User:FooBar/common.js\u0026action=raw\u0026ctype=text/javascript");' ),
- array( 'Gadget:FooBaz.js', '/* #REDIRECT */mw.loader.load("//example.org/w/index.php?title=Gadget:FooBaz.js\u0026action=raw\u0026ctype=text/javascript");' ),
+ return [
+ [
+ 'MediaWiki:MonoBook.js',
+ '/* #REDIRECT */mw.loader.load("//example.org/w/index.php?title=MediaWiki:MonoBook.js\u0026action=raw\u0026ctype=text/javascript");'
+ ],
+ [
+ 'User:FooBar/common.js',
+ '/* #REDIRECT */mw.loader.load("//example.org/w/index.php?title=User:FooBar/common.js\u0026action=raw\u0026ctype=text/javascript");'
+ ],
+ [
+ 'Gadget:FooBaz.js',
+ '/* #REDIRECT */mw.loader.load("//example.org/w/index.php?title=Gadget:FooBaz.js\u0026action=raw\u0026ctype=text/javascript");'
+ ],
// No #REDIRECT comment
- array( null, 'mw.loader.load("//example.org/w/index.php?title=MediaWiki:NoRedirect.js\u0026action=raw\u0026ctype=text/javascript");' ),
+ [
+ null,
+ 'mw.loader.load("//example.org/w/index.php?title=MediaWiki:NoRedirect.js\u0026action=raw\u0026ctype=text/javascript");'
+ ],
// Different domain
- array( null, '/* #REDIRECT */mw.loader.load("//example.com/w/index.php?title=MediaWiki:OtherWiki.js\u0026action=raw\u0026ctype=text/javascript");' ),
- );
+ [
+ null,
+ '/* #REDIRECT */mw.loader.load("//example.com/w/index.php?title=MediaWiki:OtherWiki.js\u0026action=raw\u0026ctype=text/javascript");'
+ ],
+ ];
// @codingStandardsIgnoreEnd
}
}
$this->assertEquals( !is_null( $expected ), $content->isRedirect() );
}
- /**
- * @todo Test needs database! Should be done by a test class in the Database group.
- */
- /*
- public function getRedirectChain() {
- $text = $this->getNativeData();
- return Title::newFromRedirectArray( $text );
- }
- */
-
/**
* @todo Test needs database! Should be done by a test class in the Database group.
*/
$db->expects( $this->any() )
->method( 'getHeartbeatData' )
- ->with( 172 )
+ ->with( [ 'server_id' => 172 ] )
->will( $this->returnValue( [ $ptTimeISO, $now ] ) );
$db->setLBInfo( 'clusterMasterHost', 'db1052' );
public function getUnknownTagsXML() {
// @codingStandardsIgnoreStart Generic.Files.LineLength
- return array(
- array(
+ return [
+ [
<<< EOF
<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.10/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.10/ http://www.mediawiki.org/xml/export-0.10.xsd" version="0.10" xml:lang="en">
<page unknown="123" dontknow="533">
,
'noitazinagro tseb eht si ikiWaideM',
'TestImportPage'
- )
- );
+ ]
+ ];
// @codingStandardsIgnoreEnd
}
public function getRedirectXML() {
// @codingStandardsIgnoreStart Generic.Files.LineLength
- return array(
- array(
+ return [
+ [
<<< EOF
<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.10/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.10/ http://www.mediawiki.org/xml/export-0.10.xsd" version="0.10" xml:lang="en">
<page>
EOF
,
'Test22'
- ),
- array(
+ ],
+ [
<<< EOF
<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.9/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.9/ http://www.mediawiki.org/xml/export-0.9.xsd" version="0.9" xml:lang="en">
<page>
EOF
,
null
- ),
- );
+ ],
+ ];
// @codingStandardsIgnoreEnd
}
public function getSiteInfoXML() {
// @codingStandardsIgnoreStart Generic.Files.LineLength
- return array(
- array(
+ return [
+ [
<<< EOF
<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.10/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.10/ http://www.mediawiki.org/xml/export-0.10.xsd" version="0.10" xml:lang="en">
<siteinfo>
</mediawiki>
EOF
,
- array(
+ [
'-2' => 'Media',
'-1' => 'Special',
'0' => '',
'3' => 'User talk',
'100' => 'Portal',
'101' => 'Portal talk',
- )
- ),
- );
+ ]
+ ],
+ ];
// @codingStandardsIgnoreEnd
}
. '%228%22%3E%0A%3Ccircle%20cx%3D%224%22%20cy%3D%224%22%20r%3D%222%22%2F%3E%0A%3C%2Fsvg%3E%0A';
// @codingStandardsIgnoreStart Generic.Files.LineLength
- return array(
- array(
+ return [
+ [
'Regular file',
'foo { background: url(red.gif); }',
'foo { background: url(http://localhost/w/red.gif?34ac6); }',
- ),
- array(
+ ],
+ [
'Regular file (missing)',
'foo { background: url(theColorOfHerHair.gif); }',
'foo { background: url(http://localhost/w/theColorOfHerHair.gif); }',
- ),
- array(
+ ],
+ [
'Remote URL',
'foo { background: url(http://example.org/w/foo.png); }',
'foo { background: url(http://example.org/w/foo.png); }',
- ),
- array(
+ ],
+ [
'Protocol-relative remote URL',
'foo { background: url(//example.org/w/foo.png); }',
'foo { background: url(//example.org/w/foo.png); }',
- ),
- array(
+ ],
+ [
'Remote URL with query',
'foo { background: url(http://example.org/w/foo.png?query=yes); }',
'foo { background: url(http://example.org/w/foo.png?query=yes); }',
- ),
- array(
+ ],
+ [
'Protocol-relative remote URL with query',
'foo { background: url(//example.org/w/foo.png?query=yes); }',
'foo { background: url(//example.org/w/foo.png?query=yes); }',
- ),
- array(
+ ],
+ [
'Domain-relative URL',
'foo { background: url(/static/foo.png); }',
'foo { background: url(http://doc.example.org/static/foo.png); }',
- ),
- array(
+ ],
+ [
'Domain-relative URL with query',
'foo { background: url(/static/foo.png?query=yes); }',
'foo { background: url(http://doc.example.org/static/foo.png?query=yes); }',
- ),
- array(
+ ],
+ [
'Remote URL (unnecessary quotes not preserved)',
'foo { background: url("http://example.org/w/foo.png"); }',
'foo { background: url(http://example.org/w/foo.png); }',
- ),
- array(
+ ],
+ [
'Embedded file',
'foo { /* @embed */ background: url(red.gif); }',
"foo { background: url($red); background: url(http://localhost/w/red.gif?34ac6)!ie; }",
- ),
- array(
+ ],
+ [
'Embedded file, other comments before the rule',
"foo { /* Bar. */ /* @embed */ background: url(red.gif); }",
"foo { /* Bar. */ background: url($red); /* Bar. */ background: url(http://localhost/w/red.gif?34ac6)!ie; }",
- ),
- array(
+ ],
+ [
'Can not re-embed data: URIs',
"foo { /* @embed */ background: url($red); }",
"foo { background: url($red); }",
- ),
- array(
+ ],
+ [
'Can not remap data: URIs',
"foo { background: url($red); }",
"foo { background: url($red); }",
- ),
- array(
+ ],
+ [
'Can not embed remote URLs',
'foo { /* @embed */ background: url(http://example.org/w/foo.png); }',
'foo { background: url(http://example.org/w/foo.png); }',
- ),
- array(
+ ],
+ [
'Embedded file (inline @embed)',
'foo { background: /* @embed */ url(red.gif); }',
"foo { background: url($red); "
. "background: url(http://localhost/w/red.gif?34ac6)!ie; }",
- ),
- array(
+ ],
+ [
'Can not embed large files',
'foo { /* @embed */ background: url(large.png); }',
"foo { background: url(http://localhost/w/large.png?e3d1f); }",
- ),
- array(
+ ],
+ [
'SVG files are embedded without base64 encoding and unnecessary IE 6 and 7 fallback',
'foo { /* @embed */ background: url(circle.svg); }',
"foo { background: url($svg); }",
- ),
- array(
+ ],
+ [
'Two regular files in one rule',
'foo { background: url(red.gif), url(green.gif); }',
'foo { background: url(http://localhost/w/red.gif?34ac6), '
. 'url(http://localhost/w/green.gif?13651); }',
- ),
- array(
+ ],
+ [
'Two embedded files in one rule',
'foo { /* @embed */ background: url(red.gif), url(green.gif); }',
"foo { background: url($red), url($green); "
. "background: url(http://localhost/w/red.gif?34ac6), "
. "url(http://localhost/w/green.gif?13651)!ie; }",
- ),
- array(
+ ],
+ [
'Two embedded files in one rule (inline @embed)',
'foo { background: /* @embed */ url(red.gif), /* @embed */ url(green.gif); }',
"foo { background: url($red), url($green); "
. "background: url(http://localhost/w/red.gif?34ac6), "
. "url(http://localhost/w/green.gif?13651)!ie; }",
- ),
- array(
+ ],
+ [
'Two embedded files in one rule (inline @embed), one too large',
'foo { background: /* @embed */ url(red.gif), /* @embed */ url(large.png); }',
"foo { background: url($red), url(http://localhost/w/large.png?e3d1f); "
. "background: url(http://localhost/w/red.gif?34ac6), "
. "url(http://localhost/w/large.png?e3d1f)!ie; }",
- ),
- array(
+ ],
+ [
'Practical example with some noise',
'foo { /* @embed */ background: #f9f9f9 url(red.gif) 0 0 no-repeat; }',
"foo { background: #f9f9f9 url($red) 0 0 no-repeat; "
. "background: #f9f9f9 url(http://localhost/w/red.gif?34ac6) 0 0 no-repeat!ie; }",
- ),
- array(
+ ],
+ [
'Does not mess with other properties',
'foo { color: red; background: url(red.gif); font-size: small; }',
'foo { color: red; background: url(http://localhost/w/red.gif?34ac6); font-size: small; }',
- ),
- array(
+ ],
+ [
'Spacing and miscellanea not changed (1)',
'foo { background: url(red.gif); }',
'foo { background: url(http://localhost/w/red.gif?34ac6); }',
- ),
- array(
+ ],
+ [
'Spacing and miscellanea not changed (2)',
'foo {background:url(red.gif)}',
'foo {background:url(http://localhost/w/red.gif?34ac6)}',
- ),
- array(
+ ],
+ [
'Spaces within url() parentheses are ignored',
'foo { background: url( red.gif ); }',
'foo { background: url(http://localhost/w/red.gif?34ac6); }',
- ),
- array(
+ ],
+ [
'@import rule to local file (should we remap this?)',
'@import url(/styles.css)',
'@import url(http://doc.example.org/styles.css)',
- ),
- array(
+ ],
+ [
'@import rule to URL (should we remap this?)',
'@import url(//localhost/styles.css?query=yes)',
'@import url(//localhost/styles.css?query=yes)',
- ),
- array(
+ ],
+ [
'Simple case with comments before url',
'foo { prop: /* some {funny;} comment */ url(bar.png); }',
'foo { prop: /* some {funny;} comment */ url(http://localhost/w/bar.png); }',
- ),
- array(
+ ],
+ [
'Simple case with comments after url',
'foo { prop: url(red.gif)/* some {funny;} comment */ ; }',
'foo { prop: url(http://localhost/w/red.gif?34ac6)/* some {funny;} comment */ ; }',
- ),
- array(
+ ],
+ [
'Embedded file with comment before url',
'foo { /* @embed */ background: /* some {funny;} comment */ url(red.gif); }',
"foo { background: /* some {funny;} comment */ url($red); background: /* some {funny;} comment */ url(http://localhost/w/red.gif?34ac6)!ie; }",
- ),
- array(
+ ],
+ [
'Embedded file with comments inside and outside the rule',
'foo { /* @embed */ background: url(red.gif) /* some {foo;} comment */; /* some {bar;} comment */ }',
"foo { background: url($red) /* some {foo;} comment */; background: url(http://localhost/w/red.gif?34ac6) /* some {foo;} comment */!ie; /* some {bar;} comment */ }",
- ),
- array(
+ ],
+ [
'Embedded file with comment outside the rule',
'foo { /* @embed */ background: url(red.gif); /* some {funny;} comment */ }',
"foo { background: url($red); background: url(http://localhost/w/red.gif?34ac6)!ie; /* some {funny;} comment */ }",
- ),
- array(
+ ],
+ [
'Rule with two urls, each with comments',
'{ background: /*asd*/ url(something.png); background: /*jkl*/ url(something.png); }',
'{ background: /*asd*/ url(http://localhost/w/something.png); background: /*jkl*/ url(http://localhost/w/something.png); }',
- ),
- array(
+ ],
+ [
'Sanity check for offending line from jquery.ui.theme.css (bug 60077)',
'.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3/*{borderColorDefault}*/; background: #e6e6e6/*{bgColorDefault}*/ url(images/ui-bg_glass_75_e6e6e6_1x400.png)/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #555555/*{fcDefault}*/; }',
'.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3/*{borderColorDefault}*/; background: #e6e6e6/*{bgColorDefault}*/ url(http://localhost/w/images/ui-bg_glass_75_e6e6e6_1x400.png)/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #555555/*{fcDefault}*/; }',
- ),
- );
+ ],
+ ];
// @codingStandardsIgnoreEnd
}
[ null, GIFHandler::METADATA_BAD ],
[ 'Something invalid!', GIFHandler::METADATA_BAD ],
// @codingStandardsIgnoreStart Ignore Generic.Files.LineLength.TooLong
- array( 'a:4:{s:10:"frameCount";i:1;s:6:"looped";b:0;s:8:"duration";d:0.1000000000000000055511151231257827021181583404541015625;s:8:"metadata";a:2:{s:14:"GIFFileComment";a:1:{i:0;s:35:"GIF test file ⁕ Created with GIMP";}s:15:"_MW_GIF_VERSION";i:1;}}', GIFHandler::METADATA_GOOD ),
+ [
+ 'a:4:{s:10:"frameCount";i:1;s:6:"looped";b:0;s:8:"duration";d:0.1000000000000000055511151231257827021181583404541015625;s:8:"metadata";a:2:{s:14:"GIFFileComment";a:1:{i:0;s:35:"GIF test file ⁕ Created with GIMP";}s:15:"_MW_GIF_VERSION";i:1;}}',
+ GIFHandler::METADATA_GOOD
+ ],
// @codingStandardsIgnoreEnd
];
}
public static function provideGetMetadata() {
return [
// @codingStandardsIgnoreStart Ignore Generic.Files.LineLength.TooLong
- array( 'nonanimated.gif', 'a:4:{s:10:"frameCount";i:1;s:6:"looped";b:0;s:8:"duration";d:0.1000000000000000055511151231257827021181583404541015625;s:8:"metadata";a:2:{s:14:"GIFFileComment";a:1:{i:0;s:35:"GIF test file ⁕ Created with GIMP";}s:15:"_MW_GIF_VERSION";i:1;}}' ),
- array( 'animated-xmp.gif', 'a:4:{s:10:"frameCount";i:4;s:6:"looped";b:1;s:8:"duration";d:2.399999999999999911182158029987476766109466552734375;s:8:"metadata";a:5:{s:6:"Artist";s:7:"Bawolff";s:16:"ImageDescription";a:2:{s:9:"x-default";s:18:"A file to test GIF";s:5:"_type";s:4:"lang";}s:15:"SublocationDest";s:13:"The interwebs";s:14:"GIFFileComment";a:1:{i:0;s:16:"GIƒ·test·file";}s:15:"_MW_GIF_VERSION";i:1;}}' ),
+ [
+ 'nonanimated.gif',
+ 'a:4:{s:10:"frameCount";i:1;s:6:"looped";b:0;s:8:"duration";d:0.1000000000000000055511151231257827021181583404541015625;s:8:"metadata";a:2:{s:14:"GIFFileComment";a:1:{i:0;s:35:"GIF test file ⁕ Created with GIMP";}s:15:"_MW_GIF_VERSION";i:1;}}'
+ ],
+ [
+ 'animated-xmp.gif',
+ 'a:4:{s:10:"frameCount";i:4;s:6:"looped";b:1;s:8:"duration";d:2.399999999999999911182158029987476766109466552734375;s:8:"metadata";a:5:{s:6:"Artist";s:7:"Bawolff";s:16:"ImageDescription";a:2:{s:9:"x-default";s:18:"A file to test GIF";s:5:"_type";s:4:"lang";}s:15:"SublocationDest";s:13:"The interwebs";s:14:"GIFFileComment";a:1:{i:0;s:16:"GIƒ·test·file";}s:15:"_MW_GIF_VERSION";i:1;}}'
+ ],
// @codingStandardsIgnoreEnd
];
}
[ null, PNGHandler::METADATA_BAD ],
[ 'Something invalid!', PNGHandler::METADATA_BAD ],
// @codingStandardsIgnoreStart Ignore Generic.Files.LineLength.TooLong
- array( 'a:6:{s:10:"frameCount";i:0;s:9:"loopCount";i:1;s:8:"duration";d:0;s:8:"bitDepth";i:8;s:9:"colorType";s:10:"truecolour";s:8:"metadata";a:1:{s:15:"_MW_PNG_VERSION";i:1;}}', PNGHandler::METADATA_GOOD ),
+ [
+ 'a:6:{s:10:"frameCount";i:0;s:9:"loopCount";i:1;s:8:"duration";d:0;s:8:"bitDepth";i:8;s:9:"colorType";s:10:"truecolour";s:8:"metadata";a:1:{s:15:"_MW_PNG_VERSION";i:1;}}',
+ PNGHandler::METADATA_GOOD
+ ],
// @codingStandardsIgnoreEnd
];
}
public static function provideGetMetadata() {
return [
// @codingStandardsIgnoreStart Ignore Generic.Files.LineLength.TooLong
- array( 'rgb-na-png.png', 'a:6:{s:10:"frameCount";i:0;s:9:"loopCount";i:1;s:8:"duration";d:0;s:8:"bitDepth";i:8;s:9:"colorType";s:10:"truecolour";s:8:"metadata";a:1:{s:15:"_MW_PNG_VERSION";i:1;}}' ),
- array( 'xmp.png', 'a:6:{s:10:"frameCount";i:0;s:9:"loopCount";i:1;s:8:"duration";d:0;s:8:"bitDepth";i:1;s:9:"colorType";s:14:"index-coloured";s:8:"metadata";a:2:{s:12:"SerialNumber";s:9:"123456789";s:15:"_MW_PNG_VERSION";i:1;}}' ),
+ [
+ 'rgb-na-png.png',
+ 'a:6:{s:10:"frameCount";i:0;s:9:"loopCount";i:1;s:8:"duration";d:0;s:8:"bitDepth";i:8;s:9:"colorType";s:10:"truecolour";s:8:"metadata";a:1:{s:15:"_MW_PNG_VERSION";i:1;}}'
+ ],
+ [
+ 'xmp.png',
+ 'a:6:{s:10:"frameCount";i:0;s:9:"loopCount";i:1;s:8:"duration";d:0;s:8:"bitDepth";i:1;s:9:"colorType";s:14:"index-coloured";s:8:"metadata";a:2:{s:12:"SerialNumber";s:9:"123456789";s:15:"_MW_PNG_VERSION";i:1;}}'
+ ],
// @codingStandardsIgnoreEnd
];
}
}
public function provideTestExtractMetaData() {
// @codingStandardsIgnoreStart Generic.Files.LineLength
- return array(
+ return [
// Files from https://developers.google.com/speed/webp/gallery2
- array( "\x52\x49\x46\x46\x90\x68\x01\x00\x57\x45\x42\x50\x56\x50\x38\x4C\x83\x68\x01\x00\x2F\x8F\x01\x4B\x10\x8D\x38\x6C\xDB\x46\x92\xE0\xE0\x82\x7B\x6C",
- array( 'compression' => 'lossless', 'width' => 400, 'height' => 301 ) ),
- array( "\x52\x49\x46\x46\x64\x5B\x00\x00\x57\x45\x42\x50\x56\x50\x38\x58\x0A\x00\x00\x00\x10\x00\x00\x00\x8F\x01\x00\x2C\x01\x00\x41\x4C\x50\x48\xE5\x0E",
- array( 'compression' => 'unknown', 'animated' => false, 'transparency' => true, 'width' => 400, 'height' => 301 ) ),
- array( "\x52\x49\x46\x46\xA8\x72\x00\x00\x57\x45\x42\x50\x56\x50\x38\x4C\x9B\x72\x00\x00\x2F\x81\x81\x62\x10\x8D\x40\x8C\x24\x39\x6E\x73\x73\x38\x01\x96",
- array( 'compression' => 'lossless', 'width' => 386, 'height' => 395 ) ),
- array( "\x52\x49\x46\x46\xE0\x42\x00\x00\x57\x45\x42\x50\x56\x50\x38\x58\x0A\x00\x00\x00\x10\x00\x00\x00\x81\x01\x00\x8A\x01\x00\x41\x4C\x50\x48\x56\x10",
- array( 'compression' => 'unknown', 'animated' => false, 'transparency' => true, 'width' => 386, 'height' => 395 ) ),
- array( "\x52\x49\x46\x46\x70\x61\x02\x00\x57\x45\x42\x50\x56\x50\x38\x4C\x63\x61\x02\x00\x2F\x1F\xC3\x95\x10\x8D\xC8\x72\xDB\xC8\x92\x24\xD8\x91\xD9\x91",
- array( 'compression' => 'lossless', 'width' => 800, 'height' => 600 ) ),
- array( "\x52\x49\x46\x46\x1C\x1D\x01\x00\x57\x45\x42\x50\x56\x50\x38\x58\x0A\x00\x00\x00\x10\x00\x00\x00\x1F\x03\x00\x57\x02\x00\x41\x4C\x50\x48\x25\x8B",
- array( 'compression' => 'unknown', 'animated' => false, 'transparency' => true, 'width' => 800, 'height' => 600 ) ),
- array( "\x52\x49\x46\x46\xFA\xC5\x00\x00\x57\x45\x42\x50\x56\x50\x38\x4C\xEE\xC5\x00\x00\x2F\xA4\x81\x28\x10\x8D\x40\x68\x24\xC9\x91\xA4\xAE\xF3\x97\x75",
- array( 'compression' => 'lossless', 'width' => 421, 'height' => 163 ) ),
- array( "\x52\x49\x46\x46\xF6\x5D\x00\x00\x57\x45\x42\x50\x56\x50\x38\x58\x0A\x00\x00\x00\x10\x00\x00\x00\xA4\x01\x00\xA2\x00\x00\x41\x4C\x50\x48\x38\x1A",
- array( 'compression' => 'unknown', 'animated' => false, 'transparency' => true, 'width' => 421, 'height' => 163 ) ),
- array( "\x52\x49\x46\x46\xC4\x96\x01\x00\x57\x45\x42\x50\x56\x50\x38\x4C\xB8\x96\x01\x00\x2F\x2B\xC1\x4A\x10\x11\x87\x6D\xDB\x48\x12\xFC\x60\xB0\x83\x24",
- array( 'compression' => 'lossless', 'width' => 300, 'height' => 300 ) ),
- array( "\x52\x49\x46\x46\x0A\x11\x01\x00\x57\x45\x42\x50\x56\x50\x38\x58\x0A\x00\x00\x00\x10\x00\x00\x00\x2B\x01\x00\x2B\x01\x00\x41\x4C\x50\x48\x67\x6E",
- array( 'compression' => 'unknown', 'animated' => false, 'transparency' => true, 'width' => 300, 'height' => 300 ) ),
+ [ "\x52\x49\x46\x46\x90\x68\x01\x00\x57\x45\x42\x50\x56\x50\x38\x4C\x83\x68\x01\x00\x2F\x8F\x01\x4B\x10\x8D\x38\x6C\xDB\x46\x92\xE0\xE0\x82\x7B\x6C",
+ [ 'compression' => 'lossless', 'width' => 400, 'height' => 301 ] ],
+ [ "\x52\x49\x46\x46\x64\x5B\x00\x00\x57\x45\x42\x50\x56\x50\x38\x58\x0A\x00\x00\x00\x10\x00\x00\x00\x8F\x01\x00\x2C\x01\x00\x41\x4C\x50\x48\xE5\x0E",
+ [ 'compression' => 'unknown', 'animated' => false, 'transparency' => true, 'width' => 400, 'height' => 301 ] ],
+ [ "\x52\x49\x46\x46\xA8\x72\x00\x00\x57\x45\x42\x50\x56\x50\x38\x4C\x9B\x72\x00\x00\x2F\x81\x81\x62\x10\x8D\x40\x8C\x24\x39\x6E\x73\x73\x38\x01\x96",
+ [ 'compression' => 'lossless', 'width' => 386, 'height' => 395 ] ],
+ [ "\x52\x49\x46\x46\xE0\x42\x00\x00\x57\x45\x42\x50\x56\x50\x38\x58\x0A\x00\x00\x00\x10\x00\x00\x00\x81\x01\x00\x8A\x01\x00\x41\x4C\x50\x48\x56\x10",
+ [ 'compression' => 'unknown', 'animated' => false, 'transparency' => true, 'width' => 386, 'height' => 395 ] ],
+ [ "\x52\x49\x46\x46\x70\x61\x02\x00\x57\x45\x42\x50\x56\x50\x38\x4C\x63\x61\x02\x00\x2F\x1F\xC3\x95\x10\x8D\xC8\x72\xDB\xC8\x92\x24\xD8\x91\xD9\x91",
+ [ 'compression' => 'lossless', 'width' => 800, 'height' => 600 ] ],
+ [ "\x52\x49\x46\x46\x1C\x1D\x01\x00\x57\x45\x42\x50\x56\x50\x38\x58\x0A\x00\x00\x00\x10\x00\x00\x00\x1F\x03\x00\x57\x02\x00\x41\x4C\x50\x48\x25\x8B",
+ [ 'compression' => 'unknown', 'animated' => false, 'transparency' => true, 'width' => 800, 'height' => 600 ] ],
+ [ "\x52\x49\x46\x46\xFA\xC5\x00\x00\x57\x45\x42\x50\x56\x50\x38\x4C\xEE\xC5\x00\x00\x2F\xA4\x81\x28\x10\x8D\x40\x68\x24\xC9\x91\xA4\xAE\xF3\x97\x75",
+ [ 'compression' => 'lossless', 'width' => 421, 'height' => 163 ] ],
+ [ "\x52\x49\x46\x46\xF6\x5D\x00\x00\x57\x45\x42\x50\x56\x50\x38\x58\x0A\x00\x00\x00\x10\x00\x00\x00\xA4\x01\x00\xA2\x00\x00\x41\x4C\x50\x48\x38\x1A",
+ [ 'compression' => 'unknown', 'animated' => false, 'transparency' => true, 'width' => 421, 'height' => 163 ] ],
+ [ "\x52\x49\x46\x46\xC4\x96\x01\x00\x57\x45\x42\x50\x56\x50\x38\x4C\xB8\x96\x01\x00\x2F\x2B\xC1\x4A\x10\x11\x87\x6D\xDB\x48\x12\xFC\x60\xB0\x83\x24",
+ [ 'compression' => 'lossless', 'width' => 300, 'height' => 300 ] ],
+ [ "\x52\x49\x46\x46\x0A\x11\x01\x00\x57\x45\x42\x50\x56\x50\x38\x58\x0A\x00\x00\x00\x10\x00\x00\x00\x2B\x01\x00\x2B\x01\x00\x41\x4C\x50\x48\x67\x6E",
+ [ 'compression' => 'unknown', 'animated' => false, 'transparency' => true, 'width' => 300, 'height' => 300 ] ],
// Lossy files from https://developers.google.com/speed/webp/gallery1
- array( "\x52\x49\x46\x46\x68\x76\x00\x00\x57\x45\x42\x50\x56\x50\x38\x20\x5C\x76\x00\x00\xD2\xBE\x01\x9D\x01\x2A\x26\x02\x70\x01\x3E\xD5\x4E\x97\x43\xA2",
- array( 'compression' => 'lossy', 'width' => 550, 'height' => 368 ) ),
- array( "\x52\x49\x46\x46\xB0\xEC\x00\x00\x57\x45\x42\x50\x56\x50\x38\x20\xA4\xEC\x00\x00\xB2\x4B\x02\x9D\x01\x2A\x26\x02\x94\x01\x3E\xD1\x50\x96\x46\x26",
- array( 'compression' => 'lossy', 'width' => 550, 'height' => 404 ) ),
- array( "\x52\x49\x46\x46\x7A\x19\x03\x00\x57\x45\x42\x50\x56\x50\x38\x20\x6E\x19\x03\x00\xB2\xF8\x09\x9D\x01\x2A\x00\x05\xD0\x02\x3E\xAD\x46\x99\x4A\xA5",
- array( 'compression' => 'lossy', 'width' => 1280, 'height' => 720 ) ),
- array( "\x52\x49\x46\x46\x44\xB3\x02\x00\x57\x45\x42\x50\x56\x50\x38\x20\x38\xB3\x02\x00\x52\x57\x06\x9D\x01\x2A\x00\x04\x04\x03\x3E\xA5\x44\x96\x49\x26",
- array( 'compression' => 'lossy', 'width' => 1024, 'height' => 772 ) ),
- array( "\x52\x49\x46\x46\x02\x43\x01\x00\x57\x45\x42\x50\x56\x50\x38\x20\xF6\x42\x01\x00\x12\xC0\x05\x9D\x01\x2A\x00\x04\xF0\x02\x3E\x79\x34\x93\x47\xA4",
- array( 'compression' => 'lossy', 'width' => 1024, 'height' => 752 ) ),
+ [ "\x52\x49\x46\x46\x68\x76\x00\x00\x57\x45\x42\x50\x56\x50\x38\x20\x5C\x76\x00\x00\xD2\xBE\x01\x9D\x01\x2A\x26\x02\x70\x01\x3E\xD5\x4E\x97\x43\xA2",
+ [ 'compression' => 'lossy', 'width' => 550, 'height' => 368 ] ],
+ [ "\x52\x49\x46\x46\xB0\xEC\x00\x00\x57\x45\x42\x50\x56\x50\x38\x20\xA4\xEC\x00\x00\xB2\x4B\x02\x9D\x01\x2A\x26\x02\x94\x01\x3E\xD1\x50\x96\x46\x26",
+ [ 'compression' => 'lossy', 'width' => 550, 'height' => 404 ] ],
+ [ "\x52\x49\x46\x46\x7A\x19\x03\x00\x57\x45\x42\x50\x56\x50\x38\x20\x6E\x19\x03\x00\xB2\xF8\x09\x9D\x01\x2A\x00\x05\xD0\x02\x3E\xAD\x46\x99\x4A\xA5",
+ [ 'compression' => 'lossy', 'width' => 1280, 'height' => 720 ] ],
+ [ "\x52\x49\x46\x46\x44\xB3\x02\x00\x57\x45\x42\x50\x56\x50\x38\x20\x38\xB3\x02\x00\x52\x57\x06\x9D\x01\x2A\x00\x04\x04\x03\x3E\xA5\x44\x96\x49\x26",
+ [ 'compression' => 'lossy', 'width' => 1024, 'height' => 772 ] ],
+ [ "\x52\x49\x46\x46\x02\x43\x01\x00\x57\x45\x42\x50\x56\x50\x38\x20\xF6\x42\x01\x00\x12\xC0\x05\x9D\x01\x2A\x00\x04\xF0\x02\x3E\x79\x34\x93\x47\xA4",
+ [ 'compression' => 'lossy', 'width' => 1024, 'height' => 752 ] ],
// Animated file from https://groups.google.com/a/chromium.org/d/topic/blink-dev/Y8tRC4mdQz8/discussion
- array( "\x52\x49\x46\x46\xD0\x0B\x02\x00\x57\x45\x42\x50\x56\x50\x38\x58\x0A\x00\x00\x00\x12\x00\x00\x00\x3F\x01\x00\x3F\x01\x00\x41\x4E",
- array( 'compression' => 'unknown', 'animated' => true, 'transparency' => true, 'width' => 320, 'height' => 320 ) ),
+ [ "\x52\x49\x46\x46\xD0\x0B\x02\x00\x57\x45\x42\x50\x56\x50\x38\x58\x0A\x00\x00\x00\x12\x00\x00\x00\x3F\x01\x00\x3F\x01\x00\x41\x4E",
+ [ 'compression' => 'unknown', 'animated' => true, 'transparency' => true, 'width' => 320, 'height' => 320 ] ],
// Error cases
- array( '', false ),
- array( ' ', false ),
- array( 'RIFF ', false ),
- array( 'RIFF1234WEBP ', false ),
- array( 'RIFF1234WEBPVP8 ', false ),
- array( 'RIFF1234WEBPVP8L ', false ),
- );
+ [ '', false ],
+ [ ' ', false ],
+ [ 'RIFF ', false ],
+ [ 'RIFF1234WEBP ', false ],
+ [ 'RIFF1234WEBPVP8 ', false ],
+ [ 'RIFF1234WEBPVP8L ', false ],
+ ];
// @codingStandardsIgnoreEnd
}
];
}
- /**
- * @dataProvider dataReplaceSection
- * @covers WikiPage::replaceSection
- */
- public function testReplaceSection( $title, $model, $text, $section, $with,
- $sectionTitle, $expected
- ) {
- $this->hideDeprecated( "WikiPage::replaceSection" );
-
- $page = $this->createPage( $title, $text, $model );
- $text = $page->replaceSection( $section, $with, $sectionTitle );
- $text = trim( $text );
-
- $this->assertEquals( $expected, $text );
- }
-
/**
* @dataProvider dataReplaceSection
* @covers WikiPage::replaceSectionContent
public static function provideCases() {
// @codingStandardsIgnoreStart Ignore Generic.Files.LineLength.TooLong
- return array(
- array( "Foo", "<root>Foo</root>" ),
- array( "<!-- Foo -->", "<root><comment><!-- Foo --></comment></root>" ),
- array( "<!-- Foo --><!-- Bar -->", "<root><comment><!-- Foo --></comment><comment><!-- Bar --></comment></root>" ),
- array( "<!-- Foo --> <!-- Bar -->", "<root><comment><!-- Foo --></comment> <comment><!-- Bar --></comment></root>" ),
- array( "<!-- Foo --> \n <!-- Bar -->", "<root><comment><!-- Foo --></comment> \n <comment><!-- Bar --></comment></root>" ),
- array( "<!-- Foo --> \n <!-- Bar -->\n", "<root><comment><!-- Foo --></comment> \n<comment> <!-- Bar -->\n</comment></root>" ),
- array( "<!-- Foo --> <!-- Bar -->\n", "<root><comment><!-- Foo --></comment> <comment><!-- Bar --></comment>\n</root>" ),
- array( "<!-->Bar", "<root><comment><!-->Bar</comment></root>" ),
- array( "<!-- Comment -- comment", "<root><comment><!-- Comment -- comment</comment></root>" ),
- array( "== Foo ==\n <!-- Bar -->\n== Baz ==\n", "<root><h level=\"2\" i=\"1\">== Foo ==</h>\n<comment> <!-- Bar -->\n</comment><h level=\"2\" i=\"2\">== Baz ==</h>\n</root>" ),
- array( "<gallery/>", "<root><ext><name>gallery</name><attr></attr></ext></root>" ),
- array( "Foo <gallery/> Bar", "<root>Foo <ext><name>gallery</name><attr></attr></ext> Bar</root>" ),
- array( "<gallery></gallery>", "<root><ext><name>gallery</name><attr></attr><inner></inner><close></gallery></close></ext></root>" ),
- array( "<foo> <gallery></gallery>", "<root><foo> <ext><name>gallery</name><attr></attr><inner></inner><close></gallery></close></ext></root>" ),
- array( "<foo> <gallery><gallery></gallery>", "<root><foo> <ext><name>gallery</name><attr></attr><inner><gallery></inner><close></gallery></close></ext></root>" ),
- array( "<noinclude> Foo bar </noinclude>", "<root><ignore><noinclude></ignore> Foo bar <ignore></noinclude></ignore></root>" ),
- array( "<noinclude>\n{{Foo}}\n</noinclude>", "<root><ignore><noinclude></ignore>\n<template lineStart=\"1\"><title>Foo</title></template>\n<ignore></noinclude></ignore></root>" ),
- array( "<noinclude>\n{{Foo}}\n</noinclude>\n", "<root><ignore><noinclude></ignore>\n<template lineStart=\"1\"><title>Foo</title></template>\n<ignore></noinclude></ignore>\n</root>" ),
- array( "<gallery>foo bar", "<root><ext><name>gallery</name><attr></attr><inner>foo bar</inner></ext></root>" ),
- array( "<{{foo}}>", "<root><<template><title>foo</title></template>></root>" ),
- array( "<{{{foo}}}>", "<root><<tplarg><title>foo</title></tplarg>></root>" ),
- array( "<gallery></gallery</gallery>", "<root><ext><name>gallery</name><attr></attr><inner></gallery</inner><close></gallery></close></ext></root>" ),
- array( "=== Foo === ", "<root><h level=\"3\" i=\"1\">=== Foo === </h></root>" ),
- array( "==<!-- -->= Foo === ", "<root><h level=\"2\" i=\"1\">==<comment><!-- --></comment>= Foo === </h></root>" ),
- array( "=== Foo ==<!-- -->= ", "<root><h level=\"1\" i=\"1\">=== Foo ==<comment><!-- --></comment>= </h></root>" ),
- array( "=== Foo ===<!-- -->\n", "<root><h level=\"3\" i=\"1\">=== Foo ===<comment><!-- --></comment></h>\n</root>" ),
- array( "=== Foo ===<!-- --> <!-- -->\n", "<root><h level=\"3\" i=\"1\">=== Foo ===<comment><!-- --></comment> <comment><!-- --></comment></h>\n</root>" ),
- array( "== Foo ==\n== Bar == \n", "<root><h level=\"2\" i=\"1\">== Foo ==</h>\n<h level=\"2\" i=\"2\">== Bar == </h>\n</root>" ),
- array( "===========", "<root><h level=\"5\" i=\"1\">===========</h></root>" ),
- array( "Foo\n=\n==\n=\n", "<root>Foo\n=\n==\n=\n</root>" ),
- array( "{{Foo}}", "<root><template><title>Foo</title></template></root>" ),
- array( "\n{{Foo}}", "<root>\n<template lineStart=\"1\"><title>Foo</title></template></root>" ),
- array( "{{Foo|bar}}", "<root><template><title>Foo</title><part><name index=\"1\" /><value>bar</value></part></template></root>" ),
- array( "{{Foo|bar}}a", "<root><template><title>Foo</title><part><name index=\"1\" /><value>bar</value></part></template>a</root>" ),
- array( "{{Foo|bar|baz}}", "<root><template><title>Foo</title><part><name index=\"1\" /><value>bar</value></part><part><name index=\"2\" /><value>baz</value></part></template></root>" ),
- array( "{{Foo|1=bar}}", "<root><template><title>Foo</title><part><name>1</name>=<value>bar</value></part></template></root>" ),
- array( "{{Foo|=bar}}", "<root><template><title>Foo</title><part><name></name>=<value>bar</value></part></template></root>" ),
- array( "{{Foo|bar=baz}}", "<root><template><title>Foo</title><part><name>bar</name>=<value>baz</value></part></template></root>" ),
- array( "{{Foo|{{bar}}=baz}}", "<root><template><title>Foo</title><part><name><template><title>bar</title></template></name>=<value>baz</value></part></template></root>" ),
- array( "{{Foo|1=bar|baz}}", "<root><template><title>Foo</title><part><name>1</name>=<value>bar</value></part><part><name index=\"1\" /><value>baz</value></part></template></root>" ),
- array( "{{Foo|1=bar|2=baz}}", "<root><template><title>Foo</title><part><name>1</name>=<value>bar</value></part><part><name>2</name>=<value>baz</value></part></template></root>" ),
- array( "{{Foo|bar|foo=baz}}", "<root><template><title>Foo</title><part><name index=\"1\" /><value>bar</value></part><part><name>foo</name>=<value>baz</value></part></template></root>" ),
- array( "{{{1}}}", "<root><tplarg><title>1</title></tplarg></root>" ),
- array( "{{{1|}}}", "<root><tplarg><title>1</title><part><name index=\"1\" /><value></value></part></tplarg></root>" ),
- array( "{{{Foo}}}", "<root><tplarg><title>Foo</title></tplarg></root>" ),
- array( "{{{Foo|}}}", "<root><tplarg><title>Foo</title><part><name index=\"1\" /><value></value></part></tplarg></root>" ),
- array( "{{{Foo|bar|baz}}}", "<root><tplarg><title>Foo</title><part><name index=\"1\" /><value>bar</value></part><part><name index=\"2\" /><value>baz</value></part></tplarg></root>" ),
- array( "{<!-- -->{Foo}}", "<root>{<comment><!-- --></comment>{Foo}}</root>" ),
- array( "{{{{Foobar}}}}", "<root>{<tplarg><title>Foobar</title></tplarg>}</root>" ),
- array( "{{{ {{Foo}} }}}", "<root><tplarg><title> <template><title>Foo</title></template> </title></tplarg></root>" ),
- array( "{{ {{{Foo}}} }}", "<root><template><title> <tplarg><title>Foo</title></tplarg> </title></template></root>" ),
- array( "{{{{{Foo}}}}}", "<root><template><title><tplarg><title>Foo</title></tplarg></title></template></root>" ),
- array( "{{{{{Foo}} }}}", "<root><tplarg><title><template><title>Foo</title></template> </title></tplarg></root>" ),
- array( "{{{{{{Foo}}}}}}", "<root><tplarg><title><tplarg><title>Foo</title></tplarg></title></tplarg></root>" ),
- array( "{{{{{{Foo}}}}}", "<root>{<template><title><tplarg><title>Foo</title></tplarg></title></template></root>" ),
- array( "[[[Foo]]", "<root>[[[Foo]]</root>" ),
- array( "{{Foo|[[[[bar]]|baz]]}}", "<root><template><title>Foo</title><part><name index=\"1\" /><value>[[[[bar]]|baz]]</value></part></template></root>" ), // This test is important, since it means the difference between having the [[ rule stacked or not
- array( "{{Foo|[[[[bar]|baz]]}}", "<root>{{Foo|[[[[bar]|baz]]}}</root>" ),
- array( "{{Foo|Foo [[[[bar]|baz]]}}", "<root>{{Foo|Foo [[[[bar]|baz]]}}</root>" ),
- array( "Foo <display map>Bar</display map >Baz", "<root>Foo <ext><name>display map</name><attr></attr><inner>Bar</inner><close></display map ></close></ext>Baz</root>" ),
- array( "Foo <display map foo>Bar</display map >Baz", "<root>Foo <ext><name>display map</name><attr> foo</attr><inner>Bar</inner><close></display map ></close></ext>Baz</root>" ),
- array( "Foo <gallery bar=\"baz\" />", "<root>Foo <ext><name>gallery</name><attr> bar="baz" </attr></ext></root>" ),
- array( "Foo <gallery bar=\"1\" baz=2 />", "<root>Foo <ext><name>gallery</name><attr> bar="1" baz=2 </attr></ext></root>" ),
- array( "</foo>Foo<//foo>", "<root><ext><name>/foo</name><attr></attr><inner>Foo</inner><close><//foo></close></ext></root>" ), # Worth blacklisting IMHO
- array( "{{#ifexpr: ({{{1|1}}} = 2) | Foo | Bar }}", "<root><template><title>#ifexpr: (<tplarg><title>1</title><part><name index=\"1\" /><value>1</value></part></tplarg> = 2) </title><part><name index=\"1\" /><value> Foo </value></part><part><name index=\"2\" /><value> Bar </value></part></template></root>" ),
- array( "{{#if: {{{1|}}} | Foo | {{Bar}} }}", "<root><template><title>#if: <tplarg><title>1</title><part><name index=\"1\" /><value></value></part></tplarg> </title><part><name index=\"1\" /><value> Foo </value></part><part><name index=\"2\" /><value> <template><title>Bar</title></template> </value></part></template></root>" ),
- array( "{{#if: {{{1|}}} | Foo | [[Bar]] }}", "<root><template><title>#if: <tplarg><title>1</title><part><name index=\"1\" /><value></value></part></tplarg> </title><part><name index=\"1\" /><value> Foo </value></part><part><name index=\"2\" /><value> [[Bar]] </value></part></template></root>" ),
- array( "{{#if: {{{1|}}} | [[Foo]] | Bar }}", "<root><template><title>#if: <tplarg><title>1</title><part><name index=\"1\" /><value></value></part></tplarg> </title><part><name index=\"1\" /><value> [[Foo]] </value></part><part><name index=\"2\" /><value> Bar </value></part></template></root>" ),
- array( "{{#if: {{{1|}}} | 1 | {{#if: {{{1|}}} | 2 | 3 }} }}", "<root><template><title>#if: <tplarg><title>1</title><part><name index=\"1\" /><value></value></part></tplarg> </title><part><name index=\"1\" /><value> 1 </value></part><part><name index=\"2\" /><value> <template><title>#if: <tplarg><title>1</title><part><name index=\"1\" /><value></value></part></tplarg> </title><part><name index=\"1\" /><value> 2 </value></part><part><name index=\"2\" /><value> 3 </value></part></template> </value></part></template></root>" ),
- array( "{{ {{Foo}}", "<root>{{ <template><title>Foo</title></template></root>" ),
- array( "{{Foobar {{Foo}} {{Bar}} {{Baz}} ", "<root>{{Foobar <template><title>Foo</title></template> <template><title>Bar</title></template> <template><title>Baz</title></template> </root>" ),
- array( "[[Foo]] |", "<root>[[Foo]] |</root>" ),
- array( "{{Foo|Bar|", "<root>{{Foo|Bar|</root>" ),
- array( "[[Foo]", "<root>[[Foo]</root>" ),
- array( "[[Foo|Bar]", "<root>[[Foo|Bar]</root>" ),
- array( "{{Foo| [[Bar] }}", "<root>{{Foo| [[Bar] }}</root>" ),
- array( "{{Foo| [[Bar|Baz] }}", "<root>{{Foo| [[Bar|Baz] }}</root>" ),
- array( "{{Foo|bar=[[baz]}}", "<root>{{Foo|bar=[[baz]}}</root>" ),
- array( "{{foo|", "<root>{{foo|</root>" ),
- array( "{{foo|}", "<root>{{foo|}</root>" ),
- array( "{{foo|} }}", "<root><template><title>foo</title><part><name index=\"1\" /><value>} </value></part></template></root>" ),
- array( "{{foo|bar=|}", "<root>{{foo|bar=|}</root>" ),
- array( "{{Foo|} Bar=", "<root>{{Foo|} Bar=</root>" ),
- array( "{{Foo|} Bar=}}", "<root><template><title>Foo</title><part><name>} Bar</name>=<value></value></part></template></root>" ),
- /* array( file_get_contents( __DIR__ . '/QuoteQuran.txt' ), file_get_contents( __DIR__ . '/QuoteQuranExpanded.txt' ) ), */
- );
+ return [
+ [ "Foo", "<root>Foo</root>" ],
+ [ "<!-- Foo -->", "<root><comment><!-- Foo --></comment></root>" ],
+ [ "<!-- Foo --><!-- Bar -->", "<root><comment><!-- Foo --></comment><comment><!-- Bar --></comment></root>" ],
+ [ "<!-- Foo --> <!-- Bar -->", "<root><comment><!-- Foo --></comment> <comment><!-- Bar --></comment></root>" ],
+ [ "<!-- Foo --> \n <!-- Bar -->", "<root><comment><!-- Foo --></comment> \n <comment><!-- Bar --></comment></root>" ],
+ [ "<!-- Foo --> \n <!-- Bar -->\n", "<root><comment><!-- Foo --></comment> \n<comment> <!-- Bar -->\n</comment></root>" ],
+ [ "<!-- Foo --> <!-- Bar -->\n", "<root><comment><!-- Foo --></comment> <comment><!-- Bar --></comment>\n</root>" ],
+ [ "<!-->Bar", "<root><comment><!-->Bar</comment></root>" ],
+ [ "<!-- Comment -- comment", "<root><comment><!-- Comment -- comment</comment></root>" ],
+ [ "== Foo ==\n <!-- Bar -->\n== Baz ==\n", "<root><h level=\"2\" i=\"1\">== Foo ==</h>\n<comment> <!-- Bar -->\n</comment><h level=\"2\" i=\"2\">== Baz ==</h>\n</root>" ],
+ [ "<gallery/>", "<root><ext><name>gallery</name><attr></attr></ext></root>" ],
+ [ "Foo <gallery/> Bar", "<root>Foo <ext><name>gallery</name><attr></attr></ext> Bar</root>" ],
+ [ "<gallery></gallery>", "<root><ext><name>gallery</name><attr></attr><inner></inner><close></gallery></close></ext></root>" ],
+ [ "<foo> <gallery></gallery>", "<root><foo> <ext><name>gallery</name><attr></attr><inner></inner><close></gallery></close></ext></root>" ],
+ [ "<foo> <gallery><gallery></gallery>", "<root><foo> <ext><name>gallery</name><attr></attr><inner><gallery></inner><close></gallery></close></ext></root>" ],
+ [ "<noinclude> Foo bar </noinclude>", "<root><ignore><noinclude></ignore> Foo bar <ignore></noinclude></ignore></root>" ],
+ [ "<noinclude>\n{{Foo}}\n</noinclude>", "<root><ignore><noinclude></ignore>\n<template lineStart=\"1\"><title>Foo</title></template>\n<ignore></noinclude></ignore></root>" ],
+ [ "<noinclude>\n{{Foo}}\n</noinclude>\n", "<root><ignore><noinclude></ignore>\n<template lineStart=\"1\"><title>Foo</title></template>\n<ignore></noinclude></ignore>\n</root>" ],
+ [ "<gallery>foo bar", "<root><ext><name>gallery</name><attr></attr><inner>foo bar</inner></ext></root>" ],
+ [ "<{{foo}}>", "<root><<template><title>foo</title></template>></root>" ],
+ [ "<{{{foo}}}>", "<root><<tplarg><title>foo</title></tplarg>></root>" ],
+ [ "<gallery></gallery</gallery>", "<root><ext><name>gallery</name><attr></attr><inner></gallery</inner><close></gallery></close></ext></root>" ],
+ [ "=== Foo === ", "<root><h level=\"3\" i=\"1\">=== Foo === </h></root>" ],
+ [ "==<!-- -->= Foo === ", "<root><h level=\"2\" i=\"1\">==<comment><!-- --></comment>= Foo === </h></root>" ],
+ [ "=== Foo ==<!-- -->= ", "<root><h level=\"1\" i=\"1\">=== Foo ==<comment><!-- --></comment>= </h></root>" ],
+ [ "=== Foo ===<!-- -->\n", "<root><h level=\"3\" i=\"1\">=== Foo ===<comment><!-- --></comment></h>\n</root>" ],
+ [ "=== Foo ===<!-- --> <!-- -->\n", "<root><h level=\"3\" i=\"1\">=== Foo ===<comment><!-- --></comment> <comment><!-- --></comment></h>\n</root>" ],
+ [ "== Foo ==\n== Bar == \n", "<root><h level=\"2\" i=\"1\">== Foo ==</h>\n<h level=\"2\" i=\"2\">== Bar == </h>\n</root>" ],
+ [ "===========", "<root><h level=\"5\" i=\"1\">===========</h></root>" ],
+ [ "Foo\n=\n==\n=\n", "<root>Foo\n=\n==\n=\n</root>" ],
+ [ "{{Foo}}", "<root><template><title>Foo</title></template></root>" ],
+ [ "\n{{Foo}}", "<root>\n<template lineStart=\"1\"><title>Foo</title></template></root>" ],
+ [ "{{Foo|bar}}", "<root><template><title>Foo</title><part><name index=\"1\" /><value>bar</value></part></template></root>" ],
+ [ "{{Foo|bar}}a", "<root><template><title>Foo</title><part><name index=\"1\" /><value>bar</value></part></template>a</root>" ],
+ [ "{{Foo|bar|baz}}", "<root><template><title>Foo</title><part><name index=\"1\" /><value>bar</value></part><part><name index=\"2\" /><value>baz</value></part></template></root>" ],
+ [ "{{Foo|1=bar}}", "<root><template><title>Foo</title><part><name>1</name>=<value>bar</value></part></template></root>" ],
+ [ "{{Foo|=bar}}", "<root><template><title>Foo</title><part><name></name>=<value>bar</value></part></template></root>" ],
+ [ "{{Foo|bar=baz}}", "<root><template><title>Foo</title><part><name>bar</name>=<value>baz</value></part></template></root>" ],
+ [ "{{Foo|{{bar}}=baz}}", "<root><template><title>Foo</title><part><name><template><title>bar</title></template></name>=<value>baz</value></part></template></root>" ],
+ [ "{{Foo|1=bar|baz}}", "<root><template><title>Foo</title><part><name>1</name>=<value>bar</value></part><part><name index=\"1\" /><value>baz</value></part></template></root>" ],
+ [ "{{Foo|1=bar|2=baz}}", "<root><template><title>Foo</title><part><name>1</name>=<value>bar</value></part><part><name>2</name>=<value>baz</value></part></template></root>" ],
+ [ "{{Foo|bar|foo=baz}}", "<root><template><title>Foo</title><part><name index=\"1\" /><value>bar</value></part><part><name>foo</name>=<value>baz</value></part></template></root>" ],
+ [ "{{{1}}}", "<root><tplarg><title>1</title></tplarg></root>" ],
+ [ "{{{1|}}}", "<root><tplarg><title>1</title><part><name index=\"1\" /><value></value></part></tplarg></root>" ],
+ [ "{{{Foo}}}", "<root><tplarg><title>Foo</title></tplarg></root>" ],
+ [ "{{{Foo|}}}", "<root><tplarg><title>Foo</title><part><name index=\"1\" /><value></value></part></tplarg></root>" ],
+ [ "{{{Foo|bar|baz}}}", "<root><tplarg><title>Foo</title><part><name index=\"1\" /><value>bar</value></part><part><name index=\"2\" /><value>baz</value></part></tplarg></root>" ],
+ [ "{<!-- -->{Foo}}", "<root>{<comment><!-- --></comment>{Foo}}</root>" ],
+ [ "{{{{Foobar}}}}", "<root>{<tplarg><title>Foobar</title></tplarg>}</root>" ],
+ [ "{{{ {{Foo}} }}}", "<root><tplarg><title> <template><title>Foo</title></template> </title></tplarg></root>" ],
+ [ "{{ {{{Foo}}} }}", "<root><template><title> <tplarg><title>Foo</title></tplarg> </title></template></root>" ],
+ [ "{{{{{Foo}}}}}", "<root><template><title><tplarg><title>Foo</title></tplarg></title></template></root>" ],
+ [ "{{{{{Foo}} }}}", "<root><tplarg><title><template><title>Foo</title></template> </title></tplarg></root>" ],
+ [ "{{{{{{Foo}}}}}}", "<root><tplarg><title><tplarg><title>Foo</title></tplarg></title></tplarg></root>" ],
+ [ "{{{{{{Foo}}}}}", "<root>{<template><title><tplarg><title>Foo</title></tplarg></title></template></root>" ],
+ [ "[[[Foo]]", "<root>[[[Foo]]</root>" ],
+ [ "{{Foo|[[[[bar]]|baz]]}}", "<root><template><title>Foo</title><part><name index=\"1\" /><value>[[[[bar]]|baz]]</value></part></template></root>" ], // This test is important, since it means the difference between having the [[ rule stacked or not
+ [ "{{Foo|[[[[bar]|baz]]}}", "<root>{{Foo|[[[[bar]|baz]]}}</root>" ],
+ [ "{{Foo|Foo [[[[bar]|baz]]}}", "<root>{{Foo|Foo [[[[bar]|baz]]}}</root>" ],
+ [ "Foo <display map>Bar</display map >Baz", "<root>Foo <ext><name>display map</name><attr></attr><inner>Bar</inner><close></display map ></close></ext>Baz</root>" ],
+ [ "Foo <display map foo>Bar</display map >Baz", "<root>Foo <ext><name>display map</name><attr> foo</attr><inner>Bar</inner><close></display map ></close></ext>Baz</root>" ],
+ [ "Foo <gallery bar=\"baz\" />", "<root>Foo <ext><name>gallery</name><attr> bar="baz" </attr></ext></root>" ],
+ [ "Foo <gallery bar=\"1\" baz=2 />", "<root>Foo <ext><name>gallery</name><attr> bar="1" baz=2 </attr></ext></root>" ],
+ [ "</foo>Foo<//foo>", "<root><ext><name>/foo</name><attr></attr><inner>Foo</inner><close><//foo></close></ext></root>" ], # Worth blacklisting IMHO
+ [ "{{#ifexpr: ({{{1|1}}} = 2) | Foo | Bar }}", "<root><template><title>#ifexpr: (<tplarg><title>1</title><part><name index=\"1\" /><value>1</value></part></tplarg> = 2) </title><part><name index=\"1\" /><value> Foo </value></part><part><name index=\"2\" /><value> Bar </value></part></template></root>" ],
+ [ "{{#if: {{{1|}}} | Foo | {{Bar}} }}", "<root><template><title>#if: <tplarg><title>1</title><part><name index=\"1\" /><value></value></part></tplarg> </title><part><name index=\"1\" /><value> Foo </value></part><part><name index=\"2\" /><value> <template><title>Bar</title></template> </value></part></template></root>" ],
+ [ "{{#if: {{{1|}}} | Foo | [[Bar]] }}", "<root><template><title>#if: <tplarg><title>1</title><part><name index=\"1\" /><value></value></part></tplarg> </title><part><name index=\"1\" /><value> Foo </value></part><part><name index=\"2\" /><value> [[Bar]] </value></part></template></root>" ],
+ [ "{{#if: {{{1|}}} | [[Foo]] | Bar }}", "<root><template><title>#if: <tplarg><title>1</title><part><name index=\"1\" /><value></value></part></tplarg> </title><part><name index=\"1\" /><value> [[Foo]] </value></part><part><name index=\"2\" /><value> Bar </value></part></template></root>" ],
+ [ "{{#if: {{{1|}}} | 1 | {{#if: {{{1|}}} | 2 | 3 }} }}", "<root><template><title>#if: <tplarg><title>1</title><part><name index=\"1\" /><value></value></part></tplarg> </title><part><name index=\"1\" /><value> 1 </value></part><part><name index=\"2\" /><value> <template><title>#if: <tplarg><title>1</title><part><name index=\"1\" /><value></value></part></tplarg> </title><part><name index=\"1\" /><value> 2 </value></part><part><name index=\"2\" /><value> 3 </value></part></template> </value></part></template></root>" ],
+ [ "{{ {{Foo}}", "<root>{{ <template><title>Foo</title></template></root>" ],
+ [ "{{Foobar {{Foo}} {{Bar}} {{Baz}} ", "<root>{{Foobar <template><title>Foo</title></template> <template><title>Bar</title></template> <template><title>Baz</title></template> </root>" ],
+ [ "[[Foo]] |", "<root>[[Foo]] |</root>" ],
+ [ "{{Foo|Bar|", "<root>{{Foo|Bar|</root>" ],
+ [ "[[Foo]", "<root>[[Foo]</root>" ],
+ [ "[[Foo|Bar]", "<root>[[Foo|Bar]</root>" ],
+ [ "{{Foo| [[Bar] }}", "<root>{{Foo| [[Bar] }}</root>" ],
+ [ "{{Foo| [[Bar|Baz] }}", "<root>{{Foo| [[Bar|Baz] }}</root>" ],
+ [ "{{Foo|bar=[[baz]}}", "<root>{{Foo|bar=[[baz]}}</root>" ],
+ [ "{{foo|", "<root>{{foo|</root>" ],
+ [ "{{foo|}", "<root>{{foo|}</root>" ],
+ [ "{{foo|} }}", "<root><template><title>foo</title><part><name index=\"1\" /><value>} </value></part></template></root>" ],
+ [ "{{foo|bar=|}", "<root>{{foo|bar=|}</root>" ],
+ [ "{{Foo|} Bar=", "<root>{{Foo|} Bar=</root>" ],
+ [ "{{Foo|} Bar=}}", "<root><template><title>Foo</title><part><name>} Bar</name>=<value></value></part></template></root>" ],
+ /* [ file_get_contents( __DIR__ . '/QuoteQuran.txt' ], file_get_contents( __DIR__ . '/QuoteQuranExpanded.txt' ) ], */
+ ];
// @codingStandardsIgnoreEnd
}
*/
public static function provideFiles() {
// @codingStandardsIgnoreStart Ignore Generic.Files.LineLength.TooLong
- return array(
- array( "QuoteQuran" ), # http://en.wikipedia.org/w/index.php?title=Template:QuoteQuran/sandbox&oldid=237348988 GFDL + CC BY-SA by Striver
- array( "Factorial" ), # http://en.wikipedia.org/w/index.php?title=Template:Factorial&oldid=98548758 GFDL + CC BY-SA by Polonium
- array( "All_system_messages" ), # http://tl.wiktionary.org/w/index.php?title=Suleras:All_system_messages&oldid=2765 GPL text generated by MediaWiki
- array( "Fundraising" ), # http://tl.wiktionary.org/w/index.php?title=MediaWiki:Sitenotice&oldid=5716 GFDL + CC BY-SA, copied there by Sky Harbor.
- array( "NestedTemplates" ), # bug 27936
- );
+ return [
+ [ "QuoteQuran" ], # http://en.wikipedia.org/w/index.php?title=Template:QuoteQuran/sandbox&oldid=237348988 GFDL + CC BY-SA by Striver
+ [ "Factorial" ], # http://en.wikipedia.org/w/index.php?title=Template:Factorial&oldid=98548758 GFDL + CC BY-SA by Polonium
+ [ "All_system_messages" ], # http://tl.wiktionary.org/w/index.php?title=Suleras:All_system_messages&oldid=2765 GPL text generated by MediaWiki
+ [ "Fundraising" ], # http://tl.wiktionary.org/w/index.php?title=MediaWiki:Sitenotice&oldid=5716 GFDL + CC BY-SA, copied there by Sky Harbor.
+ [ "NestedTemplates" ], # bug 27936
+ ];
// @codingStandardsIgnoreEnd
}
*/
public static function provideHeadings() {
// @codingStandardsIgnoreStart Ignore Generic.Files.LineLength.TooLong
- return array( /* These should become headings: */
- array( "== h ==<!--c1-->", "<root><h level=\"2\" i=\"1\">== h ==<comment><!--c1--></comment></h></root>" ),
- array( "== h == <!--c1-->", "<root><h level=\"2\" i=\"1\">== h == <comment><!--c1--></comment></h></root>" ),
- array( "== h ==<!--c1--> ", "<root><h level=\"2\" i=\"1\">== h ==<comment><!--c1--></comment> </h></root>" ),
- array( "== h == <!--c1--> ", "<root><h level=\"2\" i=\"1\">== h == <comment><!--c1--></comment> </h></root>" ),
- array( "== h ==<!--c1--><!--c2-->", "<root><h level=\"2\" i=\"1\">== h ==<comment><!--c1--></comment><comment><!--c2--></comment></h></root>" ),
- array( "== h == <!--c1--><!--c2-->", "<root><h level=\"2\" i=\"1\">== h == <comment><!--c1--></comment><comment><!--c2--></comment></h></root>" ),
- array( "== h ==<!--c1--><!--c2--> ", "<root><h level=\"2\" i=\"1\">== h ==<comment><!--c1--></comment><comment><!--c2--></comment> </h></root>" ),
- array( "== h == <!--c1--><!--c2--> ", "<root><h level=\"2\" i=\"1\">== h == <comment><!--c1--></comment><comment><!--c2--></comment> </h></root>" ),
- array( "== h == <!--c1--> <!--c2-->", "<root><h level=\"2\" i=\"1\">== h == <comment><!--c1--></comment> <comment><!--c2--></comment></h></root>" ),
- array( "== h ==<!--c1--> <!--c2--> ", "<root><h level=\"2\" i=\"1\">== h ==<comment><!--c1--></comment> <comment><!--c2--></comment> </h></root>" ),
- array( "== h == <!--c1--> <!--c2--> ", "<root><h level=\"2\" i=\"1\">== h == <comment><!--c1--></comment> <comment><!--c2--></comment> </h></root>" ),
- array( "== h ==<!--c1--><!--c2--><!--c3-->", "<root><h level=\"2\" i=\"1\">== h ==<comment><!--c1--></comment><comment><!--c2--></comment><comment><!--c3--></comment></h></root>" ),
- array( "== h ==<!--c1--> <!--c2--><!--c3-->", "<root><h level=\"2\" i=\"1\">== h ==<comment><!--c1--></comment> <comment><!--c2--></comment><comment><!--c3--></comment></h></root>" ),
- array( "== h ==<!--c1--><!--c2--> <!--c3-->", "<root><h level=\"2\" i=\"1\">== h ==<comment><!--c1--></comment><comment><!--c2--></comment> <comment><!--c3--></comment></h></root>" ),
- array( "== h ==<!--c1--> <!--c2--> <!--c3-->", "<root><h level=\"2\" i=\"1\">== h ==<comment><!--c1--></comment> <comment><!--c2--></comment> <comment><!--c3--></comment></h></root>" ),
- array( "== h == <!--c1--><!--c2--><!--c3-->", "<root><h level=\"2\" i=\"1\">== h == <comment><!--c1--></comment><comment><!--c2--></comment><comment><!--c3--></comment></h></root>" ),
- array( "== h == <!--c1--> <!--c2--><!--c3-->", "<root><h level=\"2\" i=\"1\">== h == <comment><!--c1--></comment> <comment><!--c2--></comment><comment><!--c3--></comment></h></root>" ),
- array( "== h == <!--c1--><!--c2--> <!--c3-->", "<root><h level=\"2\" i=\"1\">== h == <comment><!--c1--></comment><comment><!--c2--></comment> <comment><!--c3--></comment></h></root>" ),
- array( "== h == <!--c1--> <!--c2--> <!--c3-->", "<root><h level=\"2\" i=\"1\">== h == <comment><!--c1--></comment> <comment><!--c2--></comment> <comment><!--c3--></comment></h></root>" ),
- array( "== h ==<!--c1--><!--c2--><!--c3--> ", "<root><h level=\"2\" i=\"1\">== h ==<comment><!--c1--></comment><comment><!--c2--></comment><comment><!--c3--></comment> </h></root>" ),
- array( "== h ==<!--c1--> <!--c2--><!--c3--> ", "<root><h level=\"2\" i=\"1\">== h ==<comment><!--c1--></comment> <comment><!--c2--></comment><comment><!--c3--></comment> </h></root>" ),
- array( "== h ==<!--c1--><!--c2--> <!--c3--> ", "<root><h level=\"2\" i=\"1\">== h ==<comment><!--c1--></comment><comment><!--c2--></comment> <comment><!--c3--></comment> </h></root>" ),
- array( "== h ==<!--c1--> <!--c2--> <!--c3--> ", "<root><h level=\"2\" i=\"1\">== h ==<comment><!--c1--></comment> <comment><!--c2--></comment> <comment><!--c3--></comment> </h></root>" ),
- array( "== h == <!--c1--><!--c2--><!--c3--> ", "<root><h level=\"2\" i=\"1\">== h == <comment><!--c1--></comment><comment><!--c2--></comment><comment><!--c3--></comment> </h></root>" ),
- array( "== h == <!--c1--> <!--c2--><!--c3--> ", "<root><h level=\"2\" i=\"1\">== h == <comment><!--c1--></comment> <comment><!--c2--></comment><comment><!--c3--></comment> </h></root>" ),
- array( "== h == <!--c1--><!--c2--> <!--c3--> ", "<root><h level=\"2\" i=\"1\">== h == <comment><!--c1--></comment><comment><!--c2--></comment> <comment><!--c3--></comment> </h></root>" ),
- array( "== h == <!--c1--> <!--c2--> <!--c3--> ", "<root><h level=\"2\" i=\"1\">== h == <comment><!--c1--></comment> <comment><!--c2--></comment> <comment><!--c3--></comment> </h></root>" ),
- array( "== h ==<!--c1--> <!--c2-->", "<root><h level=\"2\" i=\"1\">== h ==<comment><!--c1--></comment> <comment><!--c2--></comment></h></root>" ),
- array( "== h == <!--c1--> <!--c2-->", "<root><h level=\"2\" i=\"1\">== h == <comment><!--c1--></comment> <comment><!--c2--></comment></h></root>" ),
- array( "== h ==<!--c1--> <!--c2--> ", "<root><h level=\"2\" i=\"1\">== h ==<comment><!--c1--></comment> <comment><!--c2--></comment> </h></root>" ),
+ return [ /* These should become headings: */
+ [ "== h ==<!--c1-->", "<root><h level=\"2\" i=\"1\">== h ==<comment><!--c1--></comment></h></root>" ],
+ [ "== h == <!--c1-->", "<root><h level=\"2\" i=\"1\">== h == <comment><!--c1--></comment></h></root>" ],
+ [ "== h ==<!--c1--> ", "<root><h level=\"2\" i=\"1\">== h ==<comment><!--c1--></comment> </h></root>" ],
+ [ "== h == <!--c1--> ", "<root><h level=\"2\" i=\"1\">== h == <comment><!--c1--></comment> </h></root>" ],
+ [ "== h ==<!--c1--><!--c2-->", "<root><h level=\"2\" i=\"1\">== h ==<comment><!--c1--></comment><comment><!--c2--></comment></h></root>" ],
+ [ "== h == <!--c1--><!--c2-->", "<root><h level=\"2\" i=\"1\">== h == <comment><!--c1--></comment><comment><!--c2--></comment></h></root>" ],
+ [ "== h ==<!--c1--><!--c2--> ", "<root><h level=\"2\" i=\"1\">== h ==<comment><!--c1--></comment><comment><!--c2--></comment> </h></root>" ],
+ [ "== h == <!--c1--><!--c2--> ", "<root><h level=\"2\" i=\"1\">== h == <comment><!--c1--></comment><comment><!--c2--></comment> </h></root>" ],
+ [ "== h == <!--c1--> <!--c2-->", "<root><h level=\"2\" i=\"1\">== h == <comment><!--c1--></comment> <comment><!--c2--></comment></h></root>" ],
+ [ "== h ==<!--c1--> <!--c2--> ", "<root><h level=\"2\" i=\"1\">== h ==<comment><!--c1--></comment> <comment><!--c2--></comment> </h></root>" ],
+ [ "== h == <!--c1--> <!--c2--> ", "<root><h level=\"2\" i=\"1\">== h == <comment><!--c1--></comment> <comment><!--c2--></comment> </h></root>" ],
+ [ "== h ==<!--c1--><!--c2--><!--c3-->", "<root><h level=\"2\" i=\"1\">== h ==<comment><!--c1--></comment><comment><!--c2--></comment><comment><!--c3--></comment></h></root>" ],
+ [ "== h ==<!--c1--> <!--c2--><!--c3-->", "<root><h level=\"2\" i=\"1\">== h ==<comment><!--c1--></comment> <comment><!--c2--></comment><comment><!--c3--></comment></h></root>" ],
+ [ "== h ==<!--c1--><!--c2--> <!--c3-->", "<root><h level=\"2\" i=\"1\">== h ==<comment><!--c1--></comment><comment><!--c2--></comment> <comment><!--c3--></comment></h></root>" ],
+ [ "== h ==<!--c1--> <!--c2--> <!--c3-->", "<root><h level=\"2\" i=\"1\">== h ==<comment><!--c1--></comment> <comment><!--c2--></comment> <comment><!--c3--></comment></h></root>" ],
+ [ "== h == <!--c1--><!--c2--><!--c3-->", "<root><h level=\"2\" i=\"1\">== h == <comment><!--c1--></comment><comment><!--c2--></comment><comment><!--c3--></comment></h></root>" ],
+ [ "== h == <!--c1--> <!--c2--><!--c3-->", "<root><h level=\"2\" i=\"1\">== h == <comment><!--c1--></comment> <comment><!--c2--></comment><comment><!--c3--></comment></h></root>" ],
+ [ "== h == <!--c1--><!--c2--> <!--c3-->", "<root><h level=\"2\" i=\"1\">== h == <comment><!--c1--></comment><comment><!--c2--></comment> <comment><!--c3--></comment></h></root>" ],
+ [ "== h == <!--c1--> <!--c2--> <!--c3-->", "<root><h level=\"2\" i=\"1\">== h == <comment><!--c1--></comment> <comment><!--c2--></comment> <comment><!--c3--></comment></h></root>" ],
+ [ "== h ==<!--c1--><!--c2--><!--c3--> ", "<root><h level=\"2\" i=\"1\">== h ==<comment><!--c1--></comment><comment><!--c2--></comment><comment><!--c3--></comment> </h></root>" ],
+ [ "== h ==<!--c1--> <!--c2--><!--c3--> ", "<root><h level=\"2\" i=\"1\">== h ==<comment><!--c1--></comment> <comment><!--c2--></comment><comment><!--c3--></comment> </h></root>" ],
+ [ "== h ==<!--c1--><!--c2--> <!--c3--> ", "<root><h level=\"2\" i=\"1\">== h ==<comment><!--c1--></comment><comment><!--c2--></comment> <comment><!--c3--></comment> </h></root>" ],
+ [ "== h ==<!--c1--> <!--c2--> <!--c3--> ", "<root><h level=\"2\" i=\"1\">== h ==<comment><!--c1--></comment> <comment><!--c2--></comment> <comment><!--c3--></comment> </h></root>" ],
+ [ "== h == <!--c1--><!--c2--><!--c3--> ", "<root><h level=\"2\" i=\"1\">== h == <comment><!--c1--></comment><comment><!--c2--></comment><comment><!--c3--></comment> </h></root>" ],
+ [ "== h == <!--c1--> <!--c2--><!--c3--> ", "<root><h level=\"2\" i=\"1\">== h == <comment><!--c1--></comment> <comment><!--c2--></comment><comment><!--c3--></comment> </h></root>" ],
+ [ "== h == <!--c1--><!--c2--> <!--c3--> ", "<root><h level=\"2\" i=\"1\">== h == <comment><!--c1--></comment><comment><!--c2--></comment> <comment><!--c3--></comment> </h></root>" ],
+ [ "== h == <!--c1--> <!--c2--> <!--c3--> ", "<root><h level=\"2\" i=\"1\">== h == <comment><!--c1--></comment> <comment><!--c2--></comment> <comment><!--c3--></comment> </h></root>" ],
+ [ "== h ==<!--c1--> <!--c2-->", "<root><h level=\"2\" i=\"1\">== h ==<comment><!--c1--></comment> <comment><!--c2--></comment></h></root>" ],
+ [ "== h == <!--c1--> <!--c2-->", "<root><h level=\"2\" i=\"1\">== h == <comment><!--c1--></comment> <comment><!--c2--></comment></h></root>" ],
+ [ "== h ==<!--c1--> <!--c2--> ", "<root><h level=\"2\" i=\"1\">== h ==<comment><!--c1--></comment> <comment><!--c2--></comment> </h></root>" ],
/* These are not working: */
- array( "== h == x <!--c1--><!--c2--><!--c3--> ", "<root>== h == x <comment><!--c1--></comment><comment><!--c2--></comment><comment><!--c3--></comment> </root>" ),
- array( "== h ==<!--c1--> x <!--c2--><!--c3--> ", "<root>== h ==<comment><!--c1--></comment> x <comment><!--c2--></comment><comment><!--c3--></comment> </root>" ),
- array( "== h ==<!--c1--><!--c2--><!--c3--> x ", "<root>== h ==<comment><!--c1--></comment><comment><!--c2--></comment><comment><!--c3--></comment> x </root>" ),
- );
+ [ "== h == x <!--c1--><!--c2--><!--c3--> ", "<root>== h == x <comment><!--c1--></comment><comment><!--c2--></comment><comment><!--c3--></comment> </root>" ],
+ [ "== h ==<!--c1--> x <!--c2--><!--c3--> ", "<root>== h ==<comment><!--c1--></comment> x <comment><!--c2--></comment><comment><!--c3--></comment> </root>" ],
+ [ "== h ==<!--c1--><!--c2--><!--c3--> x ", "<root>== h ==<comment><!--c1--></comment><comment><!--c2--></comment><comment><!--c3--></comment> x </root>" ],
+ ];
// @codingStandardsIgnoreEnd
}
public static function providePasswordTests() {
// @codingStandardsIgnoreStart Generic.Files.LineLength
- return array(
+ return [
// Tests from glibc bcrypt implementation
- array( true, ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$E5YPO9kmyuRGyh0XouQYb4YMJKvyOeW', "U*U" ),
- array( true, ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$VGOzA784oUp/Z0DY336zx7pLYAy0lwK', "U*U*" ),
- array( true, ':bcrypt:5$XXXXXXXXXXXXXXXXXXXXXO$AcXxm9kjPGEMsLznoKqmqw7tc8WCx4a', "U*U*U" ),
- array( true, ':bcrypt:5$abcdefghijklmnopqrstuu$5s2v8.iXieOjg/.AySBTTZIIVFJeBui', "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789chars after 72 are ignored" ),
- array( true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$CE5elHaaO4EbggVDjb8P19RukzXSM3e', "\xff\xff\xa3" ),
- array( true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$Sa7shbm4.OzKpvFnX1pQLmQW96oUlCq', "\xa3" ),
- array( true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$Sa7shbm4.OzKpvFnX1pQLmQW96oUlCq', "\xa3" ),
- array( true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$o./n25XVfn6oAPaUvHe.Csk4zRfsYPi', "\xff\xa334\xff\xff\xff\xa3345" ),
- array( true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$nRht2l/HRhr6zmCp9vYUvvsqynflf9e', "\xff\xa3345" ),
- array( true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$nRht2l/HRhr6zmCp9vYUvvsqynflf9e', "\xff\xa3345" ),
- array( true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$6IflQkJytoRVc1yuaNtHfiuq.FRlSIS', "\xa3ab" ),
- array( true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$6IflQkJytoRVc1yuaNtHfiuq.FRlSIS', "\xa3ab" ),
- array( true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$swQOIzjOiJ9GHEPuhEkvqrUyvWhEMx6', "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaachars after 72 are ignored as usual" ),
- array( true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$R9xrDjiycxMbQE2bp.vgqlYpW5wx2yy', "\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55" ),
- array( true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$9tQZzcJfm3uj2NvJ/n5xkhpqLrMpWCe', "\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff" ),
- array( true, ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$7uG0VCzI2bS7j6ymqJi9CdcdxiRTWNy', "" ),
+ [ true, ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$E5YPO9kmyuRGyh0XouQYb4YMJKvyOeW', "U*U" ],
+ [ true, ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$VGOzA784oUp/Z0DY336zx7pLYAy0lwK', "U*U*" ],
+ [ true, ':bcrypt:5$XXXXXXXXXXXXXXXXXXXXXO$AcXxm9kjPGEMsLznoKqmqw7tc8WCx4a', "U*U*U" ],
+ [ true, ':bcrypt:5$abcdefghijklmnopqrstuu$5s2v8.iXieOjg/.AySBTTZIIVFJeBui', "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789chars after 72 are ignored" ],
+ [ true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$CE5elHaaO4EbggVDjb8P19RukzXSM3e', "\xff\xff\xa3" ],
+ [ true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$Sa7shbm4.OzKpvFnX1pQLmQW96oUlCq', "\xa3" ],
+ [ true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$Sa7shbm4.OzKpvFnX1pQLmQW96oUlCq', "\xa3" ],
+ [ true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$o./n25XVfn6oAPaUvHe.Csk4zRfsYPi', "\xff\xa334\xff\xff\xff\xa3345" ],
+ [ true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$nRht2l/HRhr6zmCp9vYUvvsqynflf9e', "\xff\xa3345" ],
+ [ true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$nRht2l/HRhr6zmCp9vYUvvsqynflf9e', "\xff\xa3345" ],
+ [ true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$6IflQkJytoRVc1yuaNtHfiuq.FRlSIS', "\xa3ab" ],
+ [ true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$6IflQkJytoRVc1yuaNtHfiuq.FRlSIS', "\xa3ab" ],
+ [ true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$swQOIzjOiJ9GHEPuhEkvqrUyvWhEMx6', "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaachars after 72 are ignored as usual" ],
+ [ true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$R9xrDjiycxMbQE2bp.vgqlYpW5wx2yy', "\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55" ],
+ [ true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$9tQZzcJfm3uj2NvJ/n5xkhpqLrMpWCe', "\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff" ],
+ [ true, ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$7uG0VCzI2bS7j6ymqJi9CdcdxiRTWNy', "" ],
// One or two false sanity tests
- array( false, ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$E5YPO9kmyuRGyh0XouQYb4YMJKvyOeW', "UXU" ),
- array( false, ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$E5YPO9kmyuRGyh0XouQYb4YMJKvyOeW', "" ),
- );
+ [ false, ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$E5YPO9kmyuRGyh0XouQYb4YMJKvyOeW', "UXU" ],
+ [ false, ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$E5YPO9kmyuRGyh0XouQYb4YMJKvyOeW', "" ],
+ ];
// @codingStandardsIgnoreEnd
}
}
public static function providePasswordTests() {
// @codingStandardsIgnoreStart Generic.Files.LineLength.TooLong
- return array(
- array( true, ':testLargeLayeredTop:sha512:1024:512!sha512:1024:512!sha512:1024:512!sha512:1024:512!5!vnRy+2SrSA0fHt3dwhTP5g==!AVnwfZsAQjn+gULv7FSGjA==!xvHUX3WcpkeSn1lvjWcvBg==!It+OC/N9tu+d3ByHhuB0BQ==!Tb.gqUOiD.aWktVwHM.Q/O!7CcyMfXUPky5ptyATJsR2nq3vUqtnBC', 'testPassword123' ),
- );
+ return [
+ [
+ true,
+ ':testLargeLayeredTop:sha512:1024:512!sha512:1024:512!sha512:1024:512!sha512:1024:512!5!vnRy+2SrSA0fHt3dwhTP5g==!AVnwfZsAQjn+gULv7FSGjA==!xvHUX3WcpkeSn1lvjWcvBg==!It+OC/N9tu+d3ByHhuB0BQ==!Tb.gqUOiD.aWktVwHM.Q/O!7CcyMfXUPky5ptyATJsR2nq3vUqtnBC',
+ 'testPassword123'
+ ],
+ ];
// @codingStandardsIgnoreEnd
}
$specialPageTestHelper = new SpecialPageTestHelper();
return [
- 'class name' => [ 'SpecialAllPages', false ],
+ 'class name' => [ 'SpecialAllPages' ],
'closure' => [ function () {
return new SpecialAllPages();
- }, false ],
- 'function' => [ [ $this, 'newSpecialAllPages' ], false ],
- 'callback string' => [ 'SpecialPageTestHelper::newSpecialAllPages', false ],
+ } ],
+ 'function' => [ [ $this, 'newSpecialAllPages' ] ],
+ 'callback string' => [ 'SpecialPageTestHelper::newSpecialAllPages' ],
'callback with object' => [
- [ $specialPageTestHelper, 'newSpecialAllPages' ],
- false
+ [ $specialPageTestHelper, 'newSpecialAllPages' ]
],
'callback array' => [
- [ 'SpecialPageTestHelper', 'newSpecialAllPages' ],
- false
+ [ 'SpecialPageTestHelper', 'newSpecialAllPages' ]
]
];
}
* @covers SpecialPageFactory::getPage
* @dataProvider specialPageProvider
*/
- public function testGetPage( $spec, $shouldReuseInstance ) {
+ public function testGetPage( $spec ) {
$this->mergeMwGlobalArrayValue( 'wgSpecialPages', [ 'testdummy' => $spec ] );
SpecialPageFactory::resetList();
$this->assertInstanceOf( 'SpecialPage', $page );
$page2 = SpecialPageFactory::getPage( 'testdummy' );
- $this->assertEquals( $shouldReuseInstance, $page2 === $page, "Should re-use instance:" );
+ $this->assertEquals( true, $page2 === $page, "Should re-use instance:" );
}
/**
public static function provideCheckSvgScriptCallback() {
// @codingStandardsIgnoreStart Generic.Files.LineLength
- return array(
+ return [
// html5sec SVG vectors
- array(
+ [
'<svg xmlns="http://www.w3.org/2000/svg"><script>alert(1)</script></svg>',
true,
true,
'Script tag in svg (http://html5sec.org/#47)'
- ),
- array(
+ ],
+ [
'<svg xmlns="http://www.w3.org/2000/svg"><g onload="javascript:alert(1)"></g></svg>',
true,
true,
'SVG with onload property (http://html5sec.org/#11)'
- ),
- array(
+ ],
+ [
'<svg onload="javascript:alert(1)" xmlns="http://www.w3.org/2000/svg"></svg>',
true,
true,
'SVG with onload property (http://html5sec.org/#65)'
- ),
- array(
+ ],
+ [
'<svg xmlns="http://www.w3.org/2000/svg"> <a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="javascript:alert(1)"><rect width="1000" height="1000" fill="white"/></a> </svg>',
true,
true,
'SVG with javascript xlink (http://html5sec.org/#87)'
- ),
- array(
+ ],
+ [
'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><use xlink:href="data:application/xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KPGRlZnM+CjxjaXJjbGUgaWQ9InRlc3QiIHI9IjUwIiBjeD0iMTAwIiBjeT0iMTAwIiBzdHlsZT0iZmlsbDogI0YwMCI+CjxzZXQgYXR0cmlidXRlTmFtZT0iZmlsbCIgYXR0cmlidXRlVHlwZT0iQ1NTIiBvbmJlZ2luPSdhbGVydChkb2N1bWVudC5jb29raWUpJwpvbmVuZD0nYWxlcnQoIm9uZW5kIiknIHRvPSIjMDBGIiBiZWdpbj0iMXMiIGR1cj0iNXMiIC8+CjwvY2lyY2xlPgo8L2RlZnM+Cjx1c2UgeGxpbms6aHJlZj0iI3Rlc3QiLz4KPC9zdmc+#test"/> </svg>',
true,
true,
'SVG with Opera image xlink (http://html5sec.org/#88 - c)'
- ),
- array(
+ ],
+ [
'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <animation xlink:href="javascript:alert(1)"/> </svg>',
true,
true,
'SVG with Opera animation xlink (http://html5sec.org/#88 - a)'
- ),
- array(
+ ],
+ [
'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <animation xlink:href="data:text/xml,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' onload=\'alert(1)\'%3E%3C/svg%3E"/> </svg>',
true,
true,
'SVG with Opera animation xlink (http://html5sec.org/#88 - b)'
- ),
- array(
+ ],
+ [
'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <image xlink:href="data:image/svg+xml,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' onload=\'alert(1)\'%3E%3C/svg%3E"/> </svg>',
true,
true,
'SVG with Opera image xlink (http://html5sec.org/#88 - c)'
- ),
- array(
+ ],
+ [
'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <foreignObject xlink:href="javascript:alert(1)"/> </svg>',
true,
true,
'SVG with Opera foreignObject xlink (http://html5sec.org/#88 - d)'
- ),
- array(
+ ],
+ [
'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <foreignObject xlink:href="data:text/xml,%3Cscript xmlns=\'http://www.w3.org/1999/xhtml\'%3Ealert(1)%3C/script%3E"/> </svg>',
true,
true,
'SVG with Opera foreignObject xlink (http://html5sec.org/#88 - e)'
- ),
- array(
+ ],
+ [
'<svg xmlns="http://www.w3.org/2000/svg"> <set attributeName="onmouseover" to="alert(1)"/> </svg>',
true,
true,
'SVG with event handler set (http://html5sec.org/#89 - a)'
- ),
- array(
+ ],
+ [
'<svg xmlns="http://www.w3.org/2000/svg"> <animate attributeName="onunload" to="alert(1)"/> </svg>',
true,
true,
'SVG with event handler animate (http://html5sec.org/#89 - a)'
- ),
- array(
+ ],
+ [
'<svg xmlns="http://www.w3.org/2000/svg"> <handler xmlns:ev="http://www.w3.org/2001/xml-events" ev:event="load">alert(1)</handler> </svg>',
true,
true,
'SVG with element handler (http://html5sec.org/#94)'
- ),
- array(
+ ],
+ [
'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <feImage> <set attributeName="xlink:href" to="data:image/svg+xml;charset=utf-8;base64, PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxzY3JpcHQ%2BYWxlcnQoMSk8L3NjcmlwdD48L3N2Zz4NCg%3D%3D"/> </feImage> </svg>',
true,
true,
'SVG with href to data: url (http://html5sec.org/#95)'
- ),
- array(
+ ],
+ [
'<svg xmlns="http://www.w3.org/2000/svg" id="foo"> <x xmlns="http://www.w3.org/2001/xml-events" event="load" observer="foo" handler="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Chandler%20xml%3Aid%3D%22bar%22%20type%3D%22application%2Fecmascript%22%3E alert(1) %3C%2Fhandler%3E%0A%3C%2Fsvg%3E%0A#bar"/> </svg>',
true,
true,
'SVG with Tiny handler (http://html5sec.org/#104)'
- ),
- array(
+ ],
+ [
'<svg xmlns="http://www.w3.org/2000/svg"> <a id="x"><rect fill="white" width="1000" height="1000"/></a> <rect fill="white" style="clip-path:url(test3.svg#a);fill:url(#b);filter:url(#c);marker:url(#d);mask:url(#e);stroke:url(#f);"/> </svg>',
true,
true,
'SVG with new CSS styles properties (http://html5sec.org/#109)'
- ),
- array(
+ ],
+ [
'<svg xmlns="http://www.w3.org/2000/svg"> <a id="x"><rect fill="white" width="1000" height="1000"/></a> <rect clip-path="url(test3.svg#a)" /> </svg>',
true,
true,
'SVG with new CSS styles properties as attributes'
- ),
- array(
+ ],
+ [
'<svg xmlns="http://www.w3.org/2000/svg"> <a id="x"> <rect fill="white" width="1000" height="1000"/> </a> <rect fill="url(http://html5sec.org/test3.svg#a)" /> </svg>',
true,
true,
'SVG with new CSS styles properties as attributes (2)'
- ),
- array(
+ ],
+ [
'<svg xmlns="http://www.w3.org/2000/svg"> <path d="M0,0" style="marker-start:url(test4.svg#a)"/> </svg>',
true,
true,
'SVG with path marker-start (http://html5sec.org/#110)'
- ),
- array(
+ ],
+ [
'<?xml version="1.0"?> <?xml-stylesheet type="text/xml" href="#stylesheet"?> <!DOCTYPE doc [ <!ATTLIST xsl:stylesheet id ID #REQUIRED>]> <svg xmlns="http://www.w3.org/2000/svg"> <xsl:stylesheet id="stylesheet" version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <iframe xmlns="http://www.w3.org/1999/xhtml" src="javascript:alert(1)"></iframe> </xsl:template> </xsl:stylesheet> <circle fill="red" r="40"></circle> </svg>',
true,
true,
'SVG with embedded stylesheet (http://html5sec.org/#125)'
- ),
- array(
+ ],
+ [
'<svg xmlns="http://www.w3.org/2000/svg" id="x"> <listener event="load" handler="#y" xmlns="http://www.w3.org/2001/xml-events" observer="x"/> <handler id="y">alert(1)</handler> </svg>',
true,
true,
'SVG with handler attribute (http://html5sec.org/#127)'
- ),
- array(
+ ],
+ [
// Haven't found a browser that accepts this particular example, but we
// don't want to allow embeded svgs, ever
'<svg> <image style=\'filter:url("data:image/svg+xml;charset=utf-8;base64, PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxzY3JpcHQ/YWxlcnQoMSk8L3NjcmlwdD48L3N2Zz4NCg==")\' /> </svg>',
true,
true,
'SVG with image filter via style (http://html5sec.org/#129)'
- ),
- array(
+ ],
+ [
// This doesn't seem possible without embedding the svg, but just in case
'<svg> <a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="?"> <circle r="400"></circle> <animate attributeName="xlink:href" begin="0" from="javascript:alert(1)" to="" /> </a></svg>',
true,
true,
'SVG with animate from (http://html5sec.org/#137)'
- ),
- array(
+ ],
+ [
'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <a><text y="1em">Click me</text> <animate attributeName="xlink:href" values="javascript:alert(\'Bang!\')" begin="0s" dur="0.1s" fill="freeze" /> </a></svg>',
true,
true,
'SVG with animate xlink:href (http://html5sec.org/#137)'
- ),
- array(
+ ],
+ [
'<svg xmlns="http://www.w3.org/2000/svg" xmlns:y="http://www.w3.org/1999/xlink"> <a y:href="#"> <text y="1em">Click me</text> <animate attributeName="y:href" values="javascript:alert(\'Bang!\')" begin="0s" dur="0.1s" fill="freeze" /> </a> </svg>',
true,
true,
'SVG with animate y:href (http://html5sec.org/#137)'
- ),
+ ],
// Other hostile SVG's
- array(
+ [
'<?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns:xlink="http://www.w3.org/1999/xlink"> <image xlink:href="https://upload.wikimedia.org/wikipedia/commons/3/34/Bahnstrecke_Zeitz-Camburg_1930.png" /> </svg>',
true,
true,
'SVG with non-local image href (bug 65839)'
- ),
- array(
+ ],
+ [
'<?xml version="1.0" ?> <?xml-stylesheet type="text/xsl" href="/w/index.php?title=User:Jeeves/test.xsl&action=raw&format=xml" ?> <svg> <height>50</height> <width>100</width> </svg>',
true,
true,
'SVG with remote stylesheet (bug 57550)'
- ),
- array(
+ ],
+ [
'<svg xmlns="http://www.w3.org/2000/svg" viewbox="-1 -1 15 15"> <rect y="0" height="13" width="12" stroke="#179" rx="1" fill="#2ac"/> <text x="1.5" y="11" font-family="courier" stroke="white" font-size="16"><![CDATA[B]]></text> <iframe xmlns="http://www.w3.org/1999/xhtml" srcdoc="<script>alert('XSSED => Domain('+top.document.domain+')');</script>"></iframe> </svg>',
true,
true,
'SVG with rembeded iframe (bug 60771)'
- ),
- array(
+ ],
+ [
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="6 3 177 153" xmlns:xlink="http://www.w3.org/1999/xlink"> <style>@import url("https://fonts.googleapis.com/css?family=Bitter:700&text=WebPlatform.org");</style> <g transform="translate(-.5,-.5)"> <text fill="#474747" x="95" y="150" text-anchor="middle" font-family="Bitter" font-size="20" font-weight="bold">WebPlatform.org</text> </g> </svg>',
true,
true,
'SVG with @import in style element (bug 69008)'
- ),
- array(
+ ],
+ [
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="6 3 177 153" xmlns:xlink="http://www.w3.org/1999/xlink"> <style>@import url("https://fonts.googleapis.com/css?family=Bitter:700&text=WebPlatform.org");<foo/></style> <g transform="translate(-.5,-.5)"> <text fill="#474747" x="95" y="150" text-anchor="middle" font-family="Bitter" font-size="20" font-weight="bold">WebPlatform.org</text> </g> </svg>',
true,
true,
'SVG with @import in style element and child element (bug 69008#c11)'
- ),
- array(
+ ],
+ [
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="6 3 177 153" xmlns:xlink="http://www.w3.org/1999/xlink"> <style>@imporT "https://fonts.googleapis.com/css?family=Bitter:700&text=WebPlatform.org";</style> <g transform="translate(-.5,-.5)"> <text fill="#474747" x="95" y="150" text-anchor="middle" font-family="Bitter" font-size="20" font-weight="bold">WebPlatform.org</text> </g> </svg>',
true,
true,
'SVG with case-insensitive @import in style element (bug T85349)'
- ),
- array(
+ ],
+ [
'<svg xmlns="http://www.w3.org/2000/svg"> <rect width="100" height="100" style="background-image:url(https://www.google.com/images/srpr/logo11w.png)"/> </svg>',
true,
true,
'SVG with remote background image (bug 69008)'
- ),
- array(
+ ],
+ [
'<svg xmlns="http://www.w3.org/2000/svg"> <rect width="100" height="100" style="background-image:\55rl(https://www.google.com/images/srpr/logo11w.png)"/> </svg>',
true,
true,
'SVG with remote background image, encoded (bug 69008)'
- ),
- array(
+ ],
+ [
'<svg xmlns="http://www.w3.org/2000/svg"> <style> #a { background-image:\55rl(\'https://www.google.com/images/srpr/logo11w.png\'); } </style> <rect width="100" height="100" id="a"/> </svg>',
true,
true,
'SVG with remote background image, in style element (bug 69008)'
- ),
- array(
+ ],
+ [
// This currently doesn't seem to work in any browsers, but in case
// http://www.w3.org/TR/css3-images/ is implemented for SVG files
'<svg xmlns="http://www.w3.org/2000/svg"> <rect width="100" height="100" style="background-image:image(\'sprites.svg#xywh=40,0,20,20\')"/> </svg>',
true,
true,
'SVG with remote background image using image() (bug 69008)'
- ),
- array(
+ ],
+ [
// As reported by Cure53
'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <a xlink:href="data:text/html;charset=utf-8;base64, PHNjcmlwdD5hbGVydChkb2N1bWVudC5kb21haW4pPC9zY3JpcHQ%2BDQo%3D"> <circle r="400" fill="red"></circle> </a> </svg>',
true,
true,
'SVG with data:text/html link target (firefox only)'
- ),
- array(
+ ],
+ [
'<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [ <!ENTITY lol "lol"> <!ENTITY lol2 "<script>alert('XSSED => '+document.domain);</script>"> ]> <svg xmlns="http://www.w3.org/2000/svg" width="68" height="68" viewBox="-34 -34 68 68" version="1.1"> <circle cx="0" cy="0" r="24" fill="#c8c8c8"/> <text x="0" y="0" fill="black">&lol2;</text> </svg>',
true,
true,
'SVG with encoded script tag in internal entity (reported by Beyond Security)'
- ),
- array(
+ ],
+ [
'<?xml version="1.0"?> <!DOCTYPE svg [ <!ENTITY foo SYSTEM "file:///etc/passwd"> ]> <svg xmlns="http://www.w3.org/2000/svg" version="1.1"> <desc>&foo;</desc> <rect width="300" height="100" style="fill:rgb(0,0,255);stroke-width:1;stroke:rgb(0,0,2)" /> </svg>',
false,
false,
'SVG with external entity'
- ),
+ ],
// Test good, but strange files that we want to allow
- array(
+ [
'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g> <a xlink:href="http://en.wikipedia.org/wiki/Main_Page"> <path transform="translate(0,496)" id="path6706" d="m 112.09375,107.6875 -5.0625,3.625 -4.3125,5.03125 -0.46875,0.5 -4.09375,3.34375 -9.125,5.28125 -8.625,-3.375 z" style="fill:#cccccc;fill-opacity:1;stroke:#6e6e6e;stroke-width:0.69999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;display:inline" /> </a> </g> </svg>',
true,
false,
'SVG with <a> link to a remote site'
- ),
- array(
+ ],
+ [
'<svg> <defs> <filter id="filter6226" x="-0.93243687" width="2.8648737" y="-0.24250539" height="1.4850108"> <feGaussianBlur stdDeviation="3.2344681" id="feGaussianBlur6228" /> </filter> <clipPath id="clipPath2436"> <path d="M 0,0 L 0,0 L 0,0 L 0,0 z" id="path2438" /> </clipPath> </defs> <g clip-path="url(#clipPath2436)" id="g2460"> <text id="text2466"> <tspan>12345</tspan> </text> </g> <path style="fill:#346733;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:bevel;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:1, 1;stroke-dashoffset:0;filter:url(\'#filter6226\');fill-opacity:1;opacity:0.79807692" d="M 236.82371,332.63732 C 236.92217,332.63732 z" id="path5618" /> </svg>',
true,
false,
'SVG with local urls, including filter: in style'
- ),
- );
+ ],
+ ];
// @codingStandardsIgnoreEnd
}
}
public static function providerRfc5869() {
// @codingStandardsIgnoreStart Generic.Files.LineLength
- return array(
+ return [
// A.1
- array( 'sha256',
+ [
+ 'sha256',
'0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b', // ikm
'000102030405060708090a0b0c', // salt
'f0f1f2f3f4f5f6f7f8f9', // context
42, // bytes
'077709362c2e32df0ddc3f0dc47bba6390b6c73bb50f9c3122ec844ad7c2b3e5', // prk
'3cb25f25faacd57a90434f64d0362f2a2d2d0a90cf1a5a4c5db02d56ecc4c5bf34007208d5b887185865' // okm
- ),
+ ],
// A.2
- array( 'sha256',
+ [
+ 'sha256',
'000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f',
'606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf',
'b0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff',
82,
'06a6b88c5853361a06104c9ceb35b45cef760014904671014a193f40c15fc244',
'b11e398dc80327a1c8e7f78c596a49344f012eda2d4efad8a050cc4c19afa97c59045a99cac7827271cb41c65e590e09da3275600c2f09b8367793a9aca3db71cc30c58179ec3e87c14c01d5c1f3434f1d87'
- ),
+ ],
// A.3
- array( 'sha256',
+ [
+ 'sha256',
'0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b', // ikm
'', // salt
'', // context
42, // bytes
'19ef24a32c717b167f33a91d6f648bdf96596776afdb6377ac434c1c293ccb04', // prk
'8da4e775a563c18f715f802a063c5a31b8a11f5c5ee1879ec3454e5f3c738d2d9d201395faa4b61a96c8' // okm
- ),
+ ],
// A.4
- array( 'sha1',
+ [
+ 'sha1',
'0b0b0b0b0b0b0b0b0b0b0b', // ikm
'000102030405060708090a0b0c', // salt
'f0f1f2f3f4f5f6f7f8f9', // context
42, // bytes
'9b6c18c432a7bf8f0e71c8eb88f4b30baa2ba243', // prk
'085a01ea1b10f36933068b56efa5ad81a4f14b822f5b091568a9cdd4f155fda2c22e422478d305f3f896' // okm
- ),
+ ],
// A.5
- array( 'sha1',
+ [
+ 'sha1',
'000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f', // ikm
'606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf', // salt
'b0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff', // context
82, // bytes
'8adae09a2a307059478d309b26c4115a224cfaf6', // prk
'0bd770a74d1160f7c9f12cd5912a06ebff6adcae899d92191fe4305673ba2ffe8fa3f1a4e5ad79f3f334b3b202b2173c486ea37ce3d397ed034c7f9dfeb15c5e927336d0441f4c4300e2cff0d0900b52d3b4' // okm
- ),
- );
+ ],
+ ];
// @codingStandardsIgnoreEnd
}
}
}
/**
+ * Flaky test (T131549).
+ *
+ * @group Broken
* @dataProvider provider_testTimestampedUID
* @covers UIDGenerator::newTimestampedUID128
* @covers UIDGenerator::newTimestampedUID88
public static function provideCheckTitleEncodingData() {
// @codingStandardsIgnoreStart Ignore Generic.Files.LineLength.TooLong
- return array(
- array( "" ),
- array( "United States of America" ), // 7bit ASCII
- array( rawurldecode( "S%C3%A9rie%20t%C3%A9l%C3%A9vis%C3%A9e" ) ),
- array(
+ return [
+ [ "" ],
+ [ "United States of America" ], // 7bit ASCII
+ [ rawurldecode( "S%C3%A9rie%20t%C3%A9l%C3%A9vis%C3%A9e" ) ],
+ [
rawurldecode(
"Acteur%7CAlbert%20Robbins%7CAnglais%7CAnn%20Donahue%7CAnthony%20E.%20Zuiker%7CCarol%20Mendelsohn"
)
- ),
+ ],
// The following two data sets come from bug 36839. They fail if checkTitleEncoding uses a regexp to test for
// valid UTF-8 encoding and the pcre.recursion_limit is low (like, say, 1024). They succeed if checkTitleEncoding
// uses mb_check_encoding for its test.
- array(
+ [
rawurldecode(
"Acteur%7CAlbert%20Robbins%7CAnglais%7CAnn%20Donahue%7CAnthony%20E.%20Zuiker%7CCarol%20Mendelsohn%7C"
. "Catherine%20Willows%7CDavid%20Hodges%7CDavid%20Phillips%7CGil%20Grissom%7CGreg%20Sanders%7CHodges%7C"
. "Sara%20Sidle%7CSofia%20Curtis%7CS%C3%A9rie%20t%C3%A9l%C3%A9vis%C3%A9e%7CWallace%20Langham%7C"
. "Warrick%20Brown%7CWendy%20Simms%7C%C3%89tats-Unis"
),
- ),
- array(
+ ],
+ [
rawurldecode(
"Mod%C3%A8le%3AArrondissements%20homonymes%7CMod%C3%A8le%3ABandeau%20standard%20pour%20page%20d'homonymie%7C"
. "Mod%C3%A8le%3ABatailles%20homonymes%7CMod%C3%A8le%3ACantons%20homonymes%7C"
. "Mod%C3%A8le%3ATitres%20homonymes%7CMod%C3%A8le%3AToponymie%7CMod%C3%A8le%3AUnit%C3%A9s%20homonymes%7C"
. "Mod%C3%A8le%3AVilles%20homonymes%7CMod%C3%A8le%3A%C3%89difices%20religieux%20homonymes"
)
- )
- );
+ ]
+ ];
// @codingStandardsIgnoreEnd
}
} );
QUnit.test( 'getUserInfos', 3, function ( assert ) {
+ mw.config.set( 'wgUserGroups', [ '*', 'user' ] );
+
mw.user.getGroups( function ( groups ) {
assert.deepEqual( groups, [ '*', 'user' ], 'Result' );
} );
this.server.respondWith( /meta=userinfo/, function ( request ) {
request.respond( 200, { 'Content-Type': 'application/json' },
- '{ "query": { "userinfo": { "groups": [ "*", "user" ], "rights": [ "read", "edit", "createtalk" ] } } }'
+ '{ "query": { "userinfo": { "groups": [ "unused" ], "rights": [ "read", "edit", "createtalk" ] } } }'
);
} );