Merge "Factor out byte limit label logic from edit page to utility function"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Wed, 28 Jun 2017 12:31:29 +0000 (12:31 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Wed, 28 Jun 2017 12:31:29 +0000 (12:31 +0000)
314 files changed:
RELEASE-NOTES-1.30
autoload.php
includes/DefaultSettings.php
includes/Defines.php
includes/EventRelayerGroup.php
includes/FileDeleteForm.php
includes/MWNamespace.php
includes/MediaWikiServices.php
includes/PageProps.php
includes/Sanitizer.php
includes/ServiceWiring.php
includes/Setup.php
includes/Title.php
includes/WatchedItemQueryService.php
includes/WatchedItemStore.php
includes/Xml.php
includes/api/ApiAMCreateAccount.php
includes/api/ApiAuthManagerHelper.php
includes/api/ApiChangeAuthenticationData.php
includes/api/ApiCheckToken.php
includes/api/ApiClientLogin.php
includes/api/ApiDelete.php
includes/api/ApiFeedRecentChanges.php
includes/api/ApiHelp.php
includes/api/ApiHelpParamValueMessage.php
includes/api/ApiLinkAccount.php
includes/api/ApiOpenSearch.php
includes/api/ApiQueryAllDeletedRevisions.php
includes/api/ApiQueryAllRevisions.php
includes/api/ApiQueryAuthManagerInfo.php
includes/api/ApiQueryBacklinksprop.php
includes/api/ApiQueryContributors.php
includes/api/ApiQueryDeletedRevisions.php
includes/api/ApiQueryInfo.php
includes/api/ApiQueryPagePropNames.php
includes/api/ApiQueryPagesWithProp.php
includes/api/ApiQueryPrefixSearch.php
includes/api/ApiQueryTokens.php
includes/api/ApiQueryUsers.php
includes/api/ApiRemoveAuthenticationData.php
includes/api/ApiResetPassword.php
includes/api/ApiRevisionDelete.php
includes/api/ApiSerializable.php
includes/api/ApiSetNotificationTimestamp.php
includes/api/ApiStashEdit.php
includes/api/i18n/de.json
includes/api/i18n/fr.json
includes/api/i18n/gl.json
includes/api/i18n/hu.json
includes/api/i18n/it.json
includes/api/i18n/ko.json
includes/api/i18n/lb.json
includes/api/i18n/pl.json
includes/api/i18n/pt.json
includes/api/i18n/qqq.json
includes/api/i18n/ru.json
includes/api/i18n/sv.json
includes/api/i18n/zh-hans.json
includes/api/i18n/zh-hant.json
includes/cache/BacklinkCache.php
includes/changes/EnhancedChangesList.php
includes/config/EtcdConfig.php
includes/db/CloneDatabase.php
includes/debug/logger/LegacyLogger.php
includes/debug/logger/LegacySpi.php
includes/debug/logger/LoggerFactory.php
includes/debug/logger/MonologSpi.php
includes/debug/logger/NullSpi.php
includes/debug/logger/Spi.php
includes/debug/logger/monolog/LegacyFormatter.php
includes/debug/logger/monolog/LegacyHandler.php
includes/debug/logger/monolog/LineFormatter.php
includes/debug/logger/monolog/SyslogHandler.php
includes/debug/logger/monolog/WikiProcessor.php
includes/deferred/SearchUpdate.php
includes/diff/DifferenceEngine.php
includes/exception/MWExceptionRenderer.php
includes/externalstore/ExternalStoreMedium.php
includes/filebackend/FileBackendGroup.php
includes/filebackend/filejournal/DBFileJournal.php
includes/filebackend/lockmanager/LockManagerGroup.php
includes/filerepo/FileBackendDBRepoWrapper.php
includes/filerepo/ForeignDBViaLBRepo.php
includes/filerepo/LocalRepo.php
includes/filerepo/file/LocalFile.php
includes/filerepo/file/UnregisteredLocalFile.php
includes/htmlform/HTMLFormElement.php
includes/htmlform/fields/HTMLUsersMultiselectField.php
includes/installer/DatabaseInstaller.php
includes/installer/Installer.php
includes/installer/i18n/ru.json
includes/jobqueue/JobQueue.php
includes/jobqueue/JobQueueDB.php
includes/jobqueue/JobQueueFederated.php
includes/jobqueue/JobQueueGroup.php
includes/jobqueue/JobQueueMemory.php
includes/jobqueue/JobQueueRedis.php
includes/jobqueue/aggregator/JobQueueAggregator.php
includes/jobqueue/aggregator/JobQueueAggregatorRedis.php
includes/jobqueue/jobs/ActivityUpdateJob.php
includes/jobqueue/jobs/RecentChangesUpdateJob.php
includes/jobqueue/utils/BacklinkJobUtils.php
includes/libs/CSSMin.php
includes/libs/HashRing.php
includes/libs/IP.php
includes/libs/MappedIterator.php
includes/libs/MultiHttpClient.php
includes/libs/ObjectFactory.php
includes/libs/XhprofData.php
includes/libs/eventrelayer/EventRelayer.php
includes/libs/eventrelayer/EventRelayerNull.php
includes/libs/filebackend/FSFileBackend.php
includes/libs/filebackend/FileBackend.php
includes/libs/filebackend/FileBackendMultiWrite.php
includes/libs/filebackend/FileBackendStore.php
includes/libs/filebackend/FileOpBatch.php
includes/libs/filebackend/MemoryFileBackend.php
includes/libs/filebackend/SwiftFileBackend.php
includes/libs/filebackend/filejournal/FileJournal.php
includes/libs/filebackend/fileop/CopyFileOp.php
includes/libs/filebackend/fileop/CreateFileOp.php
includes/libs/filebackend/fileop/DeleteFileOp.php
includes/libs/filebackend/fileop/DescribeFileOp.php
includes/libs/filebackend/fileop/FileOp.php
includes/libs/filebackend/fileop/MoveFileOp.php
includes/libs/filebackend/fileop/NullFileOp.php
includes/libs/filebackend/fileop/StoreFileOp.php
includes/libs/lockmanager/LockManager.php
includes/libs/lockmanager/NullLockManager.php
includes/libs/lockmanager/ScopedLock.php
includes/libs/objectcache/BagOStuff.php
includes/libs/objectcache/ReplicatedBagOStuff.php
includes/libs/objectcache/WANObjectCache.php
includes/libs/objectcache/WANObjectCacheReaper.php
includes/libs/rdbms/TransactionProfiler.php
includes/libs/rdbms/database/Database.php
includes/libs/rdbms/database/DatabaseMysqlBase.php
includes/libs/rdbms/database/DatabaseSqlite.php
includes/libs/rdbms/database/resultwrapper/FakeResultWrapper.php
includes/libs/rdbms/exception/DBTransactionError.php
includes/libs/rdbms/lbfactory/LBFactory.php
includes/libs/rdbms/loadbalancer/ILoadBalancer.php
includes/libs/rdbms/loadbalancer/LoadBalancer.php
includes/libs/redis/RedisConnRef.php
includes/libs/redis/RedisConnectionPool.php
includes/libs/stats/SamplingStatsdClient.php
includes/libs/virtualrest/VirtualRESTServiceClient.php
includes/linkeddata/PageDataRequestHandler.php
includes/logging/LogEventsList.php
includes/logging/LogPager.php
includes/logging/PatrolLogFormatter.php
includes/logging/ProtectLogFormatter.php
includes/logging/RightsLogFormatter.php
includes/page/WikiPage.php
includes/pager/RangeChronologicalPager.php
includes/parser/Parser.php
includes/parser/ParserCache.php
includes/parser/ParserOptions.php
includes/poolcounter/PoolCounterRedis.php
includes/profiler/ProfilerSectionOnly.php
includes/profiler/ProfilerXhprof.php
includes/profiler/SectionProfiler.php
includes/registration/ExtensionProcessor.php
includes/registration/ExtensionRegistry.php
includes/resourceloader/ResourceLoaderJqueryMsgModule.php
includes/search/SearchEngine.php
includes/search/SearchMySQL.php
includes/search/SearchOracle.php
includes/search/SearchSqlite.php
includes/search/SearchSuggestionSet.php
includes/session/MetadataMergeException.php
includes/skins/SkinApi.php
includes/skins/SkinApiTemplate.php
includes/specialpage/SpecialPage.php
includes/specials/SpecialActiveusers.php
includes/specials/SpecialBotPasswords.php
includes/specials/SpecialChangeContentModel.php
includes/specials/SpecialContributions.php
includes/specials/SpecialLog.php
includes/specials/SpecialMovepage.php
includes/specials/SpecialPagesWithProp.php
includes/specials/SpecialRecentchanges.php
includes/specials/SpecialRunJobs.php
includes/specials/SpecialUserrights.php
includes/specials/SpecialVersion.php
includes/specials/pagers/ActiveUsersPager.php
includes/tidy/Balancer.php
includes/upload/UploadBase.php
includes/user/User.php
includes/utils/BatchRowUpdate.php
includes/utils/UIDGenerator.php
includes/utils/ZipDirectoryReader.php
languages/ConverterRule.php
languages/FakeConverter.php
languages/LanguageConverter.php
languages/i18n/ang.json
languages/i18n/be-tarask.json
languages/i18n/bg.json
languages/i18n/bho.json
languages/i18n/bn.json
languages/i18n/bs.json
languages/i18n/ce.json
languages/i18n/ckb.json
languages/i18n/cs.json
languages/i18n/de.json
languages/i18n/en.json
languages/i18n/es.json
languages/i18n/eu.json
languages/i18n/fa.json
languages/i18n/fi.json
languages/i18n/fr.json
languages/i18n/frr.json
languages/i18n/fy.json
languages/i18n/gl.json
languages/i18n/he.json
languages/i18n/hr.json
languages/i18n/ia.json
languages/i18n/it.json
languages/i18n/kbp.json
languages/i18n/ko.json
languages/i18n/lb.json
languages/i18n/lij.json
languages/i18n/lv.json
languages/i18n/mk.json
languages/i18n/mr.json
languages/i18n/my.json
languages/i18n/nan.json
languages/i18n/ne.json
languages/i18n/nl.json
languages/i18n/nn.json
languages/i18n/pl.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/roa-tara.json
languages/i18n/ru.json
languages/i18n/shi.json
languages/i18n/sl.json
languages/i18n/sv.json
languages/i18n/tcy.json
languages/i18n/tl.json
languages/i18n/yi.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
maintenance/CodeCleanerGlobalsPass.inc
maintenance/benchmarks/Benchmarker.php
maintenance/benchmarks/benchmarkJSMinPlus.php [new file with mode: 0644]
maintenance/deleteArchivedFiles.php
maintenance/deleteArchivedRevisions.php
maintenance/eraseArchivedFile.php
maintenance/findMissingFiles.php
maintenance/findOrphanedFiles.php
maintenance/jsduck/eg-iframe.html
maintenance/jsparse.php
maintenance/manageJobs.php
maintenance/refreshFileHeaders.php
maintenance/validateRegistrationFile.php
phpcs.xml
resources/Resources.php
resources/lib/jquery/jquery.migrate.js
resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FilterGroup.js
resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js
resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterMenuOptionWidget.less
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterTagMultiselectWidget.less
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterMenuHeaderWidget.js
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterMenuOptionWidget.js
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterTagMultiselectWidget.js
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FormWrapperWidget.js
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.MenuSelectWidget.js
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.SaveFiltersPopupButtonWidget.js
resources/src/mediawiki.special/mediawiki.special.apisandbox.js
resources/src/mediawiki.special/mediawiki.special.changeslist.legend.js
resources/src/mediawiki/mediawiki.Title.js
resources/src/mediawiki/mediawiki.filewarning.less
tests/parser/ParserTestRunner.php
tests/phpunit/MediaWikiTestCase.php
tests/phpunit/data/resourceloader/script-comment.js [new file with mode: 0644]
tests/phpunit/data/resourceloader/script-nosemi.js [new file with mode: 0644]
tests/phpunit/includes/GlobalFunctions/wfArrayFilterTest.php
tests/phpunit/includes/HtmlTest.php
tests/phpunit/includes/LinkerTest.php
tests/phpunit/includes/MWNamespaceTest.php
tests/phpunit/includes/MediaWikiServicesTest.php
tests/phpunit/includes/Services/ServiceContainerTest.php
tests/phpunit/includes/Services/TestWiring1.php
tests/phpunit/includes/Services/TestWiring2.php
tests/phpunit/includes/TestLogger.php
tests/phpunit/includes/TitleTest.php
tests/phpunit/includes/WatchedItemQueryServiceUnitTest.php
tests/phpunit/includes/WatchedItemStoreUnitTest.php
tests/phpunit/includes/api/ApiPageSetTest.php
tests/phpunit/includes/api/ApiQueryWatchlistIntegrationTest.php
tests/phpunit/includes/api/RandomImageGenerator.php
tests/phpunit/includes/config/ConfigFactoryTest.php
tests/phpunit/includes/content/ContentHandlerTest.php
tests/phpunit/includes/db/DatabaseMysqlBaseTest.php
tests/phpunit/includes/jobqueue/JobTest.php
tests/phpunit/includes/libs/DeferredStringifierTest.php
tests/phpunit/includes/libs/ObjectFactoryTest.php
tests/phpunit/includes/libs/XhprofDataTest.php
tests/phpunit/includes/libs/XmlTypeCheckTest.php
tests/phpunit/includes/libs/objectcache/WANObjectCacheTest.php
tests/phpunit/includes/libs/rdbms/TransactionProfilerTest.php [new file with mode: 0644]
tests/phpunit/includes/parser/ParserOptionsTest.php
tests/phpunit/includes/resourceloader/ResourceLoaderFileModuleTest.php
tests/phpunit/includes/resourceloader/ResourceLoaderModuleTest.php
tests/phpunit/includes/resourceloader/ResourceLoaderTest.php
tests/phpunit/includes/search/SearchEnginePrefixTest.php
tests/phpunit/includes/search/SearchEngineTest.php
tests/phpunit/includes/search/SearchSuggestionSetTest.php
tests/phpunit/includes/site/CachingSiteStoreTest.php
tests/phpunit/includes/specials/SpecialSearchTest.php
tests/phpunit/includes/utils/BatchRowUpdateTest.php
tests/qunit/suites/resources/mediawiki.rcfilters/dm.FiltersViewModel.test.js

index 6bd63d3..5772798 100644 (file)
@@ -105,6 +105,10 @@ changes to languages because of Phabricator reports.
   deprecated. There are no known callers.
 * File::getStreamHeaders() was deprecated.
 * MediaHandler::getStreamHeaders() was deprecated.
+* Title::canTalk() was deprecated, the new Title::canHaveTalkPage() should be
+  used instead.
+* MWNamespace::canTalk() was deprecated, the new MWNamespace::hasTalkNamespace()
+  should be used instead.
 * The ExtractThumbParameters hook (deprecated in 1.21) was removed.
 * The OutputPage::addParserOutputNoText and ::getHeadLinks methods (both
   deprecated in 1.24) were removed.
index 293bf6a..2560bdb 100644 (file)
@@ -192,6 +192,7 @@ $wgAutoloadLocalClasses = [
        'BenchmarkCSSMin' => __DIR__ . '/maintenance/benchmarks/benchmarkCSSMin.php',
        'BenchmarkDeleteTruncate' => __DIR__ . '/maintenance/benchmarks/bench_delete_truncate.php',
        'BenchmarkHooks' => __DIR__ . '/maintenance/benchmarks/benchmarkHooks.php',
+       'BenchmarkJSMinPlus' => __DIR__ . '/maintenance/benchmarks/benchmarkJSMinPlus.php',
        'BenchmarkParse' => __DIR__ . '/maintenance/benchmarks/benchmarkParse.php',
        'BenchmarkPurge' => __DIR__ . '/maintenance/benchmarks/benchmarkPurge.php',
        'BenchmarkTidy' => __DIR__ . '/maintenance/benchmarks/benchmarkTidy.php',
index 00e26d9..852ccc6 100644 (file)
@@ -1439,26 +1439,20 @@ $wgUploadThumbnailRenderHttpCustomDomain = false;
 $wgUseTinyRGBForJPGThumbnails = false;
 
 /**
- * Default parameters for the "<gallery>" tag
- */
-$wgGalleryOptions = [
-       // Default number of images per-row in the gallery. 0 -> Adapt to screensize
-       'imagesPerRow' => 0,
-       // Width of the cells containing images in galleries (in "px")
-       'imageWidth' => 120,
-       // Height of the cells containing images in galleries (in "px")
-       'imageHeight' => 120,
-       // Length to truncate filename to in caption when using "showfilename".
-       // A value of 'true' will truncate the filename to one line using CSS
-       // and will be the behaviour after deprecation.
-       // @deprecated since 1.28
-       'captionLength' => true,
-       // Show the filesize in bytes in categories
-       'showBytes' => true,
-       // Show the dimensions (width x height) in categories
-       'showDimensions' => true,
-       'mode' => 'traditional',
-];
+ * Parameters for the "<gallery>" tag.
+ * Fields are:
+ *   - imagesPerRow:   Default number of images per-row in the gallery. 0 -> Adapt to screensize
+ *   - imageWidth:     Width of the cells containing images in galleries (in "px")
+ *   - imageHeight:    Height of the cells containing images in galleries (in "px")
+ *   - captionLength:  Length to truncate filename to in caption when using "showfilename".
+ *                     A value of 'true' will truncate the filename to one line using CSS
+ *                     and will be the behaviour after deprecation.
+ *                     @deprecated since 1.28
+ *   - showBytes:      Show the filesize in bytes in categories
+ *   - showDimensions: Show the dimensions (width x height) in categories
+ *   - mode:           Gallery mode
+ */
+$wgGalleryOptions = [];
 
 /**
  * Adjust width of upright images when parameter 'upright' is used
index 6bc70ed..8ac84e5 100644 (file)
@@ -267,3 +267,28 @@ define( 'CONTENT_FORMAT_XML', 'application/xml' );
  */
 define( 'SHELL_MAX_ARG_STRLEN', '100000' );
 /**@}*/
+
+/**@{
+ * Schema change migration flags.
+ *
+ * Used as values of a feature flag for an orderly transition from an old
+ * schema to a new schema.
+ *
+ * - MIGRATION_OLD: Only read and write the old schema. The new schema need not
+ *   even exist. This is used from when the patch is merged until the schema
+ *   change is actually applied to the database.
+ * - MIGRATION_WRITE_BOTH: Write both the old and new schema. Read the new
+ *   schema preferentially, falling back to the old. This is used while the
+ *   change is being tested, allowing easy roll-back to the old schema.
+ * - MIGRATION_WRITE_NEW: Write only the new schema. Read the new schema
+ *   preferentially, falling back to the old. This is used while running the
+ *   maintenance script to migrate existing entries in the old schema to the
+ *   new schema.
+ * - MIGRATION_NEW: Only read and write the new schema. The old schema (and the
+ *   feature flag) may now be removed.
+ */
+define( 'MIGRATION_OLD', 0 );
+define( 'MIGRATION_WRITE_BOTH', 1 );
+define( 'MIGRATION_WRITE_NEW', 2 );
+define( 'MIGRATION_NEW', 3 );
+/**@}*/
index 9360693..18b1cd3 100644 (file)
@@ -1,10 +1,28 @@
 <?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
+ */
+
 use MediaWiki\MediaWikiServices;
 
 /**
  * Factory class for spawning EventRelayer objects using configuration
  *
- * @author Aaron Schulz
  * @since 1.27
  */
 class EventRelayerGroup {
index f284d92..e7b4a1f 100644 (file)
@@ -202,7 +202,27 @@ class FileDeleteForm {
                        if ( $deleteStatus->isOK() ) {
                                $status = $file->delete( $reason, $suppress, $user );
                                if ( $status->isOK() ) {
-                                       $status->value = $deleteStatus->value; // log id
+                                       if ( $deleteStatus->value === null ) {
+                                               // No log ID from doDeleteArticleReal(), probably
+                                               // because the page/revision didn't exist, so create
+                                               // one here.
+                                               $logtype = $suppress ? 'suppress' : 'delete';
+                                               $logEntry = new ManualLogEntry( $logtype, 'delete' );
+                                               $logEntry->setPerformer( $user );
+                                               $logEntry->setTarget( clone $title );
+                                               $logEntry->setComment( $reason );
+                                               $logEntry->setTags( $tags );
+                                               $logid = $logEntry->insert();
+                                               $dbw->onTransactionPreCommitOrIdle(
+                                                       function () use ( $dbw, $logEntry, $logid ) {
+                                                               $logEntry->publish( $logid );
+                                                       },
+                                                       __METHOD__
+                                               );
+                                               $status->value = $logid;
+                                       } else {
+                                               $status->value = $deleteStatus->value; // log id
+                                       }
                                        $dbw->endAtomic( __METHOD__ );
                                } else {
                                        // Page deleted but file still there? rollback page delete
index 4c5561f..89cb616 100644 (file)
@@ -278,12 +278,26 @@ class MWNamespace {
        }
 
        /**
-        * Can this namespace ever have a talk namespace?
+        * Does this namespace ever have a talk namespace?
+        *
+        * @deprecated since 1.30, use hasTalkNamespace() instead.
         *
         * @param int $index Namespace index
-        * @return bool
+        * @return bool True if this namespace either is or has a corresponding talk namespace.
         */
        public static function canTalk( $index ) {
+               return self::hasTalkNamespace( $index );
+       }
+
+       /**
+        * Does this namespace ever have a talk namespace?
+        *
+        * @since 1.30
+        *
+        * @param int $index Namespace ID
+        * @return bool True if this namespace either is or has a corresponding talk namespace.
+        */
+       public static function hasTalkNamespace( $index ) {
                return $index >= NS_MAIN;
        }
 
index b63c769..6161ee7 100644 (file)
@@ -377,7 +377,7 @@ class MediaWikiServices extends ServiceContainer {
                parent::__construct();
 
                // Register the given Config object as the bootstrap config service.
-               $this->defineService( 'BootstrapConfig', function() use ( $config ) {
+               $this->defineService( 'BootstrapConfig', function () use ( $config ) {
                        return $config;
                } );
        }
index 382d089..dac756e 100644 (file)
@@ -55,7 +55,7 @@ class PageProps {
                }
                $previousValue = self::$instance;
                self::$instance = $store;
-               return new ScopedCallback( function() use ( $previousValue ) {
+               return new ScopedCallback( function () use ( $previousValue ) {
                        self::$instance = $previousValue;
                } );
        }
index 8920e92..8424432 100644 (file)
@@ -793,7 +793,7 @@ class Sanitizer {
                        }
 
                        # Strip javascript "expression" from stylesheets.
-                       # http://msdn.microsoft.com/workshop/author/dhtml/overview/recalc.asp
+                       # https://msdn.microsoft.com/en-us/library/ms537634.aspx
                        if ( $attribute == 'style' ) {
                                $value = Sanitizer::checkCss( $value );
                        }
index 6afabed..2dfcc42 100644 (file)
@@ -43,7 +43,7 @@ use MediaWiki\Logger\LoggerFactory;
 use MediaWiki\MediaWikiServices;
 
 return [
-       'DBLoadBalancerFactory' => function( MediaWikiServices $services ) {
+       'DBLoadBalancerFactory' => function ( MediaWikiServices $services ) {
                $mainConfig = $services->getMainConfig();
 
                $lbConf = MWLBFactory::applyDefaultConfig(
@@ -56,12 +56,12 @@ return [
                return new $class( $lbConf );
        },
 
-       'DBLoadBalancer' => function( MediaWikiServices $services ) {
+       'DBLoadBalancer' => function ( MediaWikiServices $services ) {
                // just return the default LB from the DBLoadBalancerFactory service
                return $services->getDBLoadBalancerFactory()->getMainLB();
        },
 
-       'SiteStore' => function( MediaWikiServices $services ) {
+       'SiteStore' => function ( MediaWikiServices $services ) {
                $rawSiteStore = new DBSiteStore( $services->getDBLoadBalancer() );
 
                // TODO: replace wfGetCache with a CacheFactory service.
@@ -71,7 +71,7 @@ return [
                return new CachingSiteStore( $rawSiteStore, $cache );
        },
 
-       'SiteLookup' => function( MediaWikiServices $services ) {
+       'SiteLookup' => function ( MediaWikiServices $services ) {
                $cacheFile = $services->getMainConfig()->get( 'SitesCacheFile' );
 
                if ( $cacheFile !== false ) {
@@ -82,7 +82,7 @@ return [
                }
        },
 
-       'ConfigFactory' => function( MediaWikiServices $services ) {
+       'ConfigFactory' => function ( MediaWikiServices $services ) {
                // Use the bootstrap config to initialize the ConfigFactory.
                $registry = $services->getBootstrapConfig()->get( 'ConfigRegistry' );
                $factory = new ConfigFactory();
@@ -93,12 +93,12 @@ return [
                return $factory;
        },
 
-       'MainConfig' => function( MediaWikiServices $services ) {
+       'MainConfig' => function ( MediaWikiServices $services ) {
                // Use the 'main' config from the ConfigFactory service.
                return $services->getConfigFactory()->makeConfig( 'main' );
        },
 
-       'InterwikiLookup' => function( MediaWikiServices $services ) {
+       'InterwikiLookup' => function ( MediaWikiServices $services ) {
                global $wgContLang; // TODO: manage $wgContLang as a service
                $config = $services->getMainConfig();
                return new ClassicInterwikiLookup(
@@ -111,26 +111,26 @@ return [
                );
        },
 
-       'StatsdDataFactory' => function( MediaWikiServices $services ) {
+       'StatsdDataFactory' => function ( MediaWikiServices $services ) {
                return new BufferingStatsdDataFactory(
                        rtrim( $services->getMainConfig()->get( 'StatsdMetricPrefix' ), '.' )
                );
        },
 
-       'EventRelayerGroup' => function( MediaWikiServices $services ) {
+       'EventRelayerGroup' => function ( MediaWikiServices $services ) {
                return new EventRelayerGroup( $services->getMainConfig()->get( 'EventRelayerConfig' ) );
        },
 
-       'SearchEngineFactory' => function( MediaWikiServices $services ) {
+       'SearchEngineFactory' => function ( MediaWikiServices $services ) {
                return new SearchEngineFactory( $services->getSearchEngineConfig() );
        },
 
-       'SearchEngineConfig' => function( MediaWikiServices $services ) {
+       'SearchEngineConfig' => function ( MediaWikiServices $services ) {
                global $wgContLang;
                return new SearchEngineConfig( $services->getMainConfig(), $wgContLang );
        },
 
-       'SkinFactory' => function( MediaWikiServices $services ) {
+       'SkinFactory' => function ( MediaWikiServices $services ) {
                $factory = new SkinFactory();
 
                $names = $services->getMainConfig()->get( 'ValidSkinNames' );
@@ -153,7 +153,7 @@ return [
                return $factory;
        },
 
-       'WatchedItemStore' => function( MediaWikiServices $services ) {
+       'WatchedItemStore' => function ( MediaWikiServices $services ) {
                $store = new WatchedItemStore(
                        $services->getDBLoadBalancer(),
                        new HashBagOStuff( [ 'maxKeys' => 100 ] ),
@@ -163,11 +163,11 @@ return [
                return $store;
        },
 
-       'WatchedItemQueryService' => function( MediaWikiServices $services ) {
+       'WatchedItemQueryService' => function ( MediaWikiServices $services ) {
                return new WatchedItemQueryService( $services->getDBLoadBalancer() );
        },
 
-       'CryptRand' => function( MediaWikiServices $services ) {
+       'CryptRand' => function ( MediaWikiServices $services ) {
                $secretKey = $services->getMainConfig()->get( 'SecretKey' );
                return new CryptRand(
                        [
@@ -178,7 +178,7 @@ return [
                                // for a little more variance
                                'wfWikiID',
                                // If we have a secret key set then throw it into the state as well
-                               function() use ( $secretKey ) {
+                               function () use ( $secretKey ) {
                                        return $secretKey ?: '';
                                }
                        ],
@@ -192,7 +192,7 @@ return [
                );
        },
 
-       'CryptHKDF' => function( MediaWikiServices $services ) {
+       'CryptHKDF' => function ( MediaWikiServices $services ) {
                $config = $services->getMainConfig();
 
                $secret = $config->get( 'HKDFSecret' ) ?: $config->get( 'SecretKey' );
@@ -215,13 +215,13 @@ return [
                );
        },
 
-       'MediaHandlerFactory' => function( MediaWikiServices $services ) {
+       'MediaHandlerFactory' => function ( MediaWikiServices $services ) {
                return new MediaHandlerFactory(
                        $services->getMainConfig()->get( 'MediaHandlers' )
                );
        },
 
-       'MimeAnalyzer' => function( MediaWikiServices $services ) {
+       'MimeAnalyzer' => function ( MediaWikiServices $services ) {
                $logger = LoggerFactory::getInstance( 'Mime' );
                $mainConfig = $services->getMainConfig();
                $params = [
@@ -274,7 +274,7 @@ return [
                return new MimeMagic( $params );
        },
 
-       'ProxyLookup' => function( MediaWikiServices $services ) {
+       'ProxyLookup' => function ( MediaWikiServices $services ) {
                $mainConfig = $services->getMainConfig();
                return new ProxyLookup(
                        $mainConfig->get( 'SquidServers' ),
@@ -282,26 +282,26 @@ return [
                );
        },
 
-       'Parser' => function( MediaWikiServices $services ) {
+       'Parser' => function ( MediaWikiServices $services ) {
                $conf = $services->getMainConfig()->get( 'ParserConf' );
                return ObjectFactory::constructClassInstance( $conf['class'], [ $conf ] );
        },
 
-       'LinkCache' => function( MediaWikiServices $services ) {
+       'LinkCache' => function ( MediaWikiServices $services ) {
                return new LinkCache(
                        $services->getTitleFormatter(),
                        $services->getMainWANObjectCache()
                );
        },
 
-       'LinkRendererFactory' => function( MediaWikiServices $services ) {
+       'LinkRendererFactory' => function ( MediaWikiServices $services ) {
                return new LinkRendererFactory(
                        $services->getTitleFormatter(),
                        $services->getLinkCache()
                );
        },
 
-       'LinkRenderer' => function( MediaWikiServices $services ) {
+       'LinkRenderer' => function ( MediaWikiServices $services ) {
                global $wgUser;
 
                if ( defined( 'MW_NO_SESSION' ) ) {
@@ -311,11 +311,11 @@ return [
                }
        },
 
-       'GenderCache' => function( MediaWikiServices $services ) {
+       'GenderCache' => function ( MediaWikiServices $services ) {
                return new GenderCache();
        },
 
-       '_MediaWikiTitleCodec' => function( MediaWikiServices $services ) {
+       '_MediaWikiTitleCodec' => function ( MediaWikiServices $services ) {
                global $wgContLang;
 
                return new MediaWikiTitleCodec(
@@ -325,15 +325,15 @@ return [
                );
        },
 
-       'TitleFormatter' => function( MediaWikiServices $services ) {
+       'TitleFormatter' => function ( MediaWikiServices $services ) {
                return $services->getService( '_MediaWikiTitleCodec' );
        },
 
-       'TitleParser' => function( MediaWikiServices $services ) {
+       'TitleParser' => function ( MediaWikiServices $services ) {
                return $services->getService( '_MediaWikiTitleCodec' );
        },
 
-       'MainObjectStash' => function( MediaWikiServices $services ) {
+       'MainObjectStash' => function ( MediaWikiServices $services ) {
                $mainConfig = $services->getMainConfig();
 
                $id = $mainConfig->get( 'MainStash' );
@@ -345,7 +345,7 @@ return [
                return \ObjectCache::newFromParams( $mainConfig->get( 'ObjectCaches' )[$id] );
        },
 
-       'MainWANObjectCache' => function( MediaWikiServices $services ) {
+       'MainWANObjectCache' => function ( MediaWikiServices $services ) {
                $mainConfig = $services->getMainConfig();
 
                $id = $mainConfig->get( 'MainWANCache' );
@@ -365,7 +365,7 @@ return [
                return \ObjectCache::newWANCacheFromParams( $params );
        },
 
-       'LocalServerObjectCache' => function( MediaWikiServices $services ) {
+       'LocalServerObjectCache' => function ( MediaWikiServices $services ) {
                $mainConfig = $services->getMainConfig();
 
                if ( function_exists( 'apc_fetch' ) ) {
@@ -388,7 +388,7 @@ return [
                return \ObjectCache::newFromParams( $mainConfig->get( 'ObjectCaches' )[$id] );
        },
 
-       'VirtualRESTServiceClient' => function( MediaWikiServices $services ) {
+       'VirtualRESTServiceClient' => function ( MediaWikiServices $services ) {
                $config = $services->getMainConfig()->get( 'VirtualRestConfig' );
 
                $vrsClient = new VirtualRESTServiceClient( new MultiHttpClient( [] ) );
@@ -406,11 +406,11 @@ return [
                return $vrsClient;
        },
 
-       'ConfiguredReadOnlyMode' => function( MediaWikiServices $services ) {
+       'ConfiguredReadOnlyMode' => function ( MediaWikiServices $services ) {
                return new ConfiguredReadOnlyMode( $services->getMainConfig() );
        },
 
-       'ReadOnlyMode' => function( MediaWikiServices $services ) {
+       'ReadOnlyMode' => function ( MediaWikiServices $services ) {
                return new ReadOnlyMode(
                        $services->getConfiguredReadOnlyMode(),
                        $services->getDBLoadBalancer()
index b10cf23..5795517 100644 (file)
@@ -181,6 +181,20 @@ $wgLockManagers[] = [
        'class' => 'NullLockManager',
 ];
 
+/**
+ * Default parameters for the "<gallery>" tag.
+ * @see DefaultSettings.php for description of the fields.
+ */
+$wgGalleryOptions += [
+       'imagesPerRow' => 0,
+       'imageWidth' => 120,
+       'imageHeight' => 120,
+       'captionLength' => true,
+       'showBytes' => true,
+       'showDimensions' => true,
+       'mode' => 'traditional',
+];
+
 /**
  * Initialise $wgLocalFileRepo from backwards-compatible settings
  */
index c9f09f7..2ebeb0d 100644 (file)
@@ -1020,12 +1020,25 @@ class Title implements LinkTarget {
        }
 
        /**
-        * Could this title have a corresponding talk page?
+        * Can this title have a corresponding talk page?
         *
-        * @return bool
+        * @deprecated since 1.30, use canHaveTalkPage() instead.
+        *
+        * @return bool True if this title either is a talk page or can have a talk page associated.
         */
        public function canTalk() {
-               return MWNamespace::canTalk( $this->mNamespace );
+               return $this->canHaveTalkPage();
+       }
+
+       /**
+        * Can this title have a corresponding talk page?
+        *
+        * @see MWNamespace::hasTalkNamespace
+        *
+        * @return bool True if this title either is a talk page or can have a talk page associated.
+        */
+       public function canHaveTalkPage() {
+               return MWNamespace::hasTalkNamespace( $this->mNamespace );
        }
 
        /**
index 22d5439..1fafb24 100644 (file)
@@ -313,7 +313,7 @@ class WatchedItemQueryService {
                $allFields = get_object_vars( $row );
                $rcKeys = array_filter(
                        array_keys( $allFields ),
-                       function( $key ) {
+                       function ( $key ) {
                                return substr( $key, 0, 3 ) === 'rc_';
                        }
                );
index 06f93c6..69a9df2 100644 (file)
@@ -104,7 +104,7 @@ class WatchedItemStore implements StatsdAwareInterface {
                }
                $previousValue = $this->deferredUpdatesAddCallableUpdateCallback;
                $this->deferredUpdatesAddCallableUpdateCallback = $callback;
-               return new ScopedCallback( function() use ( $previousValue ) {
+               return new ScopedCallback( function () use ( $previousValue ) {
                        $this->deferredUpdatesAddCallableUpdateCallback = $previousValue;
                } );
        }
@@ -127,7 +127,7 @@ class WatchedItemStore implements StatsdAwareInterface {
                }
                $previousValue = $this->revisionGetTimestampFromIdCallback;
                $this->revisionGetTimestampFromIdCallback = $callback;
-               return new ScopedCallback( function() use ( $previousValue ) {
+               return new ScopedCallback( function () use ( $previousValue ) {
                        $this->revisionGetTimestampFromIdCallback = $previousValue;
                } );
        }
@@ -821,7 +821,7 @@ class WatchedItemStore implements StatsdAwareInterface {
                // Calls DeferredUpdates::addCallableUpdate in normal operation
                call_user_func(
                        $this->deferredUpdatesAddCallableUpdateCallback,
-                       function() use ( $job ) {
+                       function () use ( $job ) {
                                $job->run();
                        }
                );
index 8289b81..d016433 100644 (file)
@@ -826,4 +826,3 @@ class Xml {
                return $s;
        }
 }
-
index b8bd511..72a36d7 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Copyright © 2016 Brad Jorsch <bjorsch@wikimedia.org>
+ * Copyright © 2016 Wikimedia Foundation and contributors
  *
  * 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
index 8862cc7..3a9fb73 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Copyright © 2016 Brad Jorsch <bjorsch@wikimedia.org>
+ * Copyright © 2016 Wikimedia Foundation and contributors
  *
  * 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
index 35c4e56..d4a26ad 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Copyright © 2016 Brad Jorsch <bjorsch@wikimedia.org>
+ * Copyright © 2016 Wikimedia Foundation and contributors
  *
  * 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
index 480915e..e1be8ef 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Created on Jan 29, 2015
  *
- * Copyright © 2015 Brad Jorsch bjorsch@wikimedia.org
+ * Copyright © 2015 Wikimedia Foundation and contributors
  *
  * 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
index 0d512b3..65dea93 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Copyright © 2016 Brad Jorsch <bjorsch@wikimedia.org>
+ * Copyright © 2016 Wikimedia Foundation and contributors
  *
  * 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
index 99065c4..72bbe00 100644 (file)
@@ -44,11 +44,13 @@ class ApiDelete extends ApiBase {
                $params = $this->extractRequestParams();
 
                $pageObj = $this->getTitleOrPageId( $params, 'fromdbmaster' );
-               if ( !$pageObj->exists() ) {
+               $titleObj = $pageObj->getTitle();
+               if ( !$pageObj->exists() &&
+                       !( $titleObj->getNamespace() == NS_FILE && self::canDeleteFile( $pageObj->getFile() ) )
+               ) {
                        $this->dieWithError( 'apierror-missingtitle' );
                }
 
-               $titleObj = $pageObj->getTitle();
                $reason = $params['reason'];
                $user = $this->getUser();
 
@@ -128,6 +130,14 @@ class ApiDelete extends ApiBase {
                return $page->doDeleteArticleReal( $reason, false, 0, true, $error, $user, $tags );
        }
 
+       /**
+        * @param File $file
+        * @return bool
+        */
+       protected static function canDeleteFile( File $file ) {
+               return $file->exists() && $file->isLocal() && !$file->getRedirected();
+       }
+
        /**
         * @param Page $page Object to work on
         * @param User $user User doing the action
@@ -143,7 +153,7 @@ class ApiDelete extends ApiBase {
                $title = $page->getTitle();
 
                $file = $page->getFile();
-               if ( !$file->exists() || !$file->isLocal() || $file->getRedirected() ) {
+               if ( !self::canDeleteFile( $file ) ) {
                        return self::delete( $page, $user, $reason, $tags );
                }
 
index 0b04c8c..2a80dd5 100644 (file)
@@ -63,8 +63,8 @@ class ApiFeedRecentChanges extends ApiBase {
 
                $feedFormat = $this->params['feedformat'];
                $specialClass = $this->params['target'] !== null
-                       ? 'SpecialRecentchangeslinked'
-                       : 'SpecialRecentchanges';
+                       ? SpecialRecentChangesLinked::class
+                       : SpecialRecentChanges::class;
 
                $formatter = $this->getFeedObject( $feedFormat, $specialClass );
 
@@ -90,12 +90,12 @@ class ApiFeedRecentChanges extends ApiBase {
         * Return a ChannelFeed object.
         *
         * @param string $feedFormat Feed's format (either 'rss' or 'atom')
-        * @param string $specialClass Relevant special page name (either 'SpecialRecentchanges' or
-        *     'SpecialRecentchangeslinked')
+        * @param string $specialClass Relevant special page name (either 'SpecialRecentChanges' or
+        *     'SpecialRecentChangesLinked')
         * @return ChannelFeed
         */
        public function getFeedObject( $feedFormat, $specialClass ) {
-               if ( $specialClass === 'SpecialRecentchangeslinked' ) {
+               if ( $specialClass === SpecialRecentChangesLinked::class ) {
                        $title = Title::newFromText( $this->params['target'] );
                        if ( !$title ) {
                                $this->dieWithError( [ 'apierror-invalidtitle', wfEscapeWikiText( $this->params['target'] ) ] );
index 3fd29ae..12e778b 100644 (file)
@@ -4,7 +4,7 @@
  *
  * Created on Aug 29, 2014
  *
- * Copyright © 2014 Brad Jorsch <bjorsch@wikimedia.org>
+ * Copyright © 2014 Wikimedia Foundation and contributors
  *
  * 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
index ebe4e26..162b7cd 100644 (file)
@@ -4,7 +4,7 @@
  *
  * Created on Dec 22, 2014
  *
- * Copyright © 2014 Brad Jorsch <bjorsch@wikimedia.org>
+ * Copyright © 2014 Wikimedia Foundation and contributors
  *
  * 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
index f5c5dee..9553f29 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Copyright © 2016 Brad Jorsch <bjorsch@wikimedia.org>
+ * Copyright © 2016 Wikimedia Foundation and contributors
  *
  * 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
index ff65d0e..419fd14 100644 (file)
@@ -4,7 +4,7 @@
  *
  * Copyright © 2006 Yuri Astrakhan "<Firstname><Lastname>@gmail.com"
  * Copyright © 2008 Brion Vibber <brion@wikimedia.org>
- * Copyright © 2014 Brad Jorsch <bjorsch@wikimedia.org>
+ * Copyright © 2014 Wikimedia Foundation and contributors
  *
  * 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
@@ -232,7 +232,7 @@ class ApiOpenSearch extends ApiBase {
                                break;
 
                        case 'xml':
-                               // http://msdn.microsoft.com/en-us/library/cc891508%28v=vs.85%29.aspx
+                               // https://msdn.microsoft.com/en-us/library/cc891508(v=vs.85).aspx
                                $imageKeys = [
                                        'source' => true,
                                        'alt' => true,
index 5682cc2..b22bb1f 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Created on Oct 3, 2014
  *
- * Copyright © 2014 Brad Jorsch "bjorsch@wikimedia.org"
+ * Copyright © 2014 Wikimedia Foundation and contributors
  *
  * Heavily based on ApiQueryDeletedrevs,
  * Copyright © 2007 Roan Kattouw "<Firstname>.<Lastname>@gmail.com"
index 20746c9..8f7d6eb 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Created on Sep 27, 2015
  *
- * Copyright © 2015 Brad Jorsch "bjorsch@wikimedia.org"
+ * Copyright © 2015 Wikimedia Foundation and contributors
  *
  * 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
index c775942..d23d898 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Copyright © 2016 Brad Jorsch <bjorsch@wikimedia.org>
+ * Copyright © 2016 Wikimedia Foundation and contributors
  *
  * 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
index 00cbcd9..1db15f8 100644 (file)
@@ -4,7 +4,7 @@
  *
  * Created on Aug 19, 2014
  *
- * Copyright © 2014 Brad Jorsch <bjorsch@wikimedia.org>
+ * Copyright © 2014 Wikimedia Foundation and contributors
  *
  * 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
index 693d954..f802d9e 100644 (file)
@@ -4,7 +4,7 @@
  *
  * Created on Nov 14, 2013
  *
- * Copyright © 2013 Brad Jorsch
+ * Copyright © 2013 Wikimedia Foundation and contributors
  *
  * 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
index 90fd695..8e4752e 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Created on Oct 3, 2014
  *
- * Copyright © 2014 Brad Jorsch "bjorsch@wikimedia.org"
+ * Copyright © 2014 Wikimedia Foundation and contributors
  *
  * Heavily based on ApiQueryDeletedrevs,
  * Copyright © 2007 Roan Kattouw "<Firstname>.<Lastname>@gmail.com"
index c2cdfe4..6b8f98c 100644 (file)
@@ -766,7 +766,7 @@ class ApiQueryInfo extends ApiQueryBase {
                if ( $this->fld_watched ) {
                        foreach ( $timestamps as $namespaceId => $dbKeys ) {
                                $this->watched[$namespaceId] = array_map(
-                                       function( $x ) {
+                                       function ( $x ) {
                                                return $x !== false;
                                        },
                                        $dbKeys
@@ -847,7 +847,7 @@ class ApiQueryInfo extends ApiQueryBase {
                                $timestamps[$row->page_namespace][$row->page_title] = $revTimestamp - $age;
                        }
                        $titlesWithThresholds = array_map(
-                               function( LinkTarget $target ) use ( $timestamps ) {
+                               function ( LinkTarget $target ) use ( $timestamps ) {
                                        return [
                                                $target, $timestamps[$target->getNamespace()][$target->getDBkey()]
                                        ];
@@ -860,7 +860,7 @@ class ApiQueryInfo extends ApiQueryBase {
                        $titlesWithThresholds = array_merge(
                                $titlesWithThresholds,
                                array_map(
-                                       function( LinkTarget $target ) {
+                                       function ( LinkTarget $target ) {
                                                return [ $target, null ];
                                        },
                                        $this->missing
index ff97668..2d56983 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Created on January 21, 2013
  *
- * Copyright © 2013 Brad Jorsch <bjorsch@wikimedia.org>
+ * Copyright © 2013 Wikimedia Foundation and contributors
  *
  * 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
@@ -21,7 +21,6 @@
  *
  * @file
  * @since 1.21
- * @author Brad Jorsch
  */
 
 /**
index e90356d..97f79b6 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Created on December 31, 2012
  *
- * Copyright © 2012 Brad Jorsch <bjorsch@wikimedia.org>
+ * Copyright © 2012 Wikimedia Foundation and contributors
  *
  * 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
@@ -21,7 +21,6 @@
  *
  * @file
  * @since 1.21
- * @author Brad Jorsch
  */
 
 /**
index 5606f3c..2fbc518 100644 (file)
@@ -54,7 +54,7 @@ class ApiQueryPrefixSearch extends ApiQueryGeneratorBase {
                $titles = $searchEngine->extractTitles( $searchEngine->completionSearchWithVariants( $search ) );
 
                if ( $resultPageSet ) {
-                       $resultPageSet->setRedirectMergePolicy( function( array $current, array $new ) {
+                       $resultPageSet->setRedirectMergePolicy( function ( array $current, array $new ) {
                                if ( !isset( $current['index'] ) || $new['index'] < $current['index'] ) {
                                        $current['index'] = $new['index'];
                                }
index 85205c8..0e46fd0 100644 (file)
@@ -4,7 +4,7 @@
  *
  * Created on August 8, 2014
  *
- * Copyright © 2014 Brad Jorsch bjorsch@wikimedia.org
+ * Copyright © 2014 Wikimedia Foundation and contributors
  *
  * 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
index a5d06c8..5b094cd 100644 (file)
@@ -214,7 +214,7 @@ class ApiQueryUsers extends ApiQueryBase {
                                }
 
                                if ( isset( $this->prop['groupmemberships'] ) ) {
-                                       $data[$key]['groupmemberships'] = array_map( function( $ugm ) {
+                                       $data[$key]['groupmemberships'] = array_map( function ( $ugm ) {
                                                return [
                                                        'group' => $ugm->getGroup(),
                                                        'expiry' => ApiResult::formatExpiry( $ugm->getExpiry() ),
index 661b50c..e18484b 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Copyright © 2016 Brad Jorsch <bjorsch@wikimedia.org>
+ * Copyright © 2016 Wikimedia Foundation and contributors
  *
  * 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
index a4b51b5..7783826 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Copyright © 2016 Brad Jorsch <bjorsch@wikimedia.org>
+ * Copyright © 2016 Wikimedia Foundation and contributors
  *
  * 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
index 4580aa2..9d71a7d 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Created on Jun 25, 2013
  *
- * Copyright © 2013 Brad Jorsch <bjorsch@wikimedia.org>
+ * Copyright © 2013 Wikimedia Foundation and contributors
  *
  * 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
index 70e93a6..a41f655 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Created on Feb 25, 2015
  *
- * Copyright © 2015 Brad Jorsch "bjorsch@wikimedia.org"
+ * Copyright © 2015 Wikimedia Foundation and contributors
  *
  * 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
index 1fc8fc2..663416e 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Created on Jun 18, 2012
  *
- * Copyright © 2012 Brad Jorsch
+ * Copyright © 2012 Wikimedia Foundation and contributors
  *
  * 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
index 37ee3e7..c7a00c6 100644 (file)
@@ -16,7 +16,6 @@
  * http://www.gnu.org/copyleft/gpl.html
  *
  * @file
- * @author Aaron Schulz
  */
 
 use MediaWiki\Logger\LoggerFactory;
index e9fe852..02b2872 100644 (file)
        "apihelp-query+linkshere-paramvalue-prop-title": "Titel jeder Seite.",
        "apihelp-query+linkshere-param-limit": "Wie viel zurückgegeben werden soll.",
        "apihelp-query+linkshere-example-simple": "Holt eine Liste von Seiten, die auf [[Main Page]] verlinken.",
+       "apihelp-query+logevents-summary": "Ruft Ereignisse von Logbüchern ab.",
        "apihelp-query+logevents-param-prop": "Zurückzugebende Eigenschaften:",
        "apihelp-query+logevents-paramvalue-prop-ids": "Ergänzt die Kennung des Logbuchereignisses.",
        "apihelp-query+logevents-paramvalue-prop-title": "Ergänzt den Titel der Seite für das Logbuchereignis.",
        "apihelp-query+logevents-paramvalue-prop-type": "Ergänzt den Typ des Logbuchereignisses.",
        "apihelp-query+logevents-paramvalue-prop-user": "Ergänzt den verantwortlichen Benutzer für das Logbuchereignis.",
        "apihelp-query+logevents-paramvalue-prop-comment": "Ergänzt den Kommentar des Logbuchereignisses.",
+       "apihelp-query+logevents-paramvalue-prop-tags": "Listet Markierungen für das Logbuchereignis auf.",
+       "apihelp-query+logevents-param-start": "Der Zeitstempel, bei dem die Aufzählung beginnen soll.",
+       "apihelp-query+logevents-param-end": "Der Zeitstempel, bei dem die Aufzählung enden soll.",
+       "apihelp-query+logevents-param-prefix": "Filtert Einträge, die mit diesem Präfix beginnen.",
+       "apihelp-query+logevents-param-limit": "Wie viele Ereigniseinträge insgesamt zurückgegeben werden sollen.",
        "apihelp-query+logevents-example-simple": "Listet die letzten Logbuch-Ereignisse auf.",
        "apihelp-query+pageswithprop-paramvalue-prop-ids": "Fügt die Seitenkennung hinzu.",
        "apihelp-query+pageswithprop-param-limit": "Die maximale Anzahl zurückzugebender Seiten.",
        "apihelp-query+prefixsearch-param-profile": "Zu verwendendes Suchprofil.",
        "apihelp-query+protectedtitles-param-limit": "Wie viele Seiten insgesamt zurückgegeben werden sollen.",
        "apihelp-query+protectedtitles-param-prop": "Zurückzugebende Eigenschaften:",
+       "apihelp-query+protectedtitles-paramvalue-prop-level": "Ergänzt den Schutzstatus.",
+       "apihelp-query+protectedtitles-example-simple": "Listet geschützte Titel auf.",
        "apihelp-query+querypage-param-limit": "Anzahl der zurückzugebenden Ergebnisse.",
        "apihelp-query+recentchanges-summary": "Listet die letzten Änderungen auf.",
        "apihelp-query+recentchanges-param-user": "Listet nur Änderungen von diesem Benutzer auf.",
        "api-help-title": "MediaWiki-API-Hilfe",
        "api-help-lead": "Dies ist eine automatisch generierte MediaWiki-API-Dokumentationsseite.\n\nDokumentation und Beispiele: https://www.mediawiki.org/wiki/API/de",
        "api-help-main-header": "Hauptmodul",
+       "api-help-undocumented-module": "Keine Dokumentation für das Modul „$1“.",
        "api-help-flag-deprecated": "Dieses Modul ist veraltet.",
        "api-help-flag-internal": "<strong>Dieses Modul ist intern oder instabil.</strong> Seine Operationen werden ohne Kenntnisnahme geändert.",
        "api-help-flag-readrights": "Dieses Modul erfordert Leserechte.",
        "apierror-invalid-file-key": "Kein gültiger Dateischlüssel.",
        "apierror-invalidsection": "Der Parameter <var>section</var> muss eine gültige Abschnittskennung oder <kbd>new</kbd> sein.",
        "apierror-invaliduserid": "Die Benutzerkennung <var>$1</var> ist nicht gültig.",
+       "apierror-nosuchsection": "Es gibt keinen Abschnitt $1.",
        "apierror-nosuchuserid": "Es gibt keinen Benutzer mit der Kennung $1.",
        "apierror-pagelang-disabled": "Das Ändern der Sprache von Seiten ist auf diesem Wiki nicht erlaubt.",
        "apierror-protect-invalidaction": "Ungültiger Schutztyp „$1“.",
index bf0f8e5..8eda106 100644 (file)
                        "Yasten",
                        "Trial",
                        "Pols12",
-                       "The RedBurn"
+                       "The RedBurn",
+                       "Umherirrender"
                ]
        },
-       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|Documentation]]\n* [[mw:Special:MyLanguage/API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Liste de diffusion]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Annonces de l’API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Bogues et demandes]\n</div>\n<strong>État :</strong> Toutes les fonctionnalités affichées sur cette page devraient fonctionner, mais l’API est encore en cours de développement et peut changer à tout moment. Inscrivez-vous à [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ la liste de diffusion mediawiki-api-announce] pour être informé des mises à jour.\n\n<strong>Requêtes erronées :</strong> Si des requêtes erronées sont envoyées à l’API, un entête HTTP sera renvoyé avec la clé « MediaWiki-API-Error ». La valeur de cet entête et le code d’erreur renvoyé prendront la même valeur. Pour plus d’information, voyez [[mw:Special:MyLanguage/API:Errors_and_warnings|API: Errors and warnings]].\n\n<strong>Test :</strong> Pour faciliter le test des requêtes de l’API, voyez [[Special:ApiSandbox]].",
        "apihelp-main-param-action": "Quelle action effectuer.",
        "apihelp-main-param-format": "Le format de sortie.",
        "apihelp-main-param-maxlag": "La latence maximale peut être utilisée quand MédiaWiki est installé sur un cluster de base de données répliqué. Pour éviter des actions provoquant un supplément de latence de réplication de site, ce paramètre peut faire attendre le client jusqu’à ce que la latence de réplication soit inférieure à une valeur spécifiée. En cas de latence excessive, le code d’erreur <samp>maxlag</samp> est renvoyé avec un message tel que <samp>Attente de $host : $lag secondes de délai</samp>.<br />Voyez [[mw:Special:MyLanguage/Manual:Maxlag_parameter|Manuel: Maxlag parameter]] pour plus d’information.",
@@ -46,7 +46,7 @@
        "apihelp-main-param-errorformat": "Format à utiliser pour la sortie du texte d’avertissement et d’erreur.\n; plaintext: Wikitexte avec balises HTML supprimées et les entités remplacées.\n; wikitext: wikitexte non analysé.\n; html: HTML.\n; raw: Clé de message et paramètres.\n; none: Aucune sortie de texte, uniquement les codes erreur.\n; bc: Format utilisé avant MédiaWiki 1.29. <var>errorlang</var> et <var>errorsuselocal</var> sont ignorés.",
        "apihelp-main-param-errorlang": "Langue à utiliser pour les avertissements et les erreurs. <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> avec <kbd>siprop=languages</kbd> renvoyant une liste de codes de langue, ou spécifier <kbd>content</kbd> pour utiliser la langue du contenu de ce wiki, ou spécifier <kbd>uselang</kbd> pour utiliser la même valeur que le paramètre <var>uselang</var>.",
        "apihelp-main-param-errorsuselocal": "S’il est fourni, les textes d’erreur utiliseront des messages adaptés à la langue dans l’espace de noms {{ns:MediaWiki}}.",
-       "apihelp-block-description": "Bloquer un utilisateur.",
+       "apihelp-block-summary": "Bloquer un utilisateur.",
        "apihelp-block-param-user": "Nom d’utilisateur, adresse IP ou plage d’adresses IP que vous voulez bloquer. Ne peut pas être utilisé en même temps que <var>$1userid</var>",
        "apihelp-block-param-userid": "ID d'utilisateur à bloquer. Ne peut pas être utilisé avec <var>$1user</var>.",
        "apihelp-block-param-expiry": "Durée d’expiration. Peut être relative (par ex. <kbd>5 months</kbd> ou <kbd>2 weeks</kbd>) ou absolue (par ex. <kbd>2014-09-18T12:34:56Z</kbd>). Si elle est mise à <kbd>infinite</kbd>, <kbd>indefinite</kbd> ou <kbd>never</kbd>, le blocage n’expirera jamais.",
        "apihelp-block-param-tags": "Modifier les balises à appliquer à l’entrée du journal des blocages.",
        "apihelp-block-example-ip-simple": "Bloquer l’adresse IP <kbd>192.0.2.5</kbd> pour trois jours avec le motif <kbd>Premier avertissement</kbd>.",
        "apihelp-block-example-user-complex": "Bloquer indéfiniment l’utilisateur <kbd>Vandal</kbd> avec le motif <kbd>Vandalism</kbd>, et empêcher la création de nouveau compte et l'envoi de courriel.",
-       "apihelp-changeauthenticationdata-description": "Modifier les données d’authentification pour l’utilisateur actuel.",
+       "apihelp-changeauthenticationdata-summary": "Modifier les données d’authentification pour l’utilisateur actuel.",
        "apihelp-changeauthenticationdata-example-password": "Tentative de modification du mot de passe de l’utilisateur actuel en <kbd>ExempleMotDePasse</kbd>.",
-       "apihelp-checktoken-description": "Vérifier la validité d'un jeton de <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
+       "apihelp-checktoken-summary": "Vérifier la validité d'un jeton de <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
        "apihelp-checktoken-param-type": "Type de jeton testé",
        "apihelp-checktoken-param-token": "Jeton à tester.",
        "apihelp-checktoken-param-maxtokenage": "Temps maximum autorisé pour l'utilisation du jeton, en secondes",
        "apihelp-checktoken-example-simple": "Tester la validité d'un jeton de <kbd>csrf</kbd>.",
-       "apihelp-clearhasmsg-description": "Efface le drapeau <code>hasmsg</code> pour l’utilisateur courant.",
+       "apihelp-clearhasmsg-summary": "Efface le drapeau <code>hasmsg</code> pour l’utilisateur courant.",
        "apihelp-clearhasmsg-example-1": "Effacer le drapeau <code>hasmsg</code> pour l’utilisateur courant",
-       "apihelp-clientlogin-description": "Se connecter au wiki en utilisant le flux interactif.",
+       "apihelp-clientlogin-summary": "Se connecter au wiki en utilisant le flux interactif.",
        "apihelp-clientlogin-example-login": "Commencer le processus de connexion au wiki en tant qu’utilisateur <kbd>Exemple</kbd> avec le mot de passe <kbd>ExempleMotDePasse</kbd>.",
        "apihelp-clientlogin-example-login2": "Continuer la connexion après une réponse de l’<samp>IHM</samp> pour l’authentification à deux facteurs, en fournissant un <var>OATHToken</var> valant <kbd>987654</kbd>.",
-       "apihelp-compare-description": "Obtenir la différence entre 2 pages.\n\nVous devez passer un numéro de révision, un titre de page, ou un ID de page, à la fois pour « from » et « to ».",
        "apihelp-compare-param-fromtitle": "Premier titre à comparer.",
        "apihelp-compare-param-fromid": "ID de la première page à comparer.",
        "apihelp-compare-param-fromrev": "Première révision à comparer.",
        "apihelp-compare-paramvalue-prop-parsedcomment": "Le commentaire analysé des révisions 'depuis' et 'vers'.",
        "apihelp-compare-paramvalue-prop-size": "La taille des révisions 'depuis' et 'vers'.",
        "apihelp-compare-example-1": "Créer une différence entre les révisions 1 et 2",
-       "apihelp-createaccount-description": "Créer un nouveau compte utilisateur.",
+       "apihelp-createaccount-summary": "Créer un nouveau compte utilisateur.",
        "apihelp-createaccount-param-preservestate": "Si <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> a retourné true pour <samp>hasprimarypreservedstate</samp>, les demandes marquées comme <samp>primary-required</samp> doivent être omises. Si elle a retourné une valeur non vide pour <samp>preservedusername</samp>, ce nom d'utilisateur doit être utilisé pour le paramètre <var>username</var>.",
        "apihelp-createaccount-example-create": "Commencer le processus de création d’un utilisateur <kbd>Exemple</kbd> avec le mot de passe <kbd>ExempleMotDePasse</kbd>.",
        "apihelp-createaccount-param-name": "Nom d’utilisateur.",
        "apihelp-createaccount-param-language": "Code de langue à mettre par défaut pour l’utilisateur (facultatif, par défaut langue du contenu).",
        "apihelp-createaccount-example-pass": "Créer l’utilisateur <kbd>testuser</kbd> avec le mot de passe <kbd>test123</kbd>.",
        "apihelp-createaccount-example-mail": "Créer l’utilisateur <kbd>testmailuser</kbd> et envoyer par courriel un mot de passe généré aléatoirement.",
-       "apihelp-cspreport-description": "Utilisé par les navigateurs pour signaler les violations de la politique de confidentialité du contenu. Ce module ne devrait jamais être utilisé, sauf quand il est utilisé automatiquement par un navigateur web compatible avec CSP.",
+       "apihelp-cspreport-summary": "Utilisé par les navigateurs pour signaler les violations de la politique de confidentialité du contenu. Ce module ne devrait jamais être utilisé, sauf quand il est utilisé automatiquement par un navigateur web compatible avec CSP.",
        "apihelp-cspreport-param-reportonly": "Marquer comme étant un rapport d’une politique de surveillance, et non une politique exigée",
        "apihelp-cspreport-param-source": "Ce qui a généré l’entête CSP qui a déclenché ce rapport",
-       "apihelp-delete-description": "Supprimer une page.",
+       "apihelp-delete-summary": "Supprimer une page.",
        "apihelp-delete-param-title": "Titre de la page que vous voulez supprimer. Impossible à utiliser avec <var>$1pageid</var>.",
        "apihelp-delete-param-pageid": "ID de la page que vous voulez supprimer. Impossible à utiliser avec <var>$1title</var>.",
        "apihelp-delete-param-reason": "Motif de suppression. Si non défini, un motif généré automatiquement sera utilisé.",
        "apihelp-delete-param-oldimage": "Le nom de l’ancienne image à supprimer tel que fourni par [[Special:ApiHelp/query+imageinfo|action=query&prop=imageinfo&iiprop=archivename]].",
        "apihelp-delete-example-simple": "Supprimer <kbd>Main Page</kbd>.",
        "apihelp-delete-example-reason": "Supprimer <kbd>Main Page</kbd> avec le motif <kbd>Preparing for move</kbd>.",
-       "apihelp-disabled-description": "Ce module a été désactivé.",
-       "apihelp-edit-description": "Créer et modifier les pages.",
+       "apihelp-disabled-summary": "Ce module a été désactivé.",
+       "apihelp-edit-summary": "Créer et modifier les pages.",
        "apihelp-edit-param-title": "Titre de la page que vous voulez modifier. Impossible de l’utiliser avec <var>$1pageid</var>.",
        "apihelp-edit-param-pageid": "ID de la page que vous voulez modifier. Impossible à utiliser avec <var>$1title</var>.",
        "apihelp-edit-param-section": "Numéro de section. <kbd>0</kbd> pour la section de tête, <kbd>new</kbd> pour une nouvelle section.",
        "apihelp-edit-example-edit": "Modifier une page",
        "apihelp-edit-example-prepend": "Préfixer une page par <kbd>_&#95;NOTOC_&#95;</kbd>.",
        "apihelp-edit-example-undo": "Annuler les révisions 13579 à 13585 avec résumé automatique.",
-       "apihelp-emailuser-description": "Envoyer un courriel à un utilisateur.",
+       "apihelp-emailuser-summary": "Envoyer un courriel à un utilisateur.",
        "apihelp-emailuser-param-target": "Utilisateur à qui envoyer le courriel.",
        "apihelp-emailuser-param-subject": "Entête du sujet.",
        "apihelp-emailuser-param-text": "Corps du courriel.",
        "apihelp-emailuser-param-ccme": "M’envoyer une copie de ce courriel.",
        "apihelp-emailuser-example-email": "Envoyer un courriel à l’utilisateur <kbd>WikiSysop</kbd> avec le texte <kbd>Content</kbd>.",
-       "apihelp-expandtemplates-description": "Développe tous les modèles avec du wikitexte.",
+       "apihelp-expandtemplates-summary": "Développe tous les modèles avec du wikitexte.",
        "apihelp-expandtemplates-param-title": "Titre de la page.",
        "apihelp-expandtemplates-param-text": "Wikitexte à convertir.",
        "apihelp-expandtemplates-param-revid": "ID de révision, pour <nowiki>{{REVISIONID}}</nowiki> et les variables semblables.",
        "apihelp-expandtemplates-param-includecomments": "S’il faut inclure les commentaires HTML dans la sortie.",
        "apihelp-expandtemplates-param-generatexml": "Générer l’arbre d’analyse XML (remplacé par $1prop=parsetree).",
        "apihelp-expandtemplates-example-simple": "Développe le wikitexte <kbd><nowiki>{{Project:Sandbox}}</nowiki></kbd>.",
-       "apihelp-feedcontributions-description": "Renvoie le fil des contributions d’un utilisateur.",
+       "apihelp-feedcontributions-summary": "Renvoie le fil des contributions d’un utilisateur.",
        "apihelp-feedcontributions-param-feedformat": "Le format du flux.",
        "apihelp-feedcontributions-param-user": "Pour quels utilisateurs récupérer les contributions.",
        "apihelp-feedcontributions-param-namespace": "Par quels espaces de nom filtrer les contributions.",
        "apihelp-feedcontributions-param-hideminor": "Masquer les modifications mineures.",
        "apihelp-feedcontributions-param-showsizediff": "Afficher la différence de taille entre les révisions.",
        "apihelp-feedcontributions-example-simple": "Renvoyer les contributions de l'utilisateur <kbd>Exemple</kbd>.",
-       "apihelp-feedrecentchanges-description": "Renvoie un fil de modifications récentes.",
+       "apihelp-feedrecentchanges-summary": "Renvoie un fil de modifications récentes.",
        "apihelp-feedrecentchanges-param-feedformat": "Le format du flux.",
        "apihelp-feedrecentchanges-param-namespace": "Espace de noms auquel limiter les résultats.",
        "apihelp-feedrecentchanges-param-invert": "Tous les espaces de noms sauf celui sélectionné.",
        "apihelp-feedrecentchanges-param-categories_any": "Afficher plutôt uniquement les modifications sur les pages dans n’importe laquelle de ces catégories.",
        "apihelp-feedrecentchanges-example-simple": "Afficher les modifications récentes",
        "apihelp-feedrecentchanges-example-30days": "Afficher les modifications récentes sur 30 jours",
-       "apihelp-feedwatchlist-description": "Renvoie un flux de liste de suivi.",
+       "apihelp-feedwatchlist-summary": "Renvoie un flux de liste de suivi.",
        "apihelp-feedwatchlist-param-feedformat": "Le format du flux.",
        "apihelp-feedwatchlist-param-hours": "Lister les pages modifiées lors de ce nombre d’heures depuis maintenant.",
        "apihelp-feedwatchlist-param-linktosections": "Lier directement vers les sections modifées si possible.",
        "apihelp-feedwatchlist-example-default": "Afficher le flux de la liste de suivi",
        "apihelp-feedwatchlist-example-all6hrs": "Afficher toutes les modifications sur les pages suivies dans les dernières 6 heures",
-       "apihelp-filerevert-description": "Rétablir un fichier dans une ancienne version.",
+       "apihelp-filerevert-summary": "Rétablir un fichier dans une ancienne version.",
        "apihelp-filerevert-param-filename": "Nom de fichier cible, sans le préfixe File:.",
        "apihelp-filerevert-param-comment": "Téléverser le commentaire.",
        "apihelp-filerevert-param-archivename": "Nom d’archive de la révision à rétablir.",
        "apihelp-filerevert-example-revert": "Rétablir <kbd>Wiki.png</kbd> dans la version du <kbd>2011-03-05T15:27:40Z</kbd>.",
-       "apihelp-help-description": "Afficher l’aide pour les modules spécifiés.",
+       "apihelp-help-summary": "Afficher l’aide pour les modules spécifiés.",
        "apihelp-help-param-modules": "Modules pour lesquels afficher l’aide (valeurs des paramètres <var>action</var> et <var>format</var>, ou <kbd>main</kbd>). Les sous-modules peuvent être spécifiés avec un <kbd>+</kbd>.",
        "apihelp-help-param-submodules": "Inclure l’aide pour les sous-modules du module nommé.",
        "apihelp-help-param-recursivesubmodules": "Inclure l’aide pour les sous-modules de façon récursive.",
        "apihelp-help-example-recursive": "Toute l’aide sur une page.",
        "apihelp-help-example-help": "Aide pour le module d’aide lui-même.",
        "apihelp-help-example-query": "Aide pour deux sous-modules de recherche.",
-       "apihelp-imagerotate-description": "Faire pivoter une ou plusieurs images.",
+       "apihelp-imagerotate-summary": "Faire pivoter une ou plusieurs images.",
        "apihelp-imagerotate-param-rotation": "Degrés de rotation de l’image dans le sens des aiguilles d’une montre.",
        "apihelp-imagerotate-param-tags": "Balises à appliquer à l’entrée dans le journal de téléversement.",
        "apihelp-imagerotate-example-simple": "Faire pivoter <kbd>File:Example.png</kbd> de <kbd>90</kbd> degrés.",
        "apihelp-imagerotate-example-generator": "Faire pivoter toutes les images de <kbd>Category:Flip</kbd> de <kbd>180</kbd> degrés.",
-       "apihelp-import-description": "Importer une page depuis un autre wiki, ou depuis un fichier XML.\n\nNoter que le POST HTTP doit être effectué comme un import de fichier (c’est-à-dire en utilisant multipart/form-data) lors de l’envoi d’un fichier pour le paramètre <var>xml</var>.",
        "apihelp-import-param-summary": "Résumé de l’importation de l’entrée de journal.",
        "apihelp-import-param-xml": "Fichier XML téléversé.",
        "apihelp-import-param-interwikisource": "Pour les importations interwiki : wiki depuis lequel importer.",
        "apihelp-import-param-rootpage": "Importer comme une sous-page de cette page. Impossible à utiliser avec <var>$1namespace</var>.",
        "apihelp-import-param-tags": "Modifier les balises à appliquer à l'entrée du journal d'importation et à la version zéro des pages importées.",
        "apihelp-import-example-import": "Importer [[meta:Help:ParserFunctions]] vers l’espace de noms 100 avec tout l’historique.",
-       "apihelp-linkaccount-description": "Lier un compte d’un fournisseur tiers à l’utilisateur actuel.",
+       "apihelp-linkaccount-summary": "Lier un compte d’un fournisseur tiers à l’utilisateur actuel.",
        "apihelp-linkaccount-example-link": "Commencer le processus de liaison d’un compte depuis <kbd>Exemple</kbd>.",
-       "apihelp-login-description": "Se connecter et obtenir les témoins d’authentification.\n\nCette action ne devrait être utilisée qu’en lien avec [[Special:BotPasswords]] ; l’utiliser pour la connexion du compte principal est désuet et peut échouer sans avertissement. Pour se connecter sans problème au compte principal, utiliser <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
-       "apihelp-login-description-nobotpasswords": "Se connecter et obtenir les témoins d’authentification.\n\nCette action est désuète et peut échouer sans prévenir. Pour se connecter sans problème, utiliser <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
+       "apihelp-login-summary": "Reconnecte et récupère les témoins (cookies) d'authentification.",
        "apihelp-login-param-name": "Nom d’utilisateur.",
        "apihelp-login-param-password": "Mot de passe.",
        "apihelp-login-param-domain": "Domaine (facultatif).",
        "apihelp-login-param-token": "Jeton de connexion obtenu à la première requête.",
        "apihelp-login-example-gettoken": "Récupérer un jeton de connexion",
        "apihelp-login-example-login": "Se connecter",
-       "apihelp-logout-description": "Se déconnecter et effacer les données de session.",
+       "apihelp-logout-summary": "Se déconnecter et effacer les données de session.",
        "apihelp-logout-example-logout": "Déconnecter l’utilisateur actuel.",
-       "apihelp-managetags-description": "Effectuer des tâches de gestion relatives à la modification des balises.",
+       "apihelp-managetags-summary": "Effectuer des tâches de gestion relatives à la modification des balises.",
        "apihelp-managetags-param-operation": "Quelle opération effectuer :\n;create:Créer une nouvelle balise de modification pour un usage manuel.\n;delete:Supprimer une balise de modification de la base de données, y compris la suppression de la marque de toutes les révisions, entrées de modification récente et entrées de journal dans lesquelles elle serait utilisée.\n;activate:Activer une balise de modification, permettant aux utilisateurs de l’appliquer manuellement.\n;deactivate:Désactiver une balise de modification, empêchant les utilisateurs de l’appliquer manuellement.",
        "apihelp-managetags-param-tag": "Balise à créer, supprimer, activer ou désactiver. Pour la création de balise, elle ne doit pas exister. Pour la suppression de balise, elle doit exister. Pour l’activation de balise, elle doit exister et ne pas être utilisée par une extension. Pour la désactivation de balise, elle doit être actuellement active et définie manuellement.",
        "apihelp-managetags-param-reason": "Un motif facultatif pour créer, supprimer, activer ou désactiver la balise.",
        "apihelp-managetags-example-delete": "Supprimer la balise <kbd>vandlaism</kbd> avec le motif <kbd>Misspelt</kbd>",
        "apihelp-managetags-example-activate": "Activer une balise nommée <kbd>spam</kbd> avec le motif <kbd>For use in edit patrolling</kbd>",
        "apihelp-managetags-example-deactivate": "Désactiver une balise nommée <kbd>spam</kbd> avec le motif <kbd>No longer required</kbd>",
-       "apihelp-mergehistory-description": "Fusionner les historiques des pages.",
+       "apihelp-mergehistory-summary": "Fusionner les historiques des pages.",
        "apihelp-mergehistory-param-from": "Titre de la page depuis laquelle l’historique sera fusionné. Impossible à utiliser avec <var>$1fromid</var>.",
        "apihelp-mergehistory-param-fromid": "ID de la page depuis laquelle l’historique sera fusionné. Impossible à utiliser avec <var>$1from</var>.",
        "apihelp-mergehistory-param-to": "Titre de la page vers laquelle l’historique sera fusionné. Impossible à utiliser avec <var>$1toid</var>.",
        "apihelp-mergehistory-param-reason": "Raison pour fusionner l’historique.",
        "apihelp-mergehistory-example-merge": "Fusionner l’historique complet de  <kbd>AnciennePage</kbd> dans <kbd>NouvellePage</kbd>.",
        "apihelp-mergehistory-example-merge-timestamp": "Fusionner les révisions de la page <kbd>AnciennePage</kbd> jusqu’au <kbd>2015-12-31T04:37:41Z</kbd> dans <kbd>NouvellePage</kbd>.",
-       "apihelp-move-description": "Déplacer une page.",
+       "apihelp-move-summary": "Déplacer une page.",
        "apihelp-move-param-from": "Titre de la page à renommer. Impossible de l’utiliser avec <var>$1fromid</var>.",
        "apihelp-move-param-fromid": "ID de la page à renommer. Impossible à utiliser avec <var>$1from</var>.",
        "apihelp-move-param-to": "Nouveau titre de la page.",
        "apihelp-move-param-ignorewarnings": "Ignorer tous les avertissements.",
        "apihelp-move-param-tags": "Modifier les balises à appliquer à l'entrée du journal des renommages et à la version zéro de la page de destination.",
        "apihelp-move-example-move": "Renommer <kbd>Badtitle</kbd> en <kbd>Goodtitle</kbd> sans garder de redirection.",
-       "apihelp-opensearch-description": "Rechercher dans le wiki en utilisant le protocole OpenSearch.",
+       "apihelp-opensearch-summary": "Rechercher dans le wiki en utilisant le protocole OpenSearch.",
        "apihelp-opensearch-param-search": "Chaîne de caractères cherchée.",
        "apihelp-opensearch-param-limit": "Nombre maximal de résultats à renvoyer.",
        "apihelp-opensearch-param-namespace": "Espaces de nom à rechercher.",
        "apihelp-opensearch-param-format": "Le format de sortie.",
        "apihelp-opensearch-param-warningsaserror": "Si des avertissements apparaissent avec <kbd>format=json</kbd>, renvoyer une erreur d’API au lieu de les ignorer.",
        "apihelp-opensearch-example-te": "Trouver les pages commençant par <kbd>Te</kbd>.",
-       "apihelp-options-description": "Modifier les préférences de l’utilisateur courant.\n\nSeules les options enregistrées dans le cœur ou dans l’une des extensions installées, ou les options avec des clés préfixées par <code>userjs-</code> (devant être utilisées dans les scripts utilisateur), peuvent être définies.",
+       "apihelp-options-summary": "Modifier les préférences de l'utilisateur courant.",
        "apihelp-options-param-reset": "Réinitialise les préférences avec les valeurs par défaut du site.",
        "apihelp-options-param-resetkinds": "Liste des types d’option à réinitialiser quand l’option <var>$1reset</var> est définie.",
        "apihelp-options-param-change": "Liste des modifications, au format nom=valeur (par ex. skin=vector). Si aucune valeur n’est fournie (pas même un signe égal), par ex., nomoption|autreoption|…, l’option sera réinitialisée à sa valeur par défaut. Pour toute valeur passée contenant une barre verticale (<kbd>|</kbd>), utiliser le [[Special:ApiHelp/main#main/datatypes|séparateur alternatif de valeur multiple]] pour que l'opération soit correcte.",
        "apihelp-options-example-reset": "Réinitialiser toutes les préférences",
        "apihelp-options-example-change": "Modifier les préférences <kbd>skin</kbd> et <kbd>hideminor</kbd>.",
        "apihelp-options-example-complex": "Réinitialiser toutes les préférences, puis définir <kbd>skin</kbd> et <kbd>nickname</kbd>.",
-       "apihelp-paraminfo-description": "Obtenir des informations sur les modules de l’API.",
+       "apihelp-paraminfo-summary": "Obtenir des informations sur les modules de l’API.",
        "apihelp-paraminfo-param-modules": "Liste des noms de module (valeurs des paramètres <var>action</var> et <var>format</var>, ou <kbd>main</kbd>). Peut spécifier des sous-modules avec un <kbd>+</kbd>, ou tous les sous-modules avec <kbd>+*</kbd>, ou tous les sous-modules récursivement avec <kbd>+**</kbd>.",
        "apihelp-paraminfo-param-helpformat": "Format des chaînes d’aide.",
        "apihelp-paraminfo-param-querymodules": "Liste des noms des modules de requête (valeur des paramètres <var>prop</var>, <var>meta</var> ou <var>list</var>). Utiliser <kbd>$1modules=query+foo</kbd> au lieu de <kbd>$1querymodules=foo</kbd>.",
        "apihelp-paraminfo-param-formatmodules": "Liste des noms de module de mise en forme (valeur du paramètre <var>format</var>). Utiliser plutôt <var>$1modules</var>.",
        "apihelp-paraminfo-example-1": "Afficher les informations pour <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd>, <kbd>[[Special:ApiHelp/jsonfm|format=jsonfm]]</kbd>, <kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd> et <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd>.",
        "apihelp-paraminfo-example-2": "Afficher les informations pour tous les sous-modules de <kbd>[[Special:ApiHelp/query|action=query]]</kbd>.",
-       "apihelp-parse-description": "Analyse le contenu et renvoie le résultat de l’analyseur.\n\nVoyez les différents modules prop de <kbd>[[Special:ApiHelp/query|action=query]]</kbd> pour avoir de l’information sur la version actuelle d’une page.\n\nIl y a plusieurs moyens de spécifier le texte à analyser :\n# Spécifier une page ou une révision, en utilisant <var>$1page</var>, <var>$1pageid</var> ou <var>$1oldid</var>.\n# Spécifier explicitement un contenu, en utilisant <var>$1text</var>, <var>$1title</var> et <var>$1contentmodel</var>\n# Spécifier uniquement un résumé à analyser. <var>$1prop</var> doit recevoir une valeur vide.",
        "apihelp-parse-param-title": "Titre de la page à laquelle appartient le texte. Si omis, <var>$1contentmodel</var> doit être spécifié, et [[API]] sera utilisé comme titre.",
        "apihelp-parse-param-text": "Texte à analyser. utiliser <var>$1title</var> ou <var>$1contentmodel</var> pour contrôler le modèle de contenu.",
        "apihelp-parse-param-summary": "Résumé à analyser.",
        "apihelp-parse-example-text": "Analyser le wikitexte.",
        "apihelp-parse-example-texttitle": "Analyser du wikitexte, en spécifiant le titre de la page.",
        "apihelp-parse-example-summary": "Analyser un résumé.",
-       "apihelp-patrol-description": "Patrouiller une page ou une révision.",
+       "apihelp-patrol-summary": "Patrouiller une page ou une révision.",
        "apihelp-patrol-param-rcid": "ID de modification récente à patrouiller.",
        "apihelp-patrol-param-revid": "ID de révision à patrouiller.",
        "apihelp-patrol-param-tags": "Modifier les balises à appliquer à l’entrée dans le journal de surveillance.",
        "apihelp-patrol-example-rcid": "Patrouiller une modification récente",
        "apihelp-patrol-example-revid": "Patrouiller une révision",
-       "apihelp-protect-description": "Modifier le niveau de protection d’une page.",
+       "apihelp-protect-summary": "Modifier le niveau de protection d’une page.",
        "apihelp-protect-param-title": "Titre de la page à (dé)protéger. Impossible à utiliser avec $1pageid.",
        "apihelp-protect-param-pageid": "ID de la page à (dé)protéger. Impossible à utiliser avec $1title.",
        "apihelp-protect-param-protections": "Liste des niveaux de protection, au format <kbd>action=niveau</kbd> (par exemple  <kbd>edit=sysop</kbd>). Un niveau de <kbd>tout</kbd>, indique que tout le monde est autorisé à faire l'action, c'est à dire aucune restriction.\n\n<strong>NOTE :<strong> Toutes les actions non listées auront leur restrictions supprimées.",
        "apihelp-protect-example-protect": "Protéger une page",
        "apihelp-protect-example-unprotect": "Enlever la protection d’une page en mettant les restrictions à <kbd>all</kbd> (c'est à dire tout le monde est autorisé à faire l'action).",
        "apihelp-protect-example-unprotect2": "Enlever la protection de la page en ne mettant aucune restriction",
-       "apihelp-purge-description": "Vider le cache des titres fournis.",
+       "apihelp-purge-summary": "Vider le cache des titres fournis.",
        "apihelp-purge-param-forcelinkupdate": "Mettre à jour les tables de liens.",
        "apihelp-purge-param-forcerecursivelinkupdate": "Mettre à jour la table des liens, et mettre à jour les tables de liens pour toute page qui utilise cette page comme modèle",
        "apihelp-purge-example-simple": "Purger les pages <kbd>Main Page</kbd> et <kbd>API</kbd>.",
        "apihelp-purge-example-generator": "Purger les 10 premières pages de l’espace de noms principal",
-       "apihelp-query-description": "Extraire des données de et sur MediaWiki.\n\nToutes les modifications de données devront d’abord utiliser une requête pour obtenir un jeton, afin d’éviter les abus de la part de sites malveillants.",
        "apihelp-query-param-prop": "Quelles propriétés obtenir pour les pages demandées.",
        "apihelp-query-param-list": "Quelles listes obtenir.",
        "apihelp-query-param-meta": "Quelles métadonnées obtenir.",
        "apihelp-query-param-rawcontinue": "Renvoyer les données <samp>query-continue</samp> brutes pour continuer.",
        "apihelp-query-example-revisions": "Récupérer [[Special:ApiHelp/query+siteinfo|l’info du site]] et [[Special:ApiHelp/query+revisions|les révisions]] de <kbd>Main Page</kbd>.",
        "apihelp-query-example-allpages": "Récupérer les révisions des pages commençant par <kbd>API/</kbd>.",
-       "apihelp-query+allcategories-description": "Énumérer toutes les catégories.",
+       "apihelp-query+allcategories-summary": "Énumérer toutes les catégories.",
        "apihelp-query+allcategories-param-from": "La catégorie depuis laquelle démarrer l’énumération.",
        "apihelp-query+allcategories-param-to": "La catégorie à laquelle terminer l’énumération.",
        "apihelp-query+allcategories-param-prefix": "Rechercher tous les titres de catégorie qui commencent avec cette valeur.",
        "apihelp-query+allcategories-paramvalue-prop-hidden": "Marque les catégories qui sont masquées avec <code>_&#95;HIDDENCAT_&#95;</code>.",
        "apihelp-query+allcategories-example-size": "Lister les catégories avec l’information sur le nombre de pages dans chacune",
        "apihelp-query+allcategories-example-generator": "Récupérer l’information sur la page de catégorie elle-même pour les catégories commençant par <kbd>List</kbd>.",
-       "apihelp-query+alldeletedrevisions-description": "Lister toutes les révisions supprimées par un utilisateur ou dans un espace de noms.",
+       "apihelp-query+alldeletedrevisions-summary": "Lister toutes les révisions supprimées par un utilisateur ou dans un espace de noms.",
        "apihelp-query+alldeletedrevisions-paraminfo-useronly": "Utilisable uniquement avec <var>$3user</var>.",
        "apihelp-query+alldeletedrevisions-paraminfo-nonuseronly": "Impossible à utiliser avec <var>$3user</var>.",
        "apihelp-query+alldeletedrevisions-param-start": "L’horodatage auquel démarrer l’énumération.",
        "apihelp-query+alldeletedrevisions-param-generatetitles": "Utilisé comme générateur, générer des titres plutôt que des IDs de révision.",
        "apihelp-query+alldeletedrevisions-example-user": "Lister les 50 dernières contributions supprimées par l'utilisateur <kbd>Example</kbd>.",
        "apihelp-query+alldeletedrevisions-example-ns-main": "Lister les 50 premières révisions supprimées dans l’espace de noms principal.",
-       "apihelp-query+allfileusages-description": "Lister toutes les utilisations de fichiers, y compris ceux n’existant pas.",
+       "apihelp-query+allfileusages-summary": "Lister toutes les utilisations de fichiers, y compris ceux n’existant pas.",
        "apihelp-query+allfileusages-param-from": "Le titre du fichier depuis lequel commencer l’énumération.",
        "apihelp-query+allfileusages-param-to": "Le titre du fichier auquel arrêter l’énumération.",
        "apihelp-query+allfileusages-param-prefix": "Rechercher tous les fichiers dont le titre commence par cette valeur.",
        "apihelp-query+allfileusages-example-unique": "Lister les titres de fichier uniques.",
        "apihelp-query+allfileusages-example-unique-generator": "Obtient tous les titres de fichier, en marquant les manquants.",
        "apihelp-query+allfileusages-example-generator": "Obtient les pages contenant les fichiers.",
-       "apihelp-query+allimages-description": "Énumérer toutes les images séquentiellement.",
+       "apihelp-query+allimages-summary": "Énumérer toutes les images séquentiellement.",
        "apihelp-query+allimages-param-sort": "Propriété par laquelle trier.",
        "apihelp-query+allimages-param-dir": "L'ordre dans laquel lister.",
        "apihelp-query+allimages-param-from": "Le titre de l’image depuis laquelle démarrer l’énumération. Ne peut être utilisé qu’avec $1sort=name.",
        "apihelp-query+allimages-example-recent": "Afficher une liste de fichiers récemment téléversés, semblable à [[Special:NewFiles]].",
        "apihelp-query+allimages-example-mimetypes": "Afficher une liste de fichiers avec le type MIME <kbd>image/png</kbd> ou <kbd>image/gif</kbd>",
        "apihelp-query+allimages-example-generator": "Afficher l’information sur 4 fichiers commençant par la lettre <kbd>T</kbd>.",
-       "apihelp-query+alllinks-description": "Énumérer tous les liens pointant vers un espace de noms donné.",
+       "apihelp-query+alllinks-summary": "Énumérer tous les liens pointant vers un espace de noms donné.",
        "apihelp-query+alllinks-param-from": "Le titre du lien auquel démarrer l’énumération.",
        "apihelp-query+alllinks-param-to": "Le titre du lien auquel arrêter l’énumération.",
        "apihelp-query+alllinks-param-prefix": "Rechercher tous les titres liés commençant par cette valeur.",
        "apihelp-query+alllinks-example-unique": "Lister les titres liés uniques",
        "apihelp-query+alllinks-example-unique-generator": "Obtient tous les titres liés, en marquant les manquants",
        "apihelp-query+alllinks-example-generator": "Obtient les pages contenant les liens",
-       "apihelp-query+allmessages-description": "Renvoyer les messages depuis ce site.",
+       "apihelp-query+allmessages-summary": "Renvoyer les messages depuis ce site.",
        "apihelp-query+allmessages-param-messages": "Quels messages sortir. <kbd>*</kbd> (par défaut) signifie tous les messages.",
        "apihelp-query+allmessages-param-prop": "Quelles propriétés obtenir.",
        "apihelp-query+allmessages-param-enableparser": "Positionner pour activer l’analyseur, traitera en avance le wikitexte du message (substitution des mots magiques, gestion des modèles, etc.).",
        "apihelp-query+allmessages-param-prefix": "Renvoyer les messages avec ce préfixe.",
        "apihelp-query+allmessages-example-ipb": "Afficher les messages commençant par <kbd>ipb-</kbd>.",
        "apihelp-query+allmessages-example-de": "Afficher les messages <kbd>august</kbd> et <kbd>mainpage</kbd> en allemand.",
-       "apihelp-query+allpages-description": "Énumérer toutes les pages séquentiellement dans un espace de noms donné.",
+       "apihelp-query+allpages-summary": "Énumérer toutes les pages séquentiellement dans un espace de noms donné.",
        "apihelp-query+allpages-param-from": "Le titre de la page depuis lequel commencer l’énumération.",
        "apihelp-query+allpages-param-to": "Le titre de la page auquel stopper l’énumération.",
        "apihelp-query+allpages-param-prefix": "Rechercher tous les titres de page qui commencent par cette valeur.",
        "apihelp-query+allpages-example-B": "Afficher une liste des pages commençant par la lettre <kbd>B</kbd>.",
        "apihelp-query+allpages-example-generator": "Afficher l’information sur 4 pages commençant par la lettre <kbd>T</kbd>.",
        "apihelp-query+allpages-example-generator-revisions": "Afficher le contenu des 2 premières pages hors redirections commençant par <kbd>Re</kbd>.",
-       "apihelp-query+allredirects-description": "Lister toutes les redirections vers un espace de noms.",
+       "apihelp-query+allredirects-summary": "Lister toutes les redirections vers un espace de noms.",
        "apihelp-query+allredirects-param-from": "Le titre de la redirection auquel démarrer l’énumération.",
        "apihelp-query+allredirects-param-to": "Le titre de la redirection auquel arrêter l’énumération.",
        "apihelp-query+allredirects-param-prefix": "Rechercher toutes les pages cible commençant par cette valeur.",
        "apihelp-query+allredirects-example-unique": "Lister les pages cible unique",
        "apihelp-query+allredirects-example-unique-generator": "Obtient toutes les pages cible, en marquant les manquantes",
        "apihelp-query+allredirects-example-generator": "Obtient les pages contenant les redirections",
-       "apihelp-query+allrevisions-description": "Lister toutes les révisions.",
+       "apihelp-query+allrevisions-summary": "Lister toutes les révisions.",
        "apihelp-query+allrevisions-param-start": "L’horodatage auquel démarrer l’énumération.",
        "apihelp-query+allrevisions-param-end": "L’horodatage auquel arrêter l’énumération.",
        "apihelp-query+allrevisions-param-user": "Lister uniquement les révisions faites par cet utilisateur.",
        "apihelp-query+allrevisions-param-generatetitles": "Utilisé comme générateur, génère des titres plutôt que des IDs de révision.",
        "apihelp-query+allrevisions-example-user": "Lister les 50 dernières contributions de l’utilisateur <kbd>Example</kbd>.",
        "apihelp-query+allrevisions-example-ns-main": "Lister les 50 premières révisions dans l’espace de noms principal.",
-       "apihelp-query+mystashedfiles-description": "Obtenir une liste des fichiers dans le cache de téléversement de l’utilisateur actuel",
+       "apihelp-query+mystashedfiles-summary": "Obtenir une liste des fichiers dans le cache de téléversement de l’utilisateur actuel",
        "apihelp-query+mystashedfiles-param-prop": "Quelles propriétés récupérer pour les fichiers.",
        "apihelp-query+mystashedfiles-paramvalue-prop-size": "Récupérer la taille du fichier et les dimensions de l’image.",
        "apihelp-query+mystashedfiles-paramvalue-prop-type": "Récupérer le type MIME du fichier et son type de média.",
        "apihelp-query+mystashedfiles-param-limit": "Combien de fichiers obtenir.",
        "apihelp-query+mystashedfiles-example-simple": "Obtenir la clé du fichier, sa taille, et la taille en pixels des fichiers dans le cache de téléversement de l’utilisateur actuel.",
-       "apihelp-query+alltransclusions-description": "Lister toutes les transclusions (pages intégrées en utilisant &#123;&#123;x&#125;&#125;), y compris les inexistantes.",
+       "apihelp-query+alltransclusions-summary": "Lister toutes les transclusions (pages intégrées en utilisant &#123;&#123;x&#125;&#125;), y compris les inexistantes.",
        "apihelp-query+alltransclusions-param-from": "Le titre de la transclusion depuis lequel commencer l’énumération.",
        "apihelp-query+alltransclusions-param-to": "Le titre de la transclusion auquel arrêter l’énumération.",
        "apihelp-query+alltransclusions-param-prefix": "Rechercher tous les titres inclus qui commencent par cette valeur.",
        "apihelp-query+alltransclusions-example-unique": "Lister les titres inclus uniques",
        "apihelp-query+alltransclusions-example-unique-generator": "Obtient tous les titres inclus, en marquant les manquants.",
        "apihelp-query+alltransclusions-example-generator": "Obtient les pages contenant les transclusions.",
-       "apihelp-query+allusers-description": "Énumérer tous les utilisateurs enregistrés.",
+       "apihelp-query+allusers-summary": "Énumérer tous les utilisateurs enregistrés.",
        "apihelp-query+allusers-param-from": "Le nom d’utilisateur auquel démarrer l’énumération.",
        "apihelp-query+allusers-param-to": "Le nom d’utilisateur auquel stopper l’énumération.",
        "apihelp-query+allusers-param-prefix": "Rechercher tous les utilisateurs commençant par cette valeur.",
        "apihelp-query+allusers-param-activeusers": "Lister uniquement les utilisateurs actifs durant {{PLURAL:$1|le dernier jour|les $1 derniers jours}}.",
        "apihelp-query+allusers-param-attachedwiki": "Avec <kbd>$1prop=centralids</kbd>, indiquer aussi si l’utilisateur est attaché avec le wiki identifié par cet ID.",
        "apihelp-query+allusers-example-Y": "Lister les utilisateurs en commençant à <kbd>Y</kbd>.",
-       "apihelp-query+authmanagerinfo-description": "Récupérer les informations concernant l’état d’authentification actuel.",
+       "apihelp-query+authmanagerinfo-summary": "Récupérer les informations concernant l’état d’authentification actuel.",
        "apihelp-query+authmanagerinfo-param-securitysensitiveoperation": "Tester si l’état d’authentification actuel de l’utilisateur est suffisant pour l’opération spécifiée comme sensible du point de vue sécurité.",
        "apihelp-query+authmanagerinfo-param-requestsfor": "Récupérer les informations sur les requêtes d’authentification nécessaires pour l’action d’authentification spécifiée.",
        "apihelp-query+authmanagerinfo-example-login": "Récupérer les requêtes qui peuvent être utilisées en commençant une connexion.",
        "apihelp-query+authmanagerinfo-example-login-merged": "Récupérer les requêtes qui peuvent être utilisées au début de la connexion, avec les champs de formulaire intégrés.",
        "apihelp-query+authmanagerinfo-example-securitysensitiveoperation": "Tester si l’authentification est suffisante pour l’action <kbd>foo</kbd>.",
-       "apihelp-query+backlinks-description": "Trouver toutes les pages qui ont un lien vers la page donnée.",
+       "apihelp-query+backlinks-summary": "Trouver toutes les pages qui ont un lien vers la page donnée.",
        "apihelp-query+backlinks-param-title": "Titre à rechercher. Impossible à utiliser avec <var>$1pageid</var>.",
        "apihelp-query+backlinks-param-pageid": "ID de la page à chercher. Impossible à utiliser avec <var>$1title</var>.",
        "apihelp-query+backlinks-param-namespace": "L’espace de noms à énumérer.",
        "apihelp-query+backlinks-param-redirect": "Si le lien vers une page est une redirection, trouver également toutes les pages qui ont un lien vers cette redirection. La limite maximale est divisée par deux.",
        "apihelp-query+backlinks-example-simple": "Afficher les liens vers <kbd>Main page</kbd>.",
        "apihelp-query+backlinks-example-generator": "Obtenir des informations sur les pages ayant un lien vers <kbd>Main page</kbd>.",
-       "apihelp-query+blocks-description": "Lister tous les utilisateurs et les adresses IP bloqués.",
+       "apihelp-query+blocks-summary": "Lister tous les utilisateurs et les adresses IP bloqués.",
        "apihelp-query+blocks-param-start": "L’horodatage auquel démarrer l’énumération.",
        "apihelp-query+blocks-param-end": "L’horodatage auquel arrêter l’énumération.",
        "apihelp-query+blocks-param-ids": "Liste des IDs de bloc à lister (facultatif).",
        "apihelp-query+blocks-param-show": "Afficher uniquement les éléments correspondant à ces critères.\nPar exemple, pour voir uniquement les blocages infinis sur les adresses IP, mettre <kbd>$1show=ip|!temp</kbd>.",
        "apihelp-query+blocks-example-simple": "Lister les blocages",
        "apihelp-query+blocks-example-users": "Lister les blocages des utilisateurs <kbd>Alice</kbd> et <kbd>Bob</kbd>.",
-       "apihelp-query+categories-description": "Lister toutes les catégories auxquelles les pages appartiennent.",
+       "apihelp-query+categories-summary": "Lister toutes les catégories auxquelles les pages appartiennent.",
        "apihelp-query+categories-param-prop": "Quelles propriétés supplémentaires obtenir de chaque catégorie :",
        "apihelp-query+categories-paramvalue-prop-sortkey": "Ajoute la clé de tri (chaîne hexadécimale) et son préfixe (partie lisible) de la catégorie.",
        "apihelp-query+categories-paramvalue-prop-timestamp": "Ajoute l’horodatage de l’ajout de la catégorie.",
        "apihelp-query+categories-param-dir": "La direction dans laquelle lister.",
        "apihelp-query+categories-example-simple": "Obtenir une liste des catégories auxquelles appartient la page <kbd>Albert Einstein</kbd>.",
        "apihelp-query+categories-example-generator": "Obtenir des informations sur toutes les catégories utilisées dans la page <kbd>Albert Einstein</kbd>.",
-       "apihelp-query+categoryinfo-description": "Renvoie les informations sur les catégories données.",
+       "apihelp-query+categoryinfo-summary": "Renvoie les informations sur les catégories données.",
        "apihelp-query+categoryinfo-example-simple": "Obtenir des informations sur <kbd>Category:Foo</kbd> et <kbd>Category:Bar</kbd>.",
-       "apihelp-query+categorymembers-description": "Lister toutes les pages d’une catégorie donnée.",
+       "apihelp-query+categorymembers-summary": "Lister toutes les pages d’une catégorie donnée.",
        "apihelp-query+categorymembers-param-title": "Quelle catégorie énumérer (obligatoire). Doit comprendre le préfixe <kbd>{{ns:category}}:</kbd>. Impossible à utiliser avec <var>$1pageid</var>.",
        "apihelp-query+categorymembers-param-pageid": "ID de la page de la catégorie à énumérer. Impossible à utiliser avec <var>$1title</var>.",
        "apihelp-query+categorymembers-param-prop": "Quelles informations inclure :",
        "apihelp-query+categorymembers-param-endsortkey": "Utiliser plutôt $1endhexsortkey.",
        "apihelp-query+categorymembers-example-simple": "Obtenir les 10 premières pages de <kbd>Category:Physics</kbd>.",
        "apihelp-query+categorymembers-example-generator": "Obtenir l’information sur les 10 premières pages de <kbd>Category:Physics</kbd>.",
-       "apihelp-query+contributors-description": "Obtenir la liste des contributeurs connectés et le nombre de contributeurs anonymes d’une page.",
+       "apihelp-query+contributors-summary": "Obtenir la liste des contributeurs connectés et le nombre de contributeurs anonymes d’une page.",
        "apihelp-query+contributors-param-group": "Inclut uniquement les utilisateurs dans les groupes donnés. N'inclut pas les groupes implicites ou auto-promus comme *, user ou autoconfirmed.",
        "apihelp-query+contributors-param-excludegroup": "Exclure les utilisateurs des groupes donnés. Ne pas inclure les groupes implicites ou auto-promus comme *, user ou autoconfirmed.",
        "apihelp-query+contributors-param-rights": "Inclure uniquement les utilisateurs ayant les droits donnés. Ne pas inclure les droits accordés par les groupes implicites ou auto-promus comme *, user ou autoconfirmed.",
        "apihelp-query+contributors-param-excluderights": "Exclure les utilisateurs ayant les droits donnés. Ne pas inclure les droits accordés par les groupes implicites ou auto-promus comme *, user ou autoconfirmed.",
        "apihelp-query+contributors-param-limit": "Combien de contributeurs renvoyer.",
        "apihelp-query+contributors-example-simple": "Afficher les contributeurs dans la <kbd>Main Page</kbd>.",
-       "apihelp-query+deletedrevisions-description": "Obtenir des informations sur la révision supprimée.\n\nPeut être utilisé de différentes manières :\n# Obtenir les révisions supprimées pour un ensemble de pages, en donnant les titres ou les ids de page. Ordonné par titre  et horodatage.\n# Obtenir des données sur un ensemble de révisions supprimées en donnant leurs IDs et leurs ids de révision. Ordonné par ID de révision.",
        "apihelp-query+deletedrevisions-param-start": "L’horodatage auquel démarrer l’énumération. Ignoré lors du traitement d’une liste d’IDs de révisions.",
        "apihelp-query+deletedrevisions-param-end": "L’horodatage auquel arrêter l’énumération. Ignoré lors du traitement d’une liste d’IDs de révisions.",
        "apihelp-query+deletedrevisions-param-tag": "Lister uniquement les révisions marquées par cette balise.",
        "apihelp-query+deletedrevisions-param-excludeuser": "Ne pas lister les révisions faites par cet utilisateur.",
        "apihelp-query+deletedrevisions-example-titles": "Lister les révisions supprimées des pages <kbd>Main Page</kbd> et <kbd>Talk:Main Page</kbd>, avec leur contenu.",
        "apihelp-query+deletedrevisions-example-revids": "Lister les informations pour la révision supprimée <kbd>123456</kbd>.",
-       "apihelp-query+deletedrevs-description": "Lister les révisions supprimées.\n\nOpère selon trois modes :\n# Lister les révisions supprimées pour les titres donnés, triées par horodatage.\n# Lister les contributions supprimées pour l’utilisateur donné, triées par horodatage (pas de titres spécifiés).\n# Lister toutes les révisions supprimées dans l’espace de noms donné, triées par titre et horodatage (aucun titre spécifié, $1user non positionné).\n\nCertains paramètres ne s’appliquent qu’à certains modes et sont ignorés dans les autres.",
+       "apihelp-query+deletedrevs-summary": "Afficher les versions supprimées.",
        "apihelp-query+deletedrevs-paraminfo-modes": "{{PLURAL:$1|Mode|Modes}} : $2",
        "apihelp-query+deletedrevs-param-start": "L’horodatage auquel démarrer l’énumération.",
        "apihelp-query+deletedrevs-param-end": "L’horodatage auquel arrêter l’énumération.",
        "apihelp-query+deletedrevs-example-mode2": "Lister les 50 dernières contributions de <kbd>Bob</kbd> supprimées (mode 2).",
        "apihelp-query+deletedrevs-example-mode3-main": "Lister les 50 premières révisions supprimées dans l’espace de noms principal (mode 3)",
        "apihelp-query+deletedrevs-example-mode3-talk": "Lister les 50 premières pages supprimées dans l’espace de noms {{ns:talk}} (mode 3).",
-       "apihelp-query+disabled-description": "Ce module de requête a été désactivé.",
-       "apihelp-query+duplicatefiles-description": "Lister d’après leurs valeurs de hachage, tous les fichiers qui sont des doublons de fichiers donnés.",
+       "apihelp-query+disabled-summary": "Ce module de requête a été désactivé.",
+       "apihelp-query+duplicatefiles-summary": "Lister d’après leurs valeurs de hachage, tous les fichiers qui sont des doublons de fichiers donnés.",
        "apihelp-query+duplicatefiles-param-limit": "Combien de fichiers dupliqués à renvoyer.",
        "apihelp-query+duplicatefiles-param-dir": "La direction dans laquelle lister.",
        "apihelp-query+duplicatefiles-param-localonly": "Rechercher les fichiers uniquement dans le référentiel local.",
        "apihelp-query+duplicatefiles-example-simple": "Rechercher les doublons de [[:File:Albert Einstein Head.jpg]].",
        "apihelp-query+duplicatefiles-example-generated": "Rechercher les doublons de tous les fichiers",
-       "apihelp-query+embeddedin-description": "Trouver toutes les pages qui incluent (par transclusion) le titre donné.",
+       "apihelp-query+embeddedin-summary": "Trouver toutes les pages qui incluent (par transclusion) le titre donné.",
        "apihelp-query+embeddedin-param-title": "Titre à rechercher. Impossible à utiliser avec $1pageid.",
        "apihelp-query+embeddedin-param-pageid": "ID de la page à rechercher. Impossible à utiliser avec $1title.",
        "apihelp-query+embeddedin-param-namespace": "L’espace de noms à énumérer.",
        "apihelp-query+embeddedin-param-limit": "Combien de pages renvoyer au total.",
        "apihelp-query+embeddedin-example-simple": "Afficher les pages incluant <kbd>Template:Stub</kbd>.",
        "apihelp-query+embeddedin-example-generator": "Obtenir des informations sur les pages incluant <kbd>Template:Stub</kbd>.",
-       "apihelp-query+extlinks-description": "Renvoyer toutes les URLs externes (non interwikis) des pages données.",
        "apihelp-query+extlinks-param-limit": "Combien de liens renvoyer.",
        "apihelp-query+extlinks-param-protocol": "Protocole de l’URL. Si vide et <var>$1query</var> est positionné, le protocole est <kbd>http</kbd>. Laisser à la fois ceci et <var>$1query</var> vides pour lister tous les liens externes.",
        "apihelp-query+extlinks-param-query": "Rechercher une chaîne sans protocole. Utile pour vérifier si une certaine page contient une certaine URL externe.",
        "apihelp-query+extlinks-param-expandurl": "Étendre les URLs relatives au protocole avec le protocole canonique.",
        "apihelp-query+extlinks-example-simple": "Obtenir une liste des liens externes de <kbd>Main Page</kbd>.",
-       "apihelp-query+exturlusage-description": "Énumérer les pages contenant une URL donnée.",
+       "apihelp-query+exturlusage-summary": "Énumérer les pages contenant une URL donnée.",
        "apihelp-query+exturlusage-param-prop": "Quelles informations inclure :",
        "apihelp-query+exturlusage-paramvalue-prop-ids": "Ajoute l’ID de la page.",
        "apihelp-query+exturlusage-paramvalue-prop-title": "Ajoute le titre et l’ID de l’espace de noms de la page.",
        "apihelp-query+exturlusage-param-limit": "Combien de pages renvoyer.",
        "apihelp-query+exturlusage-param-expandurl": "Étendre les URLs relatives au protocole avec le protocole canonique.",
        "apihelp-query+exturlusage-example-simple": "Afficher les pages avec un lien vers <kbd>http://www.mediawiki.org</kbd>.",
-       "apihelp-query+filearchive-description": "Énumérer séquentiellement tous les fichiers supprimés.",
+       "apihelp-query+filearchive-summary": "Énumérer séquentiellement tous les fichiers supprimés.",
        "apihelp-query+filearchive-param-from": "Le titre de l’image auquel démarrer l’énumération.",
        "apihelp-query+filearchive-param-to": "Le titre de l’image auquel arrêter l’énumération.",
        "apihelp-query+filearchive-param-prefix": "Rechercher tous les titres d’image qui commencent par cette valeur.",
        "apihelp-query+filearchive-paramvalue-prop-bitdepth": "Ajoute la profondeur de bit de la version.",
        "apihelp-query+filearchive-paramvalue-prop-archivename": "Ajoute le nom de fichier de la version d’archive pour les versions autres que la dernière.",
        "apihelp-query+filearchive-example-simple": "Afficher une liste de tous les fichiers supprimés",
-       "apihelp-query+filerepoinfo-description": "Renvoyer les méta-informations sur les référentiels d’images configurés dans le wiki.",
+       "apihelp-query+filerepoinfo-summary": "Renvoyer les méta-informations sur les référentiels d’images configurés dans le wiki.",
        "apihelp-query+filerepoinfo-param-prop": "Quelles propriétés du référentiel récupérer (il peut y en avoir plus de disponibles sur certains wikis) :\n;apiurl:URL de l’API du référentiel - utile pour obtenir les infos de l’image depuis l’hôte.\n;name:La clé du référentiel - utilisé par ex. dans les valeurs de retour de <var>[[mw:Special:MyLanguage/Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var> et [[Special:ApiHelp/query+imageinfo|imageinfo]].\n;displayname:Le nom lisible du wiki référentiel.\n;rooturl:URL racine des chemins d’image.\n;local:Si ce référentiel est le référentiel local ou non.",
        "apihelp-query+filerepoinfo-example-simple": "Obtenir des informations sur les référentiels de fichier.",
-       "apihelp-query+fileusage-description": "Trouver toutes les pages qui utilisent les fichiers donnés.",
+       "apihelp-query+fileusage-summary": "Trouver toutes les pages qui utilisent les fichiers donnés.",
        "apihelp-query+fileusage-param-prop": "Quelles propriétés obtenir :",
        "apihelp-query+fileusage-paramvalue-prop-pageid": "ID de chaque page.",
        "apihelp-query+fileusage-paramvalue-prop-title": "Titre de chaque page.",
        "apihelp-query+fileusage-param-show": "Afficher uniquement les éléments qui correspondent à ces critères :\n;redirect:Afficher uniquement les redirections.\n;!redirect:Afficher uniquement les non-redirections.",
        "apihelp-query+fileusage-example-simple": "Obtenir une liste des pages utilisant [[:File:Example.jpg]]",
        "apihelp-query+fileusage-example-generator": "Obtenir l’information sur les pages utilisant [[:File:Example.jpg]]",
-       "apihelp-query+imageinfo-description": "Renvoyer l’information de fichier et l’historique de téléversement.",
+       "apihelp-query+imageinfo-summary": "Renvoyer l’information de fichier et l’historique de téléversement.",
        "apihelp-query+imageinfo-param-prop": "Quelle information obtenir du fichier :",
        "apihelp-query+imageinfo-paramvalue-prop-timestamp": "Ajoute l’horodatage à la version téléversée.",
        "apihelp-query+imageinfo-paramvalue-prop-user": "Ajoute l’utilisateur qui a téléversé chaque version du fichier.",
        "apihelp-query+imageinfo-param-localonly": "Rechercher les fichiers uniquement dans le référentiel local.",
        "apihelp-query+imageinfo-example-simple": "Analyser les informations sur la version actuelle de [[:File:Albert Einstein Head.jpg]].",
        "apihelp-query+imageinfo-example-dated": "Analyser les informations sur les versions de [[:File:Test.jpg]] depuis 2008.",
-       "apihelp-query+images-description": "Renvoie tous les fichiers contenus dans les pages fournies.",
+       "apihelp-query+images-summary": "Renvoie tous les fichiers contenus dans les pages fournies.",
        "apihelp-query+images-param-limit": "Combien de fichiers renvoyer.",
        "apihelp-query+images-param-images": "Lister uniquement ces fichiers. Utile pour vérifier si une page donnée contient un fichier donné.",
        "apihelp-query+images-param-dir": "La direction dans laquelle lister.",
        "apihelp-query+images-example-simple": "Obtenir une liste des fichiers utilisés dans [[Main Page]]",
        "apihelp-query+images-example-generator": "Obtenir des informations sur tous les fichiers utilisés dans [[Main Page]]",
-       "apihelp-query+imageusage-description": "Trouver toutes les pages qui utilisent le titre de l’image donné.",
+       "apihelp-query+imageusage-summary": "Trouver toutes les pages qui utilisent le titre de l’image donné.",
        "apihelp-query+imageusage-param-title": "Titre à rechercher. Impossible à utiliser avec $1pageid.",
        "apihelp-query+imageusage-param-pageid": "ID de la page à rechercher. Impossible à utiliser avec $1title.",
        "apihelp-query+imageusage-param-namespace": "L’espace de noms à énumérer.",
        "apihelp-query+imageusage-param-redirect": "Si le lien vers une page est une redirection, trouver toutes les pages qui ont aussi un lien vers cette redirection. La limite maximale est divisée par deux.",
        "apihelp-query+imageusage-example-simple": "Afficher les pages utilisant [[:File:Albert Einstein Head.jpg]]",
        "apihelp-query+imageusage-example-generator": "Obtenir des informations sur les pages utilisant [[:File:Albert Einstein Head.jpg]]",
-       "apihelp-query+info-description": "Obtenir les informations de base sur la page.",
+       "apihelp-query+info-summary": "Obtenir les informations de base sur la page.",
        "apihelp-query+info-param-prop": "Quelles propriétés supplémentaires récupérer :",
        "apihelp-query+info-paramvalue-prop-protection": "Lister le niveau de protection de chaque page.",
        "apihelp-query+info-paramvalue-prop-talkid": "L’ID de la page de discussion de chaque page qui n’est pas de discussion.",
        "apihelp-query+info-param-token": "Utiliser plutôt [[Special:ApiHelp/query+tokens|action=query&meta=tokens]].",
        "apihelp-query+info-example-simple": "Obtenir des informations sur la page <kbd>Main Page</kbd>.",
        "apihelp-query+info-example-protection": "Obtenir des informations générales et de protection sur la page <kbd>Main Page</kbd>.",
-       "apihelp-query+iwbacklinks-description": "Trouver toutes les pages qui ont un lien vers le lien interwiki indiqué.\n\nPeut être utilisé pour trouver tous les liens avec un préfixe, ou tous les liens vers un titre (avec un préfixe donné). Sans paramètre, équivaut à « tous les liens interwiki ».",
        "apihelp-query+iwbacklinks-param-prefix": "Préfixe pour l’interwiki.",
        "apihelp-query+iwbacklinks-param-title": "Lien interwiki à rechercher. Doit être utilisé avec <var>$1blprefix</var>.",
        "apihelp-query+iwbacklinks-param-limit": "Combien de pages renvoyer.",
        "apihelp-query+iwbacklinks-param-dir": "La direction dans laquelle lister.",
        "apihelp-query+iwbacklinks-example-simple": "Obtenir les pages qui ont un lien vers [[wikibooks:Test]].",
        "apihelp-query+iwbacklinks-example-generator": "Obtenir des informations sur les pages qui ont un lien vers [[wikibooks:Test]].",
-       "apihelp-query+iwlinks-description": "Renvoie tous les liens interwiki des pages indiquées.",
+       "apihelp-query+iwlinks-summary": "Renvoie tous les liens interwiki des pages indiquées.",
        "apihelp-query+iwlinks-param-url": "S'il faut obtenir l’URL complète (impossible à utiliser avec $1prop).",
        "apihelp-query+iwlinks-param-prop": "Quelles propriétés supplémentaires obtenir pour chaque lien interlangue :",
        "apihelp-query+iwlinks-paramvalue-prop-url": "Ajoute l’URL complète.",
        "apihelp-query+iwlinks-param-title": "Lien interwiki à rechercher. Doit être utilisé avec <var>$1prefix</var>.",
        "apihelp-query+iwlinks-param-dir": "La direction dans laquelle lister.",
        "apihelp-query+iwlinks-example-simple": "Obtenir les liens interwiki de la page <kbd>Main Page</kbd>.",
-       "apihelp-query+langbacklinks-description": "Trouver toutes les pages qui ont un lien vers le lien de langue indiqué.\n\nPeut être utilisé pour trouver tous les liens avec un code de langue, ou tous les liens vers un titre (avec une langue donnée). N’utiliser aucun paramètre revient à « tous les liens de langue ».\n\nNotez que cela peut ne pas prendre en compte les liens de langue ajoutés par les extensions.",
        "apihelp-query+langbacklinks-param-lang": "Langue pour le lien de langue.",
        "apihelp-query+langbacklinks-param-title": "Lien interlangue à rechercher. Doit être utilisé avec $1lang.",
        "apihelp-query+langbacklinks-param-limit": "Combien de pages renvoyer au total.",
        "apihelp-query+langbacklinks-param-dir": "La direction dans laquelle lister.",
        "apihelp-query+langbacklinks-example-simple": "Obtenir les pages ayant un lien vers [[:fr:Test]].",
        "apihelp-query+langbacklinks-example-generator": "Obtenir des informations sur les pages ayant un lien vers [[:fr:Test]].",
-       "apihelp-query+langlinks-description": "Renvoie tous les liens interlangue des pages fournies.",
+       "apihelp-query+langlinks-summary": "Renvoie tous les liens interlangue des pages fournies.",
        "apihelp-query+langlinks-param-limit": "Combien de liens interlangue renvoyer.",
        "apihelp-query+langlinks-param-url": "S’il faut récupérer l’URL complète (impossible à utiliser avec <var>$1prop</var>).",
        "apihelp-query+langlinks-param-prop": "Quelles propriétés supplémentaires obtenir pour chaque lien interlangue :",
        "apihelp-query+langlinks-param-dir": "La direction dans laquelle lister.",
        "apihelp-query+langlinks-param-inlanguagecode": "Code de langue pour les noms de langue localisés.",
        "apihelp-query+langlinks-example-simple": "Obtenir les liens interlangue de la page <kbd>Main Page</kbd>.",
-       "apihelp-query+links-description": "Renvoie tous les liens des pages fournies.",
+       "apihelp-query+links-summary": "Renvoie tous les liens des pages fournies.",
        "apihelp-query+links-param-namespace": "Afficher les liens uniquement dans ces espaces de noms.",
        "apihelp-query+links-param-limit": "Combien de liens renvoyer.",
        "apihelp-query+links-param-titles": "Lister uniquement les liens vers ces titres. Utile pour vérifier si une certaine page a un lien vers un titre donné.",
        "apihelp-query+links-example-simple": "Obtenir les liens de la page <kbd>Main Page</kbd>",
        "apihelp-query+links-example-generator": "Obtenir des informations sur tous les liens de page dans <kbd>Main Page</kbd>.",
        "apihelp-query+links-example-namespaces": "Obtenir les liens de la page <kbd>Main Page</kbd> dans les espaces de nom {{ns:user}} et {{ns:template}}.",
-       "apihelp-query+linkshere-description": "Trouver toutes les pages ayant un lien vers les pages données.",
+       "apihelp-query+linkshere-summary": "Trouver toutes les pages ayant un lien vers les pages données.",
        "apihelp-query+linkshere-param-prop": "Quelles propriétés obtenir :",
        "apihelp-query+linkshere-paramvalue-prop-pageid": "ID de chaque page.",
        "apihelp-query+linkshere-paramvalue-prop-title": "Titre de chaque page.",
        "apihelp-query+linkshere-param-show": "Afficher uniquement les éléments qui correspondent à ces critères :\n;redirect:Afficher uniquement les redirections.\n;!redirect:Afficher uniquement les non-redirections.",
        "apihelp-query+linkshere-example-simple": "Obtenir une liste des pages liées à  [[Main Page]]",
        "apihelp-query+linkshere-example-generator": "Obtenir des informations sur les pages liées à [[Main Page]]",
-       "apihelp-query+logevents-description": "Obtenir des événements des journaux.",
+       "apihelp-query+logevents-summary": "Récupère les événements à partir des journaux.",
        "apihelp-query+logevents-param-prop": "Quelles propriétés obtenir :",
        "apihelp-query+logevents-paramvalue-prop-ids": "Ajoute l’ID de l’événement.",
        "apihelp-query+logevents-paramvalue-prop-title": "Ajoute le titre de la page pour l’événement enregistré.",
        "apihelp-query+logevents-param-tag": "Lister seulement les entrées ayant cette balise.",
        "apihelp-query+logevents-param-limit": "Combien d'entrées renvoyer au total.",
        "apihelp-query+logevents-example-simple": "Liste les entrées de journal récentes.",
-       "apihelp-query+pagepropnames-description": "Lister les noms de toutes les propriétés de page utilisées sur le wiki.",
+       "apihelp-query+pagepropnames-summary": "Lister les noms de toutes les propriétés de page utilisées sur le wiki.",
        "apihelp-query+pagepropnames-param-limit": "Le nombre maximal de noms à renvoyer.",
        "apihelp-query+pagepropnames-example-simple": "Obtenir les 10 premiers noms de propriété.",
-       "apihelp-query+pageprops-description": "Obtenir diverses propriétés de page définies dans le contenu de la page.",
+       "apihelp-query+pageprops-summary": "Obtenir diverses propriétés de page définies dans le contenu de la page.",
        "apihelp-query+pageprops-param-prop": "Lister uniquement ces propriétés de page (<kbd>[[Special:ApiHelp/query+pagepropnames|action=query&list=pagepropnames]]</kbd> renvoie les noms de propriété de page utilisés). Utile pour vérifier si des pages utilisent une certaine propriété de page.",
        "apihelp-query+pageprops-example-simple": "Obtenir les propriétés des pages <kbd>Main Page</kbd> et <kbd>MediaWiki</kbd>.",
-       "apihelp-query+pageswithprop-description": "Lister toutes les pages utilisant une propriété de page donnée.",
+       "apihelp-query+pageswithprop-summary": "Lister toutes les pages utilisant une propriété de page donnée.",
        "apihelp-query+pageswithprop-param-propname": "Propriété de page pour laquelle énumérer les pages (<kbd>[[Special:ApiHelp/query+pagepropnames|action=query&list=pagepropnames]]</kbd> renvoie les noms de propriété de page utilisés).",
        "apihelp-query+pageswithprop-param-prop": "Quelles informations inclure :",
        "apihelp-query+pageswithprop-paramvalue-prop-ids": "Ajoute l’ID de la page.",
        "apihelp-query+pageswithprop-param-dir": "Dans quelle direction trier.",
        "apihelp-query+pageswithprop-example-simple": "Lister les 10 premières pages en utilisant <code>&#123;&#123;DISPLAYTITLE:&#125;&#125;</code>.",
        "apihelp-query+pageswithprop-example-generator": "Obtenir des informations supplémentaires sur les 10 premières pages utilisant <code>_&#95;NOTOC_&#95;</code>.",
-       "apihelp-query+prefixsearch-description": "Effectuer une recherche de préfixe sur les titres de page.\n\nMalgré les similarités dans le nom, ce module n’est pas destiné à être l’équivalent de [[Special:PrefixIndex]] ; pour cela, voyez <kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd> avec le paramètre <kbd>apprefix</kbd>. Le but de ce module est similaire à <kbd>[[Special:ApiHelp/opensearch|action=opensearch]]</kbd> : prendre l’entrée utilisateur et fournir les meilleurs titres s’en approchant. Selon le serveur du moteur de recherche, cela peut inclure corriger des fautes de frappe, éviter des redirections, ou d’autres heuristiques.",
        "apihelp-query+prefixsearch-param-search": "Chaîne de recherche.",
        "apihelp-query+prefixsearch-param-namespace": "Espaces de noms à rechercher.",
        "apihelp-query+prefixsearch-param-limit": "Nombre maximal de résultats à renvoyer.",
        "apihelp-query+prefixsearch-param-offset": "Nombre de résultats à sauter.",
        "apihelp-query+prefixsearch-example-simple": "Rechercher les titres de page commençant par <kbd>meaning</kbd>.",
        "apihelp-query+prefixsearch-param-profile": "Rechercher le profil à utiliser.",
-       "apihelp-query+protectedtitles-description": "Lister tous les titres protégés en création.",
+       "apihelp-query+protectedtitles-summary": "Lister tous les titres protégés en création.",
        "apihelp-query+protectedtitles-param-namespace": "Lister uniquement les titres dans ces espaces de nom.",
        "apihelp-query+protectedtitles-param-level": "Lister uniquement les titres avec ces niveaux de protection.",
        "apihelp-query+protectedtitles-param-limit": "Combien de pages renvoyer au total.",
        "apihelp-query+protectedtitles-paramvalue-prop-level": "Ajoute le niveau de protection.",
        "apihelp-query+protectedtitles-example-simple": "Lister les titres protégés",
        "apihelp-query+protectedtitles-example-generator": "Trouver les liens vers les titres protégés dans l’espace de noms principal.",
-       "apihelp-query+querypage-description": "Obtenir une liste fournie par une page spéciale basée sur QueryPage.",
+       "apihelp-query+querypage-summary": "Obtenir une liste fournie par une page spéciale basée sur QueryPage.",
        "apihelp-query+querypage-param-page": "Le nom de la page spéciale. Notez que ce nom est sensible à la casse.",
        "apihelp-query+querypage-param-limit": "Nombre de résultats à renvoyer.",
        "apihelp-query+querypage-example-ancientpages": "Renvoyer les résultats de [[Special:Ancientpages]].",
-       "apihelp-query+random-description": "Obtenir un ensemble de pages au hasard.\n\nLes pages sont listées dans un ordre prédéterminé, seul le point de départ est aléatoire. Par exemple, cela signifie que si la première page dans la liste est <samp>Accueil</samp>, la seconde sera <em>toujours</em> <samp>Liste des singes de fiction</samp>, la troisième <samp>Liste de personnes figurant sur les timbres de Vanuatu</samp>, etc.",
+       "apihelp-query+random-summary": "Récupèrer un ensemble de pages au hasard.",
        "apihelp-query+random-param-namespace": "Renvoyer seulement des pages de ces espaces de noms.",
        "apihelp-query+random-param-limit": "Limiter le nombre de pages aléatoires renvoyées.",
        "apihelp-query+random-param-redirect": "Utilisez <kbd>$1filterredir=redirects</kbd> au lieu de ce paramètre.",
        "apihelp-query+random-param-filterredir": "Comment filtrer les redirections.",
        "apihelp-query+random-example-simple": "Obtenir deux pages aléatoires de l’espace de noms principal.",
        "apihelp-query+random-example-generator": "Renvoyer les informations de la page sur deux pages au hasard de l’espace de noms principal.",
-       "apihelp-query+recentchanges-description": "Énumérer les modifications récentes.",
+       "apihelp-query+recentchanges-summary": "Énumérer les modifications récentes.",
        "apihelp-query+recentchanges-param-start": "L’horodatage auquel démarrer l’énumération.",
        "apihelp-query+recentchanges-param-end": "L’horodatage auquel arrêter l’énumération.",
        "apihelp-query+recentchanges-param-namespace": "Filtrer les modifications uniquement sur ces espaces de noms.",
        "apihelp-query+recentchanges-param-generaterevisions": "Utilisé comme générateur, générer des IDs de révision plutôt que des titres.\nLes entrées de modification récentes sans IDs de révision associé (par ex. la plupart des entrées de journaux) ne généreront rien.",
        "apihelp-query+recentchanges-example-simple": "Lister les modifications récentes",
        "apihelp-query+recentchanges-example-generator": "Obtenir l’information de page sur les modifications récentes non patrouillées",
-       "apihelp-query+redirects-description": "Renvoie toutes les redirections vers les pages données.",
+       "apihelp-query+redirects-summary": "Renvoie toutes les redirections vers les pages données.",
        "apihelp-query+redirects-param-prop": "Quelles propriétés récupérer :",
        "apihelp-query+redirects-paramvalue-prop-pageid": "ID de page de chaque redirection.",
        "apihelp-query+redirects-paramvalue-prop-title": "Titre de chaque redirection.",
        "apihelp-query+redirects-param-show": "Afficher uniquement les éléments correspondant à ces critères :\n;fragment:Afficher uniquement les redirections avec un fragment.\n;!fragment:Afficher uniquement les redirections sans fragment.",
        "apihelp-query+redirects-example-simple": "Obtenir une liste des redirections vers [[Main Page]]",
        "apihelp-query+redirects-example-generator": "Obtenir des informations sur toutes les redirections vers [[Main Page]]",
-       "apihelp-query+revisions-description": "Obtenir des informations sur la révision.\n\nPeut être utilisé de différentes manières :\n# Obtenir des données sur un ensemble de pages (dernière révision), en mettant les titres ou les ids de page.\n# Obtenir les révisions d’une page donnée, en utilisant les titres ou les ids de page avec rvstart, rvend ou rvlimit.\n# Obtenir des données sur un ensemble de révisions en donnant leurs IDs avec revids.",
+       "apihelp-query+revisions-summary": "Récupèrer les informations de relecture.",
        "apihelp-query+revisions-paraminfo-singlepageonly": "Utilisable uniquement avec une seule page (mode #2).",
        "apihelp-query+revisions-param-startid": "Commencer l'énumération à partir de la date de cette revue. La revue doit exister, mais ne concerne pas forcément cette page.",
        "apihelp-query+revisions-param-endid": "Arrêter l’énumération à la date de cette revue. La revue doit exister mais ne concerne pas forcément cette page.",
        "apihelp-query+revisions+base-param-difftotext": "Texte auquel comparer chaque révision. Compare uniquement un nombre limité de révisions. Écrase <var>$1diffto</var>. Si <var>$1section</var> est positionné, seule cette section sera comparée avec ce texte.",
        "apihelp-query+revisions+base-param-difftotextpst": "Effectuer une transformation avant enregistrement sur le texte avant de le comparer. Valide uniquement quand c’est utilisé avec <var>$1difftotext</var>.",
        "apihelp-query+revisions+base-param-contentformat": "Format de sérialisation utilisé pour <var>$1difftotext</var> et attendu pour la sortie du contenu.",
-       "apihelp-query+search-description": "Effectuer une recherche en texte intégral.",
+       "apihelp-query+search-summary": "Effectuer une recherche en texte intégral.",
        "apihelp-query+search-param-search": "Rechercher les titres de page ou le contenu correspondant à cette valeur. Vous pouvez utiliser la chaîne de recherche pour invoquer des fonctionnalités de recherche spéciales, selon ce que le serveur de recherche du wiki implémente.",
        "apihelp-query+search-param-namespace": "Rechercher uniquement dans ces espaces de noms.",
        "apihelp-query+search-param-what": "Quel type de recherche effectuer.",
        "apihelp-query+search-example-simple": "Rechercher <kbd>meaning</kbd>.",
        "apihelp-query+search-example-text": "Rechercher des textes pour <kbd>meaning</kbd>.",
        "apihelp-query+search-example-generator": "Obtenir les informations sur les pages renvoyées par une recherche de <kbd>meaning</kbd>.",
-       "apihelp-query+siteinfo-description": "Renvoyer les informations générales sur le site.",
+       "apihelp-query+siteinfo-summary": "Renvoyer les informations générales sur le site.",
        "apihelp-query+siteinfo-param-prop": "Quelles informations obtenir :",
        "apihelp-query+siteinfo-paramvalue-prop-general": "Information globale du système.",
        "apihelp-query+siteinfo-paramvalue-prop-namespaces": "Liste des espaces de noms déclarés avec leur nom canonique.",
        "apihelp-query+siteinfo-example-simple": "Extraire les informations du site.",
        "apihelp-query+siteinfo-example-interwiki": "Extraire une liste des préfixes interwiki locaux.",
        "apihelp-query+siteinfo-example-replag": "Vérifier la latence de réplication actuelle.",
-       "apihelp-query+stashimageinfo-description": "Renvoie les informations de fichier des fichiers mis en réserve.",
+       "apihelp-query+stashimageinfo-summary": "Renvoie les informations de fichier des fichiers mis en réserve.",
        "apihelp-query+stashimageinfo-param-filekey": "Clé qui identifie un téléversement précédent qui a été temporairement mis en réserve.",
        "apihelp-query+stashimageinfo-param-sessionkey": "Alias pour $1filekey, pour la compatibilité ascendante.",
        "apihelp-query+stashimageinfo-example-simple": "Renvoie les informations sur un fichier mis en réserve.",
        "apihelp-query+stashimageinfo-example-params": "Renvoie les vignettes pour deux fichiers mis de côté.",
-       "apihelp-query+tags-description": "Lister les balises de modification.",
+       "apihelp-query+tags-summary": "Lister les balises de modification.",
        "apihelp-query+tags-param-limit": "Le nombre maximal de balises à lister.",
        "apihelp-query+tags-param-prop": "Quelles propriétés récupérer :",
        "apihelp-query+tags-paramvalue-prop-name": "Ajoute le nom de la balise.",
        "apihelp-query+tags-paramvalue-prop-source": "Retourne les sources de la balise, ce qui comprend <samp>extension</samp> pour les balises définies par une extension et <samp>manual</samp> pour les balises pouvant être appliquées manuellement par les utilisateurs.",
        "apihelp-query+tags-paramvalue-prop-active": "Si la balise est encore appliquée.",
        "apihelp-query+tags-example-simple": "Lister les balises disponibles.",
-       "apihelp-query+templates-description": "Renvoie toutes les pages incluses dans les pages fournies.",
+       "apihelp-query+templates-summary": "Renvoie toutes les pages incluses dans les pages fournies.",
        "apihelp-query+templates-param-namespace": "Afficher les modèles uniquement dans ces espaces de noms.",
        "apihelp-query+templates-param-limit": "Combien de modèles renvoyer.",
        "apihelp-query+templates-param-templates": "Lister uniquement ces modèles. Utile pour vérifier si une certaine page utilise un modèle donné.",
        "apihelp-query+templates-example-simple": "Obtenir les modèles utilisés sur la page <kbd>Main Page</kbd>.",
        "apihelp-query+templates-example-generator": "Obtenir des informations sur les pages modèle utilisé sur <kbd>Main Page</kbd>.",
        "apihelp-query+templates-example-namespaces": "Obtenir les pages des espaces de noms {{ns:user}} et {{ns:template}} qui sont inclues dans la page <kdb>Main Page<kdb>.",
-       "apihelp-query+tokens-description": "Récupère les jetons pour les actions de modification de données.",
+       "apihelp-query+tokens-summary": "Récupère les jetons pour les actions de modification de données.",
        "apihelp-query+tokens-param-type": "Types de jeton à demander.",
        "apihelp-query+tokens-example-simple": "Récupérer un jeton csrf (par défaut).",
        "apihelp-query+tokens-example-types": "Récupérer un jeton de suivi et un de patrouille.",
-       "apihelp-query+transcludedin-description": "Trouver toutes les pages qui incluent les pages données.",
+       "apihelp-query+transcludedin-summary": "Trouver toutes les pages qui incluent les pages données.",
        "apihelp-query+transcludedin-param-prop": "Quelles propriétés obtenir :",
        "apihelp-query+transcludedin-paramvalue-prop-pageid": "ID de page de chaque page.",
        "apihelp-query+transcludedin-paramvalue-prop-title": "Titre de chaque page.",
        "apihelp-query+transcludedin-param-show": "Afficher uniquement les éléments qui correspondent à ces critères:\n;redirect:Afficher uniquement les redirections.\n;!redirect:Afficher uniquement les non-redirections.",
        "apihelp-query+transcludedin-example-simple": "Obtenir une liste des pages incluant <kbd>Main Page</kbd>.",
        "apihelp-query+transcludedin-example-generator": "Obtenir des informations sur les pages incluant <kbd>Main Page</kbd>.",
-       "apihelp-query+usercontribs-description": "Obtenir toutes les modifications d'un utilisateur.",
+       "apihelp-query+usercontribs-summary": "Obtenir toutes les modifications d'un utilisateur.",
        "apihelp-query+usercontribs-param-limit": "Le nombre maximal de contributions à renvoyer.",
        "apihelp-query+usercontribs-param-start": "L’horodatage auquel démarrer le retour.",
        "apihelp-query+usercontribs-param-end": "L’horodatage auquel arrêter le retour.",
        "apihelp-query+usercontribs-param-toponly": "Lister uniquement les modifications de la dernière révision.",
        "apihelp-query+usercontribs-example-user": "Afficher les contributions de l'utilisateur <kbd>Exemple</kbd>.",
        "apihelp-query+usercontribs-example-ipprefix": "Afficher les contributions de toutes les adresses IP avec le préfixe <kbd>192.0.2.</kbd>.",
-       "apihelp-query+userinfo-description": "Obtenir des informations sur l’utilisateur courant.",
+       "apihelp-query+userinfo-summary": "Obtenir des informations sur l’utilisateur courant.",
        "apihelp-query+userinfo-param-prop": "Quelles informations inclure :",
        "apihelp-query+userinfo-paramvalue-prop-blockinfo": "Marque si l’utilisateur actuel est bloqué, par qui, et pour quelle raison.",
        "apihelp-query+userinfo-paramvalue-prop-hasmsg": "Ajoute une balise <samp>messages</samp> si l’utilisateur actuel a des messages en cours.",
        "apihelp-query+userinfo-param-attachedwiki": "Avec <kbd>$1prop=centralids</kbd>, indiquer si l’utilisateur est attaché au wiki identifié par cet ID.",
        "apihelp-query+userinfo-example-simple": "Obtenir des informations sur l’utilisateur actuel.",
        "apihelp-query+userinfo-example-data": "Obtenir des informations supplémentaires sur l’utilisateur actuel.",
-       "apihelp-query+users-description": "Obtenir des informations sur une liste d’utilisateurs",
+       "apihelp-query+users-summary": "Obtenir des informations sur une liste d’utilisateurs",
        "apihelp-query+users-param-prop": "Quelles informations inclure :",
        "apihelp-query+users-paramvalue-prop-blockinfo": "Marque si l’utilisateur est bloqué, par qui, et pour quelle raison.",
        "apihelp-query+users-paramvalue-prop-groups": "Liste tous les groupes auxquels appartient chaque utilisateur.",
        "apihelp-query+users-param-userids": "Une liste d’ID utilisateur pour lesquels obtenir des informations.",
        "apihelp-query+users-param-token": "Utiliser <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd> à la place.",
        "apihelp-query+users-example-simple": "Renvoyer des informations pour l'utilisateur <kbd>Example</kbd>.",
-       "apihelp-query+watchlist-description": "Obtenir les modifications récentes des pages de la liste de suivi de l’utilisateur actuel.",
+       "apihelp-query+watchlist-summary": "Obtenir les modifications récentes des pages de la liste de suivi de l’utilisateur actuel.",
        "apihelp-query+watchlist-param-allrev": "Inclure les multiples révisions de la même page dans l’intervalle de temps fourni.",
        "apihelp-query+watchlist-param-start": "L’horodatage auquel démarrer l’énumération.",
        "apihelp-query+watchlist-param-end": "L’horodatage auquel arrêter l’énumération.",
        "apihelp-query+watchlist-example-generator": "Chercher l’information de la page sur les pages récemment modifiées de la liste de suivi de l’utilisateur actuel",
        "apihelp-query+watchlist-example-generator-rev": "Chercher l’information de la révision pour les modifications récentes des pages de la liste de suivi de l’utilisateur actuel.",
        "apihelp-query+watchlist-example-wlowner": "Lister la révision de tête des pages récemment modifiées de la liste de suivi de l'utilisateur <kbd>Exemple</kbd>.",
-       "apihelp-query+watchlistraw-description": "Obtenir toutes les pages de la liste de suivi de l’utilisateur actuel.",
+       "apihelp-query+watchlistraw-summary": "Obtenir toutes les pages de la liste de suivi de l’utilisateur actuel.",
        "apihelp-query+watchlistraw-param-namespace": "Lister uniquement les pages dans les espaces de noms fournis.",
        "apihelp-query+watchlistraw-param-limit": "Combien de résultats renvoyer au total par requête.",
        "apihelp-query+watchlistraw-param-prop": "Quelles propriétés supplémentaires obtenir :",
        "apihelp-query+watchlistraw-param-totitle": "Terminer l'énumération avec ce Titre (inclure le préfixe d'espace de noms) :",
        "apihelp-query+watchlistraw-example-simple": "Lister les pages dans la liste de suivi de l’utilisateur actuel.",
        "apihelp-query+watchlistraw-example-generator": "Chercher l’information sur les pages de la liste de suivi de l’utilisateur actuel.",
-       "apihelp-removeauthenticationdata-description": "Supprimer les données d’authentification pour l’utilisateur actuel.",
+       "apihelp-removeauthenticationdata-summary": "Supprimer les données d’authentification pour l’utilisateur actuel.",
        "apihelp-removeauthenticationdata-example-simple": "Tentative de suppression des données de l’utilisateur pour <kbd>FooAuthenticationRequest</kbd>.",
-       "apihelp-resetpassword-description": "Envoyer un courriel de réinitialisation du mot de passe à un utilisateur.",
-       "apihelp-resetpassword-description-noroutes": "Aucun chemin pour réinitialiser le mot de passe n’est disponible.\n\nActiver les chemins dans <var>[[mw:Special:MyLanguage/Manual:$wgPasswordResetRoutes|$wgPasswordResetRoutes]]</var> pour utiliser ce module.",
+       "apihelp-resetpassword-summary": "Envoyer un courriel de réinitialisation du mot de passe à un utilisateur.",
        "apihelp-resetpassword-param-user": "Utilisateur ayant été réinitialisé.",
        "apihelp-resetpassword-param-email": "Adresse courriel de l’utilisateur ayant été réinitialisé.",
        "apihelp-resetpassword-example-user": "Envoyer un courriel de réinitialisation du mot de passe à l’utilisateur <kbd>Exemple</kbd>.",
        "apihelp-resetpassword-example-email": "Envoyer un courriel pour la réinitialisation de mot de passe à tous les utilisateurs avec l’adresse <kbd>user@example.com</kbd>.",
-       "apihelp-revisiondelete-description": "Supprimer et rétablir des révisions.",
+       "apihelp-revisiondelete-summary": "Supprimer et rétablir des révisions.",
        "apihelp-revisiondelete-param-type": "Type de suppression de révision en cours de traitement.",
        "apihelp-revisiondelete-param-target": "Titre de page pour la suppression de révision, s’il est nécessaire pour le type.",
        "apihelp-revisiondelete-param-ids": "Identifiants pour les révisions à supprimer.",
        "apihelp-revisiondelete-param-tags": "Balises à appliquer à l’entrée dans le journal de suppression.",
        "apihelp-revisiondelete-example-revision": "Masquer le contenu de la révision <kbd>12345</kbd> de la page <kbd>Main Page</kbd>.",
        "apihelp-revisiondelete-example-log": "Masquer toutes les données de l’entrée de journal <kbd>67890</kbd> avec le motif <kbd>Violation de Biographie de Personne Vivante</kbd>.",
-       "apihelp-rollback-description": "Annuler la dernière modification de la page.\n\nSi le dernier utilisateur à avoir modifié la page a fait plusieurs modifications sur une ligne, elles seront toutes annulées.",
+       "apihelp-rollback-summary": "Annuler les dernières modifications de la page.",
        "apihelp-rollback-param-title": "Titre de la page à restaurer. Impossible à utiliser avec <var>$1pageid</var>.",
        "apihelp-rollback-param-pageid": "ID de la page à restaurer. Impossible à utiliser avec <var>$1title</var>.",
        "apihelp-rollback-param-tags": "Balises à appliquer à la révocation.",
        "apihelp-rollback-param-watchlist": "Ajouter ou supprimer la page de la liste de suivi de l’utilisateur actuel sans condition, utiliser les préférences ou ne pas modifier le suivi.",
        "apihelp-rollback-example-simple": "Annuler les dernières modifications à <kbd>Main Page</kbd> par l’utilisateur <kbd>Example</kbd>.",
        "apihelp-rollback-example-summary": "Annuler les dernières modifications de la page <kbd>Main Page</kbd> par l’utilisateur à l’adresse IP <kbd>192.0.2.5</kbd> avec le résumé <kbd>Annulation de vandalisme<kbd>, et marquer ces modifications et l’annulation comme modifications de robots.",
-       "apihelp-rsd-description": "Exporter un schéma RSD (Découverte Très Simple).",
+       "apihelp-rsd-summary": "Exporter un schéma RSD (Découverte Très Simple).",
        "apihelp-rsd-example-simple": "Exporter le schéma RSD",
-       "apihelp-setnotificationtimestamp-description": "Mettre à jour l’horodatage de notification pour les pages suivies.\n\nCela affecte la mise en évidence des pages modifiées dans la liste de suivi et l’historique, et l’envoi de courriel quand la préférence « {{int:tog-enotifwatchlistpages}} » est activée.",
        "apihelp-setnotificationtimestamp-param-entirewatchlist": "Travailler sur toutes les pages suivies.",
        "apihelp-setnotificationtimestamp-param-timestamp": "Horodatage auquel dater la notification.",
        "apihelp-setnotificationtimestamp-param-torevid": "Révision pour laquelle fixer l’horodatage de notification (une page uniquement).",
        "apihelp-setnotificationtimestamp-example-page": "Réinitialiser l’état de notification pour la <kbd>Page principale<kbd>.",
        "apihelp-setnotificationtimestamp-example-pagetimestamp": "Fixer l’horodatage de notification pour <kbd>Page principale</kbd> afin que toutes les modifications depuis le 1 janvier 2012 soient non vues",
        "apihelp-setnotificationtimestamp-example-allpages": "Réinitialiser l’état de notification sur les pages dans l’espace de noms <kbd>{{ns:user}}</kbd>.",
-       "apihelp-setpagelanguage-description": "Modifier la langue d’une page.",
-       "apihelp-setpagelanguage-description-disabled": "Il n’est pas possible de modifier la langue d’une page sur ce wiki.\n\nActiver <var>[[mw:Special:MyLanguage/Manual:$wgPageLanguageUseDB|$wgPageLanguageUseDB]]</var> pour utiliser cette action.",
+       "apihelp-setpagelanguage-summary": "Modifier la langue d’une page.",
+       "apihelp-setpagelanguage-extended-description-disabled": "Il n’est pas possible de modifier la langue d’une page sur ce wiki.\n\nActiver <var>[[mw:Special:MyLanguage/Manual:$wgPageLanguageUseDB|$wgPageLanguageUseDB]]</var> pour utiliser cette action.",
        "apihelp-setpagelanguage-param-title": "Titre de la page dont vous souhaitez modifier la langue. Ne peut pas être utilisé avec <var>$1pageid</var>.",
        "apihelp-setpagelanguage-param-pageid": "Identifiant (ID) de la page dont vous souhaitez modifier la langue. Ne peut être utilisé avec <var>$1title</var>.",
        "apihelp-setpagelanguage-param-lang": "Code de langue vers lequel la page doit être changée. Utiliser <kbd>defaut</kbd> pour réinitialiser la page sur la langue par défaut du contenu du wiki.",
        "apihelp-setpagelanguage-param-tags": "Modifier les balises à appliquer à l'entrée du journal résultant de cette action.",
        "apihelp-setpagelanguage-example-language": "Changer la langue de la <kbd>page principale</kbd> en basque.",
        "apihelp-setpagelanguage-example-default": "Remplacer la langue de la page ayant l'ID 123 par la langue par défaut du contenu du wiki.",
-       "apihelp-stashedit-description": "Préparer une modification dans le cache partagé.\n\nCeci a pour but d’être utilisé via AJAX depuis le formulaire d’édition pour améliorer la performance de la sauvegarde de la page.",
+       "apihelp-stashedit-summary": "Préparer des modifications dans le cache partagé.",
        "apihelp-stashedit-param-title": "Titre de la page en cours de modification.",
        "apihelp-stashedit-param-section": "Numéro de section. <kbd>0</kbd> pour la section du haut, <kbd>new</kbd> pour une nouvelle section.",
        "apihelp-stashedit-param-sectiontitle": "Le titre pour une nouvelle section.",
        "apihelp-stashedit-param-contentformat": "Format de sérialisation de contenu utilisé pour le texte saisi.",
        "apihelp-stashedit-param-baserevid": "ID de révision de la révision de base.",
        "apihelp-stashedit-param-summary": "Résumé du changement",
-       "apihelp-tag-description": "Ajouter ou enlever des balises de modification aux révisions ou ou aux entrées de journal individuelles.",
+       "apihelp-tag-summary": "Ajouter ou enlever des balises de modification aux révisions ou ou aux entrées de journal individuelles.",
        "apihelp-tag-param-rcid": "Un ou plus IDs de modification récente à partir desquels ajouter ou supprimer la balise.",
        "apihelp-tag-param-revid": "Un ou plusieurs IDs de révision à partir desquels ajouter ou supprimer la balise.",
        "apihelp-tag-param-logid": "Un ou plusieurs IDs d’entrée de journal à partir desquels ajouter ou supprimer la balise.",
        "apihelp-tag-param-tags": "Balises à appliquer à l’entrée de journal qui sera créée en résultat de cette action.",
        "apihelp-tag-example-rev": "Ajoute la balise <kbd>vandalism</kbd> à partir de l’ID de révision 123 sans indiquer de motif",
        "apihelp-tag-example-log": "Supprimer la balise <kbd>spam</kbd> à partir de l’ID d’entrée de journal 123 avec le motif <kbd>Wrongly applied</kbd>",
-       "apihelp-tokens-description": "Obtenir les jetons pour les actions modifiant les données.\n\nCe module est désuet, remplacé par [[Special:ApiHelp/query+tokens|action=query&meta=tokens]].",
+       "apihelp-tokens-summary": "Obtenir des jetons pour des actions de modification des données.",
        "apihelp-tokens-param-type": "Types de jeton à demander.",
        "apihelp-tokens-example-edit": "Récupérer un jeton de modification (par défaut).",
        "apihelp-tokens-example-emailmove": "Récupérer un jeton de courriel et un jeton de déplacement.",
-       "apihelp-unblock-description": "Débloquer un utilisateur.",
+       "apihelp-unblock-summary": "Débloquer un utilisateur.",
        "apihelp-unblock-param-id": "ID du blocage à lever (obtenu via <kbd>list=blocks</kbd>). Impossible à utiliser avec <var>$1user</var> ou <var>$1userid</var>.",
        "apihelp-unblock-param-user": "Nom d’utilisateur, adresse IP ou plage d’adresses IP à débloquer. Impossible à utiliser en même temps que <var>$1id</var> ou <var>$1userid</var>.",
        "apihelp-unblock-param-userid": "ID de l'utilisateur à débloquer. Ne peut être utilisé avec <var>$1id</var> ou <var>$1user</var>.",
        "apihelp-unblock-param-tags": "Modifier les balises à appliquer à l’entrée dans le journal de blocage.",
        "apihelp-unblock-example-id": "Lever le blocage d’ID #<kbd>105</kbd>.",
        "apihelp-unblock-example-user": "Débloquer l’utilisateur <kbd>Bob</kbd> avec le motif <kbd>Désolé Bob</kbd>.",
-       "apihelp-undelete-description": "Restaurer les révisions d’une page supprimée.\n\nUne liste des révisions supprimées (avec les horodatages) peut être récupérée via [[Special:ApiHelp/query+deletedrevisions|prop=deletedrevisions]], et une liste d’IDs de fichier supprimé peut être récupérée via [[Special:ApiHelp/query+filearchive|list=filearchive]].",
+       "apihelp-undelete-summary": "Restituer les versions d'une page supprimée.",
        "apihelp-undelete-param-title": "Titre de la page à restaurer.",
        "apihelp-undelete-param-reason": "Motif de restauration.",
        "apihelp-undelete-param-tags": "Modifier les balises à appliquer à l’entrée dans le journal de suppression.",
        "apihelp-undelete-param-watchlist": "Ajouter ou supprimer la page de la liste de suivi de l’utilisateur actuel sans condition, utiliser les préférences ou ne pas modifier le suivi.",
        "apihelp-undelete-example-page": "Annuler la suppression de la page <kbd>Main Page</kbd>.",
        "apihelp-undelete-example-revisions": "Annuler la suppression de deux révisions de la page <kbd>Main Page</kbd>.",
-       "apihelp-unlinkaccount-description": "Supprimer un compte tiers lié de l’utilisateur actuel.",
+       "apihelp-unlinkaccount-summary": "Supprimer un compte tiers lié de l’utilisateur actuel.",
        "apihelp-unlinkaccount-example-simple": "Essayer de supprimer le lien de l’utilisateur actuel pour le fournisseur associé avec <kbd>FooAuthenticationRequest</kbd>.",
-       "apihelp-upload-description": "Téléverser un fichier, ou obtenir l’état des téléversements en cours.\n\nPlusieurs méthodes sont disponibles :\n* Téléverser directement le contenu du fichier, en utilisant le paramètre <var>$1file</var>.\n* Téléverser le fichier par morceaux, en utilisant les paramètres <var>$1filesize</var>, <var>$1chunk</var>, and <var>$1offset</var>.\n* Pour que le serveur MédiaWiki cherche un fichier depuis une URL, utilisez le paramètre <var>$1url</var>.\n* Terminer un téléversement précédent qui a échoué à cause d’avertissements, en utilisant le paramètre <var>$1filekey</var>.\nNoter que le POST HTTP doit être fait comme un téléversement de fichier (par ex. en utilisant <code>multipart/form-data</code>) en envoyant le <code>multipart/form-data</code>.",
        "apihelp-upload-param-filename": "Nom de fichier cible.",
        "apihelp-upload-param-comment": "Téléverser le commentaire. Utilisé aussi comme texte de la page initiale pour les nouveaux fichiers si <var>$1text</var> n’est pas spécifié.",
        "apihelp-upload-param-tags": "Modifier les balises à appliquer à l’entrée du journal de téléversement et à la révision de la page du fichier.",
        "apihelp-upload-param-checkstatus": "Récupérer uniquement l’état de téléversement pour la clé de fichier donnée.",
        "apihelp-upload-example-url": "Téléverser depuis une URL",
        "apihelp-upload-example-filekey": "Terminer un téléversement qui a échoué à cause d’avertissements",
-       "apihelp-userrights-description": "Modifier l’appartenance d’un utilisateur à un groupe.",
+       "apihelp-userrights-summary": "Modifier l’appartenance d’un utilisateur à un groupe.",
        "apihelp-userrights-param-user": "Nom d’utilisateur.",
        "apihelp-userrights-param-userid": "ID de l’utilisateur.",
        "apihelp-userrights-param-add": "Ajouter l’utilisateur à ces groupes, ou s’ils sont déjà membres, mettre à jour la date d’expiration de leur appartenance à ce groupe.",
        "apihelp-userrights-example-user": "Ajouter l’utilisateur <kbd>FooBot</kbd> au groupe <kbd>bot</kbd><!-- {{int:group-bot}} ? -->, et le supprimer des groupes <kbd>sysop</kbd> et <kbd>bureaucrat</kbd>.",
        "apihelp-userrights-example-userid": "Ajouter l’utilisateur d’ID <kbd>123</kbd> au groupe <kbd>robot</kbd>, et le supprimer des groupes <kbd>sysop</kbd> et <kbd>bureaucrate</kbd>.",
        "apihelp-userrights-example-expiry": "Ajouter l'utilisateur <kbd>SometimeSysop</kbd> au groupe <kbd>sysop</kbd> pour 1 mois.",
-       "apihelp-validatepassword-description": "Valider un mot de passe en suivant les règles des mots de passe du wiki.\n\nLa validation est <samp>Good</samp> si le mot de passe est acceptable, <samp>Change</samp> s'il peut être utilisé pour se connecter et doit être changé, ou  <samp>Invalid</samp> s'il n'est pas utilisable.",
+       "apihelp-validatepassword-summary": "Valider un mot de passe conformément aux règles concernant les mots de passe du wiki.",
        "apihelp-validatepassword-param-password": "Mot de passe à valider.",
        "apihelp-validatepassword-param-user": "Nom de l'utilisateur, pour tester la création de compte. L'utilisateur ne doit pas déja exister.",
        "apihelp-validatepassword-param-email": "Adresse courriel, pour tester la création de compte.",
        "apihelp-validatepassword-param-realname": "Vrai nom, pour tester la création de compte.",
        "apihelp-validatepassword-example-1": "Valider le mot de passe <kbd>foobar</kbd> pour l'utilisateur actuel.",
        "apihelp-validatepassword-example-2": "Valider le mot de passe <kbd>qwerty</kbd> pour la création de l'utilisateur <kbd>Example</kbd>.",
-       "apihelp-watch-description": "Ajouter ou supprimer des pages de la liste de suivi de l’utilisateur actuel.",
+       "apihelp-watch-summary": "Ajouter ou supprimer des pages de la liste de suivi de l’utilisateur actuel.",
        "apihelp-watch-param-title": "La page à (ne plus) suivre. Utiliser plutôt <var>$1titles</var>.",
        "apihelp-watch-param-unwatch": "Si défini, la page ne sera plus suivie plutôt que suivie.",
        "apihelp-watch-example-watch": "Suivre la page <kbd>Main Page</kbd>.",
        "apihelp-watch-example-generator": "Suivre les quelques premières pages de l’espace de nom principal",
        "apihelp-format-example-generic": "Renvoyer le résultat de la requête dans le format $1.",
        "apihelp-format-param-wrappedhtml": "Renvoyer le HTML avec une jolie mise en forme et les modules ResourceLoader associés comme un objet JSON.",
-       "apihelp-json-description": "Extraire les données au format JSON.",
+       "apihelp-json-summary": "Extraire les données au format JSON.",
        "apihelp-json-param-callback": "Si spécifié, inclut la sortie dans l’appel d’une fonction fournie. Pour plus de sûreté, toutes les données spécifiques à l’utilisateur seront restreintes.",
        "apihelp-json-param-utf8": "Si spécifié, encode la plupart (mais pas tous) des caractères non ASCII en URF-8 au lieu de les remplacer par leur séquence d’échappement hexadécimale. Valeur par défaut quand <var>formatversion</var> ne vaut pas <kbd>1</kbd>.",
        "apihelp-json-param-ascii": "Si spécifié, encode toutes ses séquences d’échappement non ASCII utilisant l’hexadécimal. Valeur par défaut quand <var>formatversion</var> vaut <kbd>1</kbd>.",
        "apihelp-json-param-formatversion": "Mise en forme de sortie :\n;1:Format rétro-compatible (booléens de style XML, clés <samp>*</samp> pour les nœuds de contenu, etc.).\n;2:Format moderne expérimental. Des détails peuvent changer !\n;latest:Utilise le dernier format (actuellement <kbd>2</kbd>), peut changer sans avertissement.",
-       "apihelp-jsonfm-description": "Extraire les données au format JSON (affiché proprement en HTML).",
-       "apihelp-none-description": "Ne rien extraire.",
-       "apihelp-php-description": "Extraire les données au format sérialisé de PHP.",
+       "apihelp-jsonfm-summary": "Extraire les données au format JSON (affiché proprement en HTML).",
+       "apihelp-none-summary": "Ne rien extraire.",
+       "apihelp-php-summary": "Extraire les données au format sérialisé de PHP.",
        "apihelp-php-param-formatversion": "Mise en forme de la sortie :\n;1:Format rétro-compatible (bool&ens de style XML, clés <samp>*</samp> pour les nœuds de contenu, etc.).\n;2:Format moderne expérimental. Des détails peuvent changer !\n;latest:Utilise le dernier format (actuellement <kbd>2</kbd>), peut changer sans avertissement.",
-       "apihelp-phpfm-description": "Extraire les données au format sérialisé de PHP (affiché proprement en HTML).",
-       "apihelp-rawfm-description": "Extraire les données, y compris les éléments de débogage, au format JSON (affiché proprement en HTML).",
-       "apihelp-xml-description": "Extraire les données au format XML.",
+       "apihelp-phpfm-summary": "Extraire les données au format sérialisé de PHP (affiché proprement en HTML).",
+       "apihelp-rawfm-summary": "Extraire les données, y compris les éléments de débogage, au format JSON (affiché proprement en HTML).",
+       "apihelp-xml-summary": "Extraire les données au format XML.",
        "apihelp-xml-param-xslt": "Si spécifié, ajoute la page nommée comme une feuille de style XSL. La valeur doit être un titre dans l’espace de noms {{ns:MediaWiki}} se terminant par <code>.xsl</code>.",
        "apihelp-xml-param-includexmlnamespace": "Si spécifié, ajoute un espace de noms XML.",
-       "apihelp-xmlfm-description": "Extraire les données au format XML (affiché proprement en HTML).",
+       "apihelp-xmlfm-summary": "Extraire les données au format XML (affiché proprement en HTML).",
        "api-format-title": "Résultat de l’API de MediaWiki",
        "api-format-prettyprint-header": "Voici la représentation HTML du format $1. HTML est utile pour le débogage, mais inapproprié pour être utilisé dans une application.\n\nSpécifiez le paramètre <var>format</var> pour modifier le format de sortie. Pour voir la représentation non HTML du format $1, mettez <kbd>format=$2</kbd>.\n\nVoyez la [[mw:Special:MyLanguage/API|documentation complète]], ou l’[[Special:ApiHelp/main|aide de l’API]] pour plus d’information.",
        "api-format-prettyprint-header-only-html": "Ceci est une représentation HTML à des fins de débogage, et n’est pas approprié pour une utilisation applicative.\n\nVoir la [[mw:Special:MyLanguage/API|documentation complète]], ou l’[[Special:ApiHelp/main|aide de l’API]] pour plus d’information.",
        "api-help-title": "Aide de l’API de MediaWiki",
        "api-help-lead": "Ceci est une page d’aide de l’API de MediaWiki générée automatiquement.\n\nDocumentation et exemples : https://www.mediawiki.org/wiki/API",
        "api-help-main-header": "Module principal",
+       "api-help-undocumented-module": "Aucune documentation pour le module $1.",
        "api-help-flag-deprecated": "Ce module est désuet.",
        "api-help-flag-internal": "<strong>Ce module est interne ou instable.</strong> Son fonctionnement peut être modifié sans préavis.",
        "api-help-flag-readrights": "Ce module nécessite des droits de lecture.",
index 1ab1b37..f5206f2 100644 (file)
@@ -59,6 +59,7 @@
        "apihelp-clientlogin-summary": "Conectarse á wiki usando o fluxo interactivo.",
        "apihelp-clientlogin-example-login": "Comezar o proceso de conexión á wiki como o usuario <kbd>Exemplo</kbd> con contrasinal <kbd>ExemploContrasinal</kbd>.",
        "apihelp-clientlogin-example-login2": "Continuar a conexión despois dunha resposta de <samp>UI</samp> para unha autenticación de dous factores, proporcionando un <var>OATHToken</var> con valor <kbd>987654</kbd>.",
+       "apihelp-compare-summary": "Obter as diferencias entre dúas páxinas.",
        "apihelp-compare-param-fromtitle": "Primeiro título para comparar.",
        "apihelp-compare-param-fromid": "Identificador da primeira páxina a comparar.",
        "apihelp-compare-param-fromrev": "Primeira revisión a comparar.",
        "apihelp-opensearch-param-format": "O formato de saída.",
        "apihelp-opensearch-param-warningsaserror": "Se os avisos son recibidos con <kbd>format=json</kbd>, devolver un erro de API no canto de ignoralos.",
        "apihelp-opensearch-example-te": "Atopar páxinas que comezan por <kbd>Te</kbd>.",
+       "apihelp-options-summary": "Cambiar as preferencias do usuario actual.",
        "apihelp-options-param-reset": "Reinicia as preferencias ás iniciais do sitio.",
        "apihelp-options-param-resetkinds": "Lista de tipos de opcións a reinicializar cando a opción <var>$1reset</var> está definida.",
        "apihelp-options-param-change": "Lista de cambios, con formato nome=valor (p. ex. skin=vector). Se non se da un valor (sen un símbolo de igual), p.ex. optionname|otheroption|..., a opción pasará ó valor por defecto. Para calquera valor que conteña o carácter (<kbd>|</kbd>), use o [[Special:ApiHelp/main#main/datatypes|separador alternativo para valores múltiples]] para unha operación correcta.",
        "apihelp-setpagelanguage-param-tags": "Cambiar as etiquetas a aplicar á entrada de rexistro resultante desta acción.",
        "apihelp-setpagelanguage-example-language": "Cambiar a lingua de <kbd>Main Page</kbd> ó éuscaro.",
        "apihelp-setpagelanguage-example-default": "Cambiar a lingua da páxina con identificador 123 á lingua predeterminada para o contido da wiki.",
+       "apihelp-stashedit-summary": "Preparar unha edición na caché compartida.",
        "apihelp-stashedit-param-title": "Título da páxina que se está a editar.",
        "apihelp-stashedit-param-section": "Número de selección. O <kbd>0</kbd> é para a sección superior, <kbd>novo</kbd> para unha sección nova.",
        "apihelp-stashedit-param-sectiontitle": "Título para unha nova sección.",
index 5d997be..f031c40 100644 (file)
@@ -10,7 +10,6 @@
                        "Dj"
                ]
        },
-       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|Dokumentáció]]\n* [[mw:Special:MyLanguage/API:FAQ|GYIK]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Levelezőlista]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API-bejelentések]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Hibabejelentések és kérések]\n</div>\n<strong>Státusz:</strong> Minden ezen a lapon látható funkciónak működnie kell, de az API jelenleg is aktív fejlesztés alatt áll, és bármikor változhat. Iratkozz fel a [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ mediawiki-api-announce levelezőlistára] a frissítések követéséhez.\n\n<strong>Hibás kérések:</strong> Ha az API hibás kérést kap, egy HTTP-fejlécet küld vissza „MediaWiki-API-Error” kulccsal, és a fejléc értéke és a visszaküldött hibakód ugyanarra az értékre lesz állítva. További információért lásd: [[mw:Special:MyLanguage/API:Errors_and_warnings|API: Hibák és figyelmeztetések]].\n\n<strong>Tesztelés:</strong> Az API-kérések könnyebb teszteléséhez használható az [[Special:ApiSandbox|API-homokozó]].",
        "apihelp-main-param-action": "Milyen műveletet hajtson végre.",
        "apihelp-main-param-format": "A kimenet formátuma.",
        "apihelp-main-param-smaxage": "Az <code>s-maxage</code> gyorsítótár-vezérlő HTTP-fejléc beállítása ennyi másodpercre. A hibák soha nincsenek gyorsítótárazva.",
@@ -25,7 +24,7 @@
        "apihelp-main-param-errorformat": "A figyelmeztetések és hibaüzenetek formátuma.\n; plaintext: Wikiszöveg eltávolított HTML-címkékkel és a HTML-entitások (pl. &amp;amp;) kicserélésével.\n; wikitext: Feldolgozatlan wikiszöveg.\n; html: HTML.\n; raw: Az üzenet azonosítója és paraméterei.\n; none: Szöveges kimenet mellőzése, csak hibakódok.\n; bc: A MediaWiki 1.29 előtti formátum. A <var>errorlang</var> és <var> erroruselocal</var> paraméterek figyelmen kívül lesznek hagyva.",
        "apihelp-main-param-errorlang": "A figyelmeztetésekhez és hibaüzenetekhez használandó nyelv. A <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> a <kbd>siprop=languages</kbd> paraméterrel visszaadja a lehetséges nyelvkódok listáját, vagy <kbd>content</kbd> a wiki nyelvbeállításához, illetve <kbd>uselang</kbd> a <var>uselang</var> paraméter értékéhez.",
        "apihelp-main-param-errorsuselocal": "Ha meg van adva, a hibaüzenetek a helyileg testreszabott üzeneteket fogják használni a {{ns:MediaWiki}} névtérből.",
-       "apihelp-block-description": "Szerkesztő blokkolása",
+       "apihelp-block-summary": "Szerkesztő blokkolása",
        "apihelp-block-param-user": "Blokkolandó felhasználónév, IP-cím vagy IP-címtartomány. Nem használható együtt a <var>$1userid</var> paraméterrel.",
        "apihelp-block-param-userid": "A blokkolandó felhasználó numerikus azonosítója. Nem használható a <var>$1user</var> paraméterrel együtt.",
        "apihelp-block-param-expiry": "Lejárat ideje. Lehet relatív (pl. <kbd>5 months</kbd>, <kbd>2 weeks</kbd>) vagy abszolút (pl. <kbd>2014-09-18T12:34:56Z</kbd>). Ha <kbd>infinite</kbd>-re, <kbd>indefinite</kbd>-re vagy <kbd>never</kbd>-re állítod, a blokk soha nem fog lejárni.",
        "apihelp-block-param-watchuser": "A szerkesztő vagy IP-cím szerkesztői- és vitalapjának figyelése.",
        "apihelp-block-example-ip-simple": "A <kbd>192.0.2.5</kbd> IP-cím blokkolása három napra <kbd>First strike</kbd> indoklással.",
        "apihelp-block-example-user-complex": "<kbd>Vandal</kbd> blokkolása határozatlan időre <kbd>Vandalism</kbd> indoklással, új fiók létrehozásának és e-mail küldésének megakadályozása.",
-       "apihelp-checktoken-description": "Egy <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd> kéréssel szerzett token érvényességének vizsgálata.",
+       "apihelp-checktoken-summary": "Egy <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd> kéréssel szerzett token érvényességének vizsgálata.",
        "apihelp-checktoken-param-type": "A tesztelendő token típusa.",
        "apihelp-checktoken-param-token": "A tesztelendő token.",
        "apihelp-checktoken-param-maxtokenage": "A token megengedett legnagyobb kora másodpercekben.",
        "apihelp-checktoken-example-simple": "Egy <kbd>csrf</kbd> token érvényességének vizsgálata.",
-       "apihelp-clearhasmsg-description": "A <code>hasmsg</code> jelzés törlése az aktuális felhasználónak.",
+       "apihelp-clearhasmsg-summary": "A <code>hasmsg</code> jelzés törlése az aktuális felhasználónak.",
        "apihelp-clearhasmsg-example-1": "A <code>hasmsg</code> jelzés törlése az aktuális felhasználónak.",
        "apihelp-clientlogin-example-login": "A bejelentkezési folyamat elkezdése <kbd>Example</kbd> felhasználónévvel és <kbd>ExamplePassword</kbd> jelszóval.",
        "apihelp-clientlogin-example-login2": "A bejelentkezés folytatása <samp>UI</samp> válasz után a kétlépcsős azonosításra, az <var>OATHToken</var> paraméternek <kbd>987654</kbd> értéket megadva.",
-       "apihelp-compare-description": "Két lap közötti különbség kiszámítása.\n\nMindkét laphoz kötelező megadni egy lapváltozat-azonosítót, címet vagy lapazonosítót.",
        "apihelp-compare-param-fromtitle": "Az első összehasonlítandó lap címe.",
        "apihelp-compare-param-fromid": "Az első összehasonlítandó lap lapazonosítója.",
        "apihelp-compare-param-fromrev": "Az első összehasonlítandó lapváltozat azonosítója.",
@@ -57,7 +55,7 @@
        "apihelp-compare-param-toid": "A második összehasonlítandó lap lapazonosítója.",
        "apihelp-compare-param-torev": "A második összehasonlítandó lapváltozat azonosítója.",
        "apihelp-compare-example-1": "Az 1-es és 2-es lapváltozat összehasonlítása.",
-       "apihelp-createaccount-description": "Új felhasználói fiók létrehozása.",
+       "apihelp-createaccount-summary": "Új felhasználói fiók létrehozása.",
        "apihelp-createaccount-example-create": "<kbd>Example</kbd> felhasználói fiók létrehozásának elkezdése <kbd>ExamplePassword</kbd> jelszóval.",
        "apihelp-createaccount-param-name": "Felhasználónév.",
        "apihelp-createaccount-param-password": "Jelszó (figyelmen kívül hagyva, ha a <var>$1mailpassword</var> be van állítva).",
@@ -70,7 +68,7 @@
        "apihelp-createaccount-param-language": "A felhasználó alapértelmezett nyelvkódja (opcionális, alapértelmezetten a tartalom nyelve).",
        "apihelp-createaccount-example-pass": "<kbd>testuser</kbd> felhasználó létrehozása <kbd>test123</kbd> jelszóval.",
        "apihelp-createaccount-example-mail": "<kbd>testmailuser</kbd> felhasználó létrehozása, véletlenszerű jelszó elküldése e-mailben.",
-       "apihelp-delete-description": "Lap törlése.",
+       "apihelp-delete-summary": "Lap törlése.",
        "apihelp-delete-param-title": "A törlendő lap címe. Nem használható együtt a <var>$1pageid</var> paraméterrel.",
        "apihelp-delete-param-pageid": "A törlendő lap lapazonosítója. Nem használható együtt a <var>$1title</var> paraméterrel.",
        "apihelp-delete-param-reason": "A törlés indoka. Ha nincs beállítva, automatikusan generált indoklás helyettesíti.",
@@ -80,8 +78,8 @@
        "apihelp-delete-param-oldimage": "A törlendő régi kép neve az [[Special:ApiHelp/query+imageinfo|action=query&prop=imageinfo&iiprop=archivename]] által adott formátumban.",
        "apihelp-delete-example-simple": "<kbd>Main Page</kbd> törlése.",
        "apihelp-delete-example-reason": "<kbd>Main Page</kbd> törlése <kbd>Preparing for move</kbd> indoklással.",
-       "apihelp-disabled-description": "Ez a modul le lett tiltva.",
-       "apihelp-edit-description": "Lapok létrehozása és szerkesztése.",
+       "apihelp-disabled-summary": "Ez a modul le lett tiltva.",
+       "apihelp-edit-summary": "Lapok létrehozása és szerkesztése.",
        "apihelp-edit-param-title": "A szerkesztendő lap címe. Nem használható együtt a <var>$1pageid</var> paraméterrel.",
        "apihelp-edit-param-pageid": "A szerkesztendő lap lapazonosítója. Nem használható együtt a <var>$1title</var> paraméterrel.",
        "apihelp-edit-param-section": "A szerkesztendő szakasz száma. <kbd>0</kbd> a bevezetőhöz, <kbd>new</kbd> új szakaszhoz.",
        "apihelp-edit-example-edit": "Lap szerkesztése",
        "apihelp-edit-example-prepend": "<kbd>_&#95;NOTOC_&#95;</kbd> hozzáadása a lap elejére.",
        "apihelp-edit-example-undo": "Az 13579–13585. változatok visszavonása automatikus szerkesztési összefoglalóval.",
-       "apihelp-emailuser-description": "E-mail küldése",
+       "apihelp-emailuser-summary": "E-mail küldése",
        "apihelp-emailuser-param-target": "Az e-mail címzettje.",
        "apihelp-emailuser-param-subject": "A levél tárgya.",
        "apihelp-emailuser-param-text": "Szövegtörzs.",
        "apihelp-emailuser-param-ccme": "Másolat küldése magamnak.",
        "apihelp-emailuser-example-email": "E-mail küldése <kbd>WikiSysop</kbd> felhasználónak <kbd>Content</kbd> szöveggel.",
-       "apihelp-expandtemplates-description": "Minden sablon kibontása a wikiszövegben.",
+       "apihelp-expandtemplates-summary": "Minden sablon kibontása a wikiszövegben.",
        "apihelp-expandtemplates-param-title": "Lap címe.",
        "apihelp-expandtemplates-param-text": "Az átalakítandó wikiszöveg.",
        "apihelp-expandtemplates-param-revid": "Változatazonosító a <nowiki>{{REVISIONID}}</nowiki> és hasonló változók kibontásához.",
        "apihelp-expandtemplates-paramvalue-prop-jsconfigvars": "A lapra vonatkozó JavaScript-változók.",
        "apihelp-expandtemplates-param-includecomments": "A HTML-megjegyzések szerepeljenek-e a kimenetben.",
        "apihelp-expandtemplates-example-simple": "A <kbd><nowiki>{{Project:Sandbox}}</nowiki></kbd> wikiszöveg kibontása.",
-       "apihelp-feedcontributions-description": "Egy felhasználó közreműködéseinek lekérése hírcsatornaként.",
+       "apihelp-feedcontributions-summary": "Egy felhasználó közreműködéseinek lekérése hírcsatornaként.",
        "apihelp-feedcontributions-param-feedformat": "A hírcsatorna formátuma.",
        "apihelp-feedcontributions-param-user": "A lekérendő felhasználók.",
        "apihelp-feedcontributions-param-namespace": "A közreműködések szűrése ezen névtérre.",
        "apihelp-feedcontributions-param-hideminor": "Apró szerkesztések kihagyása.",
        "apihelp-feedcontributions-param-showsizediff": "A változatok közötti méretkülönbség lekérése.",
        "apihelp-feedcontributions-example-simple": "<kbd>Example</kbd> felhasználó közreműködéseinek lekérése.",
-       "apihelp-feedrecentchanges-description": "A friss változtatások lekérése hírcsatornaként.",
+       "apihelp-feedrecentchanges-summary": "A friss változtatások lekérése hírcsatornaként.",
        "apihelp-feedrecentchanges-param-feedformat": "A hírcsatorna formátuma.",
        "apihelp-feedrecentchanges-param-namespace": "Az eredmények szűrése erre a névtérre.",
        "apihelp-feedrecentchanges-param-invert": "Minden névtér a kiválasztott kivételével.",
        "apihelp-feedrecentchanges-param-categories_any": "Inkább a megadott kategóriák bármelyikében szereplő lapok szerkesztéseinek megjelenítése.",
        "apihelp-feedrecentchanges-example-simple": "Friss változtatások megjelenítése.",
        "apihelp-feedrecentchanges-example-30days": "Az elmúlt 30 nap friss változtatásainak megjelenítése.",
-       "apihelp-feedwatchlist-description": "A figyelőlista lekérése hírcsatornaként.",
+       "apihelp-feedwatchlist-summary": "A figyelőlista lekérése hírcsatornaként.",
        "apihelp-feedwatchlist-param-feedformat": "A hírcsatorna formátuma.",
        "apihelp-feedwatchlist-param-hours": "Az utóbbi ennyi órában szerkesztett lapok listázása.",
        "apihelp-feedwatchlist-param-linktosections": "Hivatkozás közvetlenül a módosított szakaszra, ha lehetséges.",
        "apihelp-feedwatchlist-example-default": "A figyelőlista-hírcsatorna megjelenítése.",
        "apihelp-feedwatchlist-example-all6hrs": "A figyelt lapok összes változtatásának megjelenítése az elmúlt 6 órában.",
-       "apihelp-filerevert-description": "Egy fájl visszaállítása egy régebbi verzióra.",
+       "apihelp-filerevert-summary": "Egy fájl visszaállítása egy régebbi verzióra.",
        "apihelp-filerevert-param-filename": "Célfájlnév, {{ns:6}}: (File:) előtag nélkül",
        "apihelp-filerevert-param-comment": "Feltöltési összefoglaló.",
        "apihelp-filerevert-param-archivename": "A visszaállítandó változat archív neve.",
        "apihelp-filerevert-example-revert": "<kbd>Wiki.png</kbd> visszaállítása a <kbd>2011-03-05T15:27:40Z</kbd>-kori változatra.",
-       "apihelp-help-description": "Súgó megjelenítése a megadott modulokhoz.",
+       "apihelp-help-summary": "Súgó megjelenítése a megadott modulokhoz.",
        "apihelp-help-param-submodules": "Súgó megjelenítése a megadott modul almoduljaihoz is.",
        "apihelp-help-param-recursivesubmodules": "Súgó megjelenítése az almodulokhoz rekurzívan.",
        "apihelp-help-param-helpformat": "A súgó kimeneti formátuma.",
        "apihelp-help-example-recursive": "Minden súgó egy lapon.",
        "apihelp-help-example-help": "Súgó magához a súgó modulhoz.",
        "apihelp-help-example-query": "Súgó két lekérdező almodulhoz.",
-       "apihelp-imagerotate-description": "Egy vagy több kép elforgatása.",
+       "apihelp-imagerotate-summary": "Egy vagy több kép elforgatása.",
        "apihelp-imagerotate-param-rotation": "A kép forgatása ennyi fokkal az óramutató járásával megegyező irányban.",
        "apihelp-imagerotate-example-simple": "<kbd>Example.png</kbd> elforgatása <kbd>90</kbd> fokkal.",
        "apihelp-imagerotate-example-generator": "Az összes kép elforgatása a <kbd>Category:Flip</kbd> kategóriában <kbd>180</kbd> fokkal.",
-       "apihelp-import-description": "Egy lap importálása egy másik wikiből vagy XML-fájlból.\n\nA HTTP POST-kérést fájlfeltöltésként kell elküldeni (multipart/form-data használatával) a <var>xml</var> paraméter használatakor.",
        "apihelp-import-param-xml": "Feltöltött XML-fájl.",
        "apihelp-import-param-interwikisource": "Wikiközi importálásnál: forráswiki.",
        "apihelp-import-param-interwikipage": "Wikiközi importálásnál: az importálandó lap.",
        "apihelp-import-param-namespace": "Importálás ebbe a névtérbe. Nem használható együtt a <var>$1rootpage</var> paraméterrel.",
        "apihelp-import-param-rootpage": "Importálás ennek a lapnak az allapjaként. Nem használható együtt a <var>$1namespace</var> paraméterrel.",
        "apihelp-import-example-import": "[[meta:Help:ParserFunctions]] importálása a 100-as névtérbe teljes laptörténettel.",
-       "apihelp-linkaccount-description": "Egy harmadik fél szolgáltató fiókjának kapcsolása a jelenlegi felhasználóhoz.",
+       "apihelp-linkaccount-summary": "Egy harmadik fél szolgáltató fiókjának kapcsolása a jelenlegi felhasználóhoz.",
        "apihelp-linkaccount-example-link": "Összekapcsolás elkezdése <kbd>Example</kbd> szolgáltató fiókjával.",
-       "apihelp-login-description": "Bejelentkezés és hitelesítő sütik lekérése.\n\nEz a művelet csak [[Special:BotPasswords|botjelszavakkal]] használandó; a fő fiókkal való használat elavult és figyelmeztetés nélkül sikertelen lehet. A fő fiókkal való biztonságos bejelentkezéshez használd az <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd> paramétert.",
-       "apihelp-login-description-nobotpasswords": "Bejelentkezés és hitelesítő sütik lekérése.\n\nEz a művelet elavult és figyelmeztetés nélkül sikertelen lehet. A biztonságos bejelentkezéshez használd az <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd> paramétert.",
        "apihelp-login-param-name": "Szerkesztőnév.",
        "apihelp-login-param-password": "Jelszó.",
        "apihelp-login-param-domain": "Tartomány (opcionális)",
        "apihelp-login-param-token": "Az első kérésben megszerzett bejelentkezési token.",
        "apihelp-login-example-gettoken": "Egy bejelentkezés token lekérése.",
        "apihelp-login-example-login": "Bejelentkezés.",
-       "apihelp-logout-description": "Kijelentkezés és munkamenetadatok törlése.",
+       "apihelp-logout-summary": "Kijelentkezés és munkamenetadatok törlése.",
        "apihelp-logout-example-logout": "Aktuális felhasználó kijelentkeztetése.",
-       "apihelp-managetags-description": "A változtatáscímkék kezelése.",
+       "apihelp-managetags-summary": "A változtatáscímkék kezelése.",
        "apihelp-managetags-param-operation": "A végrehajtandó feladat:\n;create: Új változtatáscímke létrehozása kézi használatra.\n;delete: Egy változtatáscímke eltávolítása az adatbázisból, beleértve az eltávolítását minden lapváltozatról, frissváltoztatások-bejegyzésről és naplóbejegyzésről, ahol használatban van.\n;activate: Egy változtatáscímke aktiválása, lehetővé téve a felhasználóknak a kézi használatát.\n;deactivate: Egy változtatáscímke deaktiválása, a felhasználók megakadályozása a kézi használatban.",
        "apihelp-managetags-param-tag": "A létrehozandó, törlendő, aktiválandó vagy deaktiválandó címke. Létrehozás esetén adott nevű címke nem létezhet. Törlés esetén a címkének léteznie kell. Aktiválás esetén a címkének léteznie kell, és nem használhatja más kiterjesztés. Deaktiválás esetén a címkének aktívnak és kézzel definiáltnak  kell lennie.",
        "apihelp-managetags-param-reason": "Opcionális indoklás a címke létrehozásához, törléséhez, aktiválásához vagy deaktiválásához.",
        "apihelp-managetags-example-delete": "<kbd>vandlaism</kbd> címke törlése <kbd>Misspelt</kbd> indoklással",
        "apihelp-managetags-example-activate": "<kbd>spam</kbd> címke aktiválása <kbd>For use in edit patrolling</kbd> indoklással",
        "apihelp-managetags-example-deactivate": "<kbd>spam</kbd> címke deaktiválása <kbd>No longer required</kbd> indoklással",
-       "apihelp-mergehistory-description": "Laptörténetek egyesítése",
+       "apihelp-mergehistory-summary": "Laptörténetek egyesítése",
        "apihelp-mergehistory-param-reason": "Laptörténet egyesítésének oka.",
-       "apihelp-move-description": "Egy lap átnevezése.",
+       "apihelp-move-summary": "Egy lap átnevezése.",
        "apihelp-move-param-from": "Az átnevezendő lap címe. Nem használható együtt a <var>$1fromid</var> paraméterrel.",
        "apihelp-move-param-fromid": "Az átnevezendő lap lapazonosítója. Nem használható együtt a <var>$1from</var> paraméterrel.",
        "apihelp-move-param-to": "A lap új címe.",
        "apihelp-move-param-watchlist": "A lap hozzáadása a figyelőlistához vagy eltávolítása onnan feltétel nélkül, a beállítások használata vagy a figyelőlista érintetlenül hagyása.",
        "apihelp-move-param-ignorewarnings": "Figyelmeztetések figyelmen kívül hagyása.",
        "apihelp-move-example-move": "<kbd>Badtitle</kbd> átnevezése <kbd>Goodtitle</kbd> címre átirányítás készítése nélkül.",
-       "apihelp-opensearch-description": "Keresés a wikin az OpenSearch protokoll segítségével.",
+       "apihelp-opensearch-summary": "Keresés a wikin az OpenSearch protokoll segítségével.",
        "apihelp-opensearch-param-search": "A keresőkifejezés.",
        "apihelp-opensearch-param-limit": "Találatok maximális száma.",
        "apihelp-opensearch-param-namespace": "A keresendő névterek.",
        "apihelp-opensearch-param-redirects": "Hogyan kezelje az átirányításokat:\n;return: Magának az átirányításnak a visszaadása.\n;resolve: A céllap visszaadása. Lehet, hogy kevesebb mint <var>$1limit</var> találatot ad vissza.\nTörténeti okokból az alapértelmezés „return” <kbd>$1format=json</kbd> esetén és „resolve” más formátumoknál.",
        "apihelp-opensearch-param-format": "A kimenet formátuma.",
        "apihelp-opensearch-example-te": "<kbd>Te</kbd>-vel kezdődő lapok keresése.",
-       "apihelp-options-description": "A jelenlegi felhasználó beállításainak módosítása.\n\nCsak a MediaWiki vagy kiterjesztései által kínált, valamint a <code>userjs-</code> előtagú (felhasználói parancsfájloknak szánt) beállítások állíthatók be.",
        "apihelp-options-param-reset": "Beállítások visszaállítása a wiki alapértelmezéseire.",
        "apihelp-options-param-resetkinds": "A visszaállítandó beállítások típusa(i) a <var>$1reset</var> paraméter használatakor.",
        "apihelp-options-param-change": "Változtatások listája név=érték formátumban (pl. <kbd>skin=vector</kbd>). Ha nincs érték megadva (egyenlőségjel sem szerepel – pl. <kbd>beállítás|másik|…</kbd>), a beállítások visszaállnak az alapértelmezett értékre. Ha bármilyen érték tartalmaz függőleges vonal karaktert (<kbd>|</kbd>), használd az [[Special:ApiHelp/main#main/datatypes|alternatív elválasztókaraktert]] a megfelelő működéshez.",
        "apihelp-options-example-reset": "Minden beállítás visszaállítása",
        "apihelp-options-example-change": "A <kbd>skin</kbd> és a <kbd>hideminor</kbd> beállítások módosítása.",
        "apihelp-options-example-complex": "Minden beállítás visszaállítása, majd a <kbd>skin</kbd> és a <kbd>nickname</kbd> beállítása.",
-       "apihelp-paraminfo-description": "Információk lekérése API-modulokról.",
+       "apihelp-paraminfo-summary": "Információk lekérése API-modulokról.",
        "apihelp-paraminfo-param-modules": "Modulnevek (az <var>action</var> és <var>format</var> paraméterek értékei vagy <kbd>main</kbd>). Megadhatók almodulok <kbd>+</kbd> elválasztással vagy minden almodul <kbd>+*</kbd>, illetve rekurzívan minden almodul <kbd>+**</kbd> végződéssel.",
        "apihelp-paraminfo-param-helpformat": "A súgószövegek formátuma.",
        "apihelp-paraminfo-param-querymodules": "Lekérdező modul(ok) neve (a <var>prop</var>, <var>meta</var> vagy <var>list</var> paraméter értéke). Használd a <kbd>$1modules=query+foo</kbd> formát a <kbd>$1querymodules=foo</kbd> helyett.",
        "apihelp-paraminfo-param-formatmodules": "Formázómodul(ok) neve (a <var>format</var> paraméter értéke). Használd a <var>$1modules</var> paramétert helyette.",
        "apihelp-paraminfo-example-1": "Információk megjelenítése az <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd>, <kbd>[[Special:ApiHelp/jsonfm|format=jsonfm]]</kbd>, <kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd> és <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> lekérdezésekhez.",
        "apihelp-paraminfo-example-2": "Információk megjelenítése az <kbd>[[Special:ApiHelp/query|action=query]]</kbd> összes almoduljához.",
-       "apihelp-parse-description": "Tartalom feldolgozása.\n\nLásd az <kbd>[[Special:ApiHelp/query|action=query]]</kbd> számos prop-modulját a információk lekérésére a lap aktuális változatáról.\n\nTöbbféle módon megadható a feldolgozandó szöveg:\n# Egy lap vagy lapváltozat megadásával, a <var>$1page</var>, <var>$1pageid</var> vagy <var>$1oldid</var> paraméterrel.\n# Magának a tartalomnak a megadásával, a <var>$1text</var>, <var>$1title</var> és <var>$1contentmodel</var> paraméterrel.\n# Csak egy összefoglaló feldolgozása. A <var>$1prop</var> paraméternek üresnek kell lennie.",
        "apihelp-parse-param-title": "A lapnak a címe, amihez a szöveg tartozik. Ha nincs megadva, a <var>$1contentmodel</var> paraméter kötelező, és a cím [[API]] lesz.",
        "apihelp-parse-param-text": "A feldolgozandó szöveg. Használd a <var>$1title</var> vagy <var>$1contentmodel</var> paramétert a tartalommodell megadásához.",
        "apihelp-parse-param-summary": "Feldolgozandó szerkesztési összefoglaló.",
        "apihelp-parse-paramvalue-prop-sections": "A feldolgozott wikiszövegben talált szakaszok.",
        "apihelp-parse-paramvalue-prop-revid": "A feldolgozott lap lapváltozat-azonosítója.",
        "apihelp-parse-paramvalue-prop-displaytitle": "A feldolgozott wikiszöveghez tartozó cím.",
-       "apihelp-parse-paramvalue-prop-headitems": "<span class=\"apihelp-deprecated\">Elavult.</span> A <code>&lt;head&gt;</code> HTML-címkébe kerülő elemek.",
+       "apihelp-parse-paramvalue-prop-headitems": "A <code>&lt;head&gt;</code> HTML-címkébe kerülő elemek.",
        "apihelp-parse-paramvalue-prop-headhtml": "A lap feldolgozott <code>&lt;head&gt;</code> HTML-címkéje.",
        "apihelp-parse-paramvalue-prop-modules": "A lapon használt ResourceLoader-modulok. A betöltésükhöz használd a <code>mw.loader.using()</code> függvényt. Vagy a <kbd>jsconfigvars</kbd>, vagy az <kbd>encodedjsconfigvars</kbd> paramétert kötelező együtt használni ezzel a paraméterrel.",
        "apihelp-parse-paramvalue-prop-jsconfigvars": "A lapra jellemző JavaScript-változók. A használatukhoz állítsd be őket az <code>mw.config.set()</code> függvénnyel.",
        "apihelp-parse-example-text": "Wikiszöveg feldolgozása.",
        "apihelp-parse-example-texttitle": "Wikiszöveg feldolgozása a lapcím megadásával.",
        "apihelp-parse-example-summary": "Egy szerkesztési összefoglaló feldolgozása.",
-       "apihelp-patrol-description": "Egy lap vagy lapváltozat ellenőrzöttnek jelölése (patrol).",
+       "apihelp-patrol-summary": "Egy lap vagy lapváltozat ellenőrzöttnek jelölése (patrol).",
        "apihelp-patrol-param-rcid": "Az ellenőrzendő frissváltoztatások-azonosító.",
        "apihelp-patrol-param-revid": "Az ellenőrzendő lapváltozat azonosítója (oldid).",
        "apihelp-patrol-example-rcid": "Egy friss változtatás ellenőrzöttnek jelölése.",
        "apihelp-patrol-example-revid": "Egy lapváltozat ellenőrzöttnek jelölése.",
-       "apihelp-protect-description": "Egy lap védelmi szintjének változtatása.",
+       "apihelp-protect-summary": "Egy lap védelmi szintjének változtatása.",
        "apihelp-protect-param-title": "A levédendő/feloldandó lap címe. Nem használható együtt a <var>$1pageid</var> paraméterrel.",
        "apihelp-protect-param-pageid": "A levédendő/feloldandó lap lapazonosítója. Nem használható együtt a <var>$1title</var> paraméterrel.",
        "apihelp-protect-param-protections": "Védelmi szintek, <kbd>típus=szint</kbd> formátumban (pl. <kbd>edit=sysop</kbd>). Az <kbd>all</kbd> szint azt jelenti, hogy mindenki végrehajthatja az adott műveletet, vagyis nincs korlátozás.\n\n<strong>Megjegyzés:</strong> Minden nem listázott művelet védelme el lesz távolítva.",
        "apihelp-protect-example-protect": "Lap levédése.",
        "apihelp-protect-example-unprotect": "Egy lap védelmének feloldása a korlátozások <kbd>all</kbd>-ra állításával (vagyis mindenki végrehajthatja a műveleteket).",
        "apihelp-protect-example-unprotect2": "Egy lap védelmének feloldása semmilyen védelem beállításával.",
-       "apihelp-purge-description": "A gyorsítótár ürítése a megadott lapoknál.",
+       "apihelp-purge-summary": "A gyorsítótár ürítése a megadott lapoknál.",
        "apihelp-purge-param-forcelinkupdate": "A linktáblák frissítése.",
        "apihelp-purge-param-forcerecursivelinkupdate": "A linktábla frissítése a megadott lapokra és minden olyan lapra, ami a megadott lapokat beilleszti sablonként.",
        "apihelp-purge-example-simple": "A gyorsítótár ürítése a <kbd>Main Page</kbd> és <kbd>API</kbd> lapoknál.",
        "apihelp-purge-example-generator": "A gyorsítótár ürítése az első 10 fő névtérbeli lapnál.",
-       "apihelp-query-description": "Adatok lekérése a MediaWikiből és a MediaWikiről.\n\nMinden adatmódosításhoz először a <kbd>query</kbd> segítségével szereznie kell egy tokent a rosszindulatú oldalak visszaéléseinek elhárítására.",
        "apihelp-query-param-prop": "A lapokról lekérendő tulajdonságok.",
        "apihelp-query-param-list": "Lekérendő listák.",
        "apihelp-query-param-meta": "Lekérendő metaadatok.",
        "apihelp-query-param-rawcontinue": "Nyers <samp>query-continue</samp> adatok visszaadása a folytatáshoz.",
        "apihelp-query-example-revisions": "[[Special:ApiHelp/query+siteinfo|Wikiinformációk]] és a <kbd>Main Page</kbd> [[Special:ApiHelp/query+revisions|laptörténetének]] lekérése.",
        "apihelp-query-example-allpages": "Az <kbd>API/</kbd> kezdetű lapok laptörténetének lekérése.",
-       "apihelp-query+allcategories-description": "Az összes kategória visszaadása.",
+       "apihelp-query+allcategories-summary": "Az összes kategória visszaadása.",
        "apihelp-query+allcategories-param-from": "A kategóriák listázása ettől a címtől.",
        "apihelp-query+allcategories-param-to": "A kategóriák listázása eddig a címig.",
        "apihelp-query+allcategories-param-prefix": "Ezzel kezdődő című kategóriák keresése.",
        "apihelp-query+allcategories-paramvalue-prop-hidden": "Rejtett-e a kategória a <code>_&#95;HIDDENCAT_&#95;</code> kapcsolóval.",
        "apihelp-query+allcategories-example-size": "Kategóriák listázása a bennük lévő lapok számával.",
        "apihelp-query+allcategories-example-generator": "Információk lekérése magukról a kategórialapokról, amiknek a címe <kbd>List</kbd> kezdetű.",
-       "apihelp-query+alldeletedrevisions-description": "Egy felhasználó vagy egy névtér összes törölt szerkesztésének listázása.",
+       "apihelp-query+alldeletedrevisions-summary": "Egy felhasználó vagy egy névtér összes törölt szerkesztésének listázása.",
        "apihelp-query+alldeletedrevisions-paraminfo-useronly": "Csak az <var>$3user</var> paraméterrel együtt használható.",
        "apihelp-query+alldeletedrevisions-paraminfo-nonuseronly": "Nem használható együtt az <var>$3user</var> paraméterrel.",
        "apihelp-query+alldeletedrevisions-param-start": "A listázás kezdő időbélyege.",
        "apihelp-query+alldeletedrevisions-param-generatetitles": "Generátorként használva címek visszaadása lapváltozat-azonosítók helyett.",
        "apihelp-query+alldeletedrevisions-example-user": "<kbd>Example</kbd> 50 legutóbbi törölt szerkesztésének listázása.",
        "apihelp-query+alldeletedrevisions-example-ns-main": "A fő névtér első 50 törölt szerkesztésének listázása.",
-       "apihelp-query+allfileusages-description": "Az összes fájlhasználat listázása, beleértve a nem létező fájlokét is.",
+       "apihelp-query+allfileusages-summary": "Az összes fájlhasználat listázása, beleértve a nem létező fájlokét is.",
        "apihelp-query+allfileusages-param-from": "Listázás ettől a címtől vagy fájltól.",
        "apihelp-query+allfileusages-param-to": "Listázás eddig a címig vagy fájlig.",
        "apihelp-query+allfileusages-param-prefix": "Ezzel kezdődő nevű fájlok keresése.",
        "apihelp-query+allfileusages-example-unique": "Különböző fájlnevek listázása.",
        "apihelp-query+allfileusages-example-unique-generator": "Az összes fájlnév lekérése, hiányzók megjelölése.",
        "apihelp-query+allfileusages-example-generator": "A fájlokat használó lapok lekérése.",
-       "apihelp-query+allimages-description": "Az összes kép visszaadása.",
+       "apihelp-query+allimages-summary": "Az összes kép visszaadása.",
        "apihelp-query+allimages-param-sort": "Rendezési szempont.",
        "apihelp-query+allimages-param-dir": "A listázás iránya.",
        "apihelp-query+allimages-param-from": "Listázás ettől a fájlnévtől. Csak az <kbd>$1sort=name</kbd> paraméterrel együtt használható.",
        "apihelp-query+allimages-example-recent": "A legutóbb feltöltött fájlok listázása, hasonló a [[Special:NewFiles]] laphoz.",
        "apihelp-query+allimages-example-mimetypes": "<kbd>image/png</kbd> vagy <kbd>image/gif</kbd> MIME-típusú fájlok listázása",
        "apihelp-query+allimages-example-generator": "Információk 4 fájlról <kbd>T</kbd>-től kezdve.",
-       "apihelp-query+alllinks-description": "Egy adott névtérbe mutató összes hivatkozás visszaadása.",
+       "apihelp-query+alllinks-summary": "Egy adott névtérbe mutató összes hivatkozás visszaadása.",
        "apihelp-query+alllinks-param-from": "Listázás ettől a hivatkozástól.",
        "apihelp-query+alllinks-param-to": "Listázás eddig a hivatkozásig.",
        "apihelp-query+alllinks-param-prefix": "Ezzel kezdődő című hivatkozott lapok keresése.",
        "apihelp-query+alllinks-example-unique": "Különböző hivatkozott lapok listázása.",
        "apihelp-query+alllinks-example-unique-generator": "Az összes hivatkozott lap lekérése, hiányzók megjelölése.",
        "apihelp-query+alllinks-example-generator": "A hivatkozásokat tartalmazó lapok lekérése.",
-       "apihelp-query+allmessages-description": "A wiki felületüzeneteinek lekérése.",
+       "apihelp-query+allmessages-summary": "A wiki felületüzeneteinek lekérése.",
        "apihelp-query+allmessages-param-messages": "A visszaadandó üzenetek. A <kbd>*</kbd> (alapértelmezés) az összes üzenetet jelenti.",
        "apihelp-query+allmessages-param-prop": "A lekérendő tulajdonságok.",
        "apihelp-query+allmessages-param-nocontent": "Ne tartalmazza a kimenet az üzenetek tartalmát.",
        "apihelp-query+allmessages-param-prefix": "Ezzel kezdődő nevű üzenetek visszaadása.",
        "apihelp-query+allmessages-example-ipb": "<kbd>ipb-</kbd> előtagú üzenetek lekérése.",
        "apihelp-query+allmessages-example-de": "Az <kbd>august</kbd> és <kbd>mainpage</kbd> üzenetek lekérése német nyelven.",
-       "apihelp-query+allpages-description": "Egy adott névtér összes lapjának visszaadása.",
+       "apihelp-query+allpages-summary": "Egy adott névtér összes lapjának visszaadása.",
        "apihelp-query+allpages-param-from": "A lapok listázása ettől a címtől.",
        "apihelp-query+allpages-param-to": "A lapok listázása eddig a címig.",
        "apihelp-query+allpages-param-prefix": "Ezzel kezdődő című lapok keresése.",
        "apihelp-query+allpages-example-B": "Lapok listázása <kbd>B</kbd>-től kezdve.",
        "apihelp-query+allpages-example-generator": "Információk 4 lapról <kbd>T</kbd>-től kezdve.",
        "apihelp-query+allpages-example-generator-revisions": "Az első két nem átirányító lap tartalmának megjelenítése <kbd>Re</kbd>-től kezdve.",
-       "apihelp-query+allredirects-description": "Egy adott névtérbe mutató összes átirányítás listázása.",
+       "apihelp-query+allredirects-summary": "Egy adott névtérbe mutató összes átirányítás listázása.",
        "apihelp-query+allredirects-param-from": "Listázás ettől az átirányításcímtől.",
        "apihelp-query+allredirects-param-to": "Listázás eddig az átirányításcímig.",
        "apihelp-query+allredirects-param-prefix": "Ezzel kezdődő című céllapok keresése.",
        "apihelp-query+allredirects-example-unique": "Különböző céllapok listázása.",
        "apihelp-query+allredirects-example-unique-generator": "Az összes céllap lekérése, hiányzók megjelölése.",
        "apihelp-query+allredirects-example-generator": "Az átirányításokat tartalmazó lapok lekérése.",
-       "apihelp-query+allrevisions-description": "Az összes lapváltozat listázása.",
+       "apihelp-query+allrevisions-summary": "Az összes lapváltozat listázása.",
        "apihelp-query+allrevisions-param-start": "A listázás kezdő időbélyege.",
        "apihelp-query+allrevisions-param-end": "A lista végét jelentő időbélyeg.",
        "apihelp-query+allrevisions-param-user": "Csak ezen felhasználó szerkesztéseinek listázása.",
        "apihelp-query+mystashedfiles-paramvalue-prop-size": "A fájlméret és a kép dimenziói (szélessége és magassága).",
        "apihelp-query+mystashedfiles-paramvalue-prop-type": "A fájl MIME-típusa és médiatípusa.",
        "apihelp-query+mystashedfiles-param-limit": "A lekérendő fájlok száma.",
-       "apihelp-query+alltransclusions-description": "Az összes beillesztés listázása (&#123;&#123;x&#125;&#125; kóddal beillesztett lapok), beleértve a nem létező lapokét is.",
+       "apihelp-query+alltransclusions-summary": "Az összes beillesztés listázása (&#123;&#123;x&#125;&#125; kóddal beillesztett lapok), beleértve a nem létező lapokét is.",
        "apihelp-query+alltransclusions-param-from": "Listázás ettől a beillesztett laptól.",
        "apihelp-query+alltransclusions-param-to": "Listázás eddig a beillesztett lapig.",
        "apihelp-query+alltransclusions-param-prefix": "Ezzel kezdődő című beillesztett lapok keresése.",
        "apihelp-query+alltransclusions-example-unique": "Különböző beillesztett címek listázása.",
        "apihelp-query+alltransclusions-example-unique-generator": "Az összes beillesztett lap lekérése, hiányzók megjelölése.",
        "apihelp-query+alltransclusions-example-generator": "A beillesztéseket tartalmazó lapok lekérése.",
-       "apihelp-query+allusers-description": "Az összes regisztrált felhasználó visszaadása.",
+       "apihelp-query+allusers-summary": "Az összes regisztrált felhasználó visszaadása.",
        "apihelp-query+allusers-param-from": "A felhasználók listázása ettől a névtől.",
        "apihelp-query+allusers-param-to": "A felhasználók listázása eddig a névig.",
        "apihelp-query+allusers-param-prefix": "Ezzel kezdődő nevű felhasználók keresése.",
        "apihelp-query+allusers-param-activeusers": "Csak az elmúlt $1 napban aktív felhasználók listázása.",
        "apihelp-query+allusers-param-attachedwiki": "Az <kbd>$1prop=centralids</kbd> paraméter mellett annak jelzése, hogy a felhasználó össze van-e kapcsolva a megadott wikivel.",
        "apihelp-query+allusers-example-Y": "A felhasználók listázása <kbd>Y</kbd>-tól kezdve.",
-       "apihelp-query+authmanagerinfo-description": "Információk lekérése az aktuális azonosítási státuszról.",
+       "apihelp-query+authmanagerinfo-summary": "Információk lekérése az aktuális azonosítási státuszról.",
        "apihelp-query+authmanagerinfo-param-securitysensitiveoperation": "Annak ellenőrzése, hogy a felhasználó jelenlegi azonosítási státusza megfelelő-e a megadott biztonságkritikus művelethez.",
        "apihelp-query+authmanagerinfo-param-requestsfor": "Információk lekérése a megadott azonosítási művelethez szükséges azonosítási kérésekről.",
        "apihelp-query+authmanagerinfo-example-login": "Egy bejelentkezés elkezdéséhez használható kérések lekérése.",
        "apihelp-query+authmanagerinfo-example-login-merged": "Egy bejelentkezés elkezdéséhez használható kérések lekérése, az űrlapmezők összevonásával.",
        "apihelp-query+authmanagerinfo-example-securitysensitiveoperation": "Annak ellenőrzése, hogy a hitelesítés megfelelő-e a <kbd>foo</kbd> művelethez.",
-       "apihelp-query+backlinks-description": "Egy adott lapra hivatkozó más lapok megkeresése.",
+       "apihelp-query+backlinks-summary": "Egy adott lapra hivatkozó más lapok megkeresése.",
        "apihelp-query+backlinks-param-title": "A keresendő cím. Nem használható együtt a <var>$1pageid</var> paraméterrel.",
        "apihelp-query+backlinks-param-pageid": "A keresendő lapazonosító. Nem használható együtt a <var>$1title</var> paraméterrel.",
        "apihelp-query+backlinks-param-namespace": "A listázandó névtér.",
        "apihelp-query+backlinks-param-redirect": "Ha a hivatkozó lap átirányítás, az arra hivatkozó lapok keresése szintén. A maximális limit feleződik.",
        "apihelp-query+backlinks-example-simple": "A <kbd>Main Page</kbd> lapra mutató hivatkozások keresése.",
        "apihelp-query+backlinks-example-generator": "Információk lekérése a <kbd>Main Page</kbd>-re hivatkozó lapokról.",
-       "apihelp-query+blocks-description": "Az összes blokkolt felhasználó és IP-cím listázása.",
+       "apihelp-query+blocks-summary": "Az összes blokkolt felhasználó és IP-cím listázása.",
        "apihelp-query+blocks-param-start": "A listázás kezdő időbélyege.",
        "apihelp-query+blocks-param-end": "A lista végét jelentő időbélyeg.",
        "apihelp-query+blocks-param-ids": "A listázandó blokkok blokkazonosítói (opcionális).",
        "apihelp-query+blocks-param-show": "Csak a megadott feltételeknek megfelelő elemek megjelenítése.\nPéldául csak IP-címek végtelen blokkjainak megjelenítéséhez állítsd <kbd>$1show=ip|!temp</kbd> értékre.",
        "apihelp-query+blocks-example-simple": "Blokkok listázása.",
        "apihelp-query+blocks-example-users": "<kbd>Alice</kbd> és <kbd>Bob</kbd> blokkjainak listázása.",
-       "apihelp-query+categories-description": "A lapok összes kategóriájának listázása.",
+       "apihelp-query+categories-summary": "A lapok összes kategóriájának listázása.",
        "apihelp-query+categories-param-prop": "A kategóriákhoz lekérendő további tulajdonságok:",
        "apihelp-query+categories-paramvalue-prop-timestamp": "A kategória hozzáadásának időbélyege.",
        "apihelp-query+categories-paramvalue-prop-hidden": "A <code>_&#95;HIDDENCAT_&#95;</code> kapcsolóval elrejtett kategóriák megjelölése.",
        "apihelp-query+categories-param-dir": "A listázás iránya.",
        "apihelp-query+categories-example-simple": "Az <kbd>Albert Einstein</kbd> lap kategóriáinak lekérése.",
        "apihelp-query+categories-example-generator": "Információk lekérése az <kbd>Albert Einstein</kbd> lap kategóriáiról.",
-       "apihelp-query+categoryinfo-description": "Információk lekérése a megadott kategóriákról.",
+       "apihelp-query+categoryinfo-summary": "Információk lekérése a megadott kategóriákról.",
        "apihelp-query+categoryinfo-example-simple": "Információk lekérése a <kbd>Category:Foo</kbd> és a <kbd>Category:Bar</kbd> kategóriáról.",
-       "apihelp-query+categorymembers-description": "Egy kategória összes tagjának listázása.",
+       "apihelp-query+categorymembers-summary": "Egy kategória összes tagjának listázása.",
        "apihelp-query+categorymembers-param-title": "A listázandó kategória (kötelező). Tartalmaznia kell a <kbd>{{ns:category}}:</kbd> előtagot. Nem használható együtt a <var>$1pageid</var> paraméterrel.",
        "apihelp-query+categorymembers-param-pageid": "A listázandó kategória lapazonosítója. Nem használható együtt a <var>$1title</var> paraméterrel.",
        "apihelp-query+categorymembers-param-prop": "Visszaadandó információk:",
        "apihelp-query+categorymembers-param-endsortkey": "Használd a <var>$1endhexsortkey</var> paramétert helyette.",
        "apihelp-query+categorymembers-example-simple": "A <kbd>Category:Physics</kbd> első 10 tagjának lekérése.",
        "apihelp-query+categorymembers-example-generator": "Információk lekérése a <kbd>Category:Physics</kbd> első 10 tagjáról.",
-       "apihelp-query+contributors-description": "Egy lap bejelentkezett közreműködői listájának, valamint az anonim közreműködők számának lekérése.",
+       "apihelp-query+contributors-summary": "Egy lap bejelentkezett közreműködői listájának, valamint az anonim közreműködők számának lekérése.",
        "apihelp-query+contributors-param-group": "Csak a megadott felhasználócsoportok tagjainak visszaadása. Ez nem tartalmazza az implicit vagy automatikusan hozzáadott csoportokat, mint a *, a user vagy az autoconfirmed.",
        "apihelp-query+contributors-param-excludegroup": "A megadott felhasználócsoportok tagjainak kihagyása. Ez nem tartalmazza az implicit vagy automatikusan hozzáadott csoportokat, mint a *, a user vagy az autoconfirmed.",
        "apihelp-query+contributors-param-rights": "Csak a megadott jogosultságokkal rendelkező felhasználók visszaadása. Ez nem tartalmazza azokat a jogosultságokat, amiket implicit vagy automatikusan hozzáadott csoportok adnak meg, mint a *, a user vagy az autoconfirmed.",
        "apihelp-query+deletedrevs-example-mode2": "<kbd>Bob</kbd> felhasználó utolsó 50 törölt szerkesztésének listázása (2. mód).",
        "apihelp-query+deletedrevs-example-mode3-main": "Az első 50 törölt lapváltozat listázása a fő névtérben (3. mód).",
        "apihelp-query+deletedrevs-example-mode3-talk": "Az első 50 törölt lapváltozat listázása a {{ns:talk}} névtérben (3. mód).",
-       "apihelp-query+disabled-description": "Ez a lekérdezőmodul le lett tiltva.",
+       "apihelp-query+disabled-summary": "Ez a lekérdezőmodul le lett tiltva.",
        "apihelp-query+duplicatefiles-param-limit": "A visszaadandó duplikátumok száma.",
        "apihelp-query+duplicatefiles-param-dir": "A listázás iránya.",
        "apihelp-query+duplicatefiles-param-localonly": "Csak helyi fájlok keresése.",
        "apihelp-query+duplicatefiles-example-simple": "[[:File:Albert Einstein Head.jpg]] duplikátumainak keresése.",
        "apihelp-query+duplicatefiles-example-generated": "Az összes fájl duplikátumainak keresése.",
-       "apihelp-query+embeddedin-description": "A megadott lapot beillesztő összes lap lekérése.",
+       "apihelp-query+embeddedin-summary": "A megadott lapot beillesztő összes lap lekérése.",
        "apihelp-query+embeddedin-param-title": "A keresendő lap címe. Nem használható együtt az <var>$1pageid</var> paraméterrel.",
        "apihelp-query+embeddedin-param-pageid": "A keresendő lap lapazonosítója. Nem használható együtt az <var>$1title</var> paraméterrel.",
        "apihelp-query+embeddedin-param-namespace": "A listázandó névtér.",
        "apihelp-query+embeddedin-param-limit": "A visszaadandó lapok maximális száma.",
        "apihelp-query+embeddedin-example-simple": "A <kbd>Template:Stub</kbd> lapot beillesztő lapok megjelenítése.",
        "apihelp-query+embeddedin-example-generator": "Információk lekérése a <kbd>Template:Stub</kbd> lapot beillesztő lapokról.",
-       "apihelp-query+extlinks-description": "A megadott lapokon található összes külső (nem interwiki) link visszaadása.",
        "apihelp-query+extlinks-param-limit": "A visszaadandó linkek száma.",
        "apihelp-query+extlinks-param-protocol": "Az URL protokollja. Ha üres és az <var>$1query</var> paraméter meg van adva, a protokoll <kbd>http</kbd>. Hagyd ezt és az <var>$1query</var> paramétert is üresen az összes külső link listázásához.",
        "apihelp-query+extlinks-example-simple": "A <kbd>Main Page</kbd> lapon található összes külső hivatkozás listájának lekérése.",
-       "apihelp-query+exturlusage-description": "Egy megadott URL-t tartalmazó lapok visszaadása.",
+       "apihelp-query+exturlusage-summary": "Egy megadott URL-t tartalmazó lapok visszaadása.",
        "apihelp-query+exturlusage-param-prop": "Visszaadandó információk:",
        "apihelp-query+exturlusage-paramvalue-prop-ids": "A lap lapazonosítója.",
        "apihelp-query+exturlusage-paramvalue-prop-title": "A lap címe és névterének azonosítója.",
        "apihelp-query+exturlusage-param-namespace": "A listázandó névtér.",
        "apihelp-query+exturlusage-param-limit": "A visszaadandó lapok száma.",
        "apihelp-query+exturlusage-example-simple": "A <kbd>http://www.mediawiki.org</kbd> URL-re hivatkozó lapok megjelenítése.",
-       "apihelp-query+filearchive-description": "Az összes törölt fájl visszaadása.",
+       "apihelp-query+filearchive-summary": "Az összes törölt fájl visszaadása.",
        "apihelp-query+filearchive-param-from": "A fájlok listázása ettől a címtől.",
        "apihelp-query+filearchive-param-to": "A fájlok listázása eddig a címig.",
        "apihelp-query+filearchive-param-prefix": "Ezzel kezdődő című fájlok keresése.",
        "apihelp-query+filearchive-paramvalue-prop-bitdepth": "A verzió bitmélysége.",
        "apihelp-query+filearchive-paramvalue-prop-archivename": "Az archivált verzió fájlneve a nem legújabb verziók esetén.",
        "apihelp-query+filearchive-example-simple": "Az összes törölt fájl listázása.",
-       "apihelp-query+filerepoinfo-description": "Metainformációk visszaadása a wikin beállított fájltárolókról.",
+       "apihelp-query+filerepoinfo-summary": "Metainformációk visszaadása a wikin beállított fájltárolókról.",
        "apihelp-query+filerepoinfo-example-simple": "Információk lekérése a fájltárolókról.",
-       "apihelp-query+fileusage-description": "A megadott fájlokat használó lapok lekérése.",
+       "apihelp-query+fileusage-summary": "A megadott fájlokat használó lapok lekérése.",
        "apihelp-query+fileusage-param-prop": "Lekérendő tulajdonságok:",
        "apihelp-query+fileusage-paramvalue-prop-pageid": "A lapok lapazonosítói.",
        "apihelp-query+fileusage-paramvalue-prop-title": "A lapok címei.",
        "apihelp-query+fileusage-param-show": "Szűrés az átirányítások alapján:\n;redirect: Csak átirányítások visszaadása.\n;!redirect: Átirányítások elrejtése.",
        "apihelp-query+fileusage-example-simple": "A [[:File:Example.jpg]] képet használó lapok listázása.",
        "apihelp-query+fileusage-example-generator": "Információk lekérése a [[:File:Example.jpg]] képet használó lapokról.",
-       "apihelp-query+imageinfo-description": "Fájlinformációk és fájltörténet lekérése.",
+       "apihelp-query+imageinfo-summary": "Fájlinformációk és fájltörténet lekérése.",
        "apihelp-query+imageinfo-param-prop": "A lekérendő fájlinformációk:",
        "apihelp-query+imageinfo-paramvalue-prop-timestamp": "A feltöltött verzió időbélyege.",
        "apihelp-query+imageinfo-paramvalue-prop-user": "Az egyes fájlverziók feltöltői.",
        "apihelp-query+imageinfo-param-localonly": "Csak helyi fájlok keresése.",
        "apihelp-query+imageinfo-example-simple": "Információk lekérése a [[:File:Albert Einstein Head.jpg]] aktuális verziójáról.",
        "apihelp-query+imageinfo-example-dated": "Információk lekérése a [[:File:Test.jpg]] 2008-as és korábbi verzióiról.",
-       "apihelp-query+images-description": "A megadott lapokon használt összes fájl visszaadása.",
+       "apihelp-query+images-summary": "A megadott lapokon használt összes fájl visszaadása.",
        "apihelp-query+images-param-limit": "A visszaadandó fájlok száma.",
        "apihelp-query+images-param-images": "Csak ezen fájlok listázása. Annak ellenőrzésére alkalmas, hogy egy lap használ-e egy adott fájlt.",
        "apihelp-query+images-param-dir": "A listázás iránya.",
        "apihelp-query+images-example-simple": "A [[Main Page]] lapon használt fájlok listázása.",
        "apihelp-query+images-example-generator": "Információk lekérése a [[Main Page]] lapon használt fájlokról.",
-       "apihelp-query+imageusage-description": "A megadott képcímet használó lapok lekérése.",
+       "apihelp-query+imageusage-summary": "A megadott képcímet használó lapok lekérése.",
        "apihelp-query+imageusage-param-title": "A keresendő cím. Nem használható együtt az <var>$1pageid</var> paraméterrel.",
        "apihelp-query+imageusage-param-pageid": "A keresendő lapazonosító. Nem használható együtt az <var>$1title</var> paraméterrel.",
        "apihelp-query+imageusage-param-namespace": "A listázandó névtér.",
        "apihelp-query+imageusage-param-redirect": "Ha a hivatkozó lap átirányítás, az arra hivatkozó lapok keresése szintén. A maximális limit feleződik.",
        "apihelp-query+imageusage-example-simple": "A [[:File:Albert Einstein Head.jpg]] képet használó lapok megjelenítése.",
        "apihelp-query+imageusage-example-generator": "Információk lekérése a [[:File:Albert Einstein Head.jpg]] képet használó lapokról.",
-       "apihelp-query+info-description": "Alapvető lapinformációk lekérése.",
+       "apihelp-query+info-summary": "Alapvető lapinformációk lekérése.",
        "apihelp-query+info-param-prop": "További lekérendő tulajdonságok:",
        "apihelp-query+info-paramvalue-prop-protection": "A lapok védelmi szintjeinek listázása.",
        "apihelp-query+info-paramvalue-prop-talkid": "A vitalap lapazonosítója a nem-vitalapoknál.",
        "apihelp-query+info-param-token": "Használd a <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd> lekérdezést helyette.",
        "apihelp-query+info-example-simple": "Információk lekérése a <kbd>Main Page</kbd> lapról.",
        "apihelp-query+info-example-protection": "Alapvető és lapvédelmi információk lekérése a <kbd>Main Page</kbd> lapról.",
-       "apihelp-query+iwbacklinks-description": "Egy adott interwikilinkre hivatkozó lapok lekérése.\n\nHasználható adott előtagú vagy egy adott címre mutató (megadott előtagú) linkek keresésére. Mindkét paraméter elhagyásával az összes interwikilinket visszaadja.",
        "apihelp-query+iwbacklinks-param-prefix": "Az interwiki előtagja.",
        "apihelp-query+iwbacklinks-param-title": "A keresendő interwikilink. Az <var>$1blprefix</var> paraméterrel együtt használandó.",
        "apihelp-query+iwbacklinks-param-limit": "A visszaadandó lapok maximális száma.",
        "apihelp-query+iwbacklinks-param-dir": "A listázás iránya.",
        "apihelp-query+iwbacklinks-example-simple": "A [[wikibooks:Test]] könyvre hivatkozó lapok lekérése.",
        "apihelp-query+iwbacklinks-example-generator": "Információk lekérése a [[wikibooks:Test]] könyvre hivatkozó lapokról.",
-       "apihelp-query+iwlinks-description": "A megadott lapokon található összes interwikilink lekérése.",
+       "apihelp-query+iwlinks-summary": "A megadott lapokon található összes interwikilink lekérése.",
        "apihelp-query+iwlinks-param-prop": "A nyelvközi hivatkozásokhoz lekérendő további tulajdonságok:",
        "apihelp-query+iwlinks-param-limit": "A visszaadandó interwikilinkek száma.",
        "apihelp-query+iwlinks-param-prefix": "Csak a megadott előtagú interwikilinkek visszaadása.",
        "apihelp-query+iwlinks-param-title": "A keresendő interwikilink. Az <var>$1prefix</var> paraméterrel együtt használandó.",
        "apihelp-query+iwlinks-param-dir": "A listázás iránya.",
        "apihelp-query+iwlinks-example-simple": "A <kbd>Main Page</kbd> lapon található interwikilinkek lekérése.",
-       "apihelp-query+langbacklinks-description": "A megadott nyelvközi hivatkozásra hivatkozó lapok lekérése.\n\nHasználható adott előtagú vagy egy adott címre mutató (megadott előtagú) linkek keresésére. Mindkét paraméter elhagyásával az összes nyelvközi hivatkozást visszaadja.\n\nEz a lekérdezés nem feltétlenül veszi figyelembe a kiterjesztések által hozzáadott nyelvközi hivatkozásokat.",
        "apihelp-query+langbacklinks-param-lang": "A nyelvközi hivatkozás nyelve.",
        "apihelp-query+langbacklinks-param-title": "A keresendő nyelvközi hivatkozás. Az <var>$1lang</var> paraméterrel együtt használandó.",
        "apihelp-query+langbacklinks-param-limit": "A visszaadandó lapok maximális száma.",
        "apihelp-query+langbacklinks-param-dir": "A listázás iránya.",
        "apihelp-query+langbacklinks-example-simple": "A [[:fr:Test]] lapra hivatkozó lapok lekérése.",
        "apihelp-query+langbacklinks-example-generator": "Információk lekérése a [[:fr:Test]] lapra hivatkozó lapokról.",
-       "apihelp-query+langlinks-description": "A megadott lapokon található összes nyelvközi hivatkozás lekérése.",
+       "apihelp-query+langlinks-summary": "A megadott lapokon található összes nyelvközi hivatkozás lekérése.",
        "apihelp-query+langlinks-param-limit": "A visszaadandó nyelvközi hivatkozások száma.",
        "apihelp-query+langlinks-param-prop": "A nyelvközi hivatkozásokhoz lekérendő további tulajdonságok:",
        "apihelp-query+langlinks-param-lang": "Csak ezen nyelvű nyelvközi hivatkozások visszaadása.",
        "apihelp-query+langlinks-param-dir": "A listázás iránya.",
        "apihelp-query+langlinks-param-inlanguagecode": "Nyelvkód a lefordított nyelvneveknek.",
        "apihelp-query+langlinks-example-simple": "A <kbd>Main Page</kbd> lapon található nyelvközi hivatkozások lekérése.",
-       "apihelp-query+links-description": "A megadott lapokon található összes hivatkozás lekérése.",
+       "apihelp-query+links-summary": "A megadott lapokon található összes hivatkozás lekérése.",
        "apihelp-query+links-param-namespace": "Csak az ezen névterekbe mutató hivatkozások visszaadása.",
        "apihelp-query+links-param-limit": "A visszaadandó hivatkozások száma.",
        "apihelp-query+links-param-titles": "Csak ezen címekre mutató hivatkozások listázása. Annak ellenőrzésére alkalmas, hogy egy lap hivatkozik-e egy adott lapra.",
        "apihelp-query+links-example-simple": "A <kbd>Main Page</kbd> lapon található hivatkozások lekérése.",
        "apihelp-query+links-example-generator": "Információk lekérése a <kbd>Main Page</kbd> lapon lévő hivatkozások céllapjairól.",
        "apihelp-query+links-example-namespaces": "A <kbd>Main Page</kbd> lapon található, {{ns:user}} és {{ns:template}} névterekbe mutató hivatkozások lekérése.",
-       "apihelp-query+linkshere-description": "A megadott lapra hivatkozó lapok lekérése.",
+       "apihelp-query+linkshere-summary": "A megadott lapra hivatkozó lapok lekérése.",
        "apihelp-query+linkshere-param-prop": "Lekérendő tulajdonságok:",
        "apihelp-query+linkshere-paramvalue-prop-pageid": "A lapok lapazonosítói.",
        "apihelp-query+linkshere-paramvalue-prop-title": "A lapok címei.",
        "apihelp-query+linkshere-param-show": "Szűrés az átirányítások alapján:\n;redirect: Csak átirányítások visszaadása.\n;!redirect: Átirányítások elrejtése.",
        "apihelp-query+linkshere-example-simple": "A [[Main Page]] lapra hivatkozó lapok listázása.",
        "apihelp-query+linkshere-example-generator": "Információk lekérése a [[Main Page]] lapra hivatkozó lapokról.",
-       "apihelp-query+logevents-description": "Naplóbejegyzések lekérése.",
        "apihelp-query+logevents-param-prop": "Lekérendő tulajdonságok:",
        "apihelp-query+logevents-paramvalue-prop-ids": "A naplóbejegyzés azonosítója.",
        "apihelp-query+logevents-paramvalue-prop-title": "Az eseményben érintett lap címe.",
        "apihelp-query+logevents-param-tag": "Csak ezzel a címkével ellátott bejegyzések listázása.",
        "apihelp-query+logevents-param-limit": "A visszaadandó bejegyzések száma.",
        "apihelp-query+logevents-example-simple": "A legutóbbi naplóbejegyzések listázása.",
-       "apihelp-query+pagepropnames-description": "A wikin elérhető laptulajdonságnevek listázása.",
+       "apihelp-query+pagepropnames-summary": "A wikin elérhető laptulajdonságnevek listázása.",
        "apihelp-query+pagepropnames-param-limit": "A visszaadandó nevek maximális száma.",
        "apihelp-query+pagepropnames-example-simple": "Az első 10 tulajdonságnév lekérése.",
-       "apihelp-query+pageprops-description": "A lap tartalmában meghatározott különböző laptulajdonságok lekérése.",
+       "apihelp-query+pageprops-summary": "A lap tartalmában meghatározott különböző laptulajdonságok lekérése.",
        "apihelp-query+pageprops-param-prop": "Csak ezen laptulajdonságok listázása (az [[Special:ApiHelp/query+pagepropnames|action=query&list=pagepropnames]] visszaadja a használatban lévő laptulajdonságokat). Annak ellenőrzésére alkalmas, hogy egy lap benne használ-e egy adott laptulajdonságot.",
        "apihelp-query+pageprops-example-simple": "A <kbd>Main Page</kbd> és <kbd>MediaWiki</kbd> lap tulajdonságainak lekérése.",
-       "apihelp-query+pageswithprop-description": "Egy adott laptulajdonságot használó lapok listázása.",
+       "apihelp-query+pageswithprop-summary": "Egy adott laptulajdonságot használó lapok listázása.",
        "apihelp-query+pageswithprop-param-propname": "A listázandó laptulajdonság (az [[Special:ApiHelp/query+pagepropnames|action=query&list=pagepropnames]] visszaadja a használatban lévő laptulajdonságokat).",
        "apihelp-query+pageswithprop-param-prop": "Visszaadandó információk:",
        "apihelp-query+pageswithprop-paramvalue-prop-ids": "A lap lapazonosítója.",
        "apihelp-query+prefixsearch-param-offset": "Kihagyandó találatok száma.",
        "apihelp-query+prefixsearch-example-simple": "<kbd>meaning</kbd> kezdetű lapcímek keresése.",
        "apihelp-query+prefixsearch-param-profile": "Használandó keresőprofil.",
-       "apihelp-query+protectedtitles-description": "Létrehozás ellen védett lapok listázása.",
+       "apihelp-query+protectedtitles-summary": "Létrehozás ellen védett lapok listázása.",
        "apihelp-query+protectedtitles-param-namespace": "Címek listázása csak ezekben a névterekben.",
        "apihelp-query+protectedtitles-param-level": "Csak ilyen védelmi szintű címek listázása.",
        "apihelp-query+protectedtitles-param-limit": "A visszaadandó lapok maximális száma.",
        "apihelp-query+protectedtitles-paramvalue-prop-level": "Védelmi szint.",
        "apihelp-query+protectedtitles-example-simple": "A védett címek listázása.",
        "apihelp-query+protectedtitles-example-generator": "A fő névtérben lévő védett címekre mutató hivatkozások lekérése.",
-       "apihelp-query+querypage-description": "Egy QueryPage-alapú speciális lap listájának lekérése.",
+       "apihelp-query+querypage-summary": "Egy QueryPage-alapú speciális lap listájának lekérése.",
        "apihelp-query+querypage-param-limit": "Megjelenítendő találatok száma.",
        "apihelp-query+querypage-example-ancientpages": "A [[Special:Ancientpages]] eredményeinek lekérése.",
        "apihelp-query+random-param-namespace": "Lapok visszaadása csak ezekből a névterekből.",
        "apihelp-query+random-param-filterredir": "Szűrés átirányítások alapján.",
        "apihelp-query+random-example-simple": "Két lap visszaadása találomra a fő névtérből.",
        "apihelp-query+random-example-generator": "Lapinformációk lekérése két véletlenszerűen kiválasztott fő névtérbeli lapról.",
-       "apihelp-query+recentchanges-description": "A friss változtatások listázása.",
+       "apihelp-query+recentchanges-summary": "A friss változtatások listázása.",
        "apihelp-query+recentchanges-param-start": "Listázás ettől az időbélyegtől.",
        "apihelp-query+recentchanges-param-end": "Listázás eddig az időbélyegig.",
        "apihelp-query+recentchanges-param-namespace": "A változtatások szűrése ezekre a névterekre.",
        "apihelp-query+recentchanges-param-toponly": "Csak a lapok legfrissebb változtatásának visszaadása.",
        "apihelp-query+recentchanges-example-simple": "Friss változtatások listázása.",
        "apihelp-query+recentchanges-example-generator": "Lapinformációk lekérése az ellenőrizetlen változtatásokról (patrol).",
-       "apihelp-query+redirects-description": "A megadott lapokra mutató átirányítások lekérése.",
+       "apihelp-query+redirects-summary": "A megadott lapokra mutató átirányítások lekérése.",
        "apihelp-query+redirects-param-prop": "Lekérendő tulajdonságok:",
        "apihelp-query+redirects-paramvalue-prop-pageid": "Az átirányítások lapazonosítói.",
        "apihelp-query+redirects-paramvalue-prop-title": "Az átirányítások címei.",
        "apihelp-query+revisions+base-paramvalue-prop-content": "A változat szövege.",
        "apihelp-query+revisions+base-paramvalue-prop-tags": "A változat címkéi.",
        "apihelp-query+revisions+base-param-limit": "A visszaadandó változatok maximális száma.",
-       "apihelp-query+revisions+base-param-expandtemplates": "A sablonok kibontása a változat tartalmában (az <kbd>$1prop=content</kbd> paraméterrel együtt használandó).",
+       "apihelp-query+revisions+base-param-expandtemplates": "Használd a <kbd>[[Special:ApiHelp/expandtemplates|action=expandtemplates]]</kbd> lekérdezést helyette. A sablonok kibontása a változat tartalmában (az <kbd>$1prop=content</kbd> paraméterrel együtt használandó).",
        "apihelp-query+revisions+base-param-section": "Csak ezen szakasz tartalmának lekérése.",
-       "apihelp-query+search-description": "Teljes szöveges keresés végrehajtása.",
+       "apihelp-query+search-summary": "Teljes szöveges keresés végrehajtása.",
        "apihelp-query+search-param-search": "Erre az értékre illeszkedő lapcímek és tartalom keresése. Használható lehet speciális keresési funkciók meghívására a wiki keresőmotorjától függően.",
        "apihelp-query+search-param-namespace": "Keresés csak ezekben a névterekben.",
        "apihelp-query+search-param-what": "A végrehajtandó keresési típus.",
        "apihelp-query+search-paramvalue-prop-redirecttitle": "Az illeszkedő átirányítás címe.",
        "apihelp-query+search-paramvalue-prop-sectiontitle": "Az illeszkedő szakaszcím.",
        "apihelp-query+search-paramvalue-prop-isfilematch": "A fájl tartalma illeszkedik-e.",
-       "apihelp-query+search-paramvalue-prop-score": "<span class=\"apihelp-deprecated\">Elavult és figyelmen kívül hagyva.</span>",
-       "apihelp-query+search-paramvalue-prop-hasrelated": "<span class=\"apihelp-deprecated\">Elavult és figyelmen kívül hagyva.</span>",
+       "apihelp-query+search-paramvalue-prop-score": "Figyelmen kívül hagyva.",
+       "apihelp-query+search-paramvalue-prop-hasrelated": "Figyelmen kívül hagyva.",
        "apihelp-query+search-param-limit": "A visszaadandó lapok maximális száma.",
        "apihelp-query+search-param-interwiki": "Interwiki-találatok befoglalása az eredménybe, ha elérhetők.",
        "apihelp-query+search-param-backend": "A használandó keresőmotor, ha nem az alapértelmezett.",
        "apihelp-query+search-example-simple": "Keresés a <kbd>meaning</kbd> szóra.",
        "apihelp-query+search-example-text": "Keresés a <kbd>meaning</kbd> szóra a lapok szövegében.",
        "apihelp-query+search-example-generator": "Lapinformációk lekérése a <kbd>meaning</kbd> szóra kapott találatokról.",
-       "apihelp-query+siteinfo-description": "Általános információk lekérése a wikiről.",
+       "apihelp-query+siteinfo-summary": "Általános információk lekérése a wikiről.",
        "apihelp-query+siteinfo-param-prop": "A lekérendő információk:",
        "apihelp-query+siteinfo-paramvalue-prop-general": "Általános rendszerinformációk.",
        "apihelp-query+siteinfo-paramvalue-prop-statistics": "Wikistatisztikák.",
        "apihelp-query+siteinfo-param-numberingroup": "A egyes felhasználócsoportokba tartozó felhasználók számának listázása.",
        "apihelp-query+siteinfo-example-simple": "Wikiinformációk lekérése.",
        "apihelp-query+siteinfo-example-interwiki": "A helyi interwiki-előtagok listájának lekérése.",
-       "apihelp-query+tags-description": "Változtatáscímkék listázása.",
+       "apihelp-query+tags-summary": "Változtatáscímkék listázása.",
        "apihelp-query+tags-param-limit": "A listázandó címkék maximális száma.",
        "apihelp-query+tags-param-prop": "Lekérendő tulajdonságok:",
        "apihelp-query+tags-paramvalue-prop-name": "A címke neve.",
        "apihelp-query+tags-paramvalue-prop-hitcount": "A címkével rendelkező lapváltozatok és naplóbejegyzések száma.",
        "apihelp-query+tags-paramvalue-prop-defined": "A címke definiálva van-e.",
        "apihelp-query+tags-example-simple": "Az elérhető címkék listázása.",
-       "apihelp-query+templates-description": "A megadott lapokra beillesztett összes lap visszaadása.",
+       "apihelp-query+templates-summary": "A megadott lapokra beillesztett összes lap visszaadása.",
        "apihelp-query+templates-param-namespace": "Csak ezekben a névterekben található sablonok visszaadása.",
        "apihelp-query+templates-param-limit": "A visszaadandó sablonok száma.",
        "apihelp-query+templates-param-templates": "Csak ezen sablonok listázása. Annak ellenőrzésére alkalmas, hogy egy lap beilleszt-e egy adott sablont.",
        "apihelp-query+templates-example-simple": "A <kbd>Main Page</kbd> lapon használt sablonok lekérése.",
        "apihelp-query+templates-example-generator": "Információk lekérése a <kbd>Main Page</kbd> lapon használt sablonlapokról.",
        "apihelp-query+templates-example-namespaces": "A <kbd>Main Page</kbd> lapon használt {{ns:user}} és {{ns:template}} névtérbeli sablonok lekérése.",
-       "apihelp-query+tokens-description": "Tokenek lekérése adatmódosító műveletekhez.",
+       "apihelp-query+tokens-summary": "Tokenek lekérése adatmódosító műveletekhez.",
        "apihelp-query+tokens-param-type": "Lekérendő tokentípusok.",
        "apihelp-query+tokens-example-simple": "Egy csrf token lekérése (alapértelmezett).",
        "apihelp-query+tokens-example-types": "Egy watch és egy patrol token lekérése.",
-       "apihelp-query+transcludedin-description": "A megadott lapokat beillesztő lapok lekérése.",
+       "apihelp-query+transcludedin-summary": "A megadott lapokat beillesztő lapok lekérése.",
        "apihelp-query+transcludedin-param-prop": "Lekérendő tulajdonságok:",
        "apihelp-query+transcludedin-paramvalue-prop-pageid": "A lapok lapazonosítói.",
        "apihelp-query+transcludedin-paramvalue-prop-title": "A lapok címei.",
        "apihelp-query+transcludedin-param-show": "Szűrés az átirányítások alapján:\n;redirect: Csak átirányítások visszaadása.\n;!redirect: Átirányítások elrejtése.",
        "apihelp-query+transcludedin-example-simple": "A <kbd>Main Page</kbd> lapot beillesztő lapok listájának lekérése.",
        "apihelp-query+transcludedin-example-generator": "Információk lekérése a <kbd>Main Page</kbd> lapot beillesztő lapokról.",
-       "apihelp-query+usercontribs-description": "Egy felhasználó összes szerkesztésének lekérése.",
+       "apihelp-query+usercontribs-summary": "Egy felhasználó összes szerkesztésének lekérése.",
        "apihelp-query+usercontribs-param-limit": "A visszaadott szerkesztések maximális száma.",
        "apihelp-query+usercontribs-param-start": "Visszaadás ettől az időbélyegtől.",
        "apihelp-query+usercontribs-param-end": "Visszaadás eddig az időbélyegig.",
        "apihelp-query+usercontribs-param-toponly": "Csak a legfrissebbnek számító szerkesztések visszaadása.",
        "apihelp-query+usercontribs-example-user": "<kbd>Example</kbd> szerkesztéseinek megjelenítése.",
        "apihelp-query+usercontribs-example-ipprefix": "<kbd>192.0.2.</kbd> kezdetű IP-címek szerkesztéseinek megjelenítése.",
-       "apihelp-query+userinfo-description": "Információk lekérése az aktuális felhasználóról.",
+       "apihelp-query+userinfo-summary": "Információk lekérése az aktuális felhasználóról.",
        "apihelp-query+userinfo-param-prop": "Visszaadandó információk:",
        "apihelp-query+userinfo-paramvalue-prop-blockinfo": "Blokkolva van-e az aktuális felhasználó, és ha igen, akkor ki és miért blokkolta.",
        "apihelp-query+userinfo-paramvalue-prop-groups": "A jelenlegi felhasználó összes csoportjának listája.",
        "apihelp-query+userinfo-paramvalue-prop-rights": "A jelenlegi felhasználó jogosultságainak listája.",
        "apihelp-query+userinfo-paramvalue-prop-changeablegroups": "A jelenlegi felhasználó által hozzáadható és eltávolítható csoportok listája.",
        "apihelp-query+userinfo-paramvalue-prop-options": "A jelenlegi felhasználó beállításai.",
-       "apihelp-query+userinfo-paramvalue-prop-preferencestoken": "<span class=\"apihelp-deprecated\">Elavult.</span> A jelenlegi felhasználó beállításainak megváltoztatásához szükséges token lekérése.",
+       "apihelp-query+userinfo-paramvalue-prop-preferencestoken": "A jelenlegi felhasználó beállításainak megváltoztatásához szükséges token lekérése.",
        "apihelp-query+userinfo-paramvalue-prop-editcount": "A jelenlegi felhasználó szerkesztésszáma.",
        "apihelp-query+userinfo-paramvalue-prop-ratelimits": "A jelenlegi felhasználóra érvényes sebességkorlátozások.",
        "apihelp-query+userinfo-paramvalue-prop-realname": "A felhasználó valódi neve.",
        "apihelp-query+userinfo-param-attachedwiki": "A felhasználó össze van-e kapcsolva az ezen azonosítójú wikivel, az <kbd>$1prop=centralids</kbd> paraméterrel együtt használandó.",
        "apihelp-query+userinfo-example-simple": "Információk lekérése az aktuális felhasználóról.",
        "apihelp-query+userinfo-example-data": "További információk lekérése az aktuális felhasználóról.",
-       "apihelp-query+users-description": "Információk lekérése felhasználók listájáról.",
+       "apihelp-query+users-summary": "Információk lekérése felhasználók listájáról.",
        "apihelp-query+users-param-prop": "Visszaadandó információk:",
        "apihelp-query+users-paramvalue-prop-blockinfo": "Blokkolva van-e a felhasználó, és ha igen, akkor ki és miért blokkolta.",
        "apihelp-query+users-paramvalue-prop-groups": "A felhasználó összes csoportjának listája.",
        "apihelp-query+users-param-userids": "A lekérendő felhasználók azonosítóinak listája.",
        "apihelp-query+users-param-token": "Használd a <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd> lekérdezést helyette.",
        "apihelp-query+users-example-simple": "Információk lekérése <kbd>Example</kbd> felhasználóról.",
-       "apihelp-query+watchlist-description": "A felhasználó figyelőlistáján szereplő lapok friss változtatásainak lekérése.",
+       "apihelp-query+watchlist-summary": "A felhasználó figyelőlistáján szereplő lapok friss változtatásainak lekérése.",
        "apihelp-query+watchlist-param-allrev": "Egy lap összes változtatásának lekérése a megadott időszakból.",
        "apihelp-query+watchlist-param-start": "Listázás ettől az időbélyegtől.",
        "apihelp-query+watchlist-param-end": "Listázás eddig az időbélyegig.",
        "apihelp-query+watchlist-example-generator": "Lapinformációk lekérése a jelenlegi felhasználó figyelőlistáján szereplő nemrég módosított lapokról.",
        "apihelp-query+watchlist-example-generator-rev": "Lapváltozat-információk lekérése a jelenlegi felhasználó figyelőlistáján szereplő friss változtatásokról.",
        "apihelp-query+watchlist-example-wlowner": "<kbd>Exapmle</kbd> felhasználó figyelőlistáján szereplő nemrég módosított lapok legfrissebb változatának listázása.",
-       "apihelp-query+watchlistraw-description": "A jelenlegi felhasználó figyelőlistáján szereplő összes lap lekérése.",
+       "apihelp-query+watchlistraw-summary": "A jelenlegi felhasználó figyelőlistáján szereplő összes lap lekérése.",
        "apihelp-query+watchlistraw-param-namespace": "Lapok listázása csak ezekben a névterekben.",
        "apihelp-query+watchlistraw-param-limit": "A kérésenként visszaadandó eredmények száma.",
        "apihelp-query+watchlistraw-param-prop": "További lekérendő tulajdonságok:",
        "apihelp-query+watchlistraw-param-totitle": "Listázás eddig a címig (névtérelőtaggal).",
        "apihelp-query+watchlistraw-example-simple": "A jelenlegi felhasználó figyelőlistáján szereplő lapok lekérése.",
        "apihelp-query+watchlistraw-example-generator": "Lapinformációk lekérése a jelenlegi felhasználó figyelőlistáján szereplő lapokról.",
-       "apihelp-removeauthenticationdata-description": "A jelenlegi felhasználó hitelesítési adatainak eltávolítása.",
+       "apihelp-removeauthenticationdata-summary": "A jelenlegi felhasználó hitelesítési adatainak eltávolítása.",
        "apihelp-removeauthenticationdata-example-simple": "Kísérlet a jelenlegi felhasználó <kbd>FooAuthenticationRequest</kbd> kéréshez kapcsolódó adatainak eltávolítására.",
-       "apihelp-resetpassword-description": "Jelszó-visszaállító e-mail küldése a felhasználónak.",
-       "apihelp-resetpassword-description-noroutes": "Nem érhetők el jelszó-visszaállítási módok.\n\nEngedélyezz néhány módot a <var>[[mw:Special:MyLanguage/Manual:$wgPasswordResetRoutes|$wgPasswordResetRoutes]]</var> PHP-változóval a modul használatához.",
+       "apihelp-resetpassword-summary": "Jelszó-visszaállító e-mail küldése a felhasználónak.",
        "apihelp-resetpassword-param-user": "A visszaállítandó felhasználó.",
        "apihelp-resetpassword-param-email": "A visszaállítandó felhasználó e-mail-címe.",
        "apihelp-resetpassword-example-user": "Jelszó-visszaállító e-mail küldése <kbd>Example</kbd> felhasználónak.",
        "apihelp-resetpassword-example-email": "Jelszó-visszaállító e-mail küldése az összes <kbd>user@example.com</kbd> e-mail-című felhasználónak.",
-       "apihelp-revisiondelete-description": "Változatok törlése és helyreállítása.",
+       "apihelp-revisiondelete-summary": "Változatok törlése és helyreállítása.",
        "apihelp-revisiondelete-param-ids": "A törlendő lapváltozatok azonosítói.",
        "apihelp-revisiondelete-param-reason": "A törlés vagy helyreállítás indoklása.",
        "apihelp-revisiondelete-example-revision": "A <kbd>12345</kbd> lapváltozat tartalmának elrejtése a <kbd>Main Page</kbd> lapon.",
        "apihelp-revisiondelete-example-log": "A <kbd>67890</kbd> naplóbejegyzés összes adatának elrejtése <kbd>BLP violation</kbd> indoklással.",
-       "apihelp-rollback-description": "A lap legutóbbi változtatásának visszavonása.\n\nHa a lap utolsó szerkesztője egymás után több szerkesztést végzett, az összes visszavonása.",
        "apihelp-rollback-param-title": "A visszaállítandó lap címe. Nem használható együtt a <var>$1pageid</var> paraméterrel.",
        "apihelp-rollback-param-pageid": "A visszaállítandó lap lapazonosítója. Nem használható együtt a <var>$1title</var> paraméterrel.",
        "apihelp-rollback-param-summary": "Egyéni szerkesztési összefoglaló. Ha üres, az alapértelmezett összefoglaló lesz használatban.",
        "apihelp-rollback-param-markbot": "A visszavont és a visszavonó szerkesztések botszerkesztésnek jelölése.",
        "apihelp-rollback-param-watchlist": "A lap hozzáadása a figyelőlistához vagy eltávolítása onnan feltétel nélkül, a beállítások használata vagy a figyelőlista érintetlenül hagyása.",
-       "apihelp-rsd-description": "Egy RSD-séma (Really Simple Discovery) exportálása.",
+       "apihelp-rsd-summary": "Egy RSD-séma (Really Simple Discovery) exportálása.",
        "apihelp-rsd-example-simple": "Az RSD-séma exportálása.",
-       "apihelp-setnotificationtimestamp-description": "A figyelt lapok értesítési időbélyegének frissítése.\n\nEz érinti a módosított lapok kiemelését a figyelőlistán és a laptörténetekben, valamint az e-mail-küldést a „{{int:tog-enotifwatchlistpages}}” beállítás engedélyezése esetén.",
        "apihelp-setnotificationtimestamp-param-entirewatchlist": "Dolgozás az összes figyelt lapon.",
        "apihelp-setnotificationtimestamp-param-timestamp": "Az értesítési időbélyeg állítása erre az időbélyegre.",
        "apihelp-setnotificationtimestamp-param-torevid": "Az értesítési időbélyeg állítása erre a lapváltozatra (csak egy lap esetén).",
        "apihelp-setnotificationtimestamp-example-page": "A <kbd>Main page</kbd> értesítési állapotának visszaállítása.",
        "apihelp-setnotificationtimestamp-example-pagetimestamp": "A <kbd>Main page</kbd> értesítési időbélyegének módosítása, hogy a 2012. január 1-jét követő szerkesztések nem megtekintettek legyenek.",
        "apihelp-setnotificationtimestamp-example-allpages": "A <kbd>{{ns:user}}</kbd> névtérbeli lapok értesítési állapotának visszaállítása.",
-       "apihelp-setpagelanguage-description": "Egy lap nyelvének módosítása.",
-       "apihelp-setpagelanguage-description-disabled": "A lapnyelv módosítása nem engedélyezett ezen a wikin.\n\nEngedélyezd a <var>[[mw:Special:MyLanguage/Manual:$wgPageLanguageUseDB|$wgPageLanguageUseDB]]</var> PHP-változót ezen művelet használatához.",
+       "apihelp-setpagelanguage-summary": "Egy lap nyelvének módosítása.",
+       "apihelp-setpagelanguage-extended-description-disabled": "A lapnyelv módosítása nem engedélyezett ezen a wikin.\n\nEngedélyezd a <var>[[mw:Special:MyLanguage/Manual:$wgPageLanguageUseDB|$wgPageLanguageUseDB]]</var> PHP-változót ezen művelet használatához.",
        "apihelp-setpagelanguage-param-title": "A módosítandó lap címe. Nem használható együtt a <var>$1pageid</var> paraméterrel.",
        "apihelp-setpagelanguage-param-pageid": "A módosítandó lap azonosítója. Nem használható együtt a <var>$1title</var> paraméterrel.",
        "apihelp-setpagelanguage-param-lang": "A lap nyelvének módosítása erre a nyelvkódra. Használd a <kbd>default</kbd> értéket a wiki alapértelmezett tartalomnyelvére való visszaállításhoz.",
        "apihelp-setpagelanguage-param-reason": "A módosítás oka.",
        "apihelp-setpagelanguage-example-language": "A <kbd>Main Page</kbd> nyelvének módosítása baszkra.",
        "apihelp-setpagelanguage-example-default": "A 123 azonosítójú lap nyelvének módosítása a wiki alapértelmezett tartalomnyelvére.",
+       "apihelp-stashedit-summary": "Egy szerkesztés előkészítése a megosztott gyorsítótárban.",
+       "apihelp-stashedit-extended-description": "Ez a modul AJAX segítségével, a szerkesztőűrlapról történő használatra készült a lapmentés teljesítményének javítására.",
+       "apihelp-stashedit-param-title": "A szerkesztett lap címe.",
+       "apihelp-stashedit-param-section": "A szerkesztett szakasz száma. <kbd>0</kbd> a bevezetőhöz, <kbd>new</kbd> új szakaszhoz.",
+       "apihelp-stashedit-param-sectiontitle": "Az új szakasz címe.",
+       "apihelp-stashedit-param-text": "A lap tartalma.",
+       "apihelp-stashedit-param-contentmodel": "Az új tartalom tartalommodellje.",
+       "apihelp-stashedit-param-baserevid": "Az alapváltozat változatazonosítója.",
+       "apihelp-stashedit-param-summary": "Szerkesztési összefoglaló.",
        "apihelp-userrights-param-userid": "Felhasználói azonosító.",
        "api-help-title": "MediaWiki API súgó",
        "api-help-lead": "Ez egy automatikusan generált MediaWiki API-dokumentációs lap.\n\nDokumentáció és példák: https://www.mediawiki.org/wiki/API",
index 3ce8801..eed9d98 100644 (file)
        "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-undocumented-module": "Nessuna documentazione per il modulo $1.",
        "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.",
index 72932eb..7a22e72 100644 (file)
        "apihelp-parse-paramvalue-prop-sections": "구문 분석된 위키텍스트의 문단을 제공합니다.",
        "apihelp-parse-paramvalue-prop-revid": "구문 분석된 페이지의 판 ID를 추가합니다.",
        "apihelp-parse-paramvalue-prop-displaytitle": "구문 분석된 위키텍스트의 제목을 추가합니다.",
-       "apihelp-parse-paramvalue-prop-headitems": "<span class=\"apihelp-deprecated\">사용되지 않습니다.</span> 문서의 <code>&lt;head&gt;</code> 안에 넣을 항목을 제공합니다.",
+       "apihelp-parse-paramvalue-prop-headitems": "문서의 <code>&lt;head&gt;</code> 안에 넣을 항목을 제공합니다.",
        "apihelp-parse-paramvalue-prop-headhtml": "문서의 구문 분석된 <code>&lt;head&gt;</code>를 제공합니다.",
        "apihelp-parse-paramvalue-prop-modules": "문서에 사용되는 ResourceLoader 모듈을 제공합니다. 불러오려면, <code>mw.loader.using()</code>을 사용하세요. <kbd>jsconfigvars</kbd> 또는 <kbd>encodedjsconfigvars</kbd>는 <kbd>modules</kbd>와 함께 요청해야 합니다.",
        "apihelp-parse-paramvalue-prop-jsconfigvars": "문서에 특화된 자바스크립트 구성 변수를 제공합니다. 적용하려면 <code>mw.config.set()</code>을 사용하세요.",
        "apihelp-query+alldeletedrevisions-param-excludeuser": "이 사용자에 대한 판을 나열하지 않습니다.",
        "apihelp-query+alldeletedrevisions-param-namespace": "이 이름공간의 문서만 나열합니다.",
        "apihelp-query+alldeletedrevisions-example-user": "<kbd>Example</kbd>님의 최근 50개의 삭제된 기여를 나열합니다.",
+       "apihelp-query+allfileusages-summary": "존재하지 않는 것을 포함하여 파일을 사용하는 모든 문서를 나열합니다.",
        "apihelp-query+allfileusages-paramvalue-prop-title": "파일의 제목을 추가합니다.",
        "apihelp-query+allfileusages-param-limit": "반환할 총 항목 수입니다.",
        "apihelp-query+allfileusages-example-unique": "고유한 파일 제목을 나열합니다.",
        "apihelp-query+categorymembers-param-limit": "반환할 문서의 최대 수입니다.",
        "apihelp-query+categorymembers-param-startsortkey": "$1starthexsortkey를 대신 사용해 주십시오.",
        "apihelp-query+categorymembers-param-endsortkey": "$1endhexsortkey를 대신 사용해 주십시오.",
+       "apihelp-query+contributors-summary": "문서에 대해 로그인한 기여자의 목록과 익명 기여자의 수를 가져옵니다.",
        "apihelp-query+deletedrevisions-summary": "삭제된 판 정보를 가져옵니다.",
        "apihelp-query+deletedrevs-summary": "삭제된 판을 나열합니다.",
        "apihelp-query+deletedrevs-paraminfo-modes": "{{PLURAL:$1|모드|모드}}: $2",
        "api-help-title": "미디어위키 API 도움말",
        "api-help-lead": "이 페이지는 자동으로 생성된 미디어위키 API 도움말 문서입니다.\n\n설명 문서 및 예시: https://www.mediawiki.org/wiki/API",
        "api-help-main-header": "메인 모듈",
+       "api-help-undocumented-module": "$1 모듈에 대한 설명문이 없습니다.",
        "api-help-flag-deprecated": "이 모듈은 사용되지 않습니다.",
        "api-help-flag-internal": "<strong>이 모듈은 내부용이거나 불안정합니다.</strong> 동작은 예고 없이 변경될 수 있습니다.",
        "api-help-flag-readrights": "이 모듈은 read 권한을 요구합니다.",
index af1ea55..d9d4535 100644 (file)
        "apihelp-validatepassword-example-1": "Validéiert d'Passwuert <kbd>foobar</kbd> fir den aktuelle Benotzer.",
        "apihelp-watch-example-watch": "D'Säit <kbd>Main Page</kbd> iwwerwaachen.",
        "api-login-fail-badsessionprovider": "Net méiglech sech anzelogge mat $1.",
+       "api-help-undocumented-module": "Keng Dokumentatioun fir de Modul $1.",
        "api-help-source": "Quell: $1",
        "api-help-source-unknown": "Quell: <span class=\"apihelp-unknown\">onbekannt</span>",
        "api-help-license": "Lizenz: [[$1|$2]]",
index 6bdaaeb..f4659be 100644 (file)
                        "The Polish",
                        "Matma Rex",
                        "Sethakill",
-                       "Woytecr"
+                       "Woytecr",
+                       "InternerowyGołąb"
                ]
        },
-       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|Dokumentacja]]\n* [[mw:Special:MyLanguage/API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Lista dyskusyjna]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Ogłoszenia dotyczące API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Błędy i propozycje]\n</div>\n<strong>Stan:</strong> Wszystkie funkcje opisane na tej stronie powinny działać, ale API nadal jest aktywnie rozwijane i mogą się zmienić w dowolnym czasie. Subskrybuj [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ listę dyskusyjną mediawiki-api-announce], aby móc na bieżąco dowiadywać się o aktualizacjach.\n\n<strong>Błędne żądania:</strong> Gdy zostanie wysłane błędne żądanie do API, zostanie wysłany w odpowiedzi nagłówek HTTP z kluczem \"MediaWiki-API-Error\" i zarówno jego wartość jak i wartość kodu błędu wysłanego w odpowiedzi będą miały taką samą wartość. Aby uzyskać więcej informacji, zobacz [[mw:Special:MyLanguage/API:Errors_and_warnings|API: Błędy i ostrzeżenia]].\n\n<strong>Testowanie:</strong> Aby łatwo testować żądania API, zobacz [[Special:ApiSandbox]].",
        "apihelp-main-param-action": "Wybierz akcję do wykonania.",
        "apihelp-main-param-format": "Format danych wyjściowych.",
        "apihelp-main-param-maxlag": "Maksymalne opóźnienie mogą być używane kiedy MediaWiki jest zainstalowana w klastrze zreplikowanej bazy danych. By zapisać działania powodujące większe opóźnienie replikacji, ten parametr może wymusić czekanie u klienta, dopóki opóźnienie replikacji jest mniejsze niż określona wartość. W przypadku nadmiernego opóźnienia, kod błędu <samp>maxlag</samp> jest zwracany z wiadomością jak <samp>Oczekiwanie na $host: $lag sekund opóźnienia</samp>.<br />Zobacz [[mw:Special:MyLanguage/Manual:Maxlag_parameter|Podręcznik:Parametr Maxlag]] by uzyskać więcej informacji.",
@@ -28,7 +28,7 @@
        "apihelp-main-param-servedby": "Dołącz do odpowiedzi nazwę hosta, który obsłużył żądanie.",
        "apihelp-main-param-curtimestamp": "Dołącz obecny znacznik czasu do wyniku.",
        "apihelp-main-param-uselang": "Język, w którym mają być pokazywane tłumaczenia wiadomości. <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> z <kbd>siprop=languages</kbd> zwróci listę języków lub ustaw jako <kbd>user</kbd>, aby pobrać z preferencji zalogowanego użytkownika lub <kbd>content</kbd>, aby wykorzystać język zawartości tej wiki.",
-       "apihelp-block-description": "Zablokuj użytkownika.",
+       "apihelp-block-summary": "Zablokuj użytkownika.",
        "apihelp-block-param-user": "Nazwa użytkownika, adres IP albo zakres adresów IP, które chcesz zablokować. Nie można używać razem z <var>$1userid</var>.",
        "apihelp-block-param-expiry": "Czas trwania. Może być względny (np. <kbd>5 months</kbd> or <kbd>2 weeks</kbd>) lub konkretny (np. <kbd>2014-09-18T12:34:56Z</kbd>). Jeśli jest ustawiony na <kbd>infinite</kbd>, <kbd>indefinite</kbd>, lub <kbd>never</kbd>, blokada nigdy nie wygaśnie.",
        "apihelp-block-param-reason": "Powód blokady.",
        "apihelp-block-param-allowusertalk": "Pozwala użytkownikowi edytować własną stronę dyskusji (zależy od <var>[[mw:Special:MyLanguage/Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]]</var>).",
        "apihelp-block-param-reblock": "Jeżeli ten użytkownik jest już zablokowany, nadpisz blokadę.",
        "apihelp-block-param-watchuser": "Obserwuj stronę użytkownika lub IP oraz ich strony dyskusji.",
+       "apihelp-block-param-tags": "Zmieniaj tagi by potwierdzić wejście do bloku logów.",
        "apihelp-block-example-ip-simple": "Zablokuj IP <kbd>192.0.2.5</kbd> na 3 dni z powodem <kbd>First strike</kbd>.",
        "apihelp-block-example-user-complex": "Zablokuj użytkownika <kbd>Vandal</kbd> na zawsze z powodem <kbd>Vandalism</kbd> i uniemożliw utworzenie nowego konta oraz wysyłanie emaili.",
-       "apihelp-changeauthenticationdata-description": "Zmień dane logowania bieżącego użytkownika.",
+       "apihelp-changeauthenticationdata-summary": "Zmień dane logowania bieżącego użytkownika.",
        "apihelp-changeauthenticationdata-example-password": "Spróbuj zmienić hasło bieżącego użytkownika na <kbd>ExamplePassword</kbd>.",
-       "apihelp-checktoken-description": "Sprawdź poprawność tokenu z <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
+       "apihelp-checktoken-summary": "Sprawdź poprawność tokenu z <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
        "apihelp-checktoken-param-type": "Typ tokenu do przetestowania.",
        "apihelp-checktoken-param-token": "Token do przetestowania.",
        "apihelp-checktoken-param-maxtokenage": "Maksymalny wiek tokenu, w sekundach.",
        "apihelp-checktoken-example-simple": "Sprawdź poprawność tokenu <kbd>csrf</kbd>.",
-       "apihelp-clearhasmsg-description": "Czyści flagę <code>hasmsg</code> dla bieżącego użytkownika.",
+       "apihelp-clearhasmsg-summary": "Czyści flagę <code>hasmsg</code> dla bieżącego użytkownika.",
        "apihelp-clearhasmsg-example-1": "Wyczyść flagę <code>hasmsg</code> dla bieżącego użytkownika.",
+       "apihelp-compare-summary": "Zauważ różnicę między dwoma stronami",
        "apihelp-compare-param-fromtitle": "Pierwszy tytuł do porównania.",
        "apihelp-compare-param-fromid": "ID pierwszej strony do porównania.",
        "apihelp-compare-param-fromrev": "Pierwsza wersja do porównania.",
        "apihelp-compare-param-totitle": "Drugi tytuł do porównania.",
        "apihelp-compare-param-toid": "Numer drugiej strony do porównania.",
        "apihelp-compare-param-torev": "Druga wersja do porównania.",
-       "apihelp-createaccount-description": "Utwórz nowe konto.",
+       "apihelp-createaccount-summary": "Utwórz nowe konto.",
        "apihelp-createaccount-param-name": "Nazwa użytkownika",
        "apihelp-createaccount-param-password": "Hasło (ignorowane jeśli ustawiono <var>$1mailpassword</var>).",
        "apihelp-createaccount-param-domain": "Domena uwierzytelniania zewnętrznego (opcjonalnie).",
        "apihelp-createaccount-param-reason": "Opcjonalny powód tworzenia konta, który zostanie umieszczony w rejestrze.",
        "apihelp-createaccount-example-pass": "Utwórz użytkownika <kbd>testuser</kbd> z hasłem <kbd>test123</kbd>.",
        "apihelp-createaccount-example-mail": "Utwórz użytkownika <kbd>testmailuser</kbd> i wyślij losowo wygenerowane hasło na emaila.",
-       "apihelp-delete-description": "Usuń stronę.",
+       "apihelp-delete-summary": "Usuń stronę.",
        "apihelp-delete-param-reason": "Powód usuwania. Jeśli pozostawisz to pole puste, zostanie użyty powód wygenerowany automatycznie.",
        "apihelp-delete-param-watch": "Dodaj stronę do obecnej listy obserwowanych.",
        "apihelp-delete-param-unwatch": "Usuń stronę z obecnej listy obserwowanych.",
        "apihelp-delete-example-simple": "Usuń <kbd>Main Page</kbd>.",
        "apihelp-delete-example-reason": "Usuń <kbd>Main Page</kbd> z powodem <kbd>Preparing for move</kbd>.",
-       "apihelp-disabled-description": "Ten moduł został wyłączony.",
-       "apihelp-edit-description": "Twórz i edytuj strony.",
+       "apihelp-disabled-summary": "Ten moduł został wyłączony.",
+       "apihelp-edit-summary": "Twórz i edytuj strony.",
        "apihelp-edit-param-title": "Tytuł strony do edycji. Nie może być użyty równocześnie z <var>$1pageid</var>.",
        "apihelp-edit-param-pageid": "ID strony do edycji. Nie może być używany równocześnie z <var>$1title</var>.",
        "apihelp-edit-param-section": "Numer sekcji. <kbd>0</kbd> dla górnej sekcji, <kbd>new</kbd> dla nowej sekcji.",
        "apihelp-edit-param-token": "Token powinien być wysyłany jako ostatni parametr albo przynajmniej po parametrze $1text.",
        "apihelp-edit-example-edit": "Edytuj stronę.",
        "apihelp-edit-example-prepend": "Dopisz <kbd>_&#95;NOTOC_&#95;</kbd> na początku strony.",
-       "apihelp-emailuser-description": "Wyślij e‐mail do użytkownika.",
+       "apihelp-emailuser-summary": "Wyślij e‐mail do użytkownika.",
        "apihelp-emailuser-param-target": "Użytkownik, do którego wysłać e-mail.",
        "apihelp-emailuser-param-subject": "Nagłówek tematu.",
        "apihelp-emailuser-param-text": "Treść emaila.",
        "apihelp-emailuser-param-ccme": "Wyślij kopię wiadomości do mnie.",
        "apihelp-emailuser-example-email": "Wyślij e-mail do użytkownika <kbd>WikiSysop</kbd> z tekstem <kbd>Content</kbd>.",
-       "apihelp-expandtemplates-description": "Rozwija wszystkie szablony zawarte w wikitekście.",
+       "apihelp-expandtemplates-summary": "Rozwija wszystkie szablony zawarte w wikitekście.",
        "apihelp-expandtemplates-param-title": "Tytuł strony.",
        "apihelp-expandtemplates-param-text": "Wikitext do przekonwertowania.",
        "apihelp-expandtemplates-param-revid": "ID wersji, dla <nowiki>{{REVISIONID}}</nowiki> i podobnych zmiennych.",
        "apihelp-expandtemplates-paramvalue-prop-wikitext": "Rozwinięty wikitekst.",
-       "apihelp-feedcontributions-description": "Zwraca kanał wkładu użytkownika.",
+       "apihelp-feedcontributions-summary": "Zwraca kanał wkładu użytkownika.",
        "apihelp-feedcontributions-param-feedformat": "Format danych wyjściowych.",
        "apihelp-feedcontributions-param-user": "Jakich użytkowników pobrać wkład.",
        "apihelp-feedcontributions-param-namespace": "Z jakiej przestrzeni nazw wyświetlać wkład użytkownika.",
        "apihelp-feedcontributions-param-hideminor": "Ukryj drobne zmiany.",
        "apihelp-feedcontributions-param-showsizediff": "Pokaż różnicę rozmiaru między wersjami.",
        "apihelp-feedcontributions-example-simple": "Zwróć liste edycji dokonanych przez użytkownika <kbd>Example</kbd>.",
-       "apihelp-feedrecentchanges-description": "Zwraca kanał ostatnich zmian.",
+       "apihelp-feedrecentchanges-summary": "Zwraca kanał ostatnich zmian.",
        "apihelp-feedrecentchanges-param-feedformat": "Format danych wyjściowych.",
        "apihelp-feedrecentchanges-param-namespace": "Przestrzeń nazw, do której ograniczone są wyniki.",
        "apihelp-feedrecentchanges-param-invert": "Wszystkie przestrzenie nazw oprócz wybranej.",
        "apihelp-feedrecentchanges-param-categories_any": "Pokaż zmiany tylko na stronach będących w jednej z tych kategorii.",
        "apihelp-feedrecentchanges-example-simple": "Pokaż ostatnie zmiany.",
        "apihelp-feedrecentchanges-example-30days": "Pokaż ostatnie zmiany z 30 dni.",
-       "apihelp-feedwatchlist-description": "Zwraca kanał listy obserwowanych.",
+       "apihelp-feedwatchlist-summary": "Zwraca kanał listy obserwowanych.",
        "apihelp-feedwatchlist-param-feedformat": "Format kanału.",
        "apihelp-feedwatchlist-param-hours": "Wymień strony zmienione w ciągu tylu godzin licząc od teraz.",
        "apihelp-feedwatchlist-param-linktosections": "Linkuj bezpośrednio do zmienionych sekcji jeżeli to możliwe.",
        "apihelp-feedwatchlist-example-default": "Pokaż kanał listy obserwowanych.",
        "apihelp-feedwatchlist-example-all6hrs": "Pokaż wszystkie zmiany na obserwowanych stronach dokonane w ciągu ostatnich 6 godzin.",
-       "apihelp-filerevert-description": "Przywróć plik do starej wersji.",
+       "apihelp-filerevert-summary": "Przywróć plik do starej wersji.",
        "apihelp-filerevert-param-filename": "Docelowa nazwa pliku bez prefiksu Plik:",
        "apihelp-filerevert-param-comment": "Prześlij komentarz.",
        "apihelp-filerevert-example-revert": "Przywróć <kbd>Wiki.png</kbd> do wersji z <kbd>2011-03-05T15:27:40Z</kbd>.",
-       "apihelp-help-description": "Wyświetl pomoc dla określonych modułów.",
+       "apihelp-help-summary": "Wyświetl pomoc dla określonych modułów.",
        "apihelp-help-param-modules": "Moduły do wyświetlenia pomocy dla (wartości <var>action</var> i <var>format</var> parametry, lub <kbd>main</kbd>). Może określić podmoduły z <kbd>+</kbd>.",
        "apihelp-help-param-submodules": "Dołącz pomoc podmodułów nazwanego modułu.",
        "apihelp-help-param-recursivesubmodules": "Zawiera pomoc dla podmodułów rekursywnie.",
        "apihelp-help-example-recursive": "Cała pomoc na jednej stronie.",
        "apihelp-help-example-help": "Pomoc dla modułu pomocy",
        "apihelp-help-example-query": "Pomoc dla dwóch podmodułów zapytań.",
-       "apihelp-imagerotate-description": "Obróć jeden lub wiecej obrazków.",
+       "apihelp-imagerotate-summary": "Obróć jeden lub wiecej obrazków.",
        "apihelp-imagerotate-param-rotation": "Stopni w prawo, aby obrócić zdjęcie.",
        "apihelp-imagerotate-example-simple": "Obróć <kbd>Plik:Przykład.png</kbd> o <kbd>90</kbd> stopni.",
        "apihelp-imagerotate-example-generator": "Obróć wszystkie obrazki w <kbd>Kategorii:Flip</kbd> o <kbd>180</kbd> stopni.",
        "apihelp-login-param-token": "Token logowania zdobyty w pierwszym zapytaniu.",
        "apihelp-login-example-gettoken": "Zdobądź token logowania.",
        "apihelp-login-example-login": "Zaloguj się",
-       "apihelp-logout-description": "Wyloguj i wyczyść dane sesji.",
+       "apihelp-logout-summary": "Wyloguj i wyczyść dane sesji.",
        "apihelp-logout-example-logout": "Wyloguj obecnego użytkownika.",
-       "apihelp-managetags-description": "Wykonywanie zadań związanych z zarządzaniem znacznikami zmian.",
+       "apihelp-managetags-summary": "Wykonywanie zadań związanych z zarządzaniem znacznikami zmian.",
        "apihelp-managetags-param-operation": "Jakiej operacji dokonać:\n;create:Stworzenie nowego znacznika zmian do ręcznego użycia.\n;delete:Usunięcie znacznika zmian z bazy danych, włącznie z usunięciem danego znacznika z wszystkich oznaczonych nim zmian i wpisów rejestru i ostatnich zmian.\n;activate:Aktywuj znacznik zmian, użytkownicy będą mogli go ręcznie przypisywać.\n;deactivate:Dezaktywuj znacznik zmian, użytkownicy nie będą mogli przypisywać go ręcznie.",
        "apihelp-managetags-param-tag": "Znacznik do utworzenia, usunięcia, aktywacji lub dezaktywacji. Do utworzenia znacznika, nazwa nie misi istnieć. Do usunięcia znacznika, musi on istnieć. Do aktywacji znacznika, musi on istnieć i nie może być w użyciu przez żadne rozszerzenie. Do dezaktywowania znacznika, musi on być do tej pory aktywowany i ręcznie zdefiniowany.",
        "apihelp-managetags-param-reason": "Opcjonalny powód utworzenia, usunięcia, włączenia lub wyłączenia znacznika.",
        "apihelp-managetags-example-delete": "Usunięcie znacznika <kbd>vandlaism</kbd> z powodu <kbd>Misspelt</kbd>",
        "apihelp-managetags-example-activate": "Aktywacja znacznika o nazwie <kbd>spam</kbd> z powodem <kbd>For use in edit patrolling</kbd>",
        "apihelp-managetags-example-deactivate": "Dezaktywacja znacznika o nazwie <kbd>spam</kbd> z powodu <kbd>No longer required</kbd>",
-       "apihelp-mergehistory-description": "Łączenie historii edycji.",
+       "apihelp-mergehistory-summary": "Łączenie historii edycji.",
        "apihelp-mergehistory-param-from": "Tytuł strony, z której historia ma zostać połączona. Nie może być używane z <var>$1fromid</var>.",
        "apihelp-mergehistory-param-fromid": "ID strony, z której historia ma zostać połączona. Nie może być używane z <var>$1from</var>.",
        "apihelp-mergehistory-param-to": "Tytuł strony, z którą połączyć historię. Nie może być używane z <var>$1toid</var>.",
        "apihelp-mergehistory-param-toid": "ID strony, z którą połączyć historię. Nie może być używane z <var>$1to</var>.",
        "apihelp-mergehistory-param-reason": "Powód łączenia historii.",
        "apihelp-mergehistory-example-merge": "Połącz całą historię strony <kbd>Oldpage</kbd> ze stroną <kbd>Newpage</kbd>.",
-       "apihelp-move-description": "Przenieś stronę.",
+       "apihelp-move-summary": "Przenieś stronę.",
        "apihelp-move-param-from": "Tytuł strony do zmiany nazwy. Nie można używać razem z <var>$1fromid</var>.",
        "apihelp-move-param-to": "Tytuł na jaki zmienić nazwę strony.",
        "apihelp-move-param-reason": "Powód zmiany nazwy.",
        "apihelp-move-param-unwatch": "Usuń stronę i przekierowanie z listy obserwowanych bieżącego użytkownika.",
        "apihelp-move-param-ignorewarnings": "Ignoruj wszystkie ostrzeżenia.",
        "apihelp-move-example-move": "Przenieś <kbd>Badtitle</kbd> na <kbd>Goodtitle</kbd> bez pozostawienia przekierowania.",
-       "apihelp-opensearch-description": "Przeszukaj wiki przy użyciu protokołu OpenSearch.",
+       "apihelp-opensearch-summary": "Przeszukaj wiki przy użyciu protokołu OpenSearch.",
        "apihelp-opensearch-param-search": "Wyszukaj tekst.",
        "apihelp-opensearch-param-limit": "Maksymalna liczba zwracanych wyników.",
        "apihelp-opensearch-param-namespace": "Przestrzenie nazw do przeszukania.",
        "apihelp-opensearch-param-format": "Format danych wyjściowych.",
        "apihelp-opensearch-param-warningsaserror": "Jeżeli pojawią się ostrzeżenia związane z <kbd>format=json</kbd>, zwróć błąd API zamiast ignorowania ich.",
        "apihelp-opensearch-example-te": "Znajdź strony zaczynające się od <kbd>Te</kbd>.",
-       "apihelp-options-description": "Zmienia preferencje bieżącego użytkownika.\n\nMożna ustawiać tylko opcje zarejestrowane w rdzeniu, w zainstalowanych rozszerzeniach lub z kluczami o prefiksie <code>userjs-</code> (do wykorzystywania przez skrypty użytkowników).",
        "apihelp-options-param-reset": "Resetuj preferencje do domyślnych.",
        "apihelp-options-param-resetkinds": "Lista typów opcji do zresetowania, jeżeli ustawiono opcję <var>$1reset</var>.",
        "apihelp-options-param-change": "Lista zmian, w formacie nazwa=wartość (np. skin=vector).  Jeżeli nie zostanie podana wartość (nawet znak równości), np., optionname|otheroption|..., to opcja zostanie zresetowana do jej wartości domyślnej. Jeżeli jakakolwiek podawana wartość zawiera znak pionowej kreski (<kbd>|</kbd>), użyj [[Special:ApiHelp/main#main/datatypes|alternatywnego separatora wielu wartości]] aby operacja się powiodła.",
        "apihelp-options-example-reset": "Resetuj wszystkie preferencje.",
        "apihelp-options-example-change": "Zmień preferencje <kbd>skin</kbd> (skórka) i <kbd>hideminor</kbd> (ukryj drobne edycje).",
        "apihelp-options-example-complex": "Zresetuj wszystkie preferencje, a następnie ustaw <kbd>skin</kbd> i <kbd>nickname</kbd>.",
-       "apihelp-paraminfo-description": "Zdobądź informacje o modułach API.",
+       "apihelp-paraminfo-summary": "Zdobądź informacje o modułach API.",
        "apihelp-paraminfo-param-modules": "Lista nazw modułów (wartości parametrów <var>action</var> i <var>format</var> lub <kbd>main</kbd>). Można określić podmoduły za pomocą <kbd>+</kbd> lub wszystkie podmoduły, wpisując <kbd>+*</kbd>, lub wszystkie podmoduły rekursywnie <kbd>+**</kbd>.",
        "apihelp-paraminfo-param-helpformat": "Format tekstów pomocy.",
        "apihelp-paraminfo-param-querymodules": "Lista nazw modułów zapytań (wartość parametrów <var>prop</var>, <var>meta</var> lub <var>list</var>). Użyj <kbd>$1modules=query+foo</kbd> zamiast <kbd>$1querymodules=foo</kbd>.",
        "apihelp-parse-example-page": "Przeanalizuj stronę.",
        "apihelp-parse-example-text": "Parsuj wikitekst.",
        "apihelp-parse-example-summary": "Parsuj powód.",
-       "apihelp-patrol-description": "Sprawdź stronę lub edycję.",
+       "apihelp-patrol-summary": "Sprawdź stronę lub edycję.",
        "apihelp-patrol-param-rcid": "ID z ostatnich zmian do oznaczenia jako sprawdzone.",
        "apihelp-patrol-param-revid": "Numer edycji do sprawdzenia.",
        "apihelp-patrol-example-rcid": "Sprawdź ostatnią zmianę.",
        "apihelp-patrol-example-revid": "Sprawdź edycje.",
-       "apihelp-protect-description": "Zmień poziom zabezpieczenia strony.",
+       "apihelp-protect-summary": "Zmień poziom zabezpieczenia strony.",
        "apihelp-protect-param-reason": "Powód zabezpieczania/odbezpieczania.",
        "apihelp-protect-param-cascade": "Włącz ochronę kaskadową (chronione są wszystkie osadzone szablony i obrazki na tej stronie). Ignorowane, jeśli żaden z danych poziomów ochrony nie wspiera kaskadowania.",
        "apihelp-protect-example-protect": "Zabezpiecz stronę",
        "apihelp-protect-example-unprotect": "Odbezpiecz stronę ustawiając ograniczenia na <kbd>all</kbd> (czyli każdy może wykonać działanie).",
        "apihelp-protect-example-unprotect2": "Odbezpiecz stronę ustawiając brak ograniczeń.",
-       "apihelp-purge-description": "Wyczyść pamięć podręczną dla stron o podanych tytułach.",
+       "apihelp-purge-summary": "Wyczyść pamięć podręczną dla stron o podanych tytułach.",
        "apihelp-purge-param-forcelinkupdate": "Uaktualnij tabele linków.",
        "apihelp-purge-param-forcerecursivelinkupdate": "Uaktualnij tabele linków włącznie z linkami dotyczącymi każdej strony wykorzystywanej jako szablon na tej stronie.",
        "apihelp-purge-example-simple": "Wyczyść strony <kbd>Main Page</kbd> i <kbd>API</kbd>.",
        "apihelp-purge-example-generator": "Przeczyść pierwsze 10 stron w przestrzeni głównej.",
-       "apihelp-query+allcategories-description": "Wymień wszystkie kategorie.",
+       "apihelp-query+allcategories-summary": "Wymień wszystkie kategorie.",
        "apihelp-query+allcategories-param-from": "Kategoria, od której rozpocząć wyliczanie.",
        "apihelp-query+allcategories-param-to": "Kategoria, na której zakończyć wyliczanie.",
        "apihelp-query+allcategories-param-dir": "Kierunek sortowania.",
        "apihelp-query+allcategories-paramvalue-prop-size": "Dodaje liczbę stron w kategorii.",
        "apihelp-query+allcategories-paramvalue-prop-hidden": "Oznacza kategorie ukryte za pomocą <code>_&#95;HIDDENCAT_&#95;</code>.",
        "apihelp-query+allcategories-example-size": "Wymień kategorie z informacjami o liczbie stron w każdej z nich.",
-       "apihelp-query+alldeletedrevisions-description": "Wymień wszystkie usunięte wersje użytkownika lub z przestrzeni nazw.",
+       "apihelp-query+alldeletedrevisions-summary": "Wymień wszystkie usunięte wersje użytkownika lub z przestrzeni nazw.",
        "apihelp-query+alldeletedrevisions-paraminfo-useronly": "Może być użyte tylko z <var>$3user</var>.",
        "apihelp-query+alldeletedrevisions-paraminfo-nonuseronly": "Nie może być używane z <var>$3user</var>.",
        "apihelp-query+alldeletedrevisions-param-start": "Znacznik czasu, od którego rozpocząć wyliczanie.",
        "apihelp-query+alldeletedrevisions-param-namespace": "Listuj tylko strony z tej przestrzeni nazw.",
        "apihelp-query+alldeletedrevisions-example-user": "Wymień ostatnie 50 usuniętych edycji przez użytkownika <kbd>Example</kbd>.",
        "apihelp-query+alldeletedrevisions-example-ns-main": "Wymień ostatnie 50 usuniętych edycji z przestrzeni głównej.",
-       "apihelp-query+allfileusages-description": "Lista wykorzystania pliku, także dla nieistniejących.",
+       "apihelp-query+allfileusages-summary": "Lista wykorzystania pliku, także dla nieistniejących.",
        "apihelp-query+allfileusages-param-from": "Nazwa pliku, od którego rozpocząć wyliczanie.",
        "apihelp-query+allfileusages-param-to": "Nazwa pliku, na którym zakończyć wyliczanie.",
        "apihelp-query+allfileusages-param-prop": "Jakie informacje dołączyć:",
        "apihelp-query+allpages-example-B": "Pokaż listę stron rozpoczynających się na literę <kbd>B</kbd>.",
        "apihelp-query+allpages-example-generator": "Pokaż informacje o 4 stronach rozpoczynających się na literę <kbd>T</kbd>.",
        "apihelp-query+allpages-example-generator-revisions": "Pokaż zawartość pierwszych dwóch nieprzekierowujących stron, zaczynających się na <kbd>Re</kbd>.",
-       "apihelp-query+allredirects-description": "Lista wszystkich przekierowań do przestrzeni nazw.",
+       "apihelp-query+allredirects-summary": "Lista wszystkich przekierowań do przestrzeni nazw.",
        "apihelp-query+allredirects-param-from": "Nazwa przekierowania, od którego rozpocząć wyliczanie.",
        "apihelp-query+allredirects-param-to": "Nazwa przekierowania, na którym zakończyć wyliczanie.",
        "apihelp-query+allredirects-param-prop": "Jakie informacje dołączyć:",
        "apihelp-query+allredirects-paramvalue-prop-title": "Dodaje tytuł przekierowania.",
        "apihelp-query+allredirects-param-namespace": "Przestrzeń nazw, z której wymieniać.",
        "apihelp-query+allredirects-param-limit": "Łączna liczba obiektów do zwrócenia.",
-       "apihelp-query+allrevisions-description": "Wyświetl wszystkie wersje.",
+       "apihelp-query+allrevisions-summary": "Wyświetl wszystkie wersje.",
        "apihelp-query+allrevisions-param-start": "Znacznik czasu, od którego rozpocząć wyliczanie.",
        "apihelp-query+allrevisions-param-end": "Znacznik czasu, na którym zakończyć wyliczanie.",
        "apihelp-query+allrevisions-param-user": "Wyświetl wersje tylko tego użytkownika.",
        "apihelp-query+allusers-param-witheditsonly": "Tylko użytkownicy, którzy edytowali.",
        "apihelp-query+allusers-param-activeusers": "Wyświetl tylko użytkowników, aktywnych w ciągu {{PLURAL:$1|ostatniego dnia|ostatnich $1 dni}}.",
        "apihelp-query+allusers-example-Y": "Wyświetl użytkowników zaczynających się na <kbd>Y</kbd>.",
-       "apihelp-query+backlinks-description": "Znajdź wszystkie strony, które linkują do danej strony.",
+       "apihelp-query+backlinks-summary": "Znajdź wszystkie strony, które linkują do danej strony.",
        "apihelp-query+backlinks-param-namespace": "Przestrzeń nazw, z której wymieniać.",
        "apihelp-query+backlinks-example-simple": "Pokazuj linki do <kbd>Main page</kbd>.",
-       "apihelp-query+blocks-description": "Lista wszystkich zablokowanych użytkowników i adresów IP.",
+       "apihelp-query+blocks-summary": "Lista wszystkich zablokowanych użytkowników i adresów IP.",
        "apihelp-query+blocks-param-start": "Znacznik czasu, od którego rozpocząć wyliczanie.",
        "apihelp-query+blocks-param-end": "Znacznik czasu, na którym zakończyć wyliczanie.",
        "apihelp-query+blocks-param-ids": "Lista zablokowanych ID do wylistowania (opcjonalne).",
        "apihelp-query+blocks-paramvalue-prop-reason": "Dodaje powód zablokowania.",
        "apihelp-query+blocks-paramvalue-prop-range": "Dodaje zakres adresów IP, na który zastosowano blokadę.",
        "apihelp-query+blocks-example-simple": "Listuj blokady.",
+       "apihelp-query+categories-summary": "Lista kategorii, do których należą strony",
        "apihelp-query+categories-paramvalue-prop-timestamp": "Dodaje znacznik czasu dodania kategorii.",
        "apihelp-query+categories-param-limit": "Liczba kategorii do zwrócenia.",
-       "apihelp-query+categoryinfo-description": "Zwraca informacje o danych kategoriach.",
-       "apihelp-query+categorymembers-description": "Wszystkie strony w danej kategorii.",
+       "apihelp-query+categoryinfo-summary": "Zwraca informacje o danych kategoriach.",
+       "apihelp-query+categorymembers-summary": "Wszystkie strony w danej kategorii.",
        "apihelp-query+categorymembers-param-title": "Kategoria, której zawartość wymienić (wymagane). Musi zawierać prefiks <kbd>{{ns:category}}:</kbd>. Nie może być używany równocześnie z <var>$1pageid</var>.",
        "apihelp-query+categorymembers-param-pageid": "ID strony kategorii, z której wymienić strony. Nie może być użyty równocześnie z <var>$1title</var>.",
        "apihelp-query+categorymembers-param-prop": "Jakie informacje dołączyć:",
        "apihelp-query+deletedrevs-param-excludeuser": "Nie listuj zmian dokonanych przez tego użytkownika.",
        "apihelp-query+deletedrevs-param-namespace": "Listuj tylko strony z tej przestrzeni nazw.",
        "apihelp-query+deletedrevs-param-limit": "Maksymalna liczba zmian do wylistowania.",
-       "apihelp-query+disabled-description": "Ten moduł zapytań został wyłączony.",
+       "apihelp-query+disabled-summary": "Ten moduł zapytań został wyłączony.",
        "apihelp-query+duplicatefiles-example-generated": "Szukaj duplikatów wśród wszystkich plików.",
        "apihelp-query+embeddedin-param-filterredir": "Jak filtrować przekierowania.",
        "apihelp-query+embeddedin-param-limit": "Łączna liczba stron do zwrócenia.",
        "apihelp-query+filearchive-paramvalue-prop-mime": "Dodaje typ MIME obrazka.",
        "apihelp-query+filearchive-example-simple": "Pokaż listę wszystkich usuniętych plików.",
        "apihelp-query+filerepoinfo-example-simple": "Uzyskaj informacje na temat repozytoriów plików.",
-       "apihelp-query+fileusage-description": "Znajdź wszystkie strony, które używają danych plików.",
+       "apihelp-query+fileusage-summary": "Znajdź wszystkie strony, które używają danych plików.",
        "apihelp-query+fileusage-paramvalue-prop-title": "Nazwa każdej strony.",
        "apihelp-query+fileusage-paramvalue-prop-redirect": "Oznacz, jeśli strona jest przekierowaniem.",
        "apihelp-query+fileusage-param-limit": "Ilość do zwrócenia.",
-       "apihelp-query+imageinfo-description": "Zwraca informacje o pliku i historię przesyłania.",
+       "apihelp-query+imageinfo-summary": "Zwraca informacje o pliku i historię przesyłania.",
        "apihelp-query+imageinfo-paramvalue-prop-canonicaltitle": "Dodaje kanoniczny tytuł pliku.",
        "apihelp-query+imageinfo-paramvalue-prop-dimensions": "Alias rozmiaru.",
        "apihelp-query+imageinfo-paramvalue-prop-sha1": "Dołączy sumę kontrolną SHA-1 dla tego pliku.",
        "apihelp-query+imageinfo-param-urlheight": "Podobne do $1urlwidth.",
        "apihelp-query+images-param-limit": "Liczba plików do zwrócenia.",
        "apihelp-query+imageusage-example-simple": "Pokaż strony, które korzystają z [[:File:Albert Einstein Head.jpg]].",
-       "apihelp-query+info-description": "Pokaż podstawowe informacje o stronie.",
+       "apihelp-query+info-summary": "Pokaż podstawowe informacje o stronie.",
        "apihelp-query+info-paramvalue-prop-watchers": "Liczba obserwujących, jeśli jest to dozwolone.",
        "apihelp-query+info-paramvalue-prop-readable": "Czy użytkownik może przeczytać tę stronę.",
        "apihelp-query+iwbacklinks-param-prefix": "Prefix interwiki.",
        "apihelp-query+iwbacklinks-param-limit": "Łączna liczba stron do zwrócenia.",
        "apihelp-query+iwbacklinks-paramvalue-prop-iwprefix": "Dodaje prefiks interwiki.",
        "apihelp-query+iwbacklinks-paramvalue-prop-iwtitle": "Dodaje tytuł interwiki.",
-       "apihelp-query+iwlinks-description": "Wyświetla wszystkie liki interwiki z danych stron.",
+       "apihelp-query+iwlinks-summary": "Wyświetla wszystkie liki interwiki z danych stron.",
        "apihelp-query+iwlinks-paramvalue-prop-url": "Dodaje pełny adres URL.",
        "apihelp-query+iwlinks-param-limit": "Łączna liczba linków interwiki do zwrócenia.",
        "apihelp-query+langbacklinks-param-limit": "Łączna liczba stron do zwrócenia.",
        "apihelp-query+langbacklinks-paramvalue-prop-lllang": "Dodaje kod języka linku językowego.",
        "apihelp-query+langbacklinks-paramvalue-prop-lltitle": "Dodaje tytuł linku językowego.",
        "apihelp-query+langlinks-paramvalue-prop-url": "Dodaje pełny adres URL.",
-       "apihelp-query+links-description": "Zwraca wszystkie linki z danych stron.",
+       "apihelp-query+links-summary": "Zwraca wszystkie linki z danych stron.",
        "apihelp-query+links-param-namespace": "Pokaż linki tylko w tych przestrzeniach nazw.",
        "apihelp-query+links-param-limit": "Liczba linków do zwrócenia.",
-       "apihelp-query+linkshere-description": "Znajdź wszystkie strony, które linkują do danych stron.",
+       "apihelp-query+linkshere-summary": "Znajdź wszystkie strony, które linkują do danych stron.",
        "apihelp-query+linkshere-paramvalue-prop-title": "Nazwa każdej strony.",
        "apihelp-query+linkshere-paramvalue-prop-redirect": "Oznacz, jeśli strona jest przekierowaniem.",
        "apihelp-query+linkshere-param-limit": "Liczba do zwrócenia.",
-       "apihelp-query+logevents-description": "Pobierz zdarzenia z rejestru.",
        "apihelp-query+logevents-example-simple": "Lista ostatnich zarejestrowanych zdarzeń.",
        "apihelp-query+pagepropnames-param-limit": "Maksymalna liczba zwracanych nazw.",
        "apihelp-query+pageswithprop-param-prop": "Jakie informacje dołączyć:",
        "apihelp-query+prefixsearch-param-namespace": "Przestrzenie nazw do przeszukania.",
        "apihelp-query+prefixsearch-param-limit": "Maksymalna liczba zwracanych wyników.",
        "apihelp-query+prefixsearch-param-offset": "Liczba wyników do pominięcia.",
-       "apihelp-query+protectedtitles-description": "Lista wszystkich tytułów zabezpieczonych przed tworzeniem.",
+       "apihelp-query+protectedtitles-summary": "Lista wszystkich tytułów zabezpieczonych przed tworzeniem.",
        "apihelp-query+protectedtitles-param-namespace": "Listuj tylko strony z tych przestrzeni nazw.",
        "apihelp-query+protectedtitles-param-limit": "Łączna liczba stron do zwrócenia.",
        "apihelp-query+protectedtitles-paramvalue-prop-level": "Dodaje poziom zabezpieczeń.",
        "apihelp-query+recentchanges-param-tag": "Pokazuj tylko zmiany oznaczone tym znacznikiem.",
        "apihelp-query+recentchanges-paramvalue-prop-comment": "Dodaje komentarz do edycji.",
        "apihelp-query+recentchanges-example-simple": "Lista ostatnich zmian.",
-       "apihelp-query+redirects-description": "Zwraca wszystkie przekierowania do danej strony.",
+       "apihelp-query+redirects-summary": "Zwraca wszystkie przekierowania do danej strony.",
        "apihelp-query+redirects-paramvalue-prop-title": "Nazwa każdego przekierowania.",
        "apihelp-query+redirects-param-limit": "Ile przekierowań zwrócić.",
        "apihelp-query+revisions+base-paramvalue-prop-ids": "Identyfikator wersji.",
        "apihelp-query+revisions+base-paramvalue-prop-content": "Tekst wersji.",
        "apihelp-query+revisions+base-paramvalue-prop-tags": "Znaczniki wersji.",
        "apihelp-query+revisions+base-param-limit": "Ograniczenie na liczbę wersji, które będą zwrócone.",
-       "apihelp-query+search-description": "Wykonaj wyszukiwanie pełnotekstowe.",
+       "apihelp-query+search-summary": "Wykonaj wyszukiwanie pełnotekstowe.",
        "apihelp-query+search-param-info": "Które metadane zwrócić.",
        "apihelp-query+search-paramvalue-prop-size": "Dodaje rozmiar strony w bajtach.",
        "apihelp-query+search-paramvalue-prop-wordcount": "Dodaje liczbę słów na stronie.",
        "apihelp-query+siteinfo-param-numberingroup": "Wyświetla liczbę użytkowników w grupach użytkowników.",
        "apihelp-query+siteinfo-example-simple": "Pobierz informacje o stronie.",
        "apihelp-query+stashimageinfo-param-sessionkey": "Alias dla $1filekey, dla kompatybilności wstecznej.",
-       "apihelp-query+tags-description": "Lista znaczników zmian.",
+       "apihelp-query+tags-summary": "Lista znaczników zmian.",
        "apihelp-query+tags-param-limit": "Maksymalna liczba znaczników do wyświetlenia.",
        "apihelp-query+tags-paramvalue-prop-name": "Dodaje nazwę znacznika.",
        "apihelp-query+tags-paramvalue-prop-displayname": "Dodaje komunikat systemowy dla znacznika.",
        "apihelp-query+tags-paramvalue-prop-description": "Dodaje opis znacznika.",
        "apihelp-query+tags-paramvalue-prop-active": "Czy znacznik jest nadal stosowany.",
        "apihelp-query+tags-example-simple": "Wymień dostępne znaczniki.",
-       "apihelp-query+templates-description": "Zwraca wszystkie strony osadzone w danych stronach.",
+       "apihelp-query+templates-summary": "Zwraca wszystkie strony osadzone w danych stronach.",
        "apihelp-query+templates-param-namespace": "Pokaż szablony tylko w tych przestrzeniach nazw.",
        "apihelp-query+templates-param-limit": "Ile szablonów zwrócić?",
        "apihelp-query+transcludedin-paramvalue-prop-title": "Nazwa każdej strony.",
        "apihelp-query+transcludedin-param-limit": "Ile zwrócić.",
        "apihelp-query+usercontribs-paramvalue-prop-comment": "Dodaje komentarz edycji.",
        "apihelp-query+usercontribs-paramvalue-prop-parsedcomment": "Dodaje sparsowany komentarz edycji.",
-       "apihelp-query+userinfo-description": "Pobierz informacje o aktualnym użytkowniku.",
+       "apihelp-query+userinfo-summary": "Pobierz informacje o aktualnym użytkowniku.",
        "apihelp-query+userinfo-param-prop": "Jakie informacje dołączyć:",
        "apihelp-query+userinfo-paramvalue-prop-groups": "Wyświetla wszystkie grupy, do których należy bieżący użytkownik.",
        "apihelp-query+userinfo-paramvalue-prop-rights": "Wyświetla wszystkie uprawnienia, które ma bieżący użytkownik.",
        "apihelp-query+userinfo-paramvalue-prop-registrationdate": "Dodaje datę rejestracji użytkownika.",
        "apihelp-query+userinfo-example-simple": "Pobierz informacje o aktualnym użytkowniku.",
        "apihelp-query+userinfo-example-data": "Pobierz dodatkowe informacje o aktualnym użytkowniku.",
-       "apihelp-query+users-description": "Pobierz informacje o liście użytkowników.",
+       "apihelp-query+users-summary": "Pobierz informacje o liście użytkowników.",
        "apihelp-query+users-param-prop": "Jakie informacje dołączyć:",
        "apihelp-query+users-paramvalue-prop-groups": "Wyświetla wszystkie grupy, do których należy każdy z użytkowników.",
        "apihelp-query+users-paramvalue-prop-rights": "Wyświetla wszystkie uprawnienia, które ma każdy z użytkowników.",
        "apihelp-query+watchlist-paramvalue-prop-timestamp": "Dodaje znacznik czasu edycji.",
        "apihelp-query+watchlist-paramvalue-prop-sizes": "Dodaje starą i nową długość strony.",
        "apihelp-query+watchlist-paramvalue-type-external": "Zmiany zewnętrzne.",
-       "apihelp-resetpassword-description": "Wyślij użytkownikowi e-mail do resetowania hasła.",
+       "apihelp-resetpassword-summary": "Wyślij użytkownikowi e-mail do resetowania hasła.",
        "apihelp-resetpassword-example-email": "Wyślij e-mail do resetowania hasła do wszystkich użytkowników posiadających adres <kbd>user@example.com</kbd>.",
        "apihelp-revisiondelete-param-ids": "Identyfikatory wersji do usunięcia.",
        "apihelp-revisiondelete-param-hide": "Co ukryć w każdej z wersji.",
        "apihelp-revisiondelete-param-show": "Co pokazać w każdej z wersji.",
        "apihelp-revisiondelete-param-reason": "Powód usunięcia lub przywrócenia.",
-       "apihelp-setpagelanguage-description": "Zmień język strony.",
+       "apihelp-setpagelanguage-summary": "Zmień język strony.",
        "apihelp-setpagelanguage-param-reason": "Powód zmiany.",
        "apihelp-stashedit-param-title": "Tytuł edytowanej strony.",
        "apihelp-stashedit-param-sectiontitle": "Tytuł nowej sekcji.",
        "apihelp-stashedit-param-text": "Zawartość strony.",
        "apihelp-stashedit-param-summary": "Opis zmian.",
        "apihelp-tag-param-reason": "Powód zmiany.",
-       "apihelp-unblock-description": "Odblokuj użytkownika.",
+       "apihelp-unblock-summary": "Odblokuj użytkownika.",
        "apihelp-unblock-param-user": "Nazwa użytkownika, adres IP albo zakres adresów IP, które chcesz odblokować. Nie można używać jednocześnie z <var>$1id</var> lub <var>$1userid</var>.",
        "apihelp-unblock-param-reason": "Powód odblokowania.",
        "apihelp-undelete-param-title": "Tytuł strony do przywrócenia.",
        "apihelp-userrights-param-remove": "Usuń użytkownika z tych grup.",
        "apihelp-userrights-param-reason": "Powód zmiany.",
        "apihelp-validatepassword-param-password": "Hasło do walidacji.",
-       "apihelp-json-description": "Dane wyjściowe w formacie JSON.",
-       "apihelp-jsonfm-description": "Dane wyjściowe w formacie JSON (prawidłowo wyświetlane w HTML).",
-       "apihelp-php-description": "Dane wyjściowe w serializowany formacie PHP.",
-       "apihelp-phpfm-description": "Dane wyjściowe w serializowanym formacie PHP (prawidłowo wyświetlane w HTML).",
-       "apihelp-xml-description": "Dane wyjściowe w formacie XML.",
+       "apihelp-json-summary": "Dane wyjściowe w formacie JSON.",
+       "apihelp-jsonfm-summary": "Dane wyjściowe w formacie JSON (prawidłowo wyświetlane w HTML).",
+       "apihelp-php-summary": "Dane wyjściowe w serializowany formacie PHP.",
+       "apihelp-phpfm-summary": "Dane wyjściowe w serializowanym formacie PHP (prawidłowo wyświetlane w HTML).",
+       "apihelp-xml-summary": "Dane wyjściowe w formacie XML.",
        "apihelp-xml-param-xslt": "Jeśli określony, dodaje podaną stronę jako arkusz styli XSL. Powinna to być strona wiki w przestrzeni nazw MediaWiki, której nazwa kończy się na <code>.xsl</code>.",
        "apihelp-xml-param-includexmlnamespace": "Jeśli zaznaczono, dodaje przestrzeń nazw XML.",
-       "apihelp-xmlfm-description": "Dane wyjściowe w formacie XML (prawidłowo wyświetlane w HTML).",
+       "apihelp-xmlfm-summary": "Dane wyjściowe w formacie XML (prawidłowo wyświetlane w HTML).",
        "api-format-title": "Wynik MediaWiki API",
        "api-pageset-param-titles": "Lista tytułów, z którymi pracować.",
        "api-pageset-param-pageids": "Lista identyfikatorów stron, z którymi pracować.",
        "api-help-title": "Pomoc MediaWiki API",
        "api-help-lead": "To jest automatycznie wygenerowana strona dokumentacji MediaWiki API.\nDokumentacja i przykłady: https://www.mediawiki.org/wiki/API",
        "api-help-main-header": "Moduł główny",
+       "api-help-undocumented-module": "Brak dokumentacji dla modułu $1.",
        "api-help-flag-deprecated": "Ten moduł jest przestarzały.",
        "api-help-flag-internal": "<strong>Ten moduł jest wewnętrzny lub niestabilny.</strong> Jego działanie może się zmienić bez uprzedzenia.",
        "api-help-flag-readrights": "Ten moduł wymaga praw odczytu.",
index fe5138e..caeaa82 100644 (file)
        "apihelp-feedrecentchanges-param-target": "Mostrar apenas mudanças em páginas afluentes a esta.",
        "apihelp-feedrecentchanges-param-showlinkedto": "Mostrar mudanças em páginas com ligações para a página selecionada.",
        "apihelp-feedrecentchanges-param-categories": "Mostrar apenas mudanças nas páginas que estão em todas estas categorias.",
-       "apihelp-feedrecentchanges-param-categories_any": "Mostrar mudanças nas páginas que estão em qualquer uma destas categorias.",
+       "apihelp-feedrecentchanges-param-categories_any": "Mostrar apenas mudanças nas páginas que estão em qualquer uma das categorias.",
        "apihelp-feedrecentchanges-example-simple": "Mostrar mudanças recentes.",
        "apihelp-feedrecentchanges-example-30days": "Mostrar as mudanças recentes de 30 dias.",
        "apihelp-feedwatchlist-summary": "Devolve um ''feed'' das páginas vigiadas.",
        "apihelp-query+users-param-token": "Em substituição, usar <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
        "apihelp-query+users-example-simple": "Devolver informações sobre o utilizador <kbd>Example</kbd>.",
        "apihelp-query+watchlist-summary": "Obter mudanças recentes das páginas vigiadas do utilizador atual.",
-       "apihelp-query+watchlist-param-allrev": "Incluir múltiplas revisões da mesma página dentro do intervalo de tempo indicado.",
+       "apihelp-query+watchlist-param-allrev": "Incluir revisões múltiplas da mesma página dentro do intervalo de tempo indicado.",
        "apihelp-query+watchlist-param-start": "A data e hora da mudança recente a partir da qual será começada a enumeração.",
        "apihelp-query+watchlist-param-end": "A data e hora da mudança recente na qual será terminada a enumeração.",
        "apihelp-query+watchlist-param-namespace": "Filtrar as mudanças para produzir só as dos espaços nominais indicados.",
        "api-help-title": "Ajuda da API do MediaWiki",
        "api-help-lead": "Esta é uma página de documentação da API do MediaWiki gerada automaticamente.\n\nDocumentação e exemplos: https://www.mediawiki.org/wiki/API",
        "api-help-main-header": "Módulo principal",
-       "api-help-flag-deprecated": "Este módulo é obsoleto.",
+       "api-help-undocumented-module": "Não existe documentação para o módulo $1.",
+       "api-help-flag-deprecated": "Este módulo foi descontinuado.",
        "api-help-flag-internal": "<strong>Este módulo é interno ou instável.</strong> O seu funcionamento pode ser alterado sem aviso prévio.",
        "api-help-flag-readrights": "Este módulo requer direitos de leitura.",
        "api-help-flag-writerights": "Este módulo requer direitos de escrita.",
        "apiwarn-deprecation-login-nobotpw": "O início de sessões com uma conta principal através de <kbd>action=login</kbd> foi descontinuado e poderá deixar de funcionar sem aviso prévio. Para iniciar uma sessão de forma segura, consulte <kbd>action=clientlogin</kbd>.",
        "apiwarn-deprecation-login-token": "A obtenção de uma chave através de <kbd>action=login</kbd> foi descontinuada. Em substituição, use <kbd>action=query&meta=tokens&type=login</kbd>.",
        "apiwarn-deprecation-parameter": "O parâmetro <var>$1</var> foi descontinuado.",
-       "apiwarn-deprecation-parse-headitems": "<kbd>prop=headitems</kbd> é obsoleto desde o MediaWiki 1.28. Use <kbd>prop=headhtml</kbd> ao criar novos documentos de HTML, ou <kbd>prop=modules|jsconfigvars</kbd> ao atualizar um documento no lado do cliente.",
+       "apiwarn-deprecation-parse-headitems": "<kbd>prop=headitems</kbd> está obsoleto desde o MediaWiki 1.28. Use <kbd>prop=headhtml</kbd> ao criar novos documentos de HTML, ou <kbd>prop=modules|jsconfigvars</kbd> ao atualizar um documento no lado do cliente.",
        "apiwarn-deprecation-purge-get": "O uso de <kbd>action=purge</kbd> através de um GET foi descontinuado. Em substituição, use um POST.",
        "apiwarn-deprecation-withreplacement": "<kbd>$1</kbd> foi descontinuado. Em substituição, use <kbd>$2</kbd>, por favor.",
        "apiwarn-difftohidden": "Não foi possível criar uma lista das diferenças em relação à r$1: o conteúdo está ocultado.",
index bde0707..27d10d5 100644 (file)
        "apihelp-query+search-paramvalue-prop-sectiontitle": "{{doc-apihelp-paramvalue|query+search|prop|sectiontitle}}",
        "apihelp-query+search-paramvalue-prop-categorysnippet": "{{doc-apihelp-paramvalue|query+search|prop|categorysnippet}}",
        "apihelp-query+search-paramvalue-prop-isfilematch": "{{doc-apihelp-paramvalue|query+search|prop|isfilematch}}",
-       "apihelp-query+search-paramvalue-prop-score": "{{doc-apihelp-paramvalue|query+search|prop|score}}\n{{doc-important|Please do not alter the <code><nowiki>class=\"apihelp-deprecated\"</nowiki></code> attribute}}",
-       "apihelp-query+search-paramvalue-prop-hasrelated": "{{doc-apihelp-paramvalue|query+search|prop|hasrelated}}\n{{doc-important|Please do not alter the <code><nowiki>class=\"apihelp-deprecated\"</nowiki></code> attribute}}",
+       "apihelp-query+search-paramvalue-prop-score": "{{doc-apihelp-paramvalue|query+search|prop|score}}\n{{Identical|Ignored}}",
+       "apihelp-query+search-paramvalue-prop-hasrelated": "{{doc-apihelp-paramvalue|query+search|prop|hasrelated}}\n{{Identical|Ignored}}",
        "apihelp-query+search-param-limit": "{{doc-apihelp-param|query+search|limit}}",
        "apihelp-query+search-param-interwiki": "{{doc-apihelp-param|query+search|interwiki}}",
        "apihelp-query+search-param-backend": "{{doc-apihelp-param|query+search|backend}}",
index 1bccb7a..c6617a9 100644 (file)
@@ -74,6 +74,8 @@
        "apihelp-clientlogin-summary": "Вход в вики с помощью интерактивного потока.",
        "apihelp-clientlogin-example-login": "Начать вход в вики в качестве участника <kbd>Example</kbd> с паролем <kbd>ExamplePassword</kbd>.",
        "apihelp-clientlogin-example-login2": "Продолжить вход после ответа <samp>UI</samp> для двухфакторной авторизации, предоставив <kbd>987654</kbd> в качестве токена <var>OATHToken</var>.",
+       "apihelp-compare-summary": "Получение разницы между двумя страницами.",
+       "apihelp-compare-extended-description": "Номер версии, заголовок страницы, её идентификатор, текст, или относительная сноска должна быть задана как для «from», так и для «to».",
        "apihelp-compare-param-fromtitle": "Заголовок первой сравниваемой страницы.",
        "apihelp-compare-param-fromid": "Идентификатор первой сравниваемой страницы.",
        "apihelp-compare-param-fromrev": "Первая сравниваемая версия.",
        "apihelp-imagerotate-param-tags": "Изменить метки записи в журнале загрузок.",
        "apihelp-imagerotate-example-simple": "Повернуть <kbd>File:Example.png</kbd> на <kbd>90</kbd> градусов.",
        "apihelp-imagerotate-example-generator": "Повернуть все изображения в <kbd>Category:Flip</kbd> на <kbd>180</kbd> градусов.",
+       "apihelp-import-summary": "Импорт страницы из другой вики, или из XML-файла.",
+       "apihelp-import-extended-description": "Обратите внимание, что HTTP POST-запрос должен быть осуществлён как загрузка файла (то есть, с использованием многотомных данных) при отправки файла через параметр <var>xml</var>.",
        "apihelp-import-param-summary": "Описание записи журнала импорта.",
        "apihelp-import-param-xml": "Загруженный XML-файл.",
        "apihelp-import-param-interwikisource": "Для импорта из других вики: импортируемая вики.",
        "apihelp-import-example-import": "Импортировать [[meta:Help:ParserFunctions]] с полной историей правок в пространство имён 100.",
        "apihelp-linkaccount-summary": "Связать аккаунт третьей стороны с текущим участником.",
        "apihelp-linkaccount-example-link": "Начать связывание аккаунта с <kbd>Example</kdb>.",
+       "apihelp-login-summary": "Вход и получение аутентификационных cookie.",
+       "apihelp-login-extended-description": "Это действие должно быть использовано только в комбинации со [[Special:BotPasswords]]; использование этого модуля для входа в основной аккаунт не поддерживается и может сбиться без предупреждения. Для безопасного входа в основной аккаунт, используйте <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
+       "apihelp-login-extended-description-nobotpasswords": "Это действие не поддерживается и может сбиться без предупреждения. Для безопасного входа, используйте <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
        "apihelp-login-param-name": "Имя участника.",
        "apihelp-login-param-password": "Пароль.",
        "apihelp-login-param-domain": "Домен (необязательно).",
        "apihelp-opensearch-param-format": "Формат вывода.",
        "apihelp-opensearch-param-warningsaserror": "Если предупреждения возникают при <kbd>format=json</kbd>, вернуть ошибку API вместо того, чтобы игнорировать их.",
        "apihelp-opensearch-example-te": "Найти страницы, начинающиеся с <kbd>Te</kbd>.",
+       "apihelp-options-summary": "Смена настроек текущего участника.",
+       "apihelp-options-extended-description": "Менять можно только настройки, зарегистрированные в ядре или в одном из установленных расширений, а также настройки, чьи ключи начинаются с <code>userjs-</code> (предназначенные для использования в пользовательских скриптах).",
        "apihelp-options-param-reset": "Сбрасывает настройки на установленные по умолчанию.",
        "apihelp-options-param-resetkinds": "Список типов сбрасываемых настроек, если задана опция <var>$1reset</var>.",
        "apihelp-options-param-change": "Список изменений в формате название=значение (например, skin=vector). Если значения не даётся (нет даже знака равенства), например, названиенастройки|другаянастройка|, настройка будет возвращена в своё значение по умолчанию. Если какое-либо значение должно содержать знак пайпа (<kbd>|</kbd>), используйте [[Special:ApiHelp/main#main/datatypes|альтернативный разделитель значений]] для корректного проведения операции.",
        "apihelp-paraminfo-param-formatmodules": "Список названий форматных модулей (значения параметра <var>format</var>). Вместо этого используйте <var>$1modules</var>.",
        "apihelp-paraminfo-example-1": "Показать информацию для <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd>, <kbd>[[Special:ApiHelp/jsonfm|format=jsonfm]]</kbd>, <kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd>, и <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd>.",
        "apihelp-paraminfo-example-2": "Показать информацию для всех подмодулей <kbd>[[Special:ApiHelp/query|action=query]]</kbd>.",
+       "apihelp-parse-summary": "Парсит содержимое и возвращает результат парсинга.",
+       "apihelp-parse-extended-description": "См. различные prop-модули <kbd>[[Special:ApiHelp/query|action=query]]</kbd> для получения информации о текущей версии страницы.\n\nЕсть несколько способов указать текст для парсинга:\n# Указать страницы или версию, используя <var>$1page</var>, <var>$1pageid</var> или <var>$1oldid</var>.\n# Явно указать содержимое, используя <var>$1text</var>, <var>$1title</var> и <var>$1contentmodel</var>.\n# Указать описание правки. Параметру <var>$1prop</var> должно быть присвоено пустое значение.",
        "apihelp-parse-param-title": "Название страницы, которой принадлежит текст. Если опущено, должен быть указан параметр <var>$1contentmodel</var>, и в качестве заголовка будет использовано [[API]].",
        "apihelp-parse-param-text": "Распарсиваемый текст. Используйте <var>$1title</var> или <var>$1contentmodel</var> для управления моделью содержимого.",
        "apihelp-parse-param-summary": "Анализируемое описание правки.",
        "apihelp-parse-paramvalue-prop-sections": "Возвращает разделы из проанализированного вики-текста.",
        "apihelp-parse-paramvalue-prop-revid": "Добавляет идентификатор версии распарсенной страницы.",
        "apihelp-parse-paramvalue-prop-displaytitle": "Добавляет название проанализированного вики-текста.",
-       "apihelp-parse-paramvalue-prop-headitems": "<span class=\"apihelp-deprecated\">Не поддерживается.</span> Возвращает элементы, которые следует поместить в <code>&lt;head&gt;</code> страницы.",
+       "apihelp-parse-paramvalue-prop-headitems": "Возвращает элементы, которые следует поместить в <code>&lt;head&gt;</code> страницы.",
        "apihelp-parse-paramvalue-prop-headhtml": "Возвращает распарсенный <code>&lt;head&gt;</code> страницы.",
        "apihelp-parse-paramvalue-prop-modules": "Возвращает использованные на странице модули ResourceLoader. Для загрузки, используйте <code>mw.loader.using()</code>. Одновременно с <kbd>modules</kbd> должно быть запрошено либо <kbd>jsconfigvars</kbd>, либо <kbd>encodedjsconfigvars</kbd>.",
        "apihelp-parse-paramvalue-prop-jsconfigvars": "Возвращает переменные JavaScript с данными настроек для этой страницы. Для их применения используйте <code>mw.condig.set()</code>.",
        "apihelp-purge-param-forcerecursivelinkupdate": "Обновить таблицу ссылок для данной страницы, а также всех страниц, использующих данную как шаблон.",
        "apihelp-purge-example-simple": "Очистить кэш для страниц <kbd>Main Page</kbd> и <kbd>API</kbd>.",
        "apihelp-purge-example-generator": "Очистить кэш первых 10 страниц в основном пространстве имен.",
+       "apihelp-query-summary": "Запросить данные с и о MediaWiki.",
+       "apihelp-query-extended-description": "Все модификации данных сначала должны запросить соответствующий токен для предотвращения злоупотреблений с вредоносных сайтов.",
        "apihelp-query-param-prop": "Какие использовать свойства для запрашиваемых страниц.",
        "apihelp-query-param-list": "Какие списки использовать.",
        "apihelp-query-param-meta": "Какие метаданные использовать.",
        "apihelp-query+allimages-param-start": "Временная метка, с которой начать перечисление. Можно использовать только одновременно с $1sort=timestamp.",
        "apihelp-query+allimages-param-end": "Временная метка, на которой закончить перечисление. Можно использовать только одновременно с $1sort=timestamp.",
        "apihelp-query+allimages-param-prefix": "Найти все названия файлов, начинающиеся с этого значения. Можно использовать только одновременно с $1sort=name.",
-       "apihelp-query+allimages-param-minsize": "Ограничить изображения этим числом байт снизу.",
-       "apihelp-query+allimages-param-maxsize": "Ограничить изображения этим числом байт сверху.",
+       "apihelp-query+allimages-param-minsize": "Ограничить изображения этим числом байтов снизу.",
+       "apihelp-query+allimages-param-maxsize": "Ограничить изображения этим числом байтов сверху.",
        "apihelp-query+allimages-param-sha1": "SHA1-хэш этого изображения. Переопределяет $1sha1base36.",
        "apihelp-query+allimages-param-sha1base36": "SHA1-хэш этого изображения в base 36 (используется в MediaWiki).",
        "apihelp-query+allimages-param-user": "Вернуть только файлы, загруженные этим участником. Может быть использовано только одновременно с $1sort=timestamp и не может одновременно с $1filterbots.",
        "apihelp-query+allpages-param-prefix": "Найти все названия страниц, начинающиеся с этого значения.",
        "apihelp-query+allpages-param-namespace": "Пространство имён для перечисления.",
        "apihelp-query+allpages-param-filterredir": "Какие страницы перечислять.",
-       "apihelp-query+allpages-param-minsize": "Ограничить страницы этим числом байт снизу.",
-       "apihelp-query+allpages-param-maxsize": "Ограничить страницы этим числом байт сверху.",
+       "apihelp-query+allpages-param-minsize": "Ограничить страницы этим числом байтов снизу.",
+       "apihelp-query+allpages-param-maxsize": "Ограничить страницы этим числом байтов сверху.",
        "apihelp-query+allpages-param-prtype": "Перечислить только защищённые страницы.",
        "apihelp-query+allpages-param-prlevel": "Отфильтровывать страницы, основываясь на уровне защиты (должно быть использовано одновременно с параметром $1prtype=).",
        "apihelp-query+allpages-param-prfiltercascade": "Отфильтровывать страницы, основываясь на каскадности (игнорируется, если $1prtype не задан).",
        "apihelp-query+contributors-param-excluderights": "Исключать участников с данными правами. Участники с правами, предоставляемыми неявными или автоматически присваиваемыми группами — такими, как *, user или autoconfirmed, — не считаются.",
        "apihelp-query+contributors-param-limit": "Сколько редакторов вернуть.",
        "apihelp-query+contributors-example-simple": "Показать редакторов страницы <kbd>Main Page</kbd>.",
+       "apihelp-query+deletedrevisions-summary": "Получение информации об удалённых правках.",
+       "apihelp-query+deletedrevisions-extended-description": "Может быть использовано несколькими способами:\n# Получение удалённых правок для набора страниц, заданного с помощью названий или идентификаторов. Сортируется по названиям и временным меткам.\n# Получение данных о наборе удалённых правок, заданных с помощью их revid. Сортируется по идентификаторам версий.",
        "apihelp-query+deletedrevisions-param-start": "Временная метка, с которой начать перечисление. Игнорируется при обработке списка идентификаторов версий.",
        "apihelp-query+deletedrevisions-param-end": "Временная метка, на которой закончить перечисление. Игнорируется при обработке списка идентификаторов версий.",
        "apihelp-query+deletedrevisions-param-tag": "Только правки с заданной меткой.",
        "apihelp-query+deletedrevisions-param-excludeuser": "Не перечислять правки данного участника.",
        "apihelp-query+deletedrevisions-example-titles": "Список удалённых правок страниц <kbd>Main Page</kbd> и <kbd>Talk:Main Page</kbd> с содержимым.",
        "apihelp-query+deletedrevisions-example-revids": "Список информации для удалённой правки <kbd>123456</kbd>.",
+       "apihelp-query+deletedrevs-summary": "Перечисление удалённых правок.",
+       "apihelp-query+deletedrevs-extended-description": "Работает в трёх режимах:\n# Перечисление удалённых правок для заданных названий страниц, сортируется по временным меткам.\n# Перечисление удалённого вклада заданного участника, сортируется по временным меткам (названия страниц не указываются).\n# Перечисление удалённых правок в заданном пространстве имён, сортируется по названиям страниц и временным меткам (названия страниц и $1user не указываются).\n\nОпределённые параметры применяются только к некоторым режимам и игнорируются в других.",
        "apihelp-query+deletedrevs-paraminfo-modes": "{{PLURAL:$1|Мод|Моды}}: $2",
        "apihelp-query+deletedrevs-param-start": "Временная метка, с которой начать перечисление.",
        "apihelp-query+deletedrevs-param-end": "Временная метка, на которой закончить перечисление.",
        "apihelp-query+embeddedin-param-limit": "Сколько страниц вернуть.",
        "apihelp-query+embeddedin-example-simple": "Показать включения <kbd>Template:Stub</kbd>.",
        "apihelp-query+embeddedin-example-generator": "Получить информацию о страницах, включающих <kbd>Template:Stub</kbd>.",
+       "apihelp-query+extlinks-summary": "Получение всех внешних ссылок (не интервик) для данной страницы.",
        "apihelp-query+extlinks-param-limit": "Сколько ссылок вернуть.",
        "apihelp-query+extlinks-param-protocol": "Протокол ссылки. Если оставлено пустым, а <var>$1query</var> задано, будут найдены ссылки с протоколом <kbd>http</kbd>. Оставьте пустым и <var>$1query</var>, и данный параметр, чтобы получить список всех внешних ссылок.",
        "apihelp-query+extlinks-param-query": "Поисковый запрос без протокола. Полезно для проверки, содержит ли определённая страница определённую внешнюю ссылку.",
        "apihelp-query+info-param-token": "Вместо этого используйте [[Special:ApiHelp/query+tokens|action=query&meta=tokens]].",
        "apihelp-query+info-example-simple": "Получить информацию о странице <kbd>Main Page</kbd>.",
        "apihelp-query+info-example-protection": "Получить основную информацию и информацию о защите страницы <kbd>Main Page</kbd>.",
+       "apihelp-query+iwbacklinks-summary": "Поиск всех страниц, ссылающихся на заданную интервики ссылку.",
+       "apihelp-query+iwbacklinks-extended-description": "Может быть использована для поиска всех ссылок с префиксом, или всех ссылок на название (с заданным префиксом). Неиспользование никакого параметра фактически означает «все интервики-ссылки».",
        "apihelp-query+iwbacklinks-param-prefix": "Префикс интервики.",
        "apihelp-query+iwbacklinks-param-title": "Искомая интервики-ссылка. Должна быть использована вместе с <var>$1blprefix</var>.",
        "apihelp-query+iwbacklinks-param-limit": "Сколько страниц вернуть.",
        "apihelp-query+iwlinks-param-title": "Искомая интервики-ссылка. Должна быть использована вместе с <var>$1prefix</var>.",
        "apihelp-query+iwlinks-param-dir": "Порядок перечисления.",
        "apihelp-query+iwlinks-example-simple": "Получить интервики-ссылки со страницы <kbd>Main Page</kbd>.",
+       "apihelp-query+langbacklinks-summary": "Поиск всех страниц, ссылающихся на заданную языковую ссылку.",
+       "apihelp-query+langbacklinks-extended-description": "Может быть использовано для поиска всех ссылок с языковым кодом, или всех ссылок на страницу с заданным языком. Неиспользование этого параметра фактически вернёт все языковые ссылки.\n\nОбратите внимания, что ссылки, добавляемые расширениями, могут не рассматриваться.",
        "apihelp-query+langbacklinks-param-lang": "Язык ссылки.",
        "apihelp-query+langbacklinks-param-title": "Искомая языковая ссылка. Должно быть использовано с $1lang.",
        "apihelp-query+langbacklinks-param-limit": "Сколько страниц вернуть.",
        "apihelp-query+linkshere-param-show": "Показать только элементы, соответствующие этим критериям:\n;redirect: Показать только перенаправления.\n;!redirect: Показать только не перенаправления.",
        "apihelp-query+linkshere-example-simple": "Получить список страниц, ссылающихся на [[Main Page]].",
        "apihelp-query+linkshere-example-generator": "Получить информацию о страницах, ссылающихся на [[Main Page]].",
+       "apihelp-query+logevents-summary": "Получение записей журналов.",
        "apihelp-query+logevents-param-prop": "Какие свойства получить:",
        "apihelp-query+logevents-paramvalue-prop-ids": "Добавляет идентификатор записи журнала.",
        "apihelp-query+logevents-paramvalue-prop-title": "Добавляет заголовок страницы, связанной с записью журнала.",
        "apihelp-query+pageswithprop-param-dir": "Порядок сортировки.",
        "apihelp-query+pageswithprop-example-simple": "Список первых 10 страниц, использующих <code>&#123;&#123;DISPLAYTITLE:&#125;&#125;</code>.",
        "apihelp-query+pageswithprop-example-generator": "Получение дополнительной информации о первых десяти страницах, использующих <code>_&#95;NOTOC_&#95;</code>.",
+       "apihelp-query+prefixsearch-summary": "Осуществление поиска по префиксу названий страниц.",
+       "apihelp-query+prefixsearch-extended-description": "Не смотря на похожесть названий, этот модуль не является эквивалентом [[Special:PrefixIndex]]; если вы ищете его, см. <kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd> с параметром <kbd>apprefix</kbd>. Задача этого модуля близка к <kbd>[[Special:ApiHelp/opensearch|action=opensearch]]</kbd>: получение пользовательского ввода и представление наиболее подходящих заголовков. В зависимости от поискового движка, используемого на сервере, сюда может включаться исправление опечаток, избегание перенаправлений и другие эвристики.",
        "apihelp-query+prefixsearch-param-search": "Поисковый запрос.",
        "apihelp-query+prefixsearch-param-namespace": "Пространства имён для поиска.",
        "apihelp-query+prefixsearch-param-limit": "Максимальное число возвращаемых результатов.",
        "apihelp-query+querypage-param-page": "Название служебной страницы. Обратите внимание: чувствительно к регистру.",
        "apihelp-query+querypage-param-limit": "Количество возвращаемых результатов.",
        "apihelp-query+querypage-example-ancientpages": "Вернуть результаты [[Special:Ancientpages]].",
+       "apihelp-query+random-summary": "Получение набора случайных страниц.",
+       "apihelp-query+random-extended-description": "Страницы перечисляются в строгой последовательности, случайна только входная точка. Это означает, что если, например, <samp>Main Page</samp> — первая страница в списке, то <samp>List of fictional monkeys</samp> <em>всегда</em> будет второй, <samp>List of people on stamps of Vanuatu</samp> — третьей, и так далее.",
        "apihelp-query+random-param-namespace": "Вернуть только страницы этих пространств имён.",
        "apihelp-query+random-param-limit": "Ограничение на количество возвращаемых страниц.",
        "apihelp-query+random-param-redirect": "Вместо этого, используйте <kbd>$1filterredir=redirects</kbd>.",
        "apihelp-query+redirects-param-show": "Показывать только элементы, удовлетворяющие данным критериям:\n;fragment: Показывать только перенаправления с фрагментами.\n;!fragment: Показывать только перенаправления без фрагментов.",
        "apihelp-query+redirects-example-simple": "Получить список перенаправлений на [[Main Page]].",
        "apihelp-query+redirects-example-generator": "Получить информацию о всех перенаправлениях на [[Main Page]].",
+       "apihelp-query+revisions-summary": "Получение информации о версии страницы.",
+       "apihelp-query+revisions-extended-description": "Может использоваться в трёх режимах:\n# Получение данных о наборе страниц (последних версий) с помощью передачи названий или идентификаторов страниц.\n# Получение версий одной данной страницы, используя названия или идентификаторы с началом, концом или лимитом.\n# Получение данных о наборе версий, передаваемых с помощью их идентификаторов.",
        "apihelp-query+revisions-paraminfo-singlepageonly": "Может быть использовано только с одной страницей (режим №2).",
        "apihelp-query+revisions-param-startid": "Начать перечисление с этой временной метки версии. Версия обязана существовать, но не обязана принадлежать этой странице.",
        "apihelp-query+revisions-param-endid": "Закончить перечисление на этой временной метке версии. Версия обязана существовать, но не обязана принадлежать этой странице.",
        "apihelp-query+revisions+base-paramvalue-prop-parsedcomment": "Распарсенное описание правки.",
        "apihelp-query+revisions+base-paramvalue-prop-content": "Текст версии.",
        "apihelp-query+revisions+base-paramvalue-prop-tags": "Метки версии.",
-       "apihelp-query+revisions+base-paramvalue-prop-parsetree": "Дерево парсинга XML содержимого версии (требуется модель содержимого <code>$1</code>).",
+       "apihelp-query+revisions+base-paramvalue-prop-parsetree": "<span class=\"apihelp-deprecated\">Не поддерживается.</span> Вместо этого используйте <kbd>[[Special:ApiHelp/expandtemplates|action=expandtemplates]]</kbd> или <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd>. Дерево парсинга XML содержимого версии (требуется модель содержимого <code>$1</code>).",
        "apihelp-query+revisions+base-param-limit": "Сколько версий вернуть.",
-       "apihelp-query+revisions+base-param-expandtemplates": "Раскрыть шаблоны в содержимом версии (требуется $1prop=content).",
-       "apihelp-query+revisions+base-param-generatexml": "СгенеÑ\80иÑ\80оваÑ\82Ñ\8c Ð´ÐµÑ\80ево Ð¿Ð°Ñ\80Ñ\81инга XML Ñ\81одеÑ\80жимого Ð²ÐµÑ\80Ñ\81ии (Ñ\82Ñ\80ебÑ\83еÑ\82Ñ\81Ñ\8f $1prop=content; Ð·Ð°Ð¼ÐµÐ½ÐµÐ½Ð¾ Ð½Ð° <kbd>$1prop=parsetree</kbd>).",
-       "apihelp-query+revisions+base-param-parse": "Распарсить содержимое версии (требуется $1prop=content). Из соображений производительности, при использовании этой опции, в качестве $1limit принудительно устанавливается 1.",
+       "apihelp-query+revisions+base-param-expandtemplates": "Ð\92меÑ\81Ñ\82о Ñ\8dÑ\82ого Ð¸Ñ\81полÑ\8cзÑ\83йÑ\82е <kbd>[[Special:ApiHelp/expandtemplates|action=expandtemplates]]</kbd>. Ð Ð°Ñ\81кÑ\80Ñ\8bÑ\82Ñ\8c Ñ\88аблонÑ\8b Ð² Ñ\81одеÑ\80жимом Ð²ÐµÑ\80Ñ\81ии (Ñ\82Ñ\80ебÑ\83еÑ\82Ñ\81Ñ\8f $1prop=content).",
+       "apihelp-query+revisions+base-param-generatexml": "Ð\92меÑ\81Ñ\82о Ñ\8dÑ\82ого Ð¸Ñ\81полÑ\8cзÑ\83йÑ\82е <kbd>[[Special:ApiHelp/expandtemplates|action=expandtemplates]]</kbd> Ð¸Ð»Ð¸ <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd>. Ð¡Ð³ÐµÐ½ÐµÑ\80иÑ\80оваÑ\82Ñ\8c Ð´ÐµÑ\80ево Ð¿Ð°Ñ\80Ñ\81инга XML Ñ\81одеÑ\80жимого Ð²ÐµÑ\80Ñ\81ии (Ñ\82Ñ\80ебÑ\83еÑ\82Ñ\81Ñ\8f $1prop=content).",
+       "apihelp-query+revisions+base-param-parse": "Ð\92меÑ\81Ñ\82о Ñ\8dÑ\82ого Ð¸Ñ\81полÑ\8cзÑ\83йÑ\82е <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd>. Ð Ð°Ñ\81паÑ\80Ñ\81иÑ\82Ñ\8c Ñ\81одеÑ\80жимое Ð²ÐµÑ\80Ñ\81ии (Ñ\82Ñ\80ебÑ\83еÑ\82Ñ\81Ñ\8f $1prop=content). Ð\98з Ñ\81ообÑ\80ажений Ð¿Ñ\80оизводиÑ\82елÑ\8cноÑ\81Ñ\82и, Ð¿Ñ\80и Ð¸Ñ\81полÑ\8cзовании Ñ\8dÑ\82ой Ð¾Ð¿Ñ\86ии, Ð² ÐºÐ°Ñ\87еÑ\81Ñ\82ве $1limit Ð¿Ñ\80инÑ\83диÑ\82елÑ\8cно Ñ\83Ñ\81Ñ\82анавливаеÑ\82Ñ\81Ñ\8f 1.",
        "apihelp-query+revisions+base-param-section": "Вернуть содержимое только секции с заданным номером.",
-       "apihelp-query+revisions+base-param-diffto": "Идентификатор версии, с которым сравнивать каждую версию. Используйте <kbd>prev</kbd>, <kbd>next</kbd> и <kbd>cur</kbd> для предыдущей, следующей и текущей версии соответственно.",
-       "apihelp-query+revisions+base-param-difftotext": "Текст, с которым сравнивать каждую версию. Сравнивает ограниченное число версий. Переопределяет <var>$1diffto</var>. Если задано <var>$1section</var>, сравнение будет произведено только с этой секцией.",
-       "apihelp-query+revisions+base-param-difftotextpst": "Выполнить преобразование перед записью правки до сравнения. Доступно только при использовании с <var>$1difftotext</var>.",
+       "apihelp-query+revisions+base-param-diffto": "Ð\92меÑ\81Ñ\82о Ñ\8dÑ\82ого Ð¸Ñ\81полÑ\8cзÑ\83йÑ\82е <kbd>[[Special:ApiHelp/compare|action=compare]]</kbd>. Ð\98денÑ\82иÑ\84икаÑ\82оÑ\80 Ð²ÐµÑ\80Ñ\81ии, Ñ\81 ÐºÐ¾Ñ\82оÑ\80Ñ\8bм Ñ\81Ñ\80авниваÑ\82Ñ\8c ÐºÐ°Ð¶Ð´Ñ\83Ñ\8e Ð²ÐµÑ\80Ñ\81иÑ\8e. Ð\98Ñ\81полÑ\8cзÑ\83йÑ\82е <kbd>prev</kbd>, <kbd>next</kbd> Ð¸ <kbd>cur</kbd> Ð´Ð»Ñ\8f Ð¿Ñ\80едÑ\8bдÑ\83Ñ\89ей, Ñ\81ледÑ\83Ñ\8eÑ\89ей Ð¸ Ñ\82екÑ\83Ñ\89ей Ð²ÐµÑ\80Ñ\81ии Ñ\81ооÑ\82веÑ\82Ñ\81Ñ\82венно.",
+       "apihelp-query+revisions+base-param-difftotext": "Ð\92меÑ\81Ñ\82о Ñ\8dÑ\82ого Ð¸Ñ\81полÑ\8cзÑ\83йÑ\82е <kbd>[[Special:ApiHelp/compare|action=compare]]</kbd>. Ð¢ÐµÐºÑ\81Ñ\82, Ñ\81 ÐºÐ¾Ñ\82оÑ\80Ñ\8bм Ñ\81Ñ\80авниваÑ\82Ñ\8c ÐºÐ°Ð¶Ð´Ñ\83Ñ\8e Ð²ÐµÑ\80Ñ\81иÑ\8e. Ð¡Ñ\80авниваеÑ\82 Ð¾Ð³Ñ\80аниÑ\87енное Ñ\87иÑ\81ло Ð²ÐµÑ\80Ñ\81ий. Ð\9fеÑ\80еопÑ\80еделÑ\8fеÑ\82 <var>$1diffto</var>. Ð\95Ñ\81ли Ð·Ð°Ð´Ð°Ð½Ð¾ <var>$1section</var>, Ñ\81Ñ\80авнение Ð±Ñ\83деÑ\82 Ð¿Ñ\80оизведено Ñ\82олÑ\8cко Ñ\81 Ñ\8dÑ\82ой Ñ\81екÑ\86ией.",
+       "apihelp-query+revisions+base-param-difftotextpst": "Вместо этого используйте <kbd>[[Special:ApiHelp/compare|action=compare]]</kbd>. Выполнить преобразование перед записью правки до сравнения. Доступно только при использовании с <var>$1difftotext</var>.",
        "apihelp-query+revisions+base-param-contentformat": "Формат серилиализации, использованный в <var>$1difftotext</var> и ожидаемый в результате.",
        "apihelp-query+search-summary": "Проведение полнотекстового поиска.",
        "apihelp-query+search-param-search": "Искать страницы, названия или тексты которых содержат это значение. Вы можете использовать в поисковом запросе служебные функции в зависимости от того, какой поисковый движок используется на сервере.",
        "apihelp-query+search-paramvalue-prop-sectiontitle": "Добавляет заголовок найденного раздела.",
        "apihelp-query+search-paramvalue-prop-categorysnippet": "Добавляет распарсенный фрагмент найденной категории.",
        "apihelp-query+search-paramvalue-prop-isfilematch": "Добавляет логическое значение, обозначающее, удовлетворяет ли поисковому запросу содержимое файла.",
-       "apihelp-query+search-paramvalue-prop-score": "<span class=\"apihelp-deprecated\">Не поддерживается и игнорируется.</span>",
-       "apihelp-query+search-paramvalue-prop-hasrelated": "<span class=\"apihelp-deprecated\">Не поддерживается и игнорируется.</span>",
+       "apihelp-query+search-paramvalue-prop-score": "Игнорируется.",
+       "apihelp-query+search-paramvalue-prop-hasrelated": "Игнорируется.",
        "apihelp-query+search-param-limit": "Сколько страниц вернуть.",
        "apihelp-query+search-param-interwiki": "Включить результаты из других вики, если доступны.",
        "apihelp-query+search-param-backend": "Какой поисковый движок использовать, если не стандартный.",
        "apihelp-query+userinfo-paramvalue-prop-rights": "Перечисляет все права текущего участника.",
        "apihelp-query+userinfo-paramvalue-prop-changeablegroups": "Перечисляет группы, в которые или из которых участник может добавить или удалить других участников.",
        "apihelp-query+userinfo-paramvalue-prop-options": "Перечисляет все настройки, установленные текущим участником.",
-       "apihelp-query+userinfo-paramvalue-prop-preferencestoken": "<span class=\"apihelp-deprecated\">Не поддерживается.</span> Возвращает токен для смены настроек текущего участника.",
+       "apihelp-query+userinfo-paramvalue-prop-preferencestoken": "Возвращает токен для смены настроек текущего участника.",
        "apihelp-query+userinfo-paramvalue-prop-editcount": "Добавляет счётчик правок текущего участника.",
        "apihelp-query+userinfo-paramvalue-prop-ratelimits": "Добавляет все скоростные лимиты, применимые к текущему участнику.",
        "apihelp-query+userinfo-paramvalue-prop-realname": "Добавляет настоящее имя участника.",
        "apihelp-removeauthenticationdata-summary": "Удаление аутентификационных данных для текущего участника.",
        "apihelp-removeauthenticationdata-example-simple": "Попытка удалить данные текущего участника для <kbd>FooAuthenticationRequest</kbd>.",
        "apihelp-resetpassword-summary": "Отправить участнику письмо для сброса пароля.",
+       "apihelp-resetpassword-extended-description-noroutes": "Маршруты смены пароля не доступны.\n\nВключите маршруты в <var>[[mw:Special:MyLanguage/Manual:$wgPasswordResetRoutes|$wgPasswordResetRoutes]]</var> для использования этого модуля.",
        "apihelp-resetpassword-param-user": "Сбрасываемый участник.",
        "apihelp-resetpassword-param-email": "Электронный адрес сбрасываемого участника.",
        "apihelp-resetpassword-example-user": "Послать письмо для сброса пароля участнику <kbd>Example</kbd>.",
        "apihelp-revisiondelete-param-tags": "Изменить метки записи в журнале удалений.",
        "apihelp-revisiondelete-example-revision": "Скрыть содержимое версии <kbd>12345</kbd> страницы <kbd>Main Page</kbd>.",
        "apihelp-revisiondelete-example-log": "Скрыть все данные записи <kbd>67890</kbd> в журнале с причиной <kbd>BLP violation</kbd>.",
+       "apihelp-rollback-summary": "Отмена последней правки на странице.",
+       "apihelp-rollback-extended-description": "Если последний редактировавший страницу участник сделал несколько правок подряд, все они будут откачены.",
        "apihelp-rollback-param-title": "Заголовок откатываемой страницы. Не может быть использовано одновременно с <var>$1pageid</var>.",
        "apihelp-rollback-param-pageid": "Идентификатор откатываемой страницы. Не может быть использовано одновременно с <var>$1title</var>.",
        "apihelp-rollback-param-tags": "Метки, применяемые к откату.",
        "apihelp-rollback-example-summary": "Откатить последние правки страницы <kbd>Main Page</kbd> анонимного участника <kbd>192.0.2.5</kbd> с описанием <kbd>Reverting vandalism</kbd>, и отметить эти правки и их откат как правки ботов.",
        "apihelp-rsd-summary": "Экспорт схемы RSD (Really Simple Discovery).",
        "apihelp-rsd-example-simple": "Экспортировать схему RSD.",
+       "apihelp-setnotificationtimestamp-summary": "Обновление временной метки уведомления для отслеживаемых страниц.",
+       "apihelp-setnotificationtimestamp-extended-description": "Это затрагивает подсвечивание изменённых страниц в списке наблюдения и истории, и отправляет письмо, если включена настройка «{{int:tog-enotifwatchlistpages}}».",
        "apihelp-setnotificationtimestamp-param-entirewatchlist": "Работать над всеми отслеживаемыми страницами.",
        "apihelp-setnotificationtimestamp-param-timestamp": "Новая временная метка уведомления.",
        "apihelp-setnotificationtimestamp-param-torevid": "Версия, к временной метке которой приравнять временную метку уведомления (только для одной страницы).",
        "apihelp-setpagelanguage-param-tags": "Изменить теги записей в журнале, возникающих в результате этого действия.",
        "apihelp-setpagelanguage-example-language": "Изменить язык <kbd>Main Page</kbd> на баскский.",
        "apihelp-setpagelanguage-example-default": "Изменить язык страницы с идентификатором 123 на язык по умолчанию.",
+       "apihelp-stashedit-summary": "Подготовка правки в общем кэше.",
+       "apihelp-stashedit-extended-description": "Предназначено для использования через AJAX из формы редактирования для увеличения производительности сохранения страницы.",
        "apihelp-stashedit-param-title": "Заголовок редактируемой страницы.",
        "apihelp-stashedit-param-section": "Номер раздела. <kbd>0</kbd> для верхнего раздела, <kbd>new</kbd> для нового раздела.",
        "apihelp-stashedit-param-sectiontitle": "Заголовок нового раздела.",
        "apihelp-tag-param-tags": "Метки, применяемые к записи в журнале, создаваемой в результате этого действия.",
        "apihelp-tag-example-rev": "Добавить метку <kbd>vandalism</kbd> к версии с идентификатором 123 без указания причины.",
        "apihelp-tag-example-log": "Удаление метки <kbd>spam</kbd> из записи журнала с идентификатором 123 с причиной <kbd>Wrongly applied</kbd>.",
+       "apihelp-tokens-summary": "Получение токенов для действий, связанных с редактированием данных.",
+       "apihelp-tokens-extended-description": "Этот модуль не поддерживается в пользу [[Special:ApiHelp/query+tokens|action=query&meta=tokens]].",
        "apihelp-tokens-param-type": "Типы запрашиваемых токенов.",
        "apihelp-tokens-example-edit": "Получить токен редактирования (по умолчанию).",
        "apihelp-tokens-example-emailmove": "Получить токен электронной почты и переименования.",
        "apihelp-unblock-param-tags": "Изменить метки записи в журнале блокировок.",
        "apihelp-unblock-example-id": "Снять блокировку с идентификатором #<kbd>105</kbd>.",
        "apihelp-unblock-example-user": "Разблокировать участника <kbd>Bob</kbd> по причине <kbd>Sorry Bob</kbd>.",
+       "apihelp-undelete-summary": "Восстановление версий удалённой страницы.",
+       "apihelp-undelete-extended-description": "Список удалённых версий с временными метками может быть получен с помощью [[Special:ApiHelp/query+deletedrevisions|prop=deletedrevisions]], а список идентификаторов удалённых файлов может быть получен с помощью [[Special:ApiHelp/query+filearchive|list=filearchive]].",
        "apihelp-undelete-param-title": "Заголовок восстанавливаемой страницы.",
        "apihelp-undelete-param-reason": "Причина восстановления.",
        "apihelp-undelete-param-tags": "Изменить метки записи в журнале удалений.",
        "apihelp-undelete-example-revisions": "Восстановить две версии страницы <kbd>Main Page</kbd>.",
        "apihelp-unlinkaccount-summary": "Удаление связанного стороннего аккаунта с текущим участником.",
        "apihelp-unlinkaccount-example-simple": "Попытаться удалить связь между текущим участником и <kbd>FooAuthenticationRequest</kbd>.",
+       "apihelp-upload-summary": "Загрузка файла или получение статуса незавершённых загрузок.",
+       "apihelp-upload-extended-description": "Доступно несколько режимов:\n* Прямо загрузить содержимое файла, используя параметр <var>$1file</var>.\n* Загрузить файл по кусочком, используя параметры <var>$1filesize</var>, <var>$1chunk</var> и <var>$1offset</var>.\n* Заставить сервер MediaWiki запросить файл по ссылке, используя параметр <var>$1url</var>.\n* Завершить старую загрузку, провалившуюся из-за предупреждений, используя параметр <var>$1filekey</var>.\nОбратите внимание, что запрос HTTP POST должен быть выполнен как загрузка файла (то есть, с использованием <code>multipart/form-data</code>) при отправке <var>$1file</var>.",
        "apihelp-upload-param-filename": "Целевое название файла.",
        "apihelp-upload-param-comment": "Описание загрузки. Также используется как начальный текст страницы при загрузке нового файла, если параметр <var>$1text</var> не задан.",
        "apihelp-upload-param-tags": "Изменить метки записи в журнале загрузок и версии файловой страницы.",
        "apihelp-userrights-example-user": "Добавить участника <kbd>FooBot</kbd> в группу <kbd>bot</kbd> и удалить его из групп <kbd>sysop</kbd> и <kbd>bureaucrat</kbd>.",
        "apihelp-userrights-example-userid": "Добавить участника с идентификатором <kbd>123</kbd> в группу <kbd>bot</kbd> и удалить его из групп <kbd>sysop</kbd> и <kbd>bureaucrat</kbd>.",
        "apihelp-userrights-example-expiry": "Добавить участника <kbd>SometimeSysop</kbd> в группу <kbd>sysop</kbd> на один месяц.",
+       "apihelp-validatepassword-summary": "Проверка пароля на удовлетворение политики вики.",
+       "apihelp-validatepassword-extended-description": "Результатом проверки является <samp>Good</samp>, если пароль приемлемый, <samp>Change</samp>, если пароль может быть использован для входа, но должен быть сменён, и <samp>Invalid</samp>, если пароль не может быть использован.",
        "apihelp-validatepassword-param-password": "Проверяемый пароль.",
        "apihelp-validatepassword-param-user": "Имя участника, при использовании во время создания аккаунта. Такого участника не должно существовать.",
        "apihelp-validatepassword-param-email": "Электронная почта, при использовании во время создания аккаунта.",
        "api-help-title": "Справка MediaWiki API",
        "api-help-lead": "Это автоматически сгенерированная страница документации MediaWiki API.\n\nДокументация и примеры: https://www.mediawiki.org/wiki/API",
        "api-help-main-header": "Главный модуль",
+       "api-help-undocumented-module": "Нет документации для модуля $1.",
        "api-help-flag-deprecated": "Этот модуль не поддерживается.",
        "api-help-flag-internal": "<strong>Этот модуль внутренний или нестабильный.</strong> Его операции могут измениться без предупреждения.",
        "api-help-flag-readrights": "Этот модуль требует прав на чтение.",
        "apierror-cantsend": "Вы не авторизованы, ваш электронный адрес не подтверждён или у вас нет прав на отправку электронной почты другим участникам, поэтому вы не можете отправить электронное письмо.",
        "apierror-cantundelete": "Невозможно восстановить: возможно, запрашиваемые версии не существуют или уже были восстановлены.",
        "apierror-changeauth-norequest": "Попытка создать запрос правки провалилась.",
-       "apierror-chunk-too-small": "Минимальный размер кусочка — $1 {{PLURAL:$1|байт|байта|байтов}}, если кусочек не является последним.",
+       "apierror-chunk-too-small": "Минимальный размер кусочка — $1 {{PLURAL:$1|байт|байта|байт}}, если кусочек не является последним.",
        "apierror-cidrtoobroad": "Диапазоны $1 CIDR, шире /$2, не разрешены.",
        "apierror-compare-no-title": "Невозможно выполнить преобразование перед записью правки без заголовка. Попробуйте задать <var>fromtitle</var> или <var>totitle</var>.",
        "apierror-compare-relative-to-nothing": "Нет версии 'from', к которой относится <var>torelative</var>.",
        "apiwarn-tokennotallowed": "Действие «$1» не разрешено для текущего участника.",
        "apiwarn-tokens-origin": "Токены не могут быть получены, пока не применено правило ограничения домена.",
        "apiwarn-toomanyvalues": "Слишком много значений передано параметру <var>$1</var>. Максимальное число — $2.",
-       "apiwarn-truncatedresult": "Результат был усечён, поскольку в противном случае он был бы больше лимита в $1 байт.",
+       "apiwarn-truncatedresult": "Результат был усечён, поскольку в противном случае он был бы больше лимита в $1 {{PLURAL:$1|байт|байта|байт}}.",
        "apiwarn-unclearnowtimestamp": "Передача «$2» в качестве параметра временной метки <var>$1</var> не поддерживается. Если по какой-то причине вы хотите прямо указать текущее время без вычисления его на стороне клиента, используйте <kbd>now</kbd>.",
        "apiwarn-unrecognizedvalues": "{{PLURAL:$3|Нераспознанное значение|Нераспознанные значения}} параметра <var>$1</var>: $2.",
        "apiwarn-unsupportedarray": "Параметр <var>$1</var> использует неподдерживаемый синтаксис массивов PHP.",
        "apiwarn-validationfailed-badchars": "некорректные символы в ключе (разрешены только <code>a-z</code>, <code>A-Z</code>, <code>0-9</code>, <code>_</code> и <code>-</code>).",
        "apiwarn-validationfailed-badpref": "некорректная настройка.",
        "apiwarn-validationfailed-cannotset": "не может быть задано этим модулем.",
-       "apiwarn-validationfailed-keytoolong": "ключ слишком длинен (разрешено не более $1 байт).",
+       "apiwarn-validationfailed-keytoolong": "ключ слишком длинен (разрешено не более $1 {{PLURAL:$1|байт|байта|байт}}).",
        "apiwarn-validationfailed": "Ошибка проверки для <kbd>$1</kbd>: $2",
        "apiwarn-wgDebugAPI": "<strong>Предупреждение безопасности</strong>: активирован <var>$wgDebugAPI</var>.",
        "api-feed-error-title": "Ошибка ($1)",
index 825b70b..ad66e53 100644 (file)
        "apihelp-query+allredirects-summary": "Lista alla omdirigeringar till en namnrymd.",
        "apihelp-query+allredirects-param-dir": "Riktningen att lista mot.",
        "apihelp-query+allredirects-example-unique-generator": "Hämtar alla målsidor, markerar de som saknas.",
+       "apihelp-query+allrevisions-summary": "Lista alla sidversioner.",
        "apihelp-query+alltransclusions-summary": "Lista alla mallinkluderingar (sidor inbäddade med &#123;&#123;x&#125;&#125;), inklusive icke-befintliga.",
        "apihelp-query+alltransclusions-param-limit": "Hur många objekt att returnera.",
        "apihelp-query+alltransclusions-param-dir": "Riktningen att lista mot.",
        "apihelp-query+allusers-param-witheditsonly": "Lista bara användare som har gjort redigeringar.",
        "apihelp-query+allusers-param-activeusers": "Lista bara användare aktiva i dem sista $1{{PLURAL:$1|dagen|dagarna}}.",
        "apihelp-query+allusers-example-Y": "Lista användare som börjar på <kbd>Y</kbd>.",
+       "apihelp-query+authmanagerinfo-summary": "Hämta information om aktuell autentiseringsstatus.",
        "apihelp-query+backlinks-summary": "Hitta alla sidor som länkar till den givna sidan.",
        "apihelp-query+backlinks-param-dir": "Riktningen att lista mot.",
        "apihelp-query+backlinks-example-simple": "Visa länkar till <kbd>Main page</kbd>.",
        "apihelp-query+categorymembers-example-generator": "Hämta sidinformation om de tio första sidorna i <kbd>Category:Physics</kbd>.",
        "apihelp-query+contributors-summary": "Hämta listan över inloggade bidragsgivare och antalet anonyma bidragsgivare för en sida.",
        "apihelp-query+contributors-param-limit": "Hur många bidragsgivare att returnera.",
+       "apihelp-query+deletedrevisions-summary": "Hämta information om raderad sidversion.",
        "apihelp-query+deletedrevisions-param-user": "Lista endast sidversioner av denna användare.",
        "apihelp-query+deletedrevisions-param-excludeuser": "Lista inte sidversioner av denna användare.",
+       "apihelp-query+deletedrevs-summary": "Lista raderade sidversioner.",
        "apihelp-query+deletedrevs-paraminfo-modes": "{{PLURAL:$1|Läge|Lägen}}: $2",
        "apihelp-query+deletedrevs-param-from": "Börja lista vid denna titel.",
        "apihelp-query+deletedrevs-param-to": "Sluta lista vid denna titel.",
+       "apihelp-query+disabled-summary": "Denna frågemodul har inaktiverats.",
+       "apihelp-query+duplicatefiles-summary": "Lista alla filer som är dubbletter av angivna filer baserat på hashvärden.",
        "apihelp-query+duplicatefiles-param-dir": "Riktningen att lista mot.",
        "apihelp-query+duplicatefiles-example-generated": "Leta efter kopior av alla filer.",
+       "apihelp-query+embeddedin-summary": "Hitta alla sidor som bäddar in (inkluderar) angiven titel.",
        "apihelp-query+embeddedin-param-dir": "Riktningen att lista mot.",
        "apihelp-query+embeddedin-param-limit": "Hur många sidor att returnera totalt.",
        "apihelp-query+extlinks-example-simple": "Hämta en lista över externa länkar på <kbd>Main Page</kbd>.",
        "apihelp-query+filearchive-paramvalue-prop-timestamp": "Lägger till tidsstämpel för den uppladdade versionen.",
        "apihelp-query+filearchive-paramvalue-prop-user": "Lägger till användaren som laddade upp bildversionen.",
        "apihelp-query+filearchive-example-simple": "Visa en lista över alla borttagna filer.",
+       "apihelp-query+filerepoinfo-summary": "Returnera metainformation om bildegenskaper som konfigureras på wikin.",
+       "apihelp-query+fileusage-summary": "Hitta alla sidor som använder angivna filer.",
        "apihelp-query+fileusage-paramvalue-prop-title": "Titel för varje sida.",
        "apihelp-query+fileusage-paramvalue-prop-redirect": "Flagga om sidan är en omdirigering.",
+       "apihelp-query+imageinfo-summary": "Returnerar filinformation och uppladdningshistorik.",
        "apihelp-query+imageinfo-paramvalue-prop-userid": "Lägg till det användar-ID som laddade upp varje filversion.",
        "apihelp-query+images-param-dir": "Riktningen att lista mot.",
+       "apihelp-query+imageusage-summary": "Hitta alla sidor som användare angiven bildtitel.",
        "apihelp-query+imageusage-param-dir": "Riktningen att lista mot.",
        "apihelp-query+imageusage-example-simple": "Visa sidor med hjälp av [[:File:Albert Einstein Head.jpg]].",
        "apihelp-query+imageusage-example-generator": "Hämta information om sidor med hjälp av [[:File:Albert Einstein Head.jpg]].",
        "apihelp-query+langbacklinks-param-dir": "Riktningen att lista mot.",
        "apihelp-query+langbacklinks-example-simple": "Hämta sidor som länkar till [[:fr:Test]].",
        "apihelp-query+langlinks-param-dir": "Riktningen att lista mot.",
+       "apihelp-query+links-summary": "Returnerar alla länkar från angivna sidor.",
        "apihelp-query+links-param-dir": "Riktningen att lista mot.",
+       "apihelp-query+linkshere-summary": "Hitta alla sidor som länkar till angivna sidor.",
+       "apihelp-query+logevents-summary": "Hämta händelser från loggar.",
+       "apihelp-query+pageswithprop-summary": "Lista alla sidor som använder en angiven sidegenskap.",
        "apihelp-query+prefixsearch-param-profile": "Sök profil att använda.",
        "apihelp-query+protectedtitles-param-limit": "Hur många sidor att returnera totalt.",
        "apihelp-query+protectedtitles-example-simple": "Lista skyddade titlar.",
        "apihelp-query+recentchanges-example-simple": "Lista de senaste ändringarna.",
+       "apihelp-query+redirects-summary": "Returnerar alla omdirigeringar till angivna sidor.",
+       "apihelp-query+revisions-summary": "Hämta information om sidversion.",
        "apihelp-query+revisions-example-first5-not-localhost": "Hämta första 5 revideringarna av <kbd>huvudsidan</kbd> och som inte gjorts av anonym användare <kbd>127.0.0.1</kbd>",
        "apihelp-query+search-paramvalue-prop-score": "Ignorerad.",
        "apihelp-query+search-paramvalue-prop-hasrelated": "Ignorerad.",
+       "apihelp-query+siteinfo-summary": "Returnera allmän information om webbplatsen.",
        "apihelp-query+siteinfo-paramvalue-prop-languagevariants": "Returnerar en lista över språkkoder som [[mw:Special:MyLanguage/LanguageConverter|LanguageConverter]] har aktiverat och de varianter som varje stöder.",
        "apihelp-query+siteinfo-example-simple": "Hämta information om webbplatsen.",
        "apihelp-query+stashimageinfo-summary": "Returnerar filinformation för temporära filer.",
        "apihelp-query+stashimageinfo-param-filekey": "Nyckel som identifierar en tidigare uppladdning som lagrats temporärt.",
        "apihelp-query+stashimageinfo-example-simple": "Returnerar information för en temporär fil",
+       "apihelp-query+tags-summary": "Lista ändringsmärken.",
        "apihelp-query+tags-example-simple": "Lista tillgängliga taggar.",
+       "apihelp-query+templates-summary": "Returnerar alla sidinkluderingar på angivna sidor.",
        "apihelp-query+templates-param-namespace": "Visa mallar i endast denna namnrymd.",
+       "apihelp-query+transcludedin-summary": "Hitta alla sidor som inkluderar angivna sidor.",
+       "apihelp-query+usercontribs-summary": "Hämta alla redigeringar av en användare.",
+       "apihelp-query+userinfo-summary": "Få information om den aktuella användaren.",
        "apihelp-query+userinfo-paramvalue-prop-preferencestoken": "Hämta en nyckel för att ändra aktuell användares inställningar.",
        "apihelp-query+userinfo-example-simple": "Få information om den aktuella användaren.",
        "apihelp-query+userinfo-example-data": "Få ytterligare information om den aktuella användaren.",
+       "apihelp-query+users-summary": "Hämta information om en lista över användare.",
        "apihelp-query+watchlist-summary": "Hämta de senaste ändringarna på sidor i den nuvarande användarens bevakningslista.",
        "apihelp-query+watchlist-example-allrev": "Hämta information om de senaste ändringarna på sidor på den aktuella användarens bevakningslista.",
        "apihelp-query+watchlist-example-generator": "Hämta sidinformation för nyligen uppdaterade sidor på nuvarande användares bevakningslista.",
        "apihelp-query+watchlist-example-generator-rev": "Hämta ändringsinformation för nyligen uppdaterade sidor på nuvarande användares bevakningslista.",
        "apihelp-query+watchlistraw-summary": "Hämta alla sidor på den aktuella användarens bevakningslista.",
        "apihelp-query+watchlistraw-example-simple": "Lista sidor på den aktuella användarens bevakningslista.",
+       "apihelp-revisiondelete-summary": "Radera och återställ sidversioner.",
+       "apihelp-rollback-summary": "Ångra den senaste redigeringen på sidan.",
+       "apihelp-rollback-extended-description": "Om den senaste användaren som redigerade sidan gjorde flera redigeringar i rad kommer alla rullas tillbaka.",
        "apihelp-setnotificationtimestamp-example-all": "Återställ meddelandestatus för hela bevakningslistan.",
+       "apihelp-setpagelanguage-summary": "Ändra språket på en sida.",
        "apihelp-stashedit-param-summary": "Ändra sammanfattning.",
+       "apihelp-tag-summary": "Lägg till eller ta bort ändringsmärken från individuella sidversioner eller loggposter.",
+       "apihelp-tokens-summary": "Hämta nycklar för datamodifierande handlingar.",
+       "apihelp-unblock-summary": "Upphäv en användares blockering.",
        "apihelp-unblock-param-id": "ID för blockeringen att häva (hämtas genom <kbd>list=blocks</kbd>). Kan inte användas tillsammans med <var>$1user</var> eller <var>$1userid</var>.",
        "apihelp-unblock-param-user": "Användarnamn, IP-adresser eller IP-adressintervall att häva blockering för. Kan inte användas tillsammans med <var>$1id</var> eller <var>$1userid</var>.",
        "apihelp-unblock-param-userid": "Användar-ID att häva blockering för. Kan inte användas tillsammans med <var>$1id</var> eller <var>$1user</var>.",
+       "apihelp-undelete-summary": "Återställ sidversioner för en raderad sida.",
+       "apihelp-unlinkaccount-summary": "Ta bort ett länkat tredjepartskonto från aktuell användare.",
+       "apihelp-upload-summary": "Ladda upp en fil eller hämta status för väntande uppladdningar.",
        "apihelp-upload-param-filekey": "Nyckel som identifierar en tidigare uppladdning som lagrats temporärt.",
        "apihelp-upload-param-stash": "Om angiven, kommer servern att temporärt lagra filen istället för att lägga till den i centralförvaret.",
        "apihelp-upload-example-url": "Ladda upp från URL.",
        "apihelp-upload-example-filekey": "Slutför en uppladdning som misslyckades på grund av varningar.",
+       "apihelp-userrights-summary": "Ändra en användares gruppmedlemskap.",
+       "apihelp-watch-summary": "Lägg till eller ta bort sidor från aktuell användares bevakningslista.",
        "api-login-fail-badsessionprovider": "Kan inte logga in med $1.",
        "api-help-main-header": "Huvudmodul",
        "api-help-flag-deprecated": "Denna modul är föråldrad.",
index 1da0491..d70ac9c 100644 (file)
        "api-help-title": "MediaWiki API 帮助",
        "api-help-lead": "这是自动生成的MediaWiki API文档页面。\n\n文档和例子:https://www.mediawiki.org/wiki/API:Main_page/zh",
        "api-help-main-header": "主模块",
+       "api-help-undocumented-module": "没有用于模块$1的文档。",
        "api-help-flag-deprecated": "此模块已弃用。",
        "api-help-flag-internal": "<strong>此模块是内部或不稳定的。</strong>它的操作可以更改而不另行通知。",
        "api-help-flag-readrights": "此模块需要读取权限。",
index 35557af..3043943 100644 (file)
        "apihelp-query+recentchanges-example-simple": "最近變更清單",
        "apihelp-query+redirects-summary": "回傳連結至指定頁面的所有重新導向。",
        "apihelp-query+redirects-param-limit": "要回傳的重新導向數量。",
+       "apihelp-query+search-paramvalue-prop-score": "已忽略",
+       "apihelp-query+search-paramvalue-prop-hasrelated": "已忽略",
        "apihelp-query+search-param-limit": "要回傳的頁面總數。",
        "apihelp-query+stashimageinfo-summary": "回傳多筆儲藏檔案的檔案資訊。",
        "apihelp-query+stashimageinfo-example-simple": "回傳儲藏檔案的檔案資訊。",
index 3ee6330..11f3c2b 100644 (file)
@@ -20,7 +20,6 @@
  *
  * @file
  * @author Tim Starling
- * @author Aaron Schulz
  * @copyright © 2009, Tim Starling, Domas Mituzas
  * @copyright © 2010, Max Sem
  * @copyright © 2011, Antoine Musso
index cbbbfeb..64d4aa7 100644 (file)
@@ -685,7 +685,7 @@ class EnhancedChangesList extends ChangesList {
                }
                $attribs = $data['attribs'];
                unset( $data['attribs'] );
-               $attribs = wfArrayFilterByKey( $attribs, function( $key ) {
+               $attribs = wfArrayFilterByKey( $attribs, function ( $key ) {
                        return $key === 'class' || Sanitizer::isReservedDataAttribute( $key );
                } );
 
index ae3df49..c57eba7 100644 (file)
@@ -1,7 +1,5 @@
 <?php
 /**
- * Copyright 2017
- *
  * 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
@@ -18,7 +16,6 @@
  * http://www.gnu.org/copyleft/gpl.html
  *
  * @file
- * @author Aaron Schulz
  */
 
 use Psr\Log\LoggerAwareInterface;
index 809b660..6d18444 100644 (file)
@@ -93,8 +93,10 @@ class CloneDatabase {
                        self::changePrefix( $this->newTablePrefix );
                        $newTableName = $this->db->tableName( $tbl, 'raw' );
 
+                       // Postgres: Temp tables are automatically deleted upon end of session
+                       //           Same Temp table name hides existing table for current session
                        if ( $this->dropCurrentTables
-                               && !in_array( $this->db->getType(), [ 'postgres', 'oracle' ] )
+                               && !in_array( $this->db->getType(), [ 'oracle' ] )
                        ) {
                                if ( $oldTableName === $newTableName ) {
                                        // Last ditch check to avoid data loss
index baf4637..6359509 100644 (file)
@@ -43,8 +43,7 @@ use UDPTransport;
  *
  * @see \MediaWiki\Logger\LoggerFactory
  * @since 1.25
- * @author Bryan Davis <bd808@wikimedia.org>
- * @copyright © 2014 Bryan Davis and Wikimedia Foundation.
+ * @copyright © 2014 Wikimedia Foundation and contributors
  */
 class LegacyLogger extends AbstractLogger {
 
index 4cf8313..8e750ca 100644 (file)
@@ -32,8 +32,7 @@ namespace MediaWiki\Logger;
  *
  * @see \MediaWiki\Logger\LoggerFactory
  * @since 1.25
- * @author Bryan Davis <bd808@wikimedia.org>
- * @copyright © 2014 Bryan Davis and Wikimedia Foundation.
+ * @copyright © 2014 Wikimedia Foundation and contributors
  */
 class LegacySpi implements Spi {
 
index ce92dbd..c183ff1 100644 (file)
@@ -40,8 +40,7 @@ use ObjectFactory;
  *
  * @see \MediaWiki\Logger\Spi
  * @since 1.25
- * @author Bryan Davis <bd808@wikimedia.org>
- * @copyright © 2014 Bryan Davis and Wikimedia Foundation.
+ * @copyright © 2014 Wikimedia Foundation and contributors
  */
 class LoggerFactory {
 
index f44ff1c..197b269 100644 (file)
@@ -110,8 +110,7 @@ use ObjectFactory;
  *
  * @see https://github.com/Seldaek/monolog
  * @since 1.25
- * @author Bryan Davis <bd808@wikimedia.org>
- * @copyright © 2014 Bryan Davis and Wikimedia Foundation.
+ * @copyright © 2014 Wikimedia Foundation and contributors
  */
 class MonologSpi implements Spi {
 
index 82308d0..4862157 100644 (file)
@@ -34,8 +34,7 @@ use Psr\Log\NullLogger;
  *
  * @see \MediaWiki\Logger\LoggerFactory
  * @since 1.25
- * @author Bryan Davis <bd808@wikimedia.org>
- * @copyright © 2014 Bryan Davis and Wikimedia Foundation.
+ * @copyright © 2014 Wikimedia Foundation and contributors
  */
 class NullSpi implements Spi {
 
index 044789f..8e0875f 100644 (file)
@@ -31,8 +31,7 @@ namespace MediaWiki\Logger;
  *
  * @see \MediaWiki\Logger\LoggerFactory
  * @since 1.25
- * @author Bryan Davis <bd808@wikimedia.org>
- * @copyright © 2014 Bryan Davis and Wikimedia Foundation.
+ * @copyright © 2014 Wikimedia Foundation and contributors
  */
 interface Spi {
 
index 9ec15cb..92624a0 100644 (file)
@@ -29,8 +29,7 @@ use Monolog\Formatter\NormalizerFormatter;
  * delegating the formatting to \MediaWiki\Logger\LegacyLogger.
  *
  * @since 1.25
- * @author Bryan Davis <bd808@wikimedia.org>
- * @copyright © 2013 Bryan Davis and Wikimedia Foundation.
+ * @copyright © 2013 Wikimedia Foundation and contributors
  * @see \MediaWiki\Logger\LegacyLogger
  */
 class LegacyFormatter extends NormalizerFormatter {
index d40414c..58fca8e 100644 (file)
@@ -44,8 +44,7 @@ use UnexpectedValueException;
  * replacement for \Monolog\Handler\StreamHandler.
  *
  * @since 1.25
- * @author Bryan Davis <bd808@wikimedia.org>
- * @copyright © 2013 Bryan Davis and Wikimedia Foundation.
+ * @copyright © 2013 Wikimedia Foundation and contributors
  */
 class LegacyHandler extends AbstractProcessingHandler {
 
index 0ad9b15..5a7ddb1 100644 (file)
@@ -37,8 +37,7 @@ use MWExceptionHandler;
  * will be used to redact the trace information.
  *
  * @since 1.26
- * @author Bryan Davis <bd808@wikimedia.org>
- * @copyright © 2015 Bryan Davis and Wikimedia Foundation.
+ * @copyright © 2015 Wikimedia Foundation and contributors
  */
 class LineFormatter extends MonologLineFormatter {
 
index 104ee58..780ea94 100644 (file)
@@ -43,8 +43,7 @@ use Monolog\Logger;
  * default Logstash syslog input handler.
  *
  * @since 1.25
- * @author Bryan Davis <bd808@wikimedia.org>
- * @copyright © 2015 Bryan Davis and Wikimedia Foundation.
+ * @copyright © 2015 Wikimedia Foundation and contributors
  */
 class SyslogHandler extends SyslogUdpHandler {
 
index ad939a0..5e32887 100644 (file)
@@ -25,8 +25,7 @@ namespace MediaWiki\Logger\Monolog;
  * wiki / request ID, and MediaWiki version.
  *
  * @since 1.25
- * @author Bryan Davis <bd808@wikimedia.org>
- * @copyright © 2013 Bryan Davis and Wikimedia Foundation.
+ * @copyright © 2013 Wikimedia Foundation and contributors
  */
 class WikiProcessor {
 
index b9a259b..c94ae2a 100644 (file)
@@ -124,7 +124,7 @@ class SearchUpdate implements DeferrableUpdate {
                # Language-specific strip/conversion
                $text = $wgContLang->normalizeForSearch( $text );
                $se = $se ?: MediaWikiServices::getInstance()->newSearchEngine();
-               $lc = $se->legalSearchChars() . '&#;';
+               $lc = $se->legalSearchCharsForUpdate() . '&#;';
 
                $text = preg_replace( "/<\\/?\\s*[A-Za-z][^>]*?>/",
                        ' ', $wgContLang->lc( " " . $text . " " ) ); # Strip HTML markup
@@ -207,7 +207,7 @@ class SearchUpdate implements DeferrableUpdate {
                $ns = $this->title->getNamespace();
                $title = $this->title->getText();
 
-               $lc = $search->legalSearchChars() . '&#;';
+               $lc = $search->legalSearchCharsForUpdate() . '&#;';
                $t = $wgContLang->normalizeForSearch( $title );
                $t = preg_replace( "/[^{$lc}]+/", ' ', $t );
                $t = $wgContLang->lc( $t );
index b0ab244..0b58cc1 100644 (file)
@@ -847,7 +847,7 @@ class DifferenceEngine extends ContextSource {
         * @return bool|string
         */
        public function generateTextDiffBody( $otext, $ntext ) {
-               $diff = function() use ( $otext, $ntext ) {
+               $diff = function () use ( $otext, $ntext ) {
                        $time = microtime( true );
 
                        $result = $this->textDiff( $otext, $ntext );
@@ -867,7 +867,7 @@ class DifferenceEngine extends ContextSource {
                 * @param Status $status
                 * @throws FatalError
                 */
-               $error = function( $status ) {
+               $error = function ( $status ) {
                        throw new FatalError( $status->getWikiText() );
                };
 
index 5162a1f..579b6ca 100644 (file)
@@ -16,7 +16,6 @@
  * http://www.gnu.org/copyleft/gpl.html
  *
  * @file
- * @author Aaron Schulz
  */
 
 use Wikimedia\Rdbms\DBConnectionError;
index 260ee17..6cfa083 100644 (file)
@@ -19,7 +19,6 @@
  *
  * @file
  * @ingroup ExternalStorage
- * @author Aaron Schulz
  */
 
 /**
index e65a594..5d0da6d 100644 (file)
@@ -19,7 +19,6 @@
  *
  * @file
  * @ingroup FileBackend
- * @author Aaron Schulz
  */
 use \MediaWiki\Logger\LoggerFactory;
 use MediaWiki\MediaWikiServices;
index aa97c9a..42b36ff 100644 (file)
@@ -19,7 +19,6 @@
  *
  * @file
  * @ingroup FileJournal
- * @author Aaron Schulz
  */
 
 use MediaWiki\MediaWikiServices;
index 1e66e6e..e6f992c 100644 (file)
@@ -27,7 +27,6 @@ use MediaWiki\Logger\LoggerFactory;
  * Class to handle file lock manager registration
  *
  * @ingroup LockManager
- * @author Aaron Schulz
  * @since 1.19
  */
 class LockManagerGroup {
index 2394704..c37a942 100644 (file)
@@ -20,7 +20,6 @@
  * @file
  * @ingroup FileRepo
  * @ingroup FileBackend
- * @author Aaron Schulz
  */
 
 use Wikimedia\Rdbms\DBConnRef;
index f83fd1c..bcd253f 100644 (file)
@@ -73,7 +73,7 @@ class ForeignDBViaLBRepo extends LocalRepo {
         * @return Closure
         */
        protected function getDBFactory() {
-               return function( $index ) {
+               return function ( $index ) {
                        return wfGetLB( $this->wiki )->getConnectionRef( $index, [], $this->wiki );
                };
        }
index d91ab24..20d51c2 100644 (file)
@@ -483,7 +483,7 @@ class LocalRepo extends FileRepo {
         * @return Closure
         */
        protected function getDBFactory() {
-               return function( $index ) {
+               return function ( $index ) {
                        return wfGetDB( $index );
                };
        }
index 8d715e8..a412250 100644 (file)
@@ -593,7 +593,7 @@ class LocalFile extends File {
                if ( $upgrade ) {
                        $this->upgrading = true;
                        // Defer updates unless in auto-commit CLI mode
-                       DeferredUpdates::addCallableUpdate( function() {
+                       DeferredUpdates::addCallableUpdate( function () {
                                $this->upgrading = false; // avoid duplicate updates
                                try {
                                        $this->upgradeRow();
@@ -716,6 +716,11 @@ class LocalFile extends File {
         * @return int
         */
        public function getWidth( $page = 1 ) {
+               $page = (int)$page;
+               if ( $page < 1 ) {
+                       $page = 1;
+               }
+
                $this->load();
 
                if ( $this->isMultipage() ) {
@@ -743,6 +748,11 @@ class LocalFile extends File {
         * @return int
         */
        public function getHeight( $page = 1 ) {
+               $page = (int)$page;
+               if ( $page < 1 ) {
+                       $page = 1;
+               }
+
                $this->load();
 
                if ( $this->isMultipage() ) {
index 5ee25cd..b22f8cb 100644 (file)
@@ -111,6 +111,11 @@ class UnregisteredLocalFile extends File {
         * @return bool
         */
        private function cachePageDimensions( $page = 1 ) {
+               $page = (int)$page;
+               if ( $page < 1 ) {
+                       $page = 1;
+               }
+
                if ( !isset( $this->dims[$page] ) ) {
                        if ( !$this->getHandler() ) {
                                return false;
index 089213c..10db90c 100644 (file)
@@ -26,7 +26,7 @@ trait HTMLFormElement {
                        // And it's not needed anymore after infusing, so we don't put it in JS config at all.
                        $this->setAttributes( [ 'data-mw-modules' => implode( ',', $this->modules ) ] );
                }
-               $this->registerConfigCallback( function( &$config ) {
+               $this->registerConfigCallback( function ( &$config ) {
                        if ( $this->hideIf !== null ) {
                                $config['hideIf'] = $this->hideIf;
                        }
index 8829f66..53d1d06 100644 (file)
@@ -23,7 +23,7 @@ class HTMLUsersMultiselectField extends HTMLUserTextField {
 
                $usersArray = explode( "\n", $request->getText( $this->mName ) );
                // Remove empty lines
-               $usersArray = array_values( array_filter( $usersArray, function( $username ) {
+               $usersArray = array_values( array_filter( $usersArray, function ( $username ) {
                        return trim( $username ) !== '';
                } ) );
                return $usersArray;
index 6113573..6c56b3d 100644 (file)
@@ -336,7 +336,7 @@ abstract class DatabaseInstaller {
                $services = \MediaWiki\MediaWikiServices::getInstance();
 
                $connection = $status->value;
-               $services->redefineService( 'DBLoadBalancerFactory', function() use ( $connection ) {
+               $services->redefineService( 'DBLoadBalancerFactory', function () use ( $connection ) {
                        return LBFactorySingle::newFromConnection( $connection );
                } );
        }
index 7028224..168d7ed 100644 (file)
@@ -384,7 +384,7 @@ abstract class Installer {
 
                // make sure we use the installer config as the main config
                $configRegistry = $baseConfig->get( 'ConfigRegistry' );
-               $configRegistry['main'] = function() use ( $installerConfig ) {
+               $configRegistry['main'] = function () use ( $installerConfig ) {
                        return $installerConfig;
                };
 
index fc9984e..cdd13c2 100644 (file)
@@ -23,7 +23,8 @@
                        "Macofe",
                        "StasR",
                        "Irus",
-                       "Mailman"
+                       "Mailman",
+                       "Facenapalm"
                ]
        },
        "config-desc": "Инсталлятор MediaWiki",
@@ -98,7 +99,7 @@
        "config-uploads-not-safe": "'''Внимание:''' директория, используемая по умолчанию для загрузок (<code>$1</code>) уязвима к выполнению произвольных скриптов.\nХотя MediaWiki проверяет все загружаемые файлы на наличие угроз, настоятельно рекомендуется [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security#Upload_security закрыть данную уязвимость] перед включением загрузки файлов.",
        "config-no-cli-uploads-check": "'''Предупреждение:''' каталог для загрузки по умолчанию ( <code>$1</code> ) не проверялся на уязвимости\n на выполнение произвольного сценария во время установки CLI.",
        "config-brokenlibxml": "В вашей системе имеется сочетание версий PHP и libxml2, которое может привести к скрытым повреждениям данных в MediaWiki и других веб-приложениях.\nОбновите libxml2 до версии 2.7.3 или старше ([https://bugs.php.net/bug.php?id=45996 сведения об ошибке]).\nУстановка прервана.",
-       "config-suhosin-max-value-length": "Suhosin установлен и ограничивает параметр GET <code>length</code> до $1 байт. Компонент MediaWiki ResourceLoader будет обходить это ограничение, но это снизит производительность. Если это возможно, следует установить <code>suhosin.get.max_value_length</code> в значение 1024 или выше в <code>php.ini</code>, а также установить для <code>$wgResourceLoaderMaxQueryLength</code> такое же значение в LocalSettings.php.",
+       "config-suhosin-max-value-length": "Suhosin установлен и ограничивает параметр GET <code>length</code> до $1 {{PLURAL:$1|байт|байта|байт}}. Компонент MediaWiki ResourceLoader будет обходить это ограничение, но это снизит производительность. Если это возможно, следует установить <code>suhosin.get.max_value_length</code> в значение 1024 или выше в <code>php.ini</code>, а также установить для <code>$wgResourceLoaderMaxQueryLength</code> такое же значение в LocalSettings.php.",
        "config-db-type": "Тип базы данных:",
        "config-db-host": "Хост базы данных:",
        "config-db-host-help": "Если сервер базы данных находится на другом сервере, введите здесь его имя хоста или IP-адрес.\n\nЕсли вы используете виртуальный хостинг, ваш провайдер должен указать правильное имя хоста в своей документации.\n\nЕсли вы устанавливаете систему на сервере под Windows и используете MySQL, имя сервера «localhost» может не работать. В этом случае попробуйте указать 127.0.0.1 локальный  IP-адрес.\n\nЕсли вы используете PostgreSQL, оставьте это поле пустым для подключения через сокет Unix.",
index 9701dd9..d20a233 100644 (file)
@@ -19,7 +19,6 @@
  *
  * @file
  * @defgroup JobQueue JobQueue
- * @author Aaron Schulz
  */
 use MediaWiki\MediaWikiServices;
 
index 9b9928d..cefe74d 100644 (file)
@@ -18,7 +18,6 @@
  * http://www.gnu.org/copyleft/gpl.html
  *
  * @file
- * @author Aaron Schulz
  */
 use Wikimedia\Rdbms\IDatabase;
 use Wikimedia\Rdbms\DBConnRef;
index bd832db..7fdd617 100644 (file)
@@ -18,7 +18,6 @@
  * http://www.gnu.org/copyleft/gpl.html
  *
  * @file
- * @author Aaron Schulz
  */
 
 /**
index 5d5ea26..ef0ecb3 100644 (file)
@@ -18,7 +18,6 @@
  * http://www.gnu.org/copyleft/gpl.html
  *
  * @file
- * @author Aaron Schulz
  */
 
 /**
index 2866c7f..649e2af 100644 (file)
@@ -18,7 +18,6 @@
  * http://www.gnu.org/copyleft/gpl.html
  *
  * @file
- * @author Aaron Schulz
  */
 
 /**
index eb91680..7dad014 100644 (file)
@@ -18,7 +18,6 @@
  * http://www.gnu.org/copyleft/gpl.html
  *
  * @file
- * @author Aaron Schulz
  */
 use Psr\Log\LoggerInterface;
 
index 4169974..7ce2c74 100644 (file)
@@ -18,7 +18,6 @@
  * http://www.gnu.org/copyleft/gpl.html
  *
  * @file
- * @author Aaron Schulz
  */
 
 /**
index d9457c6..db07086 100644 (file)
@@ -18,7 +18,6 @@
  * http://www.gnu.org/copyleft/gpl.html
  *
  * @file
- * @author Aaron Schulz
  */
 use Psr\Log\LoggerInterface;
 
index 6357967..da4ec23 100644 (file)
@@ -16,7 +16,6 @@
  * http://www.gnu.org/copyleft/gpl.html
  *
  * @file
- * @author Aaron Schulz
  * @ingroup JobQueue
  */
 
index eb367af..ca57d62 100644 (file)
@@ -16,7 +16,6 @@
  * http://www.gnu.org/copyleft/gpl.html
  *
  * @file
- * @author Aaron Schulz
  * @ingroup JobQueue
  */
 use MediaWiki\MediaWikiServices;
index 1c12a1c..76f8d6d 100644 (file)
@@ -19,7 +19,6 @@
  *
  * @file
  * @ingroup JobQueue
- * @author Aaron Schulz
  */
 
 /**
index c504f35..ea0f1b7 100644 (file)
@@ -356,7 +356,7 @@ class CSSMin {
 
                // Re-insert comments
                $pattern = '/' . CSSMin::PLACEHOLDER . '(\d+)x/';
-               $source = preg_replace_callback( $pattern, function( $match ) use ( &$comments ) {
+               $source = preg_replace_callback( $pattern, function ( $match ) use ( &$comments ) {
                        return $comments[ $match[1] ];
                }, $source );
 
index 4ddb813..a4aabcd 100644 (file)
@@ -18,7 +18,6 @@
  * http://www.gnu.org/copyleft/gpl.html
  *
  * @file
- * @author Aaron Schulz
  */
 
 /**
@@ -179,7 +178,7 @@ class HashRing {
                if ( $this->liveRing === null || $this->ejectionNextExpiry <= $now ) {
                        $this->ejectionExpiries = array_filter(
                                $this->ejectionExpiries,
-                               function( $expiry ) use ( $now ) {
+                               function ( $expiry ) use ( $now ) {
                                        return ( $expiry > $now );
                                }
                        );
index a6aa0a3..e8b0e6a 100644 (file)
@@ -18,7 +18,7 @@
  * http://www.gnu.org/copyleft/gpl.html
  *
  * @file
- * @author Antoine Musso "<hashar at free dot fr>", Aaron Schulz
+ * @author Antoine Musso "<hashar at free dot fr>"
  */
 
 use IPSet\IPSet;
index 73ffb14..d60af34 100644 (file)
@@ -18,7 +18,6 @@
  * http://www.gnu.org/copyleft/gpl.html
  *
  * @file
- * @author Aaron Schulz
  */
 
 /**
index e9922b9..9d6b734 100644 (file)
@@ -43,7 +43,6 @@ use Psr\Log\NullLogger;
  *                  - relayResponseHeaders : write out header via header()
  * Request maps can use integer index 0 instead of 'method' and 1 instead of 'url'.
  *
- * @author Aaron Schulz
  * @since 1.23
  */
 class MultiHttpClient implements LoggerAwareInterface {
index c96a8a1..6c47c3c 100644 (file)
@@ -21,8 +21,7 @@
 /**
  * Construct objects from configuration instructions.
  *
- * @author Bryan Davis <bd808@wikimedia.org>
- * @copyright © 2014 Bryan Davis and Wikimedia Foundation.
+ * @copyright © 2014 Wikimedia Foundation and contributors
  */
 class ObjectFactory {
 
index c6da432..2383d2a 100644 (file)
@@ -25,8 +25,7 @@ use RunningStat\RunningStat;
  * <https://github.com/phacility/xhprof>. XHProf can be installed as a PECL
  * package for use with PHP5 (Zend PHP) and is built-in to HHVM 3.3.0.
  *
- * @author Bryan Davis <bd808@wikimedia.org>
- * @copyright © 2014 Bryan Davis and Wikimedia Foundation.
+ * @copyright © 2014 Wikimedia Foundation and contributors
  * @since 1.28
  */
 class XhprofData {
index 304f6c1..0cc9b3d 100644 (file)
@@ -16,7 +16,6 @@
  * http://www.gnu.org/copyleft/gpl.html
  *
  * @file
- * @author Aaron Schulz
  */
 use Psr\Log\LoggerInterface;
 use Psr\Log\LoggerAwareInterface;
index b8ec55f..d933dd4 100644 (file)
@@ -16,7 +16,6 @@
  * http://www.gnu.org/copyleft/gpl.html
  *
  * @file
- * @author Aaron Schulz
  */
 
 /**
index 4f0805b..30548ef 100644 (file)
@@ -19,7 +19,6 @@
  *
  * @file
  * @ingroup FileBackend
- * @author Aaron Schulz
  */
 use Wikimedia\Timestamp\ConvertibleTimestamp;
 
index 15f13b9..6f51081 100644 (file)
@@ -26,7 +26,6 @@
  *
  * @file
  * @ingroup FileBackend
- * @author Aaron Schulz
  */
 use Psr\Log\LoggerAwareInterface;
 use Psr\Log\LoggerInterface;
index 53bce33..f8ca7e5 100644 (file)
@@ -19,7 +19,6 @@
  *
  * @file
  * @ingroup FileBackend
- * @author Aaron Schulz
  */
 
 /**
@@ -196,7 +195,7 @@ class FileBackendMultiWrite extends FileBackend {
                                if ( $this->asyncWrites && !$this->hasVolatileSources( $ops ) ) {
                                        // Bind $scopeLock to the callback to preserve locks
                                        DeferredUpdates::addCallableUpdate(
-                                               function() use ( $backend, $realOps, $opts, $scopeLock, $relevantPaths ) {
+                                               function () use ( $backend, $realOps, $opts, $scopeLock, $relevantPaths ) {
                                                        wfDebugLog( 'FileOperationReplication',
                                                                "'{$backend->getName()}' async replication; paths: " .
                                                                FormatJson::encode( $relevantPaths ) );
@@ -508,7 +507,7 @@ class FileBackendMultiWrite extends FileBackend {
                        $realOps = $this->substOpBatchPaths( $ops, $backend );
                        if ( $this->asyncWrites && !$this->hasVolatileSources( $ops ) ) {
                                DeferredUpdates::addCallableUpdate(
-                                       function() use ( $backend, $realOps ) {
+                                       function () use ( $backend, $realOps ) {
                                                $backend->doQuickOperations( $realOps );
                                        }
                                );
@@ -562,7 +561,7 @@ class FileBackendMultiWrite extends FileBackend {
                        $realParams = $this->substOpPaths( $params, $backend );
                        if ( $this->asyncWrites ) {
                                DeferredUpdates::addCallableUpdate(
-                                       function() use ( $backend, $method, $realParams ) {
+                                       function () use ( $backend, $method, $realParams ) {
                                                $backend->$method( $realParams );
                                        }
                                );
index 039bd42..9bfdbe8 100644 (file)
@@ -19,7 +19,6 @@
  *
  * @file
  * @ingroup FileBackend
- * @author Aaron Schulz
  */
 use Wikimedia\Timestamp\ConvertibleTimestamp;
 
index 71b5c7d..2324098 100644 (file)
@@ -19,7 +19,6 @@
  *
  * @file
  * @ingroup FileBackend
- * @author Aaron Schulz
  */
 
 /**
index 44fe2cb..0341a2a 100644 (file)
@@ -19,7 +19,6 @@
  *
  * @file
  * @ingroup FileBackend
- * @author Aaron Schulz
  */
 
 /**
index 029f94c..044e976 100644 (file)
@@ -20,7 +20,6 @@
  * @file
  * @ingroup FileBackend
  * @author Russ Nelson
- * @author Aaron Schulz
  */
 
 /**
index e3b8c51..527de6a 100644 (file)
@@ -19,7 +19,6 @@
  *
  * @file
  * @ingroup FileBackend
- * @author Aaron Schulz
  */
 
 /**
index 120ca2b..f45b055 100644 (file)
@@ -17,7 +17,6 @@
  *
  * @file
  * @ingroup FileBackend
- * @author Aaron Schulz
  */
 
 /**
index 79af194..30578fa 100644 (file)
@@ -19,7 +19,6 @@
  *
  * @file
  * @ingroup FileBackend
- * @author Aaron Schulz
  */
 use Psr\Log\LoggerInterface;
 
index fee3f4a..55dca51 100644 (file)
@@ -19,7 +19,6 @@
  *
  * @file
  * @ingroup FileBackend
- * @author Aaron Schulz
  */
 
 /**
index ed23e81..9121759 100644 (file)
@@ -19,7 +19,6 @@
  *
  * @file
  * @ingroup FileBackend
- * @author Aaron Schulz
  */
 
 /**
index b97b410..bba762f 100644 (file)
@@ -19,7 +19,6 @@
  *
  * @file
  * @ingroup FileBackend
- * @author Aaron Schulz
  */
 
 /**
index c629e7d..a6257bf 100644 (file)
@@ -26,7 +26,6 @@ use Wikimedia\WaitConditionLoop;
  *
  * @file
  * @ingroup LockManager
- * @author Aaron Schulz
  */
 
 /**
index 5ad558f..b83462c 100644 (file)
@@ -19,7 +19,6 @@
  *
  * @file
  * @ingroup LockManager
- * @author Aaron Schulz
  */
 
 /**
index ac8bee8..e10606a 100644 (file)
@@ -19,7 +19,6 @@
  *
  * @file
  * @ingroup LockManager
- * @author Aaron Schulz
  */
 
 /**
index 77c4259..7cd678b 100644 (file)
@@ -475,7 +475,7 @@ abstract class BagOStuff implements IExpiringStore, LoggerAwareInterface {
 
                $lSince = microtime( true ); // lock timestamp
 
-               return new ScopedCallback( function() use ( $key, $lSince, $expiry ) {
+               return new ScopedCallback( function () use ( $key, $lSince, $expiry ) {
                        $latency = .050; // latency skew (err towards keeping lock present)
                        $age = ( microtime( true ) - $lSince + $latency );
                        if ( ( $age + $latency ) >= $expiry ) {
index 0842e04..ff7e91a 100644 (file)
@@ -17,7 +17,6 @@
  *
  * @file
  * @ingroup Cache
- * @author Aaron Schulz
  */
 
 use Psr\Log\LoggerAwareInterface;
index 956a3a9..1696c59 100644 (file)
@@ -17,7 +17,6 @@
  *
  * @file
  * @ingroup Cache
- * @author Aaron Schulz
  */
 
 use Psr\Log\LoggerAwareInterface;
index 823e0dc..256f744 100644 (file)
@@ -19,7 +19,6 @@
  *
  * @file
  * @ingroup Profiler
- * @author Aaron Schulz
  */
 
 namespace Wikimedia\Rdbms;
@@ -156,11 +155,13 @@ class TransactionProfiler implements LoggerAwareInterface {
         */
        public function recordConnection( $server, $db, $isMaster ) {
                // Report when too many connections happen...
-               if ( $this->hits['conns']++ == $this->expect['conns'] ) {
-                       $this->reportExpectationViolated( 'conns', "[connect to $server ($db)]" );
+               if ( $this->hits['conns']++ >= $this->expect['conns'] ) {
+                       $this->reportExpectationViolated(
+                               'conns', "[connect to $server ($db)]", $this->hits['conns'] );
                }
-               if ( $isMaster && $this->hits['masterConns']++ == $this->expect['masterConns'] ) {
-                       $this->reportExpectationViolated( 'masterConns', "[connect to $server ($db)]" );
+               if ( $isMaster && $this->hits['masterConns']++ >= $this->expect['masterConns'] ) {
+                       $this->reportExpectationViolated(
+                               'masterConns', "[connect to $server ($db)]", $this->hits['masterConns'] );
                }
        }
 
@@ -211,11 +212,11 @@ class TransactionProfiler implements LoggerAwareInterface {
                }
 
                // Report when too many writes/queries happen...
-               if ( $this->hits['queries']++ == $this->expect['queries'] ) {
-                       $this->reportExpectationViolated( 'queries', $query );
+               if ( $this->hits['queries']++ >= $this->expect['queries'] ) {
+                       $this->reportExpectationViolated( 'queries', $query, $this->hits['queries'] );
                }
-               if ( $isWrite && $this->hits['writes']++ == $this->expect['writes'] ) {
-                       $this->reportExpectationViolated( 'writes', $query );
+               if ( $isWrite && $this->hits['writes']++ >= $this->expect['writes'] ) {
+                       $this->reportExpectationViolated( 'writes', $query, $this->hits['writes'] );
                }
                // Report slow queries...
                if ( !$isWrite && $elapsed > $this->expect['readQueryTime'] ) {
index afeffb3..559c28b 100644 (file)
@@ -1822,8 +1822,10 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
        }
 
        /**
-        * @param string $name Table name
-        * @return array (DB name, schema name, table prefix, table name)
+        * Get the table components needed for a query given the currently selected database
+        *
+        * @param string $name Table name in the form of db.schema.table, db.table, or table
+        * @return array (DB name or "" for default, schema name, table prefix, table name)
         */
        protected function qualifiedTableComponents( $name ) {
                # We reverse the explode so that database.table and table both output the correct table.
index e237ef4..8d19bc1 100644 (file)
@@ -527,25 +527,23 @@ abstract class DatabaseMysqlBase extends Database {
        }
 
        public function tableExists( $table, $fname = __METHOD__ ) {
-               $table = $this->tableName( $table, 'raw' );
-               if ( isset( $this->mSessionTempTables[$table] ) ) {
-                       return true; // already known to exist and won't show in SHOW TABLES anyway
-               }
-
                // Split database and table into proper variables as Database::tableName() returns
                // shared tables prefixed with their database, which do not work in SHOW TABLES statements
-               list( $database, $schema, $prefix, $table ) = $this->qualifiedTableComponents( $table );
+               list( $database, , $prefix, $table ) = $this->qualifiedTableComponents( $table );
+               $tableName = "{$prefix}{$table}";
 
-               $table = $prefix . $table;
+               if ( isset( $this->mSessionTempTables[$tableName] ) ) {
+                       return true; // already known to exist and won't show in SHOW TABLES anyway
+               }
 
                // We can't use buildLike() here, because it specifies an escape character
                // other than the backslash, which is the only one supported by SHOW TABLES
-               $encLike = $this->escapeLikeInternal( $table, '\\' );
+               $encLike = $this->escapeLikeInternal( $tableName, '\\' );
 
-               // If the database has been specified (such as for shared tables), add a FROM $database clause
+               // If the database has been specified (such as for shared tables), use "FROM"
                if ( $database !== '' ) {
-                       $database = $this->addIdentifierQuotes( $database );
-                       $query = "SHOW TABLES FROM $database LIKE '$encLike'";
+                       $encDatabase = $this->addIdentifierQuotes( $database );
+                       $query = "SHOW TABLES FROM $encDatabase LIKE '$encLike'";
                } else {
                        $query = "SHOW TABLES LIKE '$encLike'";
                }
index 60b6855..9242414 100644 (file)
@@ -1046,4 +1046,3 @@ class DatabaseSqlite extends Database {
 }
 
 class_alias( DatabaseSqlite::class, 'DatabaseSqlite' );
-
index fd79773..62a078c 100644 (file)
@@ -28,4 +28,3 @@ class DBTransactionError extends DBExpectedError {
 }
 
 class_alias( DBTransactionError::class, 'DBTransactionError' );
-
index 3567204..919f103 100644 (file)
@@ -530,7 +530,7 @@ abstract class LBFactory implements ILBFactory {
                        $prefix
                );
 
-               $this->forEachLB( function( ILoadBalancer $lb ) use ( $prefix ) {
+               $this->forEachLB( function ( ILoadBalancer $lb ) use ( $prefix ) {
                        $lb->setDomainPrefix( $prefix );
                } );
        }
index 79827a2..acb4dce 100644 (file)
@@ -19,7 +19,6 @@
  *
  * @file
  * @ingroup Database
- * @author Aaron Schulz
  */
 namespace Wikimedia\Rdbms;
 
index 0fc00a8..0b70010 100644 (file)
@@ -1257,7 +1257,7 @@ class LoadBalancer implements ILoadBalancer {
                                // This happens if onTransactionIdle() callbacks leave callbacks on *another* DB
                                // (which finished its callbacks already). Warn and recover in this case. Let the
                                // callbacks run in the final commitMasterChanges() in LBFactory::shutdown().
-                               $this->queryLogger->error( __METHOD__ . ": found writes/callbacks pending." );
+                               $this->queryLogger->info( __METHOD__ . ": found writes/callbacks pending." );
                                return;
                        } elseif ( $conn->trxLevel() ) {
                                // This happens for single-DB setups where DB_REPLICA uses the master DB,
index f2bb855..d330d3c 100644 (file)
@@ -16,7 +16,6 @@
  * http://www.gnu.org/copyleft/gpl.html
  *
  * @file
- * @author Aaron Schulz
  */
 use Psr\Log\LoggerInterface;
 use Psr\Log\LoggerAwareInterface;
index e3fc1a6..99c2c3c 100644 (file)
@@ -19,7 +19,6 @@
  *
  * @file
  * @defgroup Redis Redis
- * @author Aaron Schulz
  */
 
 use Psr\Log\LoggerAwareInterface;
index a8af714..526f120 100644 (file)
@@ -55,7 +55,7 @@ class SamplingStatsdClient extends StatsdClient {
                        $samplingRates = [ '*' => $sampleRate ];
                }
                if ( $samplingRates ) {
-                       array_walk( $data, function( $item ) use ( $samplingRates ) {
+                       array_walk( $data, function ( $item ) use ( $samplingRates ) {
                                /** @var $item StatsdData */
                                foreach ( $samplingRates as $pattern => $rate ) {
                                        if ( fnmatch( $pattern, $item->getKey(), FNM_NOESCAPE ) ) {
index 1b7545a..e3b9376 100644 (file)
@@ -40,7 +40,6 @@
  *   - stream   : resource to stream the HTTP response body to
  * Request maps can use integer index 0 instead of 'method' and 1 instead of 'url'.
  *
- * @author Aaron Schulz
  * @since 1.23
  */
 class VirtualRESTServiceClient {
@@ -103,7 +102,7 @@ class VirtualRESTServiceClient {
         * @return array (prefix,VirtualRESTService) or (null,null) if none found
         */
        public function getMountAndService( $path ) {
-               $cmpFunc = function( $a, $b ) {
+               $cmpFunc = function ( $a, $b ) {
                        $al = substr_count( $a, '/' );
                        $bl = substr_count( $b, '/' );
                        if ( $al === $bl ) {
@@ -207,7 +206,7 @@ class VirtualRESTServiceClient {
                }
 
                // Function to get IDs that won't collide with keys in $armoredIndexMap
-               $idFunc = function() use ( &$curUniqueId ) {
+               $idFunc = function () use ( &$curUniqueId ) {
                        return $curUniqueId++;
                };
 
index d26b304..43cb44c 100644 (file)
@@ -38,7 +38,7 @@ class PageDataRequestHandler {
                $parts = explode( '/', $subPage, 2 );
                if ( $parts !== 2 ) {
                        $slot = $parts[0];
-                       if ( $slot === 'main' or $slot === '' ) {
+                       if ( $slot === 'main' || $slot === '' ) {
                                return true;
                        }
                }
index c5501cb..1463499 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Contain classes to list log entries
  *
- * Copyright © 2004 Brion Vibber <brion@pobox.com>, 2008 Aaron Schulz
+ * Copyright © 2004 Brion Vibber <brion@pobox.com>
  * https://www.mediawiki.org/
  *
  * This program is free software; you can redistribute it and/or modify
index e02b8a6..11dce31 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Contain classes to list log entries
  *
- * Copyright © 2004 Brion Vibber <brion@pobox.com>, 2008 Aaron Schulz
+ * Copyright © 2004 Brion Vibber <brion@pobox.com>
  * https://www.mediawiki.org/
  *
  * This program is free software; you can redistribute it and/or modify
index 5b933ce..bbd8bad 100644 (file)
@@ -22,6 +22,7 @@
  * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
  * @since 1.22
  */
+use MediaWiki\MediaWikiServices;
 
 /**
  * This class formats patrol log entries.
@@ -54,7 +55,8 @@ class PatrolLogFormatter extends LogFormatter {
                                'oldid' => $oldid,
                                'diff' => 'prev'
                        ];
-                       $revlink = Linker::link( $target, htmlspecialchars( $revision ), [], $query );
+                       $revlink = MediaWikiServices::getInstance()->getLinkRenderer()->makeLink(
+                               $target, $revision, [], $query );
                } else {
                        $revlink = htmlspecialchars( $revision );
                }
index 0458297..9e5eea5 100644 (file)
@@ -21,6 +21,7 @@
  * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
  * @since 1.26
  */
+use MediaWiki\MediaWikiServices;
 
 /**
  * This class formats protect log entries.
@@ -77,6 +78,7 @@ class ProtectLogFormatter extends LogFormatter {
        }
 
        public function getActionLinks() {
+               $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer();
                $subtype = $this->entry->getSubtype();
                if ( $this->entry->isDeleted( LogPage::DELETED_ACTION ) // Action is hidden
                        || $subtype === 'move_prot' // the move log entry has the right action link
@@ -87,8 +89,8 @@ class ProtectLogFormatter extends LogFormatter {
                // Show history link for all changes after the protection
                $title = $this->entry->getTarget();
                $links = [
-                       Linker::link( $title,
-                               $this->msg( 'hist' )->escaped(),
+                       $linkRenderer->makeLink( $title,
+                               $this->msg( 'hist' )->text(),
                                [],
                                [
                                        'action' => 'history',
@@ -99,9 +101,9 @@ class ProtectLogFormatter extends LogFormatter {
 
                // Show change protection link
                if ( $this->context->getUser()->isAllowed( 'protect' ) ) {
-                       $links[] = Linker::linkKnown(
+                       $links[] = $linkRenderer->makeKnownLink(
                                $title,
-                               $this->msg( 'protect_change' )->escaped(),
+                               $this->msg( 'protect_change' )->text(),
                                [],
                                [ 'action' => 'protect' ]
                        );
index 791330c..4b4d19f 100644 (file)
@@ -176,7 +176,7 @@ class RightsLogFormatter extends LogFormatter {
                        $oldmetadata =& $params['oldmetadata'];
                        // unset old metadata entry to ensure metadata goes at the end of the params array
                        unset( $params['oldmetadata'] );
-                       $params['oldmetadata'] = array_map( function( $index ) use ( $params, $oldmetadata ) {
+                       $params['oldmetadata'] = array_map( function ( $index ) use ( $params, $oldmetadata ) {
                                $result = [ 'group' => $params['4:array:oldgroups'][$index] ];
                                if ( isset( $oldmetadata[$index] ) ) {
                                        $result += $oldmetadata[$index];
@@ -194,7 +194,7 @@ class RightsLogFormatter extends LogFormatter {
                        $newmetadata =& $params['newmetadata'];
                        // unset old metadata entry to ensure metadata goes at the end of the params array
                        unset( $params['newmetadata'] );
-                       $params['newmetadata'] = array_map( function( $index ) use ( $params, $newmetadata ) {
+                       $params['newmetadata'] = array_map( function ( $index ) use ( $params, $newmetadata ) {
                                $result = [ 'group' => $params['5:array:newgroups'][$index] ];
                                if ( isset( $newmetadata[$index] ) ) {
                                        $result += $newmetadata[$index];
index 0e23a88..5c7c7fe 100644 (file)
@@ -3334,7 +3334,7 @@ class WikiPage implements Page, IDBAccessObject {
                HTMLFileCache::clearFileCache( $title );
 
                $revid = $revision ? $revision->getId() : null;
-               DeferredUpdates::addCallableUpdate( function() use ( $title, $revid ) {
+               DeferredUpdates::addCallableUpdate( function () use ( $title, $revid ) {
                        InfoAction::invalidateCache( $title, $revid );
                } );
        }
index 901d576..d3cb566 100644 (file)
@@ -99,13 +99,6 @@ abstract class RangeChronologicalPager extends ReverseChronologicalPager {
         * @return array
         */
        protected function buildQueryInfo( $offset, $limit, $descending ) {
-               if ( count( $this->rangeConds ) > 0 ) {
-                       // If range conditions are set, $offset is not used.
-                       // However, if range conditions aren't set, (such as when using paging links)
-                       // use the provided offset to get the proper query.
-                       $offset = '';
-               }
-
                list( $tables, $fields, $conds, $fname, $options, $join_conds ) = parent::buildQueryInfo(
                        $offset,
                        $limit,
index d8722ba..b0d0e5c 100644 (file)
@@ -550,7 +550,8 @@ class Parser {
                        // Since we're not really outputting HTML, decode the entities and
                        // then re-encode the things that need hiding inside HTML comments.
                        $limitReport = htmlspecialchars_decode( $limitReport );
-                       Hooks::run( 'ParserLimitReport', [ $this, &$limitReport ] );
+                       // Run deprecated hook
+                       Hooks::run( 'ParserLimitReport', [ $this, &$limitReport ], '1.22' );
 
                        // Sanitize for comment. Note '‐' in the replacement is U+2010,
                        // which looks much like the problematic '-'.
@@ -3377,11 +3378,6 @@ class Parser {
 
                list( $callback, $flags ) = $this->mFunctionHooks[$function];
 
-               # Workaround for PHP bug 35229 and similar
-               if ( !is_callable( $callback ) ) {
-                       throw new MWException( "Tag hook for $function is not callable\n" );
-               }
-
                // Avoid PHP 7.1 warning from passing $this by reference
                $parser = $this;
 
@@ -3882,17 +3878,10 @@ class Parser {
                        }
 
                        if ( isset( $this->mTagHooks[$name] ) ) {
-                               # Workaround for PHP bug 35229 and similar
-                               if ( !is_callable( $this->mTagHooks[$name] ) ) {
-                                       throw new MWException( "Tag hook for $name is not callable\n" );
-                               }
                                $output = call_user_func_array( $this->mTagHooks[$name],
                                        [ $content, $attributes, $this, $frame ] );
                        } elseif ( isset( $this->mFunctionTagHooks[$name] ) ) {
                                list( $callback, ) = $this->mFunctionTagHooks[$name];
-                               if ( !is_callable( $callback ) ) {
-                                       throw new MWException( "Tag hook for $name is not callable\n" );
-                               }
 
                                // Avoid PHP 7.1 warning from passing $this by reference
                                $parser = $this;
@@ -4761,7 +4750,7 @@ class Parser {
         * @throws MWException
         * @return callable|null The old value of the mTagHooks array associated with the hook
         */
-       public function setHook( $tag, $callback ) {
+       public function setHook( $tag, callable $callback ) {
                $tag = strtolower( $tag );
                if ( preg_match( '/[<>\r\n]/', $tag, $m ) ) {
                        throw new MWException( "Invalid character {$m[0]} in setHook('$tag', ...) call" );
@@ -4792,7 +4781,7 @@ class Parser {
         * @throws MWException
         * @return callable|null The old value of the mTagHooks array associated with the hook
         */
-       public function setTransparentTagHook( $tag, $callback ) {
+       public function setTransparentTagHook( $tag, callable $callback ) {
                $tag = strtolower( $tag );
                if ( preg_match( '/[<>\r\n]/', $tag, $m ) ) {
                        throw new MWException( "Invalid character {$m[0]} in setTransparentHook('$tag', ...) call" );
@@ -4855,7 +4844,7 @@ class Parser {
         * @throws MWException
         * @return string|callable The old callback function for this name, if any
         */
-       public function setFunctionHook( $id, $callback, $flags = 0 ) {
+       public function setFunctionHook( $id, callable $callback, $flags = 0 ) {
                global $wgContLang;
 
                $oldVal = isset( $this->mFunctionHooks[$id] ) ? $this->mFunctionHooks[$id][0] : null;
@@ -4907,7 +4896,7 @@ class Parser {
         * @throws MWException
         * @return null
         */
-       public function setFunctionTagHook( $tag, $callback, $flags ) {
+       public function setFunctionTagHook( $tag, callable $callback, $flags ) {
                $tag = strtolower( $tag );
                if ( preg_match( '/[<>\r\n]/', $tag, $m ) ) {
                        throw new MWException( "Invalid character {$m[0]} in setFunctionTagHook('$tag', ...) call" );
@@ -6081,7 +6070,7 @@ class Parser {
                $e = new Exception;
                $this->mInParse = $e->getTraceAsString();
 
-               $recursiveCheck = new ScopedCallback( function() {
+               $recursiveCheck = new ScopedCallback( function () {
                        $this->mInParse = false;
                } );
 
index 1f0e19e..76a7e1e 100644 (file)
@@ -138,20 +138,6 @@ class ParserCache {
         * @return bool|mixed|string
         */
        public function getKey( $article, $popts, $useOutdated = true ) {
-               $dummy = null;
-               return $this->getKeyReal( $article, $popts, $useOutdated, $dummy );
-       }
-
-       /**
-        * Temporary internal function to allow accessing $usedOptions
-        * @todo Merge this back to self::getKey() when ParserOptions::optionsHashPre30() is removed
-        * @param WikiPage $article
-        * @param ParserOptions $popts
-        * @param bool $useOutdated (default true)
-        * @param array &$usedOptions Don't use this, it will go away soon
-        * @return bool|mixed|string
-        */
-       private function getKeyReal( $article, $popts, $useOutdated, &$usedOptions ) {
                global $wgCacheEpoch;
 
                if ( $popts instanceof User ) {
@@ -218,8 +204,7 @@ class ParserCache {
 
                $touched = $article->getTouched();
 
-               $usedOptions = null;
-               $parserOutputKey = $this->getKeyReal( $article, $popts, $useOutdated, $usedOptions );
+               $parserOutputKey = $this->getKey( $article, $popts, $useOutdated );
                if ( $parserOutputKey === false ) {
                        wfIncrStats( 'pcache.miss.absent' );
                        return false;
@@ -228,13 +213,6 @@ class ParserCache {
                $casToken = null;
                /** @var ParserOutput $value */
                $value = $this->mMemc->get( $parserOutputKey, $casToken, BagOStuff::READ_VERIFIED );
-               if ( !$value ) {
-                       $parserOutputKey = $this->getParserOutputKey(
-                               $article,
-                               $popts->optionsHashPre30( $usedOptions, $article->getTitle() )
-                       );
-                       $value = $this->mMemc->get( $parserOutputKey, $casToken, BagOStuff::READ_VERIFIED );
-               }
                if ( !$value ) {
                        wfDebug( "ParserOutput cache miss.\n" );
                        wfIncrStats( "pcache.miss.absent" );
@@ -327,13 +305,6 @@ class ParserCache {
                        // ...and its pointer
                        $this->mMemc->set( $this->getOptionsKey( $page ), $optionsKey, $expire );
 
-                       // Normally, when there was no key change, the above would have
-                       // overwritten the old entry. Delete that old entry to save disk
-                       // space.
-                       $oldParserOutputKey = $this->getParserOutputKey( $page,
-                               $popts->optionsHashPre30( $optionsKey->mUsedOptions, $page->getTitle() ) );
-                       $this->mMemc->delete( $oldParserOutputKey );
-
                        Hooks::run(
                                'ParserCacheSaveComplete',
                                [ $this, $parserOutput, $page->getTitle(), $popts, $revId ]
index 5be0321..4809917 100644 (file)
@@ -1269,8 +1269,7 @@ class ParserOptions {
                // Feb 2015 (instead the parser outputs a constant placeholder and post-parse
                // processing handles the option). But Wikibase forces it in $forOptions
                // and expects the cache key to still vary on it for T85252.
-               // @todo Deprecate and remove this behavior after optionsHashPre30() is
-               //  removed (Wikibase can use addExtraKey() or something instead).
+               // @deprecated since 1.30, Wikibase should use addExtraKey() or something instead.
                if ( in_array( 'editsection', $forOptions, true ) ) {
                        $options['editsection'] = $this->mEditSection;
                        $defaults['editsection'] = true;
@@ -1321,98 +1320,6 @@ class ParserOptions {
                return $confstr;
        }
 
-       /**
-        * Generate the hash used before MediaWiki 1.30
-        * @since 1.30
-        * @deprecated since 1.30. Do not use this unless you're ParserCache.
-        * @param array $forOptions
-        * @param Title $title Used to get the content language of the page (since r97636)
-        * @return string Page rendering hash
-        */
-       public function optionsHashPre30( $forOptions, $title = null ) {
-               global $wgRenderHashAppend;
-
-               // FIXME: Once the cache key is reorganized this argument
-               // can be dropped. It was used when the math extension was
-               // part of core.
-               $confstr = '*';
-
-               // Space assigned for the stubthreshold but unused
-               // since it disables the parser cache, its value will always
-               // be 0 when this function is called by parsercache.
-               if ( in_array( 'stubthreshold', $forOptions ) ) {
-                       $confstr .= '!' . $this->options['stubthreshold'];
-               } else {
-                       $confstr .= '!*';
-               }
-
-               if ( in_array( 'dateformat', $forOptions ) ) {
-                       $confstr .= '!' . $this->getDateFormat();
-               }
-
-               if ( in_array( 'numberheadings', $forOptions ) ) {
-                       $confstr .= '!' . ( $this->options['numberheadings'] ? '1' : '' );
-               } else {
-                       $confstr .= '!*';
-               }
-
-               if ( in_array( 'userlang', $forOptions ) ) {
-                       $confstr .= '!' . $this->options['userlang']->getCode();
-               } else {
-                       $confstr .= '!*';
-               }
-
-               if ( in_array( 'thumbsize', $forOptions ) ) {
-                       $confstr .= '!' . $this->options['thumbsize'];
-               } else {
-                       $confstr .= '!*';
-               }
-
-               // add in language specific options, if any
-               // @todo FIXME: This is just a way of retrieving the url/user preferred variant
-               if ( !is_null( $title ) ) {
-                       $confstr .= $title->getPageLanguage()->getExtraHashOptions();
-               } else {
-                       global $wgContLang;
-                       $confstr .= $wgContLang->getExtraHashOptions();
-               }
-
-               $confstr .= $wgRenderHashAppend;
-
-               // @note: as of Feb 2015, core never sets the editsection flag, since it uses
-               // <mw:editsection> tags to inject editsections on the fly. However, extensions
-               // may be using it by calling ParserOption::optionUsed resp. ParserOutput::registerOption
-               // directly. At least Wikibase does at this point in time.
-               if ( !in_array( 'editsection', $forOptions ) ) {
-                       $confstr .= '!*';
-               } elseif ( !$this->mEditSection ) {
-                       $confstr .= '!edit=0';
-               }
-
-               if ( $this->options['printable'] && in_array( 'printable', $forOptions ) ) {
-                       $confstr .= '!printable=1';
-               }
-
-               if ( $this->options['wrapclass'] !== 'mw-parser-output' &&
-                       in_array( 'wrapclass', $forOptions )
-               ) {
-                       $confstr .= '!wrapclass=' . $this->options['wrapclass'];
-               }
-
-               if ( $this->mExtraKey != '' ) {
-                       $confstr .= $this->mExtraKey;
-               }
-
-               // Give a chance for extensions to modify the hash, if they have
-               // extra options or other effects on the parser cache.
-               Hooks::run( 'PageRenderingHash', [ &$confstr, $this->getUser(), &$forOptions ] );
-
-               // Make it a valid memcached key fragment
-               $confstr = str_replace( ' ', '_', $confstr );
-
-               return $confstr;
-       }
-
        /**
         * Test whether these options are safe to cache
         * @since 1.30
index 5a15ddf..65ea833 100644 (file)
@@ -16,7 +16,6 @@
  * http://www.gnu.org/copyleft/gpl.html
  *
  * @file
- * @author Aaron Schulz
  */
 use Psr\Log\LoggerInterface;
 
index 0ce8087..41260a8 100644 (file)
@@ -27,7 +27,6 @@
  * $wgProfiler['visible'] = true;
  * @endcode
  *
- * @author Aaron Schulz
  * @ingroup Profiler
  * @since 1.25
  */
@@ -73,7 +72,7 @@ class ProfilerSectionOnly extends Profiler {
         */
        protected function getFunctionReport() {
                $data = $this->getFunctionStats();
-               usort( $data, function( $a, $b ) {
+               usort( $data, function ( $a, $b ) {
                        if ( $a['real'] === $b['real'] ) {
                                return 0;
                        }
index 1bf4f54..09191ee 100644 (file)
@@ -47,8 +47,7 @@
  * a drop-in replacement for Xhprof. Just change the XHPROF_FLAGS_* constants
  * to TIDEWAYS_FLAGS_*.
  *
- * @author Bryan Davis <bd808@wikimedia.org>
- * @copyright © 2014 Bryan Davis and Wikimedia Foundation.
+ * @copyright © 2014 Wikimedia Foundation and contributors
  * @ingroup Profiler
  * @see Xhprof
  * @see https://php.net/xhprof
@@ -201,7 +200,7 @@ class ProfilerXhprof extends Profiler {
         */
        protected function getFunctionReport() {
                $data = $this->getFunctionStats();
-               usort( $data, function( $a, $b ) {
+               usort( $data, function ( $a, $b ) {
                        if ( $a['real'] === $b['real'] ) {
                                return 0;
                        }
index 7e3c398..fdfb24d 100644 (file)
@@ -19,7 +19,6 @@
  *
  * @file
  * @ingroup Profiler
- * @author Aaron Schulz
  */
 use Wikimedia\ScopedCallback;
 
index 39a8a3d..ce262bd 100644 (file)
@@ -378,7 +378,7 @@ class ExtensionProcessor implements Processor {
 
        protected function extractExtensionMessagesFiles( $dir, array $info ) {
                if ( isset( $info['ExtensionMessagesFiles'] ) ) {
-                       $this->globals["wgExtensionMessagesFiles"] += array_map( function( $file ) use ( $dir ) {
+                       $this->globals["wgExtensionMessagesFiles"] += array_map( function ( $file ) use ( $dir ) {
                                return "$dir/$file";
                        }, $info['ExtensionMessagesFiles'] );
                }
index 0c5a67e..eac04a9 100644 (file)
@@ -400,7 +400,7 @@ class ExtensionRegistry {
        protected function processAutoLoader( $dir, array $info ) {
                if ( isset( $info['AutoloadClasses'] ) ) {
                        // Make paths absolute, relative to the JSON file
-                       return array_map( function( $file ) use ( $dir ) {
+                       return array_map( function ( $file ) use ( $dir ) {
                                return "$dir/$file";
                        }, $info['AutoloadClasses'] );
                } else {
index 4473bb2..7d05265 100644 (file)
@@ -206,7 +206,7 @@ abstract class SearchEngine {
        }
 
        /**
-        * Get chars legal for search.
+        * Get chars legal for search (at query time).
         * NOTE: usage as static is deprecated and preserved only as BC measure
         * @return string
         */
@@ -214,6 +214,16 @@ abstract class SearchEngine {
                return "A-Za-z_'.0-9\\x80-\\xFF\\-";
        }
 
+       /**
+        * Get chars legal for search (at index time).
+        *
+        * @since 1.30
+        * @return string
+        */
+       public function legalSearchCharsForUpdate() {
+               return static::legalSearchChars();
+       }
+
        /**
         * Set the maximum number of results to return
         * and how many to skip before returning the first.
@@ -236,7 +246,7 @@ abstract class SearchEngine {
                if ( $namespaces ) {
                        // Filter namespaces to only keep valid ones
                        $validNs = $this->searchableNamespaces();
-                       $namespaces = array_filter( $namespaces, function( $ns ) use( $validNs ) {
+                       $namespaces = array_filter( $namespaces, function ( $ns ) use( $validNs ) {
                                return $ns < 0 || isset( $validNs[$ns] );
                        } );
                } else {
@@ -464,7 +474,7 @@ abstract class SearchEngine {
                        }
                }
 
-               $ns = array_map( function( $space ) {
+               $ns = array_map( function ( $space ) {
                        return $space == NS_MEDIA ? NS_FILE : $space;
                }, $ns );
 
@@ -550,7 +560,7 @@ abstract class SearchEngine {
         * @return Title[]
         */
        public function extractTitles( SearchSuggestionSet $completionResults ) {
-               return $completionResults->map( function( SearchSuggestion $sugg ) {
+               return $completionResults->map( function ( SearchSuggestion $sugg ) {
                        return $sugg->getSuggestedTitle();
                } );
        }
@@ -564,14 +574,14 @@ abstract class SearchEngine {
        protected function processCompletionResults( $search, SearchSuggestionSet $suggestions ) {
                $search = trim( $search );
                // preload the titles with LinkBatch
-               $titles = $suggestions->map( function( SearchSuggestion $sugg ) {
+               $titles = $suggestions->map( function ( SearchSuggestion $sugg ) {
                        return $sugg->getSuggestedTitle();
                } );
                $lb = new LinkBatch( $titles );
                $lb->setCaller( __METHOD__ );
                $lb->execute();
 
-               $results = $suggestions->map( function( SearchSuggestion $sugg ) {
+               $results = $suggestions->map( function ( SearchSuggestion $sugg ) {
                        return $sugg->getSuggestedTitle()->getPrefixedText();
                } );
 
index 36cbbaa..2c7feeb 100644 (file)
@@ -149,8 +149,8 @@ class SearchMySQL extends SearchDatabase {
                return $regex;
        }
 
-       public static function legalSearchChars() {
-               return "\"*" . parent::legalSearchChars();
+       public function legalSearchCharsForUpdate() {
+               return "\"*" . parent::legalSearchCharsForUpdate();
        }
 
        /**
index c5a5ef1..2e6cb84 100644 (file)
@@ -266,7 +266,7 @@ class SearchOracle extends SearchDatabase {
                        [] );
        }
 
-       public static function legalSearchChars() {
-               return "\"" . parent::legalSearchChars();
+       public function legalSearchCharsForUpdate() {
+               return "\"" . parent::legalSearchCharsForUpdate();
        }
 }
index b40e1aa..5a8995d 100644 (file)
@@ -141,8 +141,8 @@ class SearchSqlite extends SearchDatabase {
                return $regex;
        }
 
-       public static function legalSearchChars() {
-               return "\"*" . parent::legalSearchChars();
+       public function legalSearchCharsForUpdate() {
+               return "\"*" . parent::legalSearchCharsForUpdate();
        }
 
        /**
index caad388..6d54dad 100644 (file)
@@ -180,7 +180,7 @@ class SearchSuggestionSet {
         */
        public static function fromTitles( array $titles ) {
                $score = count( $titles );
-               $suggestions = array_map( function( $title ) use ( &$score ) {
+               $suggestions = array_map( function ( $title ) use ( &$score ) {
                        return SearchSuggestion::fromTitle( $score--, $title );
                }, $titles );
                return new SearchSuggestionSet( $suggestions );
@@ -196,7 +196,7 @@ class SearchSuggestionSet {
         */
        public static function fromStrings( array $titles ) {
                $score = count( $titles );
-               $suggestions = array_map( function( $title ) use ( &$score ) {
+               $suggestions = array_map( function ( $title ) use ( &$score ) {
                        return SearchSuggestion::fromText( $score--, $title );
                }, $titles );
                return new SearchSuggestionSet( $suggestions );
index 882084d..074afe3 100644 (file)
@@ -29,8 +29,7 @@ use UnexpectedValueException;
  * Subclass of UnexpectedValueException that can be annotated with additional
  * data for debug logging.
  *
- * @author Bryan Davis <bd808@wikimedia.org>
- * @copyright © 2016 Bryan Davis and Wikimedia Foundation.
+ * @copyright © 2016 Wikimedia Foundation and contributors
  * @since 1.27
  */
 class MetadataMergeException extends UnexpectedValueException {
index 1145efd..6679098 100644 (file)
@@ -6,7 +6,7 @@
  *
  * Created on Sep 08, 2014
  *
- * Copyright © 2014 Brad Jorsch <bjorsch@wikimedia.org>
+ * Copyright © 2014 Wikimedia Foundation and contributors
  *
  * 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
index f7d7cb2..d3e453a 100644 (file)
@@ -6,7 +6,7 @@
  *
  * Created on Sep 08, 2014
  *
- * Copyright © 2014 Brad Jorsch <bjorsch@wikimedia.org>
+ * Copyright © 2014 Wikimedia Foundation and contributors
  *
  * 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
index 9594952..67c14d8 100644 (file)
@@ -456,7 +456,7 @@ class SpecialPage implements MessageLocalizer {
                $searchEngine->setLimitOffset( $limit, $offset );
                $searchEngine->setNamespaces( [] );
                $result = $searchEngine->defaultPrefixSearch( $search );
-               return array_map( function( Title $t ) {
+               return array_map( function ( Title $t ) {
                        return $t->getPrefixedText();
                }, $result );
        }
index e7030c5..e7c9423 100644 (file)
@@ -2,8 +2,6 @@
 /**
  * Implements Special:Activeusers
  *
- * Copyright © 2008 Aaron Schulz
- *
  * 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
index 1dd78d7..dfdbb06 100644 (file)
@@ -123,7 +123,7 @@ class SpecialBotPasswords extends FormSpecialPage {
                                        $showGrants
                                ),
                                'default' => array_map(
-                                       function( $g ) {
+                                       function ( $g ) {
                                                return "grant-$g";
                                        },
                                        $this->botPassword->getGrants()
@@ -131,14 +131,14 @@ class SpecialBotPasswords extends FormSpecialPage {
                                'tooltips' => array_combine(
                                        array_map( 'MWGrants::getGrantsLink', $showGrants ),
                                        array_map(
-                                               function( $rights ) use ( $lang ) {
+                                               function ( $rights ) use ( $lang ) {
                                                        return $lang->semicolonList( array_map( 'User::getRightDescription', $rights ) );
                                                },
                                                array_intersect_key( MWGrants::getRightsByGrant(), array_flip( $showGrants ) )
                                        )
                                ),
                                'force-options-on' => array_map(
-                                       function( $g ) {
+                                       function ( $g ) {
                                                return "grant-$g";
                                        },
                                        MWGrants::getHiddenGrants()
index 8eaae4c..bee6a39 100644 (file)
@@ -115,7 +115,7 @@ class SpecialChangeContentModel extends FormSpecialPage {
                                'reason' => [
                                        'type' => 'text',
                                        'name' => 'reason',
-                                       'validation-callback' => function( $reason ) {
+                                       'validation-callback' => function ( $reason ) {
                                                $match = EditPage::matchSummarySpamRegex( $reason );
                                                if ( $match ) {
                                                        return $this->msg( 'spamprotectionmatch', $match )->parse();
index e2fa8a3..40706ac 100644 (file)
@@ -21,6 +21,8 @@
  * @ingroup SpecialPage
  */
 
+use MediaWiki\Widget\DateInputWidget;
+
 /**
  * Special:Contributions, show user contributions in a paged list
  *
@@ -665,7 +667,7 @@ class SpecialContributions extends IncludableSpecialPage {
                        'div',
                        [],
                        Xml::label( wfMessage( 'date-range-from' )->text(), 'mw-date-start' ) . ' ' .
-                       new \Mediawiki\Widget\DateInputWidget( [
+                       new DateInputWidget( [
                                'infusable' => true,
                                'id' => 'mw-date-start',
                                'name' => 'start',
@@ -673,7 +675,7 @@ class SpecialContributions extends IncludableSpecialPage {
                                'longDisplayFormat' => true,
                        ] ) . '<br>' .
                        Xml::label( wfMessage( 'date-range-to' )->text(), 'mw-date-end' ) . ' ' .
-                       new \Mediawiki\Widget\DateInputWidget( [
+                       new DateInputWidget( [
                                'infusable' => true,
                                'id' => 'mw-date-end',
                                'name' => 'end',
index 195d08b..1710b39 100644 (file)
@@ -2,8 +2,6 @@
 /**
  * Implements Special:Log
  *
- * Copyright © 2008 Aaron Schulz
- *
  * 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
index a2b5be4..46d7cf7 100644 (file)
@@ -105,7 +105,7 @@ class MovePageForm extends UnlistedSpecialPage {
                $permErrors = $this->oldTitle->getUserPermissionsErrors( 'move', $user );
                if ( count( $permErrors ) ) {
                        // Auto-block user's IP if the account was "hard" blocked
-                       DeferredUpdates::addCallableUpdate( function() use ( $user ) {
+                       DeferredUpdates::addCallableUpdate( function () use ( $user ) {
                                $user->spreadAnyEditBlock();
                        } );
                        throw new PermissionsError( 'move', $permErrors );
index 37006d8..5878e1f 100644 (file)
@@ -20,7 +20,6 @@
  * @since 1.21
  * @file
  * @ingroup SpecialPage
- * @author Brad Jorsch
  */
 
 /**
index 5ec2064..75d104b 100644 (file)
@@ -521,6 +521,10 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
 
                $userShowHiddenCats = $this->getUser()->getBoolOption( 'showhiddencats' );
                $rclistOutput = $list->beginRecentChangesList();
+               if ( $this->isStructuredFilterUiEnabled() ) {
+                       $rclistOutput .= $this->makeLegend();
+               }
+
                foreach ( $rows as $obj ) {
                        if ( $limit == 0 ) {
                                break;
@@ -588,7 +592,9 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                $nondefaults = $opts->getChangedValues();
 
                $panel = [];
-               $panel[] = $this->makeLegend();
+               if ( !$this->isStructuredFilterUiEnabled() ) {
+                       $panel[] = $this->makeLegend();
+               }
                $panel[] = $this->optionsPanel( $defaults, $nondefaults, $numRows );
                $panel[] = '<hr />';
 
index 761610e..cb1e892 100644 (file)
@@ -19,7 +19,6 @@
  *
  * @file
  * @ingroup SpecialPage
- * @author Aaron Schulz
  */
 
 use MediaWiki\Logger\LoggerFactory;
index 002b47c..d0a0317 100644 (file)
@@ -344,7 +344,7 @@ class UserrightsPage extends SpecialPage {
                // UNLESS the user can only add this group (not remove it) and the expiry time
                // is being brought forward (T156784)
                $add = array_filter( $add,
-                       function( $group ) use ( $groups, $groupExpiries, $removable, $ugms ) {
+                       function ( $group ) use ( $groups, $groupExpiries, $removable, $ugms ) {
                                if ( isset( $groupExpiries[$group] ) &&
                                        !in_array( $group, $removable ) &&
                                        isset( $ugms[$group] ) &&
@@ -437,12 +437,12 @@ class UserrightsPage extends SpecialPage {
 
                // make sure $oldUGMs and $newUGMs are in the same order, and serialise
                // each UGM object to a simplified array
-               $oldUGMs = array_map( function( $group ) use ( $oldUGMs ) {
+               $oldUGMs = array_map( function ( $group ) use ( $oldUGMs ) {
                        return isset( $oldUGMs[$group] ) ?
                                self::serialiseUgmForLog( $oldUGMs[$group] ) :
                                null;
                }, $oldGroups );
-               $newUGMs = array_map( function( $group ) use ( $newUGMs ) {
+               $newUGMs = array_map( function ( $group ) use ( $newUGMs ) {
                        return isset( $newUGMs[$group] ) ?
                                self::serialiseUgmForLog( $newUGMs[$group] ) :
                                null;
index caa0e1f..30c4a0b 100644 (file)
@@ -511,7 +511,7 @@ class SpecialVersion extends SpecialPage {
                                // in their proper section
                                continue;
                        }
-                       $authors = array_map( function( $arr ) {
+                       $authors = array_map( function ( $arr ) {
                                // If a homepage is set, link to it
                                if ( isset( $arr['homepage'] ) ) {
                                        return "[{$arr['homepage']} {$arr['name']}]";
index e2f4d4b..0665e11 100644 (file)
@@ -1,7 +1,5 @@
 <?php
 /**
- * Copyright © 2008 Aaron Schulz
- *
  * 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
index 3467b49..b0c12e4 100644 (file)
@@ -1891,7 +1891,7 @@ class Balancer {
                        $bad = array_uintersect_assoc(
                                $this->allowedHtmlElements,
                                BalanceSets::$unsupportedSet[BalanceSets::HTML_NAMESPACE],
-                               function( $a, $b ) {
+                               function ( $a, $b ) {
                                        // Ignore the values (just intersect the keys) by saying
                                        // all values are equal to each other.
                                        return 0;
index 0868ce6..57bb22a 100644 (file)
@@ -1411,7 +1411,9 @@ abstract class UploadBase {
                        'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd',
                        'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd',
                        'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-basic.dtd',
-                       'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd'
+                       'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd',
+                       // https://phabricator.wikimedia.org/T168856
+                       'http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd',
                ];
                if ( $type !== 'PUBLIC'
                        || !in_array( $systemId, $allowedDTDs )
index 4d16594..52c14f7 100644 (file)
@@ -2506,7 +2506,7 @@ class User implements IDBAccessObject {
                        $cache->delete( $key, 1 );
                } else {
                        wfGetDB( DB_MASTER )->onTransactionPreCommitOrIdle(
-                               function() use ( $cache, $key ) {
+                               function () use ( $cache, $key ) {
                                        $cache->delete( $key );
                                },
                                __METHOD__
@@ -3698,7 +3698,7 @@ class User implements IDBAccessObject {
                        }
 
                        // Try to update the DB post-send and only if needed...
-                       DeferredUpdates::addCallableUpdate( function() use ( $title, $oldid ) {
+                       DeferredUpdates::addCallableUpdate( function () use ( $title, $oldid ) {
                                if ( !$this->getNewtalk() ) {
                                        return; // no notifications to clear
                                }
index 39b65c3..fc8bde9 100644 (file)
@@ -77,7 +77,7 @@ class BatchRowUpdate {
                $this->reader = $reader;
                $this->writer = $writer;
                $this->generator = $generator;
-               $this->output = function() {
+               $this->output = function () {
                }; // nop
        }
 
index c6d1a54..dd9f2d9 100644 (file)
@@ -18,7 +18,6 @@
  * http://www.gnu.org/copyleft/gpl.html
  *
  * @file
- * @author Aaron Schulz
  */
 use Wikimedia\Assert\Assert;
 use MediaWiki\MediaWikiServices;
index dd67fa8..f0ace2c 100644 (file)
@@ -715,4 +715,3 @@ class ZipDirectoryReader {
                }
        }
 }
-
index 0d0d90d..e51a8ed 100644 (file)
@@ -230,7 +230,7 @@ class ConverterRule {
                        if ( $disp === false && array_key_exists( $variant, $unidtable ) ) {
                                $disp = array_values( $unidtable[$variant] )[0];
                        }
-                       // or display frist text under disable manual convert
+                       // or display first text under disable manual convert
                        if ( $disp === false && $this->mConverter->mManualLevel[$variant] == 'disable' ) {
                                if ( count( $bidtable ) > 0 ) {
                                        $disp = array_values( $bidtable )[0];
index 0cddc99..22377c2 100644 (file)
@@ -125,4 +125,12 @@ class FakeConverter {
 
        public function updateConversionTable( Title $title ) {
        }
+
+       /**
+        * Used by test suites which need to reset the converter state.
+        *
+        * @private
+        */
+       private function reloadTables() {
+       }
 }
index 19d644c..2137786 100644 (file)
@@ -891,9 +891,11 @@ class LanguageConverter {
        /**
         * Reload the conversion tables.
         *
+        * Also used by test suites which need to reset the converter state.
+        *
         * @private
         */
-       function reloadTables() {
+       private function reloadTables() {
                if ( $this->mTables ) {
                        unset( $this->mTables );
                }
index 1c60380..e2d890f 100644 (file)
        "anontalk": "Mōtung",
        "navigation": "Þurhfōr",
        "and": "&#32;and",
-       "qbfind": "Findan",
-       "qbbrowse": "Þurhsēcan",
-       "qbedit": "Adihtan",
-       "qbpageoptions": "Þes tramet",
-       "qbmyoptions": "Mīne trametas",
        "faq": "Oftost ascoda ascunga",
-       "faqpage": "Project:FAQ",
        "actions": "Fremmunga",
        "namespaces": "Namstedas",
        "variants": "Missenlīcnessa",
        "view": "Sihþ",
        "view-foreign": "Sihþ on $1",
        "edit": "Ādihtan",
+       "edit-local": "Adiht seo stowlice gemearcunge",
        "create": "Scieppan",
        "create-local": "Besettan stōwlice gemearcunge",
-       "editthispage": "Adihtan þisne tramet",
-       "create-this-page": "Scieppan þisne tramet",
        "delete": "Forlēosan",
-       "deletethispage": "Forlēosan þisne tramet",
-       "undeletethispage": "Undōn þā forlēosunge þisses trametes",
        "undelete_short": "Scieppan {{PLURAL:$1|āne adihtunge|$1 adihtunga}} eft",
        "viewdeleted_short": "Sēon {{PLURAL:$1|āne forlorene adihtunge|$1 forlorenra adihtunga}}",
        "protect": "Beorgan",
        "protect_change": "Wendan",
-       "protectthispage": "Beorgan þisne tramet",
        "unprotect": "Wendan beorgunge",
-       "unprotectthispage": "Andwendan beorgune þisses trametes",
        "newpage": "Nīwe tramet",
-       "talkpage": "Sprecan ymbe þisne tramet",
        "talkpagelinktext": "Mōtung",
        "specialpage": "Syndrig tramet",
        "personaltools": "Āgnu tōl",
-       "articlepage": "Sēon innunge tramet",
        "talk": "Mōtung",
        "views": "Sihþa",
        "toolbox": "Tōl",
-       "userpage": "Sēon brūcendes tramet",
-       "projectpage": "Sēon weorces tramet",
        "imagepage": "Sēon ymelan tramet",
        "mediawikipage": "Sēon ǣrendgewrita tramet",
        "templatepage": "Sēon bysene tramet",
        "nospecialpagetext": "<strong>Þū hafast abiden ungenges syndriges trametes.</strong>\n\nGetæl gengra syndrigra trameta cann man findan be [[Special:SpecialPages|þǣm syndrigra trameta getæle]].",
        "error": "Wōh",
        "databaseerror": "Cȳþþuhordes wōh",
+       "databaseerror-textcl": "Gecyþneshordfræge misgedwild belamp",
        "databaseerror-error": "Wōg: $1",
        "laggedslavemode": "'''Warnung:''' Wēnunga næbbe se tramet nīwlīca nīwunga.",
        "readonly": "Ġifhord locen",
        "filerenameerror": "Ne cūðe ednemnan ymelan \"$1\" tō \"$2\".",
        "filedeleteerror": "Ne cūðe forlēosan þā ymelan \"$1\".",
        "directorycreateerror": "We ne mot scieppan ymbfeng \"$1\"",
+       "directoryreadonlyerror": "Ymbfeng \"$1\" is ræd-anlice",
+       "directorynotreadableerror": "Ymbfeng \"S1\" nis rædlic",
        "filenotfound": "Ne cūðe findan ymelan \"$1\".",
+       "unexpected": "Unbeþoht weorþ: \"$1\"=\"$2\"",
        "formerror": "Wōh: ne cūðe cȳþþugewrit forþsendan.",
        "badarticleerror": "Þēos dǣd ne cann bēon gefremed on þissum tramete.",
+       "cannotdelete": "Se tramet oþðe ymele \"$1\" ne meahte beon ahwiten. Meahtlice hæfþ adihtere ær hine astricon.",
        "cannotdelete-title": "Ne cann forlēosan þone tramet \"$1\"",
        "badtitle": "Nā genge titul",
        "querypage-no-updates": "Ednīwunga for þissum tramete ne sindon nū gelīfeda. \nCȳþþu hēr ne biþ hraðe ednīwod.",
index 01d0785..546491a 100644 (file)
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (глядзіце таксама [[Special:NewPages|сьпіс новых старонак]])",
        "recentchanges-submit": "Паказаць",
        "rcfilters-activefilters": "Актыўныя фільтры",
+       "rcfilters-advancedfilters": "Пашыраныя фільтры",
        "rcfilters-quickfilters": "Захаваныя налады фільтру",
        "rcfilters-quickfilters-placeholder-title": "Спасылкі яшчэ не захаваныя",
        "rcfilters-quickfilters-placeholder-description": "Каб захаваць налады вашага фільтру і выкарыстаць іх пазьней, націсьніце на выяву закладкі ў зоне актыўнага фільтру ніжэй.",
        "rcfilters-filter-previousrevision-description": "Усе зьмены, якія не зьяўляюцца самымі апошнімі на старонцы.",
        "rcfilters-filter-excluded": "Выключаны",
        "rcfilters-tag-prefix-namespace-inverted": "<strong>:не</strong> $1",
-       "rcfilters-view-tags": "Ð\9cеÑ\82кі",
+       "rcfilters-view-tags": "Ð\9fÑ\80аÑ\9eкÑ\96 Ð·Ñ\8c Ð¼ÐµÑ\82камі",
        "rcnotefrom": "Ніжэй {{PLURAL:$5|знаходзіцца зьмена|знаходзяцца зьмены}} з <strong>$4 $3</strong> (да <strong>$1</strong> на старонку).",
        "rclistfromreset": "Скінуць выбар даты",
        "rclistfrom": "Паказаць зьмены з $2 $3",
        "authform-notoken": "Адсутнічае токен",
        "authform-wrongtoken": "Няслушны токен",
        "specialpage-securitylevel-not-allowed-title": "Не дазволена",
+       "specialpage-securitylevel-not-allowed": "Выбачайце, вам не дазволена выкарыстоўваць гэтую старонку, бо вашая асоба ня можа быць пацьверджаная.",
+       "authpage-cannot-login": "Не атрымалася пачаць уваход у сыстэму.",
+       "authpage-cannot-login-continue": "Немагчыма працягнуць уваход у сыстэму. Падобна, што тэрмін вашай сэсіі скончыўся.",
+       "authpage-cannot-create": "Немагчыма пачаць стварэньне рахунку.",
        "changecredentials": "Зьмена ўліковых зьвестак",
        "removecredentials": "Выдаленьне ўліковых зьвестак",
        "removecredentials-submit": "Выдаліць уліковыя зьвесткі",
index 1576f4d..9cdf002 100644 (file)
        "apisandbox-submit": "Направи запитване",
        "apisandbox-reset": "Изчистване",
        "apisandbox-retry": "Повторен опит",
-       "apisandbox-loading": "Зареждане на информация за API-модул \"$1\"...",
-       "apisandbox-load-error": "Възникна грешка при зареждането на информация за API-модул \"$1\": $2",
+       "apisandbox-loading": "Зареждане на информация за API-модул „$1“...",
+       "apisandbox-load-error": "Възникна грешка при зареждането на информация за API-модул „$1“: $2",
        "apisandbox-no-parameters": "Този API-модул няма параметри.",
        "apisandbox-helpurls": "Връзки за помощ",
        "apisandbox-examples": "Примери",
        "apisandbox-dynamic-parameters": "Допълнителни параметри",
        "apisandbox-dynamic-parameters-add-label": "Добавяне на параметър:",
        "apisandbox-dynamic-parameters-add-placeholder": "Име на параметъра",
-       "apisandbox-dynamic-error-exists": "Параметър с име \"$1\" вече съществува.",
+       "apisandbox-dynamic-error-exists": "Параметър с име „$1“ вече съществува.",
        "apisandbox-results": "Резултати",
        "apisandbox-request-url-label": "URL-адрес на заявката:",
        "apisandbox-continue": "Продължаване",
        "logempty": "Дневникът не съдържа записи, отговарящи на избрания критерий.",
        "log-title-wildcard": "Търсене на заглавия, започващи със",
        "showhideselectedlogentries": "Промяна на видимостта на избраните записи",
-       "checkbox-select": "Ð\98збеÑ\80и: $1",
+       "checkbox-select": "Ð\98збоÑ\80: $1",
        "checkbox-all": "Всички",
-       "checkbox-none": "никои",
-       "checkbox-invert": "обÑ\8aÑ\80ни избора",
+       "checkbox-none": "Ð\9dикои",
+       "checkbox-invert": "Ð\9eбÑ\80Ñ\8aÑ\89ане Ð½Ð° избора",
        "allpages": "Всички страници",
        "nextpage": "Следваща страница ($1)",
        "prevpage": "Предходна страница ($1)",
        "watchlistanontext": "За преглеждане и редактиране на списъка за наблюдение се изисква влизане в системата.",
        "watchnologin": "Не сте влезли",
        "addwatch": "Добавяне към списъка за наблюдение",
-       "addedwatchtext": "Страницата „'''[[:$1]]'''“ и беседата ѝ бяха добавени към [[Special:Watchlist|списъка Ви за наблюдение]].",
+       "addedwatchtext": "Страницата „[[:$1]]“ и беседата ѝ бяха добавени към [[Special:Watchlist|списъка Ви за наблюдение]].",
        "addedwatchtext-short": "Страницата „$1“ беше добавена към списъка Ви за наблюдение.",
        "removewatch": "Премахване от списъка за наблюдение",
        "removedwatchtext": "Страницата „[[:$1]]“ и беседата ѝ бяха премахнати от [[Special:Watchlist|списъка Ви за наблюдение]].",
        "watchlist-details": "{{PLURAL:$1|Една наблюдавана страница|$1 наблюдавани страници}} от списъка Ви за наблюдение (без беседи).",
        "wlheader-enotif": "Известяването по е-поща е включено.",
        "wlheader-showupdated": "Страниците, които са били променени след последния път, когато сте ги посетили, са показани в '''получер'''.",
-       "wlnote": "{{PLURAL:$1|Показана е последната промяна|Показани са последните '''$1''' промени}} през {{PLURAL:$2|последния час|последните '''$2''' часа}}, започвайки от от $3, $4.",
+       "wlnote": "{{PLURAL:$1|Показана е последната промяна|Показани са последните <strong>$1</strong> промени}} през {{PLURAL:$2|последния час|последните <strong>$2</strong> часа}}, започвайки от от $3, $4.",
        "wlshowlast": "Показване на последните $1 часа $2 дни",
        "watchlist-hide": "Скриване",
        "watchlist-submit": "Показване",
        "alreadyrolled": "Редакцията на [[:$1]], направена от [[User:$2|$2]] ([[User talk:$2|Беседа]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]), не може да бъде отменена. Някой друг вече е редактирал страницата или е отменил промените.\n\nПоследната редакция е на [[User:$3|$3]] ([[User talk:$3|Беседа]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
        "editcomment": "Резюмето на редакцията беше: <em>$1</em>.",
        "revertpage": "Премахване на [[Special:Contributions/$2|редакции на $2]] ([[User talk:$2|беседа]]); възвръщане към последната версия на [[User:$1|$1]]",
-       "revertpage-nouser": "Ð\9fÑ\80емаÑ\85наÑ\82и Ñ\80едакÑ\86ии Ð½Ð° (Ñ\81кÑ\80иÑ\82о Ð¿Ð¾Ñ\82Ñ\80ебиÑ\82елÑ\81ко Ð¸Ð¼Ðµ) Ð¸ Ð²Ñ\80Ñ\8aÑ\89ане ÐºÑ\8aм последната версия на [[User:$1|$1]]",
+       "revertpage-nouser": "Ð\92Ñ\80Ñ\8aÑ\89ане Ð½Ð° Ñ\80едакÑ\86ии Ð½Ð° Ñ\81кÑ\80иÑ\82 Ð¿Ð¾Ñ\82Ñ\80ебиÑ\82ел Ð´Ð¾ последната версия на [[User:$1|$1]]",
        "rollback-success": "Отменени редакции на {{GENDER:$3|$1}};\nвъзвръщане към последната версия на {{GENDER:$4|$2}}.",
        "sessionfailure-title": "Прекъсната сесия",
        "sessionfailure": "Изглежда има проблем със сесията ви; действието беше отказано като предпазна мярка срещу крадене на сесията. Натиснете бутона за връщане на браузъра, презаредете страницата, от която сте дошли, и опитайте отново.",
        "changecontentmodel-model-label": "Нов модел на съдържанието",
        "changecontentmodel-reason-label": "Причина:",
        "changecontentmodel-submit": "Променяне",
-       "changecontentmodel-success-title": "Моделът на съдържание бе променен",
+       "changecontentmodel-success-title": "Моделът на съдържанието беше променен",
        "changecontentmodel-success-text": "Типът на съдържанието на [[:$1]] е успешно променен.",
        "log-name-contentmodel": "Дневник на промените на модела на съдържанието",
        "log-description-contentmodel": "Страницата показва промените в модела на съдържанието на страниците и страниците, създадени с модел на съдържанието различен от този по подразбиране.",
        "ipaddressorusername": "IP-адрес или потребител:",
        "ipbexpiry": "Срок:",
        "ipbreason": "Причина:",
-       "ipbreason-dropdown": "* Общи причини за блокиране\n** Въвеждане на невярна информация\n** Премахване на съдържание от страниците\n** Добавяне на спам/нежелани външни препратки\n** Въвеждане на безсмислици в страниците\n** Заплашително поведение/тормоз\n** Злупотреба с няколко потребителски сметки\n** Неприемливо потребителско име",
+       "ipbreason-dropdown": "* Общи причини за блокиране\n** Въвеждане на невярна информация\n** Премахване на съдържание от страниците\n** Добавяне на спам/нежелани външни препратки\n** Въвеждане на безсмислици в страниците\n** Заплашително поведение/тормоз\n** Злоупотреба с няколко потребителски сметки\n** Неприемливо потребителско име",
        "ipb-hardblock": "Спиране на възможността влезли потребители да редактират от този IP адрес",
        "ipbcreateaccount": "Забрана за създаване на потребителски сметки",
        "ipbemailban": "Забрана на потребителя да праща е-поща",
        "cant-move-category-page": "Нямате необходимите права за преместване на страници на категории.",
        "cant-move-to-category-page": "Нямате необходимите права за преместване на страница в страница на категория.",
        "cant-move-subpages": "Нямате права за преместване на подстраници.",
-       "namespace-nosubpages": "Именно пространство \"$1\" не позволява подстраници.",
+       "namespace-nosubpages": "Именно пространство „$1“ не позволява подстраници.",
        "newtitle": "Ново заглавие:",
        "move-watch": "Наблюдаване на страницата",
        "movepagebtn": "Преместване",
index 092f159..e93c826 100644 (file)
        "anontalk": "बातचीत",
        "navigation": "नेविगेशन",
        "and": "&#32;अउर",
-       "qbfind": "खोज",
-       "qbbrowse": "ब्राउज",
-       "qbedit": "संपादन",
-       "qbpageoptions": "ई पन्ना",
-       "qbmyoptions": "हमार पन्ना",
        "faq": "आम सवाल",
-       "faqpage": "Project:अक्सर पूछल जाए वाला सवाल",
        "actions": "एक्शन",
        "namespaces": "नाँवस्थान",
        "variants": "अउरी प्रकार",
        "edit-local": "लोकल विवरण संपादन",
        "create": "बनाईं",
        "create-local": "लोकल विवरण जोड़ीं",
-       "editthispage": "ए पन्ना के संपादन करीं",
-       "create-this-page": "ई पन्ना बनाईं",
        "delete": "हटाईं",
-       "deletethispage": "ए पन्ना के हटाईं",
-       "undeletethispage": "हटावल पन्ना वापस ले आईं",
        "undelete_short": "{{PLURAL:$1|एक ठो हटावल गइल संपादन|$1 ठे हटावल गइल संपादन कुल}} वापस ले आईं",
        "viewdeleted_short": "{{PLURAL:$1|एक ठो हटावल गइल संपादन|$1 हटावल गइल संपादन}} देखीं",
        "protect": "सुरक्षित करीं",
        "protect_change": "बदलीं",
-       "protectthispage": "ए पन्ना के सुरक्षित करीं।",
        "unprotect": "सुरक्षा बदलीं",
-       "unprotectthispage": "ए पन्ना के सुरक्षा बदलीं",
        "newpage": "नया पन्ना",
-       "talkpage": "ए पन्ना पर चर्चा करीं",
        "talkpagelinktext": "बातचीत",
        "specialpage": "खास पन्ना",
        "personaltools": "निजी औजार",
-       "articlepage": "सामग्री पन्ना देखीं",
        "talk": "बातचीत",
        "views": "बिबिध रूप",
        "toolbox": "औजार",
        "tool-link-userrights": "{{GENDER:$1|प्रयोगकर्ता}} के मंडली बदलीं",
        "tool-link-userrights-readonly": "{{GENDER:$1|प्रयोगकर्ता}} मंडली देखीं",
        "tool-link-emailuser": "{{GENDER:$1|प्रयोगकर्ता}} के ईमेल करीं",
-       "userpage": "प्रयोगकर्ता पन्ना देखीं",
-       "projectpage": "प्रोजेक्ट पन्ना देखीं",
        "imagepage": "फाइल पन्ना देखीं",
        "mediawikipage": "सनेसा पन्ना देखीं",
        "templatepage": "टेम्पलेट पन्ना देखीं",
        "search-section": "(खंड $1)",
        "search-category": "(श्रेणी $1)",
        "search-suggest": "का राउर मतलब बा: $1",
-       "search-interwiki-caption": "भà¥\8dरातà¥\83 à¤ªà¤°à¤¿à¤¯à¥\8bà¤\9cना",
+       "search-interwiki-caption": "साथà¥\80 à¤ªà¥\8dरà¥\8bà¤\9cà¥\87à¤\95à¥\8dà¤\9f à¤¸à¤­ à¤¸à¥\87 à¤°à¤¿à¤\9cलà¥\8dà¤\9f",
        "search-interwiki-default": "$1 से परिणाम:",
        "search-interwiki-more": "(अउर)",
+       "search-interwiki-more-results": "अउरी रिजल्ट",
        "search-relatedarticle": "संबंधित",
        "searchrelated": "संबंधित",
        "searchall": "सगरी",
        "prefs-watchlist-token": "धियानसूची टोकन:",
        "prefs-misc": "बिबिध",
        "prefs-resetpass": "गुप्तशब्द बदलीं",
-       "prefs-changeemail": "ईमेल पता बदलीं",
+       "prefs-changeemail": "ईमेल पता बदलीं भा हटाईं",
        "prefs-setemail": "ईमेल पता सेट करीं",
        "prefs-email": "ईमेल बिकल्प",
        "prefs-rendering": "रंगरूप",
        "restoreprefs": "सगरी डिफाल्ट सेटिंग पहिले जइसन करीं (सगरी खंड में)",
        "prefs-editing": "संपादन",
        "searchresultshead": "खोज",
+       "stub-threshold-sample-link": "नमूना",
        "stub-threshold-disabled": "अक्षम",
        "recentchangesdays": "हाल में भइल परिवर्तन में देखावे खातिर दिन:",
        "recentchangesdays-max": "अधिकतम $1{{PLURAL:$1|दिन}}",
        "group-bot": "बॉट",
        "group-sysop": "प्रबंधक",
        "group-bureaucrat": "ब्यूरोक्रेट",
-       "group-suppress": "à¤\93वरसाà¤\87à¤\9fर",
+       "group-suppress": "सपà¥\8dरà¥\87सर",
        "group-all": "(सब)",
        "group-user-member": "{{GENDER:$1|सदस्य}}",
        "group-autoconfirmed-member": "{{GENDER:$1|खुद अस्थापित सदस्य}}",
        "group-bot-member": "{{GENDER:$1|बॉट}}",
        "group-sysop-member": "{{GENDER:$1|प्रबंधक}}",
        "group-bureaucrat-member": "{{GENDER:$1|प्रशासक}}",
-       "group-suppress-member": "{{GENDER:$1|à¤\93वरसाà¤\87à¤\9f}}",
+       "group-suppress-member": "{{GENDER:$1|सपà¥\8dरà¥\87स}}",
        "grouppage-user": "{{ns:project}}:सदस्य सभ",
        "grouppage-autoconfirmed": "{{ns:project}}:खुद अस्थापित सदस्य सभ",
        "grouppage-bot": "{{ns:project}}:बॉट सभ",
        "grouppage-sysop": "{{ns:project}}:प्रबंधक सभ",
        "grouppage-bureaucrat": "{{ns:project}}:प्रशासक सभ",
-       "grouppage-suppress": "{{ns:project}}:à¤\93वरसाà¤\87à¤\9fर à¤¸à¤­",
+       "grouppage-suppress": "{{ns:project}}:सपà¥\8dरà¥\87स",
        "right-read": "पन्ना पढ़ीं",
        "right-edit": "पन्नवन के संपादन करीं",
        "right-createpage": "पन्ना बनाईं (बातचीत पन्ना की अलावा)",
        "unwatchedpages": "ध्यान न दिहल गइल पन्ना",
        "listredirects": "पुनर्निर्देशन के सूची",
        "unusedtemplates": "बिना प्रयोग के खाँचा",
-       "randompage": "à¤\95à¥\8cनà¥\8bà¤\82 à¤\8fà¤\97à¥\8b पन्ना",
+       "randompage": "à¤\85à¤\9fà¥\8dरà¥\87à¤\82डम पन्ना",
        "randomincategory": "श्रेणी में अनियमित पन्ना",
        "randomincategory-nopages": "[[:Category:$1|$1]] श्रेणी में कउनो पन्ना नइखे।",
        "randomincategory-category": "श्रेणी:",
        "tooltip-n-portal": "प्रोजेक्ट की बारे में, रउआँ का कर सकत बानी, कौनों चीज कहाँ खोजब",
        "tooltip-n-currentevents": "वर्तमान के घटना पर पृष्ठभूमी जानकारी खोजीं",
        "tooltip-n-recentchanges": "विकि पर तुरंत भइल बदलाव के लिस्ट",
-       "tooltip-n-randompage": "बà¥\87तरतà¥\80ब à¤ªà¤¨à¥\8dना लोड करीं",
+       "tooltip-n-randompage": "à¤\95à¥\8cनà¥\8bà¤\82 à¤\8fà¤\97à¥\8b à¤ªà¤¨à¥\8dना à¤\85à¤\9fà¥\8dरà¥\87à¤\82डम लोड करीं",
        "tooltip-n-help": "जगह पता लगावे खातिर",
        "tooltip-t-whatlinkshere": "इहाँ जुड़े वाला सब विकि पन्नवन के लिस्ट",
        "tooltip-t-recentchangeslinked": "ए पन्ना से जुड़ल पन्नवन पर तुरंत भइल बदलाव",
index e3912c1..b63fc49 100644 (file)
        "recentchanges-legend-plusminus": "(''±১২৩'')",
        "recentchanges-submit": "দেখাও",
        "rcfilters-activefilters": "সক্রিয় ছাঁকনিসমূহ",
+       "rcfilters-advancedfilters": "উন্নত ছাঁকনি",
        "rcfilters-quickfilters": "সংরক্ষিত ছাঁকনির সেটিং",
        "rcfilters-quickfilters-placeholder-title": "এখনো কোন সংযোগ সংরক্ষণ হয়নি",
        "rcfilters-savedqueries-defaultlabel": "ছাঁকনি সংরক্ষণ",
        "rcfilters-filter-lastrevision-description": "একটি পাতার সর্বশেষ সাম্প্রতিক পরিবর্তন।",
        "rcfilters-filter-previousrevision-label": "পূর্ববর্তী সংশোধন",
        "rcfilters-filter-previousrevision-description": "সব পরিবর্তন যা একটি পাতার সর্বশেষ সাম্প্রতিক পরিবর্তন নয়।",
-       "rcfilters-view-tags": "à¦\9fà§\8dযাà¦\97সমà§\82হ",
+       "rcfilters-view-tags": "à¦\9fà§\8dযাà¦\97à¦\95à§\83ত à¦¸à¦®à§\8dপাদনা",
        "rcnotefrom": "<strong>$2</strong>টা থেকে সংঘটিত পরিবর্তনগুলি (সর্বোচ্চ <strong>$1টি</strong> দেখানো হয়েছে)।",
        "rclistfromreset": "তারিখ নির্বাচন পুনঃস্থাপন করুন",
        "rclistfrom": "$2, $3 তারিখের পর সংঘটিত নতুন পরিবর্তনগুলো দেখাও",
index 95272d5..d26c6d5 100644 (file)
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|spisak novih stranica]])",
        "recentchanges-submit": "Prikaži",
        "rcfilters-activefilters": "Aktivni filteri",
+       "rcfilters-advancedfilters": "Napredni filteri",
        "rcfilters-quickfilters": "Sačuvane postavke filtera",
        "rcfilters-quickfilters-placeholder-title": "Zasad nema sačuvanih linkova",
        "rcfilters-quickfilters-placeholder-description": "Da sačuvate postavke filtera da biste ih kasnije ponovo upotrijebili, kliknite na ikonu markera pod \"Aktivni filterima\" ispod.",
        "rcfilters-filter-lastrevision-description": "Najnovija izmjena na stranici.",
        "rcfilters-filter-previousrevision-label": "Ranije izmjene",
        "rcfilters-filter-previousrevision-description": "Sve izmjene koje nisu najnovije na stranici.",
+       "rcfilters-filter-excluded": "Izuzeto",
        "rcfilters-tag-prefix-namespace-inverted": "<strong>:ne</strong> $1",
-       "rcfilters-view-tags": "Oznake",
+       "rcfilters-view-tags": "Označene izmjene",
        "rcnotefrom": "Ispod {{PLURAL:$5|je izmjena|su izmjene}} od <strong>$3, $4</strong> (do <strong>$1</strong> prikazano).",
        "rclistfromreset": "Resetiraj izbor datuma",
        "rclistfrom": "Prikaži nove izmjene počev od $3 u $2",
        "apisandbox-loading": "Učitavam podatke o API modulu \"$1\"...",
        "apisandbox-load-error": "Došlo je do greške pri učitavanju informacija o API-modulu \"$1\": $2",
        "apisandbox-no-parameters": "API modul nema parametara.",
+       "apisandbox-helpurls": "Linkovi za pomoć",
        "apisandbox-examples": "Primjeri",
        "apisandbox-dynamic-parameters": "Dodatni parametri",
        "apisandbox-dynamic-parameters-add-label": "Dodaj parametar:",
        "emailmessage": "Poruka:",
        "emailsend": "Pošalji",
        "emailccme": "Pošalji mi kopiju moje poruke e-poštom.",
-       "emailccsubject": "Kopiraj Vašu poruku za $1: $2",
+       "emailccsubject": "Kopija Vaše poruke za $1: $2",
        "emailsent": "Poruka poslata",
        "emailsenttext": "Vaša poruka je poslata e-poštom.",
        "emailuserfooter": "Ovu e-poruku {{GENDER:$1|poslao|poslala}} je $1 {{GENDER:$2|korisniku|korisnici}} $2 pomoću funkcije \"{{int:emailuser}}\" s {{GRAMMAR:genitiv|{{SITENAME}}}}. Ako {{GENDER:$2|odgovorite}} na ovu e-poruku, {{GENDER:$2|Vaša}} će se poruka direktno poslati {{GENDER:$1|originalnom pošiljaocu|originalnoj pošiljatejici}} i otkrit ćete {{GENDER:$1|mu|joj}} {{GENDER:$2|svoju}} adresu e-pošte.",
        "tooltip-ca-delete": "Obrišite ovu stranicu",
        "tooltip-ca-undelete": "Vratite izmjene koje su načinjene prije brisanja stranice",
        "tooltip-ca-move": "Premjesti ovu stranicu",
-       "tooltip-ca-watch": "Dodajte stranicu u listu praćnih članaka",
+       "tooltip-ca-watch": "Dodaj stranicu na spisak praćenja",
        "tooltip-ca-unwatch": "Ukloni ovu stranicu sa spiska praćenih članaka",
        "tooltip-search": "Pretraži {{GRAMMAR:akuzativ|{{SITENAME}}}}",
        "tooltip-search-go": "Idi na stranicu s tačno ovim imenom ako postoji",
index 203735c..2bc253d 100644 (file)
        "templatesused": "{{PLURAL:$1|1=Кеп, лелош ю|Кепаш, лелош ю}} хӀокху агӀон башхонца:",
        "templatesusedpreview": "{{PLURAL:$1|1=Кеп, лелошдолу|Кепаш, лелойлу}} оцу хьалх хьожучу агӀонца:",
        "templatesusedsection": "ХӀокху декъан чохь {{PLURAL:$1|1=лелош йолу кеп|лелош йолу кепаш}}:",
-       "template-protected": "(гlаÑ\80оллийÑ\86а)",
+       "template-protected": "(лаÑ\80йина)",
        "template-semiprotected": "(дуьззина доцуш ларъяр)",
        "hiddencategories": "ХӀара агӀо чуйогӀуш ю оцу $1 {{PLURAL:$1|1=къайлаха категори чу|къайлаха категореш чу}}:",
        "edittools": "<!-- Кхузе буха диллина йоза гуш хир ду редоккхуче бухахь а хlума чуйоккхуче бухахь. -->",
        "mergehistory-empty": "Цхьаьнатоха нисдарш цакарий.",
        "mergehistory-done": "$3 {{PLURAL:$3|нисдар|нисдарш}} $1 чура кхиамца {{PLURAL:$3|дехьа даьккхина|дехьа дехна}} [[:$2]] чу.",
        "mergehistory-fail": "АгӀонийн истореш вовшахтоха цаделира, дехар до агӀона параметаршка а, хене а хьажа.",
+       "mergehistory-fail-bad-timestamp": "Хенан билгало нийса яц",
+       "mergehistory-fail-invalid-source": "АгӀо-хьост нийса яц.",
+       "mergehistory-fail-invalid-dest": "Ӏалашонан агӀо нийса яц.",
        "mergehistory-no-source": "Коьрта агӀо «$1» яц.",
        "mergehistory-no-destination": "Ӏалашон агӀо «$1» яц.",
        "mergehistory-invalid-source": "Хьостан нийса корта хила еза.",
        "mimesearch": "MIME лаха",
        "mimesearch-summary": "ХӀокху агӀоно йиш хуьлуьйту MIME-тайпан файлаш харжа. Яздеш долу формат: чулацаман тайп/бухара тайп, масала  <code>image/jpeg</code>.",
        "mimetype": "MIME-тайп:",
-       "download": "Ñ\87Ñ\83Ñ\8fккÑ\85а",
+       "download": "Ñ\81Ñ\85Ñ\8cаÑ\8dÑ\86а",
        "unwatchedpages": "Цхьам терго цайо агӀонаш",
        "listredirects": "ДIасахьажоран могIам",
        "listduplicatedfiles": "Файлийн могӀам дубликатшца",
        "htmlform-chosen-placeholder": "Харжа кеп",
        "htmlform-cloner-create": "ТӀетоха кхин",
        "htmlform-cloner-delete": "ДӀаяккха",
+       "htmlform-date-placeholder": "ШШШШ-ББ-ДД",
        "htmlform-datetime-placeholder": "ШШШШ-ББ-ДД СС:ММ:СС",
        "htmlform-title-not-exists": "«$1» яц.",
        "htmlform-user-not-exists": "<strong>$1</strong> яц.",
        "special-characters-title-endash": "юкъар сиз",
        "special-characters-title-emdash": "деха сиз",
        "special-characters-title-minus": "хьаьрк минус",
+       "mw-widgets-dateinput-no-date": "Терахь хаьржина дац",
+       "mw-widgets-dateinput-placeholder-day": "ШШШШ-ББ-ДД",
+       "mw-widgets-dateinput-placeholder-month": "ШШШШ-ББ",
        "mw-widgets-titleinput-description-redirect": "ДӀасхьажорг $1 тӀе",
+       "date-range-from": "Терхьера:",
+       "date-range-to": "Терхье:",
        "sessionprovider-generic": "$1 сесси",
        "randomrootpage": "Цахууш нисъелла ораман агӀо",
        "authmanager-provider-temporarypassword": "Ханна пароль",
index c3c2109..117b558 100644 (file)
@@ -49,7 +49,7 @@
        "tog-shownumberswatching": "ژمارەی بەکارھێنەرە چاودێرەکان نیشان بدە",
        "tog-oldsig": "واژووی ئێستا:",
        "tog-fancysig": "وەکوو ویکیدەق واژووەکە لەبەر چاو بگرە (بێ بەستەرێکی خۆگەڕ)",
-       "tog-uselivepreview": "پێشبینینی زیندوو بە کار بھێنە",
+       "tog-uselivepreview": "پێشبینینی ڕاستەوخۆ بەکاربھێنە",
        "tog-forceeditsummary": "ئەگەر کورتەی دەستکاریم نەنووسی پێم بڵێ",
        "tog-watchlisthideown": "دەستکارییەکانم بشارەوە لە پێرستی چاودێری",
        "tog-watchlisthidebots": "دەستکارییەکانی بات بشارەوە لە لیستی چاودێری",
        "anontalk": "لێدوان",
        "navigation": "ڕێدۆزی",
        "and": "&#32;و",
-       "qbfind": "بدۆزەرەوە",
-       "qbbrowse": "بگەڕێ",
-       "qbedit": "دەستکاری",
-       "qbpageoptions": "ئەم پەڕەیە",
-       "qbmyoptions": "پەڕەکانم",
        "faq": "پرسیار و وەڵام (FAQ)",
-       "faqpage": "Project:پرسیار و وەڵام",
        "actions": "کردەوەکان",
        "namespaces": "شوێنناوەکان",
        "variants": "شێوەزارەکان",
        "edit-local": "دەستکاریکردنی زانیارییە ناوخۆییەکان",
        "create": "دروستکردن",
        "create-local": "وەسفی ناوچەیی زۆر بکە",
-       "editthispage": "دەستکاری ئەم پەڕەیە بکە‌",
-       "create-this-page": "ئەم پەڕەیە دروست بکە",
        "delete": "سڕینەوە",
-       "deletethispage": "سڕینەوه‌ی ئەم پەڕەیە",
-       "undeletethispage": "ئەم پەڕەیە بھێنەوە",
        "undelete_short": "{{PLURAL:$1|یەک گۆڕانکاریی|$1 گۆڕانکاریی}} سڕاوە بەجێبھێنەرەوە",
        "viewdeleted_short": "{{PLURAL:$1|یەک گۆڕانکاریی سڕاو|$1 گۆڕانکاریی سڕاو}} ببینە",
        "protect": "پاراستن",
        "protect_change": "گۆڕین",
-       "protectthispage": "ئەم پەڕەیە بپارێزە",
        "unprotect": "پاراستنی بگۆڕە",
-       "unprotectthispage": "پاراستنی ئەم پەڕەیە بگۆڕە",
        "newpage": "پەڕەی نوێ",
-       "talkpage": "باس لەسەر ئەم پەڕە بکە‌",
        "talkpagelinktext": "لێدوان",
        "specialpage": "پەڕەی تایبەت",
        "personaltools": "ئامڕازە تاکەکەسییەکان",
-       "articlepage": "پەڕەی ناوەرۆک ببینە",
        "talk": "وتووێژ",
        "views": "بینینەکان",
        "toolbox": "ئامرازەکان",
        "tool-link-userrights": "بینینی گرووپەکانی {{GENDER:$1|بەکارھێنەر}}",
        "tool-link-userrights-readonly": "بینینی گرووپەکانی {{GENDER:$1|بەکارھێنەر}}",
        "tool-link-emailuser": "ئیمەیلی ئەم {{GENDER:$1|بەکارھێنەر}}ە",
-       "userpage": "بینینی پەڕەی بەکارھێنەر",
-       "projectpage": "پەڕەی پرۆژە نیشان بدە",
        "imagepage": "پەڕەی پەڕگە نیشان بدە",
        "mediawikipage": "پەڕەی پەیام نیشان بدە",
        "templatepage": "پەڕەی داڕێژە ببینە",
        "version-ext-colheader-description": "وەسف",
        "version-ext-colheader-credits": "بەرھەمھێنەر",
        "version-poweredby-others": "دیکە",
+       "version-poweredby-translators": "وەرگێڕەرەکانی translatewiki.net",
        "version-software": "نەرمەکاڵای دامەزراو",
        "version-software-product": "بەرهەم",
        "version-software-version": "وەشان",
index 79f9dfe..eff60ca 100644 (file)
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Zobrazit",
        "rcfilters-activefilters": "Aktivní filtry",
+       "rcfilters-advancedfilters": "Pokročilé filtry",
        "rcfilters-quickfilters": "Uložená nastavení filtrů",
        "rcfilters-quickfilters-placeholder-title": "Zatím neuloženy žádné odkazy",
        "rcfilters-quickfilters-placeholder-description": "Pokud chcete uložit svá nastavení filtrů a použít je později, klikněte na ikonku záložky v ploše aktivních filtrů níže.",
        "rcfilters-filter-lastrevision-description": "Poslední změna stránky.",
        "rcfilters-filter-previousrevision-label": "Dřívější verze",
        "rcfilters-filter-previousrevision-description": "Všechny změny, které nejsou nejnovější úpravou stránky.",
-       "rcfilters-view-tags": "Značky",
+       "rcfilters-view-tags": "Označené editace",
        "rcnotefrom": "Níže {{PLURAL:$5|je změna|jsou změny}} od <strong>$3, $4</strong> ({{PLURAL:$1|zobrazena|zobrazeny|zobrazeno}} nejvýše <strong>$1</strong>).",
        "rclistfromreset": "Obnovit výběr data",
        "rclistfrom": "Ukázat nové změny, počínaje od $2, $3",
index 7c821c0..74f1de4 100644 (file)
        "recentchanges-legend-plusminus": "''(±123)''",
        "recentchanges-submit": "Anzeigen",
        "rcfilters-activefilters": "Aktive Filter",
+       "rcfilters-advancedfilters": "Erweiterte Filter",
        "rcfilters-quickfilters": "Gespeicherte Filtereinstellungen",
        "rcfilters-quickfilters-placeholder-title": "Noch keine Links gespeichert",
        "rcfilters-quickfilters-placeholder-description": "Um deine Filtereinstellungen zu speichern und später erneut zu verwenden, klicke unten auf das Lesezeichensymbol im Bereich der aktiven Filter.",
        "rcfilters-filter-previousrevision-description": "Alle Änderungen, die nicht die aktuellste Änderung an einer Seite sind.",
        "rcfilters-filter-excluded": "Ausgeschlossen",
        "rcfilters-tag-prefix-namespace-inverted": "<strong>:nicht</strong> $1",
-       "rcfilters-view-tags": "Markierungen",
+       "rcfilters-view-tags": "Markierte Bearbeitungen",
        "rcnotefrom": "Angezeigt {{PLURAL:$5|wird die Änderung|werden die Änderungen}} seit <strong>$3, $4</strong> (max. <strong>$1</strong> Einträge).",
        "rclistfromreset": "Datumsauswahl zurücksetzen",
        "rclistfrom": "Nur Änderungen seit $3, $2 Uhr zeigen.",
index 9d0445b..8db80e5 100644 (file)
        "recentchanges-submit": "Show",
        "rcfilters-activefilters": "Active filters",
        "rcfilters-advancedfilters": "Advanced filters",
-       "rcfilters-quickfilters": "Saved filter settings",
+       "rcfilters-quickfilters": "Saved filters",
        "rcfilters-quickfilters-placeholder-title": "No links saved yet",
        "rcfilters-quickfilters-placeholder-description": "To save your filter settings and reuse them later, click the bookmark icon in the Active Filter area, below.",
        "rcfilters-savedqueries-defaultlabel": "Saved filters",
        "log-description-pagelang": "This is a log of changes in page languages.",
        "logentry-pagelang-pagelang": "$1 {{GENDER:$2|changed}} the language of $3 from $4 to $5",
        "default-skin-not-found": "Whoops! The default skin for your wiki, defined in <code dir=\"ltr\">$wgDefaultSkin</code> as <code>$1</code>, is not available.\n\nYour installation seems to include the following {{PLURAL:$4|skin|skins}}. See [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] for information how to enable {{PLURAL:$4|it|them and choose the default}}.\n\n$2\n\n; If you have just installed MediaWiki:\n: You probably installed from git, or directly from the source code using some other method. This is expected. Try installing some skins from [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's skin directory], by:\n:* Downloading the [https://www.mediawiki.org/wiki/Download tarball installer], which comes with several skins and extensions. You can copy and paste the <code>skins/</code> directory from it.\n:* Downloading individual skin tarballs from [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Using Git to download skins].\n: Doing this should not interfere with your git repository if you're a MediaWiki developer.\n\n; If you have just upgraded MediaWiki:\n: MediaWiki 1.24 and newer no longer automatically enables installed skins (see [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]). You can paste the following {{PLURAL:$5|line|lines}} into <code>LocalSettings.php</code> to enable {{PLURAL:$5|the|all}} installed {{PLURAL:$5|skin|skins}}:\n\n<pre dir=\"ltr\">$3</pre>\n\n; If you have just modified <code>LocalSettings.php</code>:\n: Double-check the skin names for typos.",
-       "default-skin-not-found-no-skins": "Whoops! The default skin for your wiki, defined in <code>$wgDefaultSkin</code> as <code>$1</code>, is not available.\n\nYou have no installed skins.\n\n; If you have just installed or upgraded MediaWiki:\n: You probably installed from git, or directly from the source code using some other method. This is expected. MediaWiki 1.24 and newer doesn't include any skins in the main repository. Try installing some skins from [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's skin directory], by:\n:* Downloading the [https://www.mediawiki.org/wiki/Download tarball installer], which comes with several skins and extensions. You can copy and paste the <code>skins/</code> directory from it.\n:* Downloading individual skin tarballs from [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Using Git to download skins].\n: Doing this should not interfere with your git repository if you're a MediaWiki developer. See [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] for information how to enable skins and choose the default.\n",
+       "default-skin-not-found-no-skins": "Whoops! The default skin for your wiki, defined in <code>$wgDefaultSkin</code> as <code>$1</code>, is not available.\n\nYou have no installed skins.\n\n; If you have just installed or upgraded MediaWiki:\n: You probably installed from git, or directly from the source code using some other method. This is expected. MediaWiki 1.24 and newer doesn't include any skins in the main repository. Try installing some skins from [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's skin directory], by:\n:* Downloading the [https://www.mediawiki.org/wiki/Download tarball installer], which comes with several skins and extensions. You can copy and paste the <code>skins/</code> directory from it.\n:* Downloading individual skin tarballs from [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Using Git to download skins].\n: Doing this should not interfere with your git repository if you're a MediaWiki developer. See [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] for information how to enable skins and choose the default.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (enabled)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 (<strong>disabled</strong>)",
        "mediastatistics": "Media statistics",
index e3f2e64..fbe749c 100644 (file)
                        "Juanpabl",
                        "AlimanRuna",
                        "Luzcaru",
-                       "Javiersanp"
+                       "Javiersanp",
+                       "Josecurioso",
+                       "Jnistal12"
                ]
        },
        "tog-underline": "Subrayar los enlaces:",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (véase también la [[Special:NewPages|lista de páginas nuevas]])",
        "recentchanges-submit": "Mostrar",
        "rcfilters-activefilters": "Filtros activos",
+       "rcfilters-advancedfilters": "Filtros avanzados",
        "rcfilters-quickfilters": "Ajustes de filtro guardados",
        "rcfilters-quickfilters-placeholder-title": "Ningún enlace guardado aún",
        "rcfilters-quickfilters-placeholder-description": "Para guardar tus ajustes de filtro y reutilizarlos más tarde, pulsa en el icono del marcador en el área de Filtro activo que se encuentra a continuación.",
        "rcfilters-filter-lastrevision-description": "El cambio más reciente a una página.",
        "rcfilters-filter-previousrevision-label": "Revisiones anteriores",
        "rcfilters-filter-previousrevision-description": "Todos los cambios que no son los más recientes cambian a una página.",
-       "rcfilters-view-tags": "Etiquetas",
+       "rcfilters-filter-excluded": "Excluido",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>Estado:</strong> $1",
+       "rcfilters-view-tags": "Ediciones etiquetadas",
        "rcnotefrom": "Debajo {{PLURAL:$5|aparece el cambio|aparecen los cambios}} desde <strong>$3, $4</strong> (se muestran hasta <strong>$1</strong>).",
        "rclistfromreset": "Restablecer selección de fecha",
        "rclistfrom": "Mostrar cambios nuevos desde las $2 del $3",
        "apisandbox-sending-request": "Enviando pedido a la API...",
        "apisandbox-loading-results": "Recibiendo resultados de la API...",
        "apisandbox-results-error": "Ocurrió un error durante la carga de la respuesta a la consulta API: $1",
+       "apisandbox-results-login-suppressed": "Esta petición ha sido procesada como un usuario sin sesión iniciada puesto que se podría usar para circunvenir la seguridad del navegador. Tenga en cuenta que la gestión del token automático del API sandbox no funciona correctamente con tales peticiones, por favor rellenalas manualmente.",
        "apisandbox-request-selectformat-label": "Mostrar los datos de la petición como:",
        "apisandbox-request-format-url-label": "Cadena de consulta de la URL",
        "apisandbox-request-url-label": "URL solicitante:",
        "newimages-legend": "Filtro",
        "newimages-label": "Nombre del archivo (o una parte):",
        "newimages-user": "Dirección IP o nombre de usuario",
+       "newimages-newbies": "Mostrar solo las contribuciones de cuentas nuevas",
        "newimages-showbots": "Mostrar cargas de bots",
        "newimages-hidepatrolled": "Ocultar las subidas verificadas",
+       "newimages-mediatype": "Tipo de medio:",
        "noimages": "No hay nada que ver.",
        "gallery-slideshow-toggle": "Activar o desactivar las miniaturas",
        "ilsubmit": "Buscar",
        "logentry-import-upload-details": "$1 {{GENDER:$2|importó}} $3 subiendo un archivo ($4 {{PLURAL:$4|revisión|revisiones}})",
        "logentry-import-interwiki": "$1 {{GENDER:$2|importó}} $3 desde otro wiki",
        "logentry-import-interwiki-details": "$1 {{GENDER:$2|importó}} $3 desde $5 ($4 {{PLURAL:$4|revisión|revisiones}})",
-       "logentry-merge-merge": "$1 {{GENDER:$2|combinó}} $3 en $4 (revisiones hasta el $5)",
+       "logentry-merge-merge": "$1 {{GENDER:$2|fusionó}} $3 en $4 (revisiones hasta el $5)",
        "logentry-move-move": "$1 {{GENDER:$2|trasladó}} la página $3 a $4",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|trasladó}} la página $3 a $4 sin dejar una redirección",
        "logentry-move-move_redir": "$1 {{GENDER:$2|trasladó}} la página $3 a $4 sobre una redirección",
        "undelete-cantedit": "No puedes deshacer el borrado de esta página porque no tienes permisos para editarla.",
        "undelete-cantcreate": "No puedes deshacer el borrado de esta página porque no existe ninguna página con este nombre y no tienes permisos para crearla.",
        "pagedata-title": "Datos de la página",
+       "pagedata-text": "Esta página provee una interfaz de datos a otras páginas. Por favor proporcione el título de la página en la URL usando la sintaxis de subpáginas.\n* La negociación del contenido se aplica en base a la cabecera Accept de su cliente. Esto significa que los datos de la página se proporcionarán en su formato de preferencia.",
+       "pagedata-not-acceptable": "No se ha encontrado un formato coincidente. Tipos MIME admitidos:",
        "pagedata-bad-title": "El título «$1» no es válido."
 }
index f004852..217778f 100644 (file)
@@ -29,7 +29,8 @@
                        "Gorkaazk",
                        "Vriullop",
                        "Osoitz",
-                       "Mikel Ibaiba"
+                       "Mikel Ibaiba",
+                       "MarcoAurelio"
                ]
        },
        "tog-underline": "Azpimarratu loturak:",
        "rollbacklinkcount-morethan": "desegin {{PLURAL:$1|edizio bat|$1 edizio}} baino gehiago",
        "rollbackfailed": "Desegiteak huts egin dud",
        "cantrollback": "Ezin da aldaketa desegin; erabiltzaile bakarrak hartu du parte.",
-       "alreadyrolled": "Ezin da [[User:$2|$2]] ([[User talk:$2|Eztabaida]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) wikilariak «[[$1]]» orrian egindako azken aldaketa desegin;\nbeste norbaitek editatu edo desegin du jadanik.\n\n Azken aldaketa [[User:$3|$3]] ([[User talk:$3|Eztabaida]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) wikilariak egin du.",
+       "alreadyrolled": "Ezin da [[User:$2|$2]] ([[User talk:$2|eztabaida]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) wikilariak «[[:$1]]» orrian egindako azken aldaketa desegin;\nbeste norbaitek editatu edo desegin du jadanik.\n\nAzken aldaketa [[User:$3|$3]] ([[User talk:$3|eztabaida]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) wikilariak egin du.",
        "editcomment": "Aldaketaren laburpena: <em>$1</em>.",
        "revertpage": "[[Special:Contributions/$2|$2]] ([[User talk:$2|talk]]) wikilariaren aldaketak deseginda, edukia [[User:$1|$1]] wikilariaren azken bertsiora itzuli da.",
        "rollback-success": "$1 wikilariaren aldaketak deseginda,\nedukia $2 wikilariaren azken bertsiora itzuli da.",
index da36161..75b0ca1 100644 (file)
        "rev-deleted-no-diff": "شما نمی‌توانید این تفاوت را مشاهده کنید زیرا یکی از دو نسخه '''حذف شده‌است'''.\nممکن است اطلاعات مرتبط با آن در [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سیاههٔ حذف] موجود باشد.",
        "rev-suppressed-no-diff": "شما نمی‌توانید این تفاوت را مشاهده کنید زیرا یکی از نسخه‌ها '''حذف شده‌است'''.",
        "rev-deleted-unhide-diff": "یکی از دو نسخهٔ این تفاوت '''حذف شده‌است'''.\nممکن است اطلاعات مرتبط با آن در [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سیاههٔ حذف] موجود باشد.\nشما کماکان می‌توانید در صورت تمایل [$1 این تفاوت را ببینید].",
-       "rev-suppressed-unhide-diff": "یکی از نسخه‌های این تفاوت '''فرونشانی شده‌است'''.\nممکن است جزئیاتی در [{{fullurl:{{#Special:Log}}/suppress|page=سیاههٔ فرونشانی{{FULLPAGENAMEE}}}}] موجود باشد.\nشما کماکان می‌توانید در صورت تمایل [$1 این تفاوت را ببینید].",
+       "rev-suppressed-unhide-diff": "یکی از نسخه‌های این تفاوت <strong>فرونشانی شده‌است</strong>.\nممکن است جزئیاتی در [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سیاههٔ فرونشانی] موجود باشد.\nشما کماکان می‌توانید در صورت تمایل [$1 این تفاوت را ببینید].",
        "rev-deleted-diff-view": "یکی از نسخه‌های این تفاوت '''حذف شده‌است'''.\nشما می‌توانید این تفاوت را ببینید؛ ممکن است جزئیاتی در [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سیاههٔ حذف] موجود باشد.",
        "rev-suppressed-diff-view": "یکی از نسخه‌های این تفاوت '''فرونشانی شده‌است'''.\nشما می‌توانید این تفاوت را ببینید؛ ممکن است جزئیاتی در [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سیاههٔ فرونشانی] موجود باشد.",
        "rev-delundel": "تغییر پیدایی",
        "recentchanges-legend-plusminus": "(<em>±۱۲۳</em>)",
        "recentchanges-submit": "نمایش",
        "rcfilters-activefilters": "پالایه‌های فعال",
+       "rcfilters-advancedfilters": "پالایه‌‌های پیشرفته",
        "rcfilters-quickfilters": "تنظیمات ذخیره‌شدهٔ پالایه",
        "rcfilters-quickfilters-placeholder-title": "هنوز پیوندی ذخیره نشده‌است",
        "rcfilters-quickfilters-placeholder-description": "برای ذخیره پالایه‌هایتان و استفاده مجدد آنها، در محیط فعال پالایه در پایین بر روی دکمهٔ بوک‌مارک کلیک کنید.",
        "rcfilters-filter-lastrevision-description": "جدیدترین تغییر در یک صفحه.",
        "rcfilters-filter-previousrevision-label": "نسخه‌های قبلی",
        "rcfilters-filter-previousrevision-description": "تمام تغییراتی که تازه‌ترین تغییر در یک صفحه نیستند.",
-       "rcfilters-view-tags": "برچسب‌ها",
+       "rcfilters-filter-excluded": "مستثنی‌شده",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:نه</strong> $1",
+       "rcfilters-view-tags": "ویرایش‌های برچسب‌شده",
        "rcnotefrom": "در زیر تغییرات از <strong>$3, $4</strong> (تا <strong>$1</strong> {{PLURAL:$5|نشان داده شده‌است|نشان داده شده‌اند}}).",
        "rclistfromreset": "از نو کردن انتخاب تاریخ",
        "rclistfrom": "نمایش تغییرات تازه با شروع از $3 $2",
index dc08992..275062a 100644 (file)
        "anontalk": "Keskustelu",
        "navigation": "Valikko",
        "and": "&#32;ja",
-       "qbfind": "Etsi",
-       "qbbrowse": "Selaa",
-       "qbedit": "Muokkaa",
-       "qbpageoptions": "Sivuasetukset",
-       "qbmyoptions": "Omat sivut",
        "faq": "Usein kysytyt kysymykset",
-       "faqpage": "Project:Usein kysytyt kysymykset",
        "actions": "Toiminnot",
        "namespaces": "Nimiavaruudet",
        "variants": "Kirjoitusjärjestelmät",
        "edit-local": "Muokkaa paikallista kuvausta",
        "create": "Luo sivu",
        "create-local": "Luo paikallinen kuvaus",
-       "editthispage": "Muokkaa tätä sivua",
-       "create-this-page": "Luo tämä sivu",
        "delete": "Poista",
-       "deletethispage": "Poista tämä sivu",
-       "undeletethispage": "Palauta tämä sivu",
        "undelete_short": "Palauta {{PLURAL:$1|yksi muokkaus|$1 muokkausta}}",
        "viewdeleted_short": "Näytä {{PLURAL:$1|poistettu muokkaus|$1 poistettua muokkausta}}",
        "protect": "Suojaa",
        "protect_change": "muuta",
-       "protectthispage": "Suojaa tämä sivu",
        "unprotect": "Muuta suojausta",
-       "unprotectthispage": "Muuta tämän sivun suojausta",
        "newpage": "Uusi sivu",
-       "talkpage": "Keskustele tästä sivusta",
        "talkpagelinktext": "keskustelu",
        "specialpage": "Toimintosivu",
        "personaltools": "Henkilökohtaiset työkalut",
-       "articlepage": "Näytä varsinainen sivu",
        "talk": "Keskustelu",
        "views": "Näkymät",
        "toolbox": "Työkalut",
        "tool-link-userrights": "Muokkaa {{GENDER:$1|käyttäjän}} ryhmiä",
        "tool-link-userrights-readonly": "Katso {{GENDER:$1|käyttäjän}} ryhmiä",
        "tool-link-emailuser": "Lähetä sähköpostia tälle {{GENDER:$1|käyttäjälle}}",
-       "userpage": "Näytä käyttäjäsivu",
-       "projectpage": "Näytä projektisivu",
        "imagepage": "Näytä tiedostosivu",
        "mediawikipage": "Näytä viestisivu",
        "templatepage": "Näytä mallinesivu",
        "search-file-match": "(vastaa tiedoston sisältöä)",
        "search-suggest": "Tarkoititko: $1",
        "search-rewritten": "Näytetään tulokset haulla $1. Haluatko hakea haulla $2?",
-       "search-interwiki-caption": "Sisarhankkeet",
+       "search-interwiki-caption": "Tulokset sisarhankkeista",
        "search-interwiki-default": "Tulokset osoitteesta $1:",
        "search-interwiki-more": "(lisää)",
        "search-interwiki-more-results": "lisää tuloksia",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Näytä",
        "rcfilters-activefilters": "Aktiiviset suodattimet",
-       "rcfilters-quickfilters": "Pikalinkit",
+       "rcfilters-quickfilters": "Tallennetut suodatinasetukset",
+       "rcfilters-quickfilters-placeholder-title": "Ei vielä tallennettuja linkkejä",
        "rcfilters-savedqueries-defaultlabel": "Tallennetut suodattimet",
        "rcfilters-savedqueries-rename": "Nimeä uudelleen",
        "rcfilters-savedqueries-setdefault": "Aseta oletukseksi",
        "rcfilters-savedqueries-remove": "Poista",
        "rcfilters-savedqueries-new-name-label": "Nimi",
-       "rcfilters-savedqueries-apply-label": "Luo pikalinkki",
+       "rcfilters-savedqueries-apply-label": "Tallenna asetukset",
        "rcfilters-savedqueries-cancel-label": "Peru",
-       "rcfilters-savedqueries-add-new-title": "Tallenna suodattimet pikalinkkinä",
+       "rcfilters-savedqueries-add-new-title": "Tallenna nykyiset suodatinasetukset",
        "rcfilters-restore-default-filters": "Palauta oletussuodattimet",
        "rcfilters-clear-all-filters": "Tyhjennä kaikki suodattimet",
        "rcfilters-search-placeholder": "Suodata tuoreita muutoksia (selaa tai ala kirjoittaa)",
        "rcfilters-highlightmenu-help": "Valitse korostusväri tälle ominaisuudelle",
        "rcfilters-filterlist-noresults": "Ei löytynyt suodattimia",
        "rcfilters-noresults-conflict": "Tuloksia ei löytynyt, koska hakuehdot ovat ristiriidassa",
-       "rcfilters-state-message-subset": "Tällä suodattimella ei ole vaikutusta, koska sen tulokset sisältyvät seuraaviin laajempiin suodattimiin (kokeile korostusta sen erottamiseksi): $1",
-       "rcfilters-state-message-fullcoverage": "Ryhmän kaikkien suodattimien valitseminen on sama, kuin ei valitse mitään, joten tällä suodattimella ei ole vaikutusta. Ryhmään sisältyy: $ 1",
+       "rcfilters-state-message-subset": "Tällä suodattimella ei ole vaikutusta, koska sen tulokset sisältyvät {{PLURAL:$2|seuraavaan laajempaan suodattimeen|seuraaviin laajempiin suodattimiin}} (kokeile korostusta sen erottamiseksi): $1",
+       "rcfilters-state-message-fullcoverage": "Ryhmän kaikkien suodattimien valitseminen on sama, kuin ei valitse mitään, joten tällä suodattimella ei ole vaikutusta. Ryhmään sisältyy: $1",
        "rcfilters-filtergroup-registration": "Käyttäjän rekisteröinti",
        "rcfilters-filter-registered-label": "Rekisteröitynyt",
        "rcfilters-filter-registered-description": "Sisäänkirjautuneiden muokkaukset.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Tulokkaat",
        "rcfilters-filter-user-experience-level-newcomer-description": "Vähemmän kuin 10 muokkausta ja 4 päivää aktiivisuutta.",
        "rcfilters-filter-user-experience-level-learner-label": "Oppijat",
-       "rcfilters-filter-user-experience-level-learner-description": "Useamman päivän aktiivisina ja enemmän muokkauksia kuin \"tulokkailla\", mutta vähemmän kuin \"kokeneilla käyttäjillä\".",
+       "rcfilters-filter-user-experience-level-learner-description": "Enemmän kokemusta kuin \"tulokkailla\", mutta vähemmän kuin \"kokeneilla käyttäjillä\".",
        "rcfilters-filter-user-experience-level-experienced-label": "Kokeneet käyttäjät",
        "rcfilters-filter-user-experience-level-experienced-description": "Enemmän kuin 30 päivää aktiivisuutta ja 500 muokkausta.",
        "rcfilters-filtergroup-automated": "Automatisoidut muutokset",
        "rcfilters-filtergroup-watchlist": "Tarkkailulistalla olevat sivut",
        "rcfilters-filter-watchlist-watched-label": "Tarkkailulistalla",
        "rcfilters-filter-watchlist-watched-description": "Muutokset tarkkailulistalla oleviin sivuihin.",
+       "rcfilters-filter-watchlist-watchednew-label": "Uudet tarkkailulistan muutokset",
        "rcfilters-filter-watchlist-notwatched-label": "Ei tarkkailulistalla",
        "rcfilters-filtergroup-changetype": "Muutoksen tyyppi",
        "rcfilters-filter-pageedits-label": "Sivun muokkaukset",
-       "rcfilters-filter-pageedits-description": "Muokkaukset wikin sisältöön, keskusteluihin, luokkakuvauksiin...",
+       "rcfilters-filter-pageedits-description": "Muokkaukset wikin sisältöön, keskusteluihin, luokkakuvauksiin",
        "rcfilters-filter-newpages-label": "Sivujen luonnit",
        "rcfilters-filter-newpages-description": "Muokkaukset, joilla on luotu uusia sivuja.",
        "rcfilters-filter-categorization-label": "Luokkamuutokset",
        "rcfilters-filter-categorization-description": "Tulokset sivuista, joita on lisätty tai poistettu luokista.",
        "rcfilters-filter-logactions-label": "Kirjatut toimet",
-       "rcfilters-filter-logactions-description": "Hallinnolliset toimet, tunnusten luonnit, sivujen poistot, tiedostojen lähetykset...",
+       "rcfilters-filter-logactions-description": "Hallinnolliset toimet, tunnusten luonnit, sivujen poistot, tiedostojen lähetykset",
        "rcfilters-hideminor-conflicts-typeofchange-global": "\"Pienet muutokset\" -suodatin on ristiriidassa yhden tai useamman Muutoksen tyyppi suodattimen kanssa, koska joitain muutostyyppejä ei voida pitää \"pieninä\". Ristiriidassa oleva suodatin on merkittynä Aktiivisissa suodattimissa, yläpuolella.",
        "rcfilters-hideminor-conflicts-typeofchange": "Joitain muutostyyppejä ei voida määrittää \"pieneksi\", joten tämä suodatin on ristiriidassa seuraavien Muutoksen tyyppi suodattimien kanssa: $1",
        "rcfilters-typeofchange-conflicts-hideminor": "\"Muutoksen tyyppi\" on ristiriidassa \"Pienet muutokset\" -suodattimen kanssa. Joitain muutostyyppejä ei voida merkitä \"pieniksi\".",
        "rcfilters-filtergroup-lastRevision": "Viimeisin versio",
        "rcfilters-filter-lastrevision-label": "Viimeisin versio",
+       "rcfilters-filter-lastrevision-description": "Viimeisin muutos sivulle.",
        "rcfilters-filter-previousrevision-label": "Aikaisemman versiot",
        "rcnotefrom": "Alla ovat muutokset <strong>$3, $4</strong> lähtien. (Enintään <strong>$1</strong> näytetään.)",
        "rclistfrom": "Näytä uudet muutokset $3 kello $2 alkaen",
        "enotif_body_intro_restored": "{{GENDER:$2|$2}} palautti {{GRAMMAR:inessive|{{SITENAME}}}} sivun $1 $PAGEEDITDATE. Sivun nykyinen versio on osoitteessa $3.",
        "enotif_body_intro_changed": "{{GENDER:$2|$2}} muutti {{GRAMMAR:inessive|{{SITENAME}}}} sivua $1 $PAGEEDITDATE. Sivun nykyinen versio on osoitteessa $3.",
        "enotif_lastvisited": "Kaikki muutokset viimeisimmän vierailusi jälkeen näet täältä $1",
-       "enotif_lastdiff": "Muutos on osoitteessa $1.",
+       "enotif_lastdiff": "Nähdäksesi tämän muutoksen, katso $1",
        "enotif_anon_editor": "kirjautumaton käyttäjä $1",
        "enotif_body": "$WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nMuokkaajan yhteenveto: $PAGESUMMARY $PAGEMINOREDIT\n\nOta yhteyttä muokkaajaan:\nsähköposti: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nUusia ilmoituksia tästä sivusta ei tule kunnes vierailet sivulla sisään kirjautuneena. Voit myös nollata ilmoitukset kaikille tarkkailemillesi sivuille tarkkailulistallasi.\n\n             {{GRAMMAR:genitive|{{SITENAME}}}} ilmoitusjärjestelmä\n\n--\nVoit muuttaa sähköpostimuistutusten asetuksia osoitteessa:\n{{canonicalurl:{{#special:Preferences}}}}\n\nVoit muuttaa tarkkailulistasi asetuksia osoitteessa:\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nVoit poistaa sivun tarkkailulistalta osoitteessa:\n$UNWATCHURL\n\nPalaute ja lisäapu osoitteessa:\n$HELPPAGE",
        "created": "luonut",
        "sp-contributions-uploads": "tallennukset",
        "sp-contributions-logs": "lokit",
        "sp-contributions-talk": "keskustelu",
-       "sp-contributions-userrights": "käyttöoikeuksien hallinta",
+       "sp-contributions-userrights": "{{GENDER:$1|käyttöoikeuksien}} hallinta",
        "sp-contributions-blocked-notice": "Tämä käyttäjä on tällä hetkellä estetty. Alla on viimeisin estolokin tapahtuma:",
        "sp-contributions-blocked-notice-anon": "Tämä IP-osoite on tällä hetkellä estetty.\nAlla on viimeisin estolokin tapahtuma:",
        "sp-contributions-search": "Etsi muokkauksia",
        "revid": "versio $1",
        "pageid": "sivun tunnistenumero $1",
        "gotointerwiki": "Lähdössä {{GRAMMAR:elative|{{SITENAME}}}}",
-       "gotointerwiki-external": "Olet lähdössä {{GRAMMAR:elative|{{SITENAME}}}} toiselle sivustolle [[$2]].\n\n[$1 Paina tästä jatkaaksesi osoitteeseen $1].",
+       "gotointerwiki-external": "Olet lähdössä {{GRAMMAR:elative|{{SITENAME}}}} toiselle sivustolle [[$2]].\n\n'''[$1 Jatka osoitteeseen $1]'''",
        "undelete-cantedit": "Et voi palauttaa tätä sivua, koska sinulla ei ole oikeutta muokata tätä sivua.",
-       "undelete-cantcreate": "Et voi palauttaa tätä sivua, koska tällä nimellä ei ole olemassaolevaa sivua eikä sinulla ole oikeutta luoda tätä sivua."
+       "undelete-cantcreate": "Et voi palauttaa tätä sivua, koska tällä nimellä ei ole olemassaolevaa sivua eikä sinulla ole oikeutta luoda tätä sivua.",
+       "pagedata-bad-title": "Virheellinen otsikko: $1."
 }
index a3015dd..5353a8d 100644 (file)
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Lister",
        "rcfilters-activefilters": "Filtres actifs",
+       "rcfilters-advancedfilters": "Filtres avancés",
        "rcfilters-quickfilters": "Configuration des filtres sauvegardée",
        "rcfilters-quickfilters-placeholder-title": "Aucun lien n’a encore été sauvegardé",
        "rcfilters-quickfilters-placeholder-description": "Pour sauvegarder la configuration de vos filtres pour la réutiliser ultérieurement, cliquez sur l’icône des raccourcis dans la zone des filtres actifs, ci-dessous.",
        "rcfilters-filter-previousrevision-description": "Toutes les modifications apportées à une page et qui ne sont pas la dernière.",
        "rcfilters-filter-excluded": "Exclu",
        "rcfilters-tag-prefix-namespace-inverted": "<strong>:not</strong> $1",
-       "rcfilters-view-tags": "Étiquettes",
+       "rcfilters-view-tags": "Modifications marquées",
        "rcnotefrom": "Ci-dessous {{PLURAL:$5|la modification effectuée|les modifications effectuées}} depuis le <strong>$3, $4</strong> (affichées jusqu’à <strong>$1</strong>).",
        "rclistfromreset": "Réinitialiser la sélection de la date",
        "rclistfrom": "Afficher les nouvelles modifications depuis le $3 à $2",
        "apisandbox-sending-request": "Envoi de la requête à l'API...",
        "apisandbox-loading-results": "Réception des résultats de l'API...",
        "apisandbox-results-error": "Une erreur s'est produite lors du chargement de la réponse à la requête de l'API: $1.",
+       "apisandbox-results-login-suppressed": "Cette requête a été exécutée en tant qu'utilisateur déconnecté et aurait pu être utilisée pour évincer la sécurité concernant le contrôle de la même source dans le navigateur. Notez que la gestion automatique du jeton de l'API du bac à sable ne fonctionne pas correctement avec de telles requêtes; vous devez les remplir manuellement.",
        "apisandbox-request-selectformat-label": "Afficher les données de la requête comme :",
        "apisandbox-request-format-url-label": "Chaîne de requête de l’URL",
        "apisandbox-request-url-label": "Requête URL :",
        "creditspage": "Crédits de la page",
        "nocredits": "Il n'y a pas d'informations d'attribution disponibles pour cette page.",
        "spamprotectiontitle": "Filtre de protection anti-pollupostage",
-       "spamprotectiontext": "La page que vous avez voulu sauvegarder a été bloquée par le filtre anti-pourriel. Ceci est probablement dû à l’introduction d’un lien vers un site externe apparaissant sur la liste noire.",
+       "spamprotectiontext": "La page que vous avez voulu sauvegarder a été bloquée par le filtre anti-pollupostage. \nCeci est probablement dû à l’introduction d’un lien vers un site externe apparaissant sur la liste noire.",
        "spamprotectionmatch": "Le texte suivant a déclenché notre filtre de protection anti-pollupostage : $1",
        "spambot_username": "Nettoyage de pourriels par MediaWiki",
        "spam_reverting": "Rétablissement de la dernière version ne contenant pas de lien vers $1",
index bf23318..817b636 100644 (file)
        "anontalk": "Diskuschuun",
        "navigation": "Nawigatjuun",
        "and": "&#32;an",
-       "qbfind": "Finj",
-       "qbbrowse": "Schük",
-       "qbedit": "Bewerke",
-       "qbpageoptions": "Detdiar sidj",
-       "qbmyoptions": "Min sidjen",
        "faq": "FAQ",
-       "faqpage": "Project:FAQ",
        "actions": "Aktjuunen",
        "namespaces": "Nöömrümer",
        "variants": "Warianten",
        "edit-local": "Lokaal beskriiwang bewerke",
        "create": "Maage",
        "create-local": "Lokaal beskriiwang diartudu",
-       "editthispage": "Sidj bewerke",
-       "create-this-page": "Nei sidj maage",
        "delete": "Strik",
-       "deletethispage": "Detdiar sidj strik",
-       "undeletethispage": "Detdiar stregen sidj turaghaale",
        "undelete_short": "{{PLURAL:$1|1 werjuun|$1 werjuunen}} weder iinstel",
        "viewdeleted_short": "{{PLURAL:$1|Ian stregen werjuun|$1 stregen werjuunen}} uunluke",
        "protect": "Seekre",
        "protect_change": "feranre",
-       "protectthispage": "Sidj seekre",
        "unprotect": "Sidjenseekerhaid",
-       "unprotectthispage": "Sääkering aphääwe",
        "newpage": "Nei sidj",
-       "talkpage": "Detdiar sidj diskutiare",
        "talkpagelinktext": "Diskuschuun",
        "specialpage": "Spezial-sidj",
        "personaltools": "Min werktjüügen",
-       "articlepage": "Artiikel wise",
        "talk": "Diskuschuun",
        "views": "Uunsichten",
        "toolbox": "Werktjüügen",
        "tool-link-userrights": "{{GENDER:$1|Brükersköölen}} feranre",
        "tool-link-userrights-readonly": "{{GENDER:$1|Brükersköölen}} beluke",
        "tool-link-emailuser": "E-mail tu {{GENDER:$1|didiar brüker|detdiar brükerin}} schüür",
-       "userpage": "Brükersidj uunwise",
-       "projectpage": "Projektsidj wise",
        "imagepage": "Dateisidj uunwise",
        "mediawikipage": "Mädialangssidj uunwise",
        "templatepage": "Föörlaagensidj uunwise",
        "tags-create-reason": "Grünj:",
        "tags-create-submit": "Maage",
        "tags-create-no-name": "Dü skel en markiarangsnööm uundu.",
-       "tags-create-invalid-chars": "Markiarangsnöömer mut nian komas (<code>,</code>) of swäärsstreger (<code>/</code>) haa.",
+       "tags-create-invalid-chars": "Markiarangsnöömer mut nian komas (<code>,</code>), luadrocht streger (<code>|</code>) of swäärsstreger (<code>/</code>) haa.",
        "tags-create-invalid-title-chars": "Markiarangsnöömer mut nian tiakens haa, diar uk uun sidjennöömer ei föörkem mut.",
        "tags-create-already-exists": "Det markiarang \"$1\" jaft at al.",
        "tags-create-warnings-above": "{{PLURAL:$2|Detdiar wäärnang as|Jodiar wäärnangen san}} apdaaget, üs det markiarang \"$1\" iinracht wurd skul:",
        "htmlform-user-not-exists": "<strong>$1</strong> jaft at ei.",
        "htmlform-user-not-valid": "<strong>$1</strong> as nään tuläät brükernööm",
        "logentry-delete-delete": "$1 {{Gender:$2}} hää det sidj $3 stregen",
+       "logentry-delete-delete_redir": "$1 {{GENDER:$2|hää}} det widjerfeerang $3 stregen an auerskrewen",
        "logentry-delete-restore": "$1 {{GENDER:$2}} hää det sidj $3 weder iinsteld ($4)",
        "logentry-delete-event": "$1 {{GENDER:$2}} hää det uunsicht feranert faan {{PLURAL:$5|en logbuk iindrach|$5 logbuk iindracher}} üüb $3: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2}} hää det uunsicht feranert faan {{PLURAL:$5|ian werjuun|$5 werjuunen}} faan det sidj $3: $4",
index e9859a0..9d7b20b 100644 (file)
@@ -18,7 +18,8 @@
                        "Robin van der Vliet",
                        "PiefPafPier",
                        "Catrope",
-                       "Sjoerddebruin"
+                       "Sjoerddebruin",
+                       "Ieneach fan 'e Esk"
                ]
        },
        "tog-underline": "Keppelings ûnderstreekje:",
        "welcomeuser": "Wolkom, $1!",
        "yourname": "Brûkersnamme:",
        "userlogin-yourname": "Brûkersnamme",
-       "userlogin-yourname-ph": "Jou dyn brûkersnamme",
-       "createacct-another-username-ph": "Jou dyn brûkersnamme",
+       "userlogin-yourname-ph": "Jou jo brûkersnamme",
+       "createacct-another-username-ph": "Jou jo brûkersnamme",
        "yourpassword": "Wachtwurd:",
        "userlogin-yourpassword": "Wachtwurd",
-       "userlogin-yourpassword-ph": "Jou dyn wachtwurd",
-       "createacct-yourpassword-ph": "Jou dyn wachtwurd",
+       "userlogin-yourpassword-ph": "Jou jo wachtwurd",
+       "createacct-yourpassword-ph": "Jou jo wachtwurd",
        "yourpasswordagain": "Jo wachtwurd (nochris)",
        "createacct-yourpasswordagain": "Befêstigje wachtwurd",
        "createacct-yourpasswordagain-ph": "Befêstigje wachtwurd nochris",
        "wrongpassword": "Meidochnamme en wachtwurd hearre net by elkoar. Besykje op 'e nij, of fier it wachtwurd twa kear yn en meitsje nije meidoggersynstellings.",
        "wrongpasswordempty": "It opjûne wachtwurd wie leech. Besykje it nochris.",
        "passwordtooshort": "Wachtwurden moatte op syn minst {{PLURAL:$1|1 teken|$1 tekens}} lang wêze.",
-       "password-name-match": "Dyn wachtwurd mei net itselde as dyn meidoggersnamme wêze.",
+       "password-name-match": "Jo wachtwurd mei net itselde wêze as jo meidoggersnamme.",
        "mailmypassword": "E-mail my in nij wachtwurd.",
        "passwordremindertitle": "Nij wachtwurd foar de {{SITENAME}}",
        "passwordremindertext": "Immen (nei alle gedachten jo, fan ynternetadres $1) had in nij wachtwurd\nfoar {{SITENAME}} ($4) oanfrege. Der is in tydlik wachtwurd foar meidogger\n\"$2\"  makke en ynstelt as \"$3\". As dat jo bedoeling wie, melde jo jo dan\nno oan en kies in nij wachtwurd. Dyn tydlik wachtwurd komt yn {{PLURAL:$5|ien dei|$5 dagen}} te ferfallen.\nDer is in tydlik wachtwurd oanmakke foar brûker \"$2\": \"$3\".\n\nAs immen oars as jo dit fersyk dien hat of at it wachtwurd jo tuskentiidsk wer yn 't sin kommen is en\njo it net langer feroarje wolle, dan kinne jo dit berjocht ferjitte en\nfierdergean mei it brûken fan jo âlde wachtwurd.",
        "watchthis": "Folgje dizze side",
        "savearticle": "Side bewarje",
        "publishpage": "Side fêstlizze",
-       "publishchanges": "Feroarings publisearjen",
+       "publishchanges": "Feroarings publisearje",
        "preview": "Oerlêze",
        "showpreview": "Earst oerlêze",
        "showdiff": "Wizigings",
        "edit-hook-aborted": "De bewurking is ôfbrutsen troch in hook.\nDer is gjin taljochting beskikber.",
        "edit-gone-missing": "De side kin net bywurke wurde.\nHy liket fuorthelle te wezen.",
        "edit-conflict": "Bewurkingskonflikt.",
-       "edit-no-change": "Dyn bewurking is is net trochfierd, om 't der gjin feroaring yn 'e tekst oanbrocht is.",
-       "postedit-confirmation-saved": "Dyn bewurking is fêstlein.",
+       "edit-no-change": "Jo bewurking is net trochfierd, om 't der gjin feroaring yn 'e tekst oanbrocht is.",
+       "postedit-confirmation-saved": "Jo bewurking is fêstlein.",
        "edit-already-exists": "De side is net oanmakke.\nHy bestie al.",
        "defaultmessagetext": "Standert berjochttekst",
        "content-model-wikitext": "wikitekst",
index 568ff80..f43cb3f 100644 (file)
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Mostrar",
        "rcfilters-activefilters": "Filtros activos",
+       "rcfilters-advancedfilters": "Filtros avanzados",
        "rcfilters-quickfilters": "Configuración de filtros gardados",
        "rcfilters-quickfilters-placeholder-title": "Aínda non se gardou ningunha ligazón",
        "rcfilters-quickfilters-placeholder-description": "Para gardar a configuración dos seus filtros e reutilizala máis tarde, prema na icona do marcador na área de Filtro activo que se atopa a abaixo.",
        "rcfilters-filter-previousrevision-description": "Tódolos cambios realizados nunha páxina e que non son os máis recentes.",
        "rcfilters-filter-excluded": "Excluído",
        "rcfilters-tag-prefix-namespace-inverted": "<strong>:non</strong> $1",
-       "rcfilters-view-tags": "Etiquetas",
+       "rcfilters-view-tags": "Edicións marcadas",
        "rcnotefrom": "A continuación {{PLURAL:$5|móstrase o cambio feito|móstranse os cambios feitos}} desde o <strong>$3</strong> ás <strong>$4</strong> (móstranse <strong>$1</strong> como máximo).",
        "rclistfromreset": "Reinicializar a selección da data",
        "rclistfrom": "Mostrar os cambios novos desde o $3 ás $2",
index 27f1531..2873377 100644 (file)
        "title-invalid-characters": "כותרת הדף המבוקש מכילה תווים בלתי תקינים: \"$1\".",
        "title-invalid-relative": "בכותרת יש נתיב יחסי. כותרת דפים יחסיות (./, ../) אינן תקינות, משום שלעתים קרובות הן יהיו בלתי־ניתנות להשגה כשתטופלנה על־ידי הדפדפן של המשתמש.",
        "title-invalid-magic-tilde": "כותרת הדף המבוקש מכילה רצף טילדות מיוחד שאינו תקין (<nowiki>~~~</nowiki>).",
-       "title-invalid-too-long": "×\9b×\95תרת ×\94×\93×£ ×\94×\9e×\91×\95קש ×\90ר×\95×\9b×\94 ×\9e×\93×\99. ×\94×\99×\90 ×¦×¨×\99×\9b×\94 ×\9c×\94×\99×\95ת ×\9c×\9b×\9c ×\94×\99×\95תר ×\91×\90×\95ר×\9a ×©×\9c {{PLURAL:$1|×\91×\99×\99×\98 ×\90×\97×\93|$1 ×\91×\99×\99×\98ים}} בקידוד UTF-8.",
+       "title-invalid-too-long": "×\9b×\95תרת ×\94×\93×£ ×\94×\9e×\91×\95קש ×\90ר×\95×\9b×\94 ×\9e×\93×\99. ×\94×\99×\90 ×¦×¨×\99×\9b×\94 ×\9c×\94×\99×\95ת ×\9c×\9b×\9c ×\94×\99×\95תר ×\91×\90×\95ר×\9a ×©×\9c {{PLURAL:$1|×\91×\99ת ×\90×\97×\93|$1 ×\91תים}} בקידוד UTF-8.",
        "title-invalid-leading-colon": "כותרת הדף המבוקש מכילה תו נקודתיים בלתי תקין בתחילתה.",
        "perfcached": "המידע הבא הוא עותק שמור בזיכרון המטמון, ועשוי שלא להיות מעודכן. לכל היותר {{PLURAL:$1|תוצאה אחת נשמרת|$1 תוצאות נשמרות}} בזיכרון המטמון.",
        "perfcachedts": "המידע הבא הוא עותק שמור בזיכרון המטמון, שעודכן לאחרונה ב־$1. לכל היותר {{PLURAL:$4|תוצאה אחת נשמרת|$4 תוצאות נשמרות}} בזיכרון המטמון.",
        "history-show-deleted": "גרסאות מוסתרות בלבד",
        "histfirst": "הישנות ביותר",
        "histlast": "החדשות ביותר",
-       "historysize": "({{PLURAL:$1|×\91×\99×\99×\98 ×\90×\97×\93|$1 ×\91×\99×\99×\98ים}})",
+       "historysize": "({{PLURAL:$1|×\91×\99ת ×\90×\97×\93|$1 ×\91תים}})",
        "historyempty": "(ריק)",
        "history-feed-title": "היסטוריית גרסאות",
        "history-feed-description": "היסטוריית הגרסאות של הדף הזה בוויקי",
        "recentchanges-label-minor": "זוהי עריכה משנית",
        "recentchanges-label-bot": "עריכה זו בוצעה על־ידי בוט",
        "recentchanges-label-unpatrolled": "עריכה זו טרם נבדקה",
-       "recentchanges-label-plusminus": "×\94ש×\99× ×\95×\99 ×\91×\92×\95×\93×\9c ×\94×\93×£ (×\91×\91×\99×\99×\98×\99×\9d)",
+       "recentchanges-label-plusminus": "×\92×\95×\93×\9c ×\94×\93×£ ×\94שתנ×\94 ×\91×\9eספר ×\96×\94 ×©×\9c ×\91ת×\99×\9d",
        "recentchanges-legend-heading": "<strong>מקרא:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ({{GENDER:|ראה|ראי|ראו}} גם את [[Special:NewPages|רשימת הדפים החדשים]])",
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "recentchanges-submit": "הצגה",
        "rcfilters-activefilters": "מסננים פעילים",
+       "rcfilters-advancedfilters": "מסננים מתקדמים",
        "rcfilters-quickfilters": "הגדרות מסננים שמורות",
        "rcfilters-quickfilters-placeholder-title": "טרם נשמרו קישורים",
        "rcfilters-quickfilters-placeholder-description": "כדי לשמור את הגדרות המסננים שלך ולהשתמש בהן מאוחר יותר, יש ללחוץ על סמל הסימנייה באזור המסנן הפעיל להלן.",
        "rcfilters-filter-previousrevision-description": "כל השינויים שאינם השינוי האחרון בדף.",
        "rcfilters-filter-excluded": "מוחרג",
        "rcfilters-tag-prefix-namespace-inverted": "<strong>:לא</strong> $1",
-       "rcfilters-view-tags": "ת×\92×\99ות",
+       "rcfilters-view-tags": "ער×\99×\9b×\95ת ×\9eת×\95×\99×\92ות",
        "rcnotefrom": "להלן {{PLURAL:$5|השינוי שבוצע|השינויים שבוצעו}} מאז <strong>$3, $4</strong> (מוצגים עד <strong>$1</strong>).",
        "rclistfromreset": "איפוס בחירת התאריך",
        "rclistfrom": "הצגת שינויים חדשים החל מ־$2, $3",
        "number_of_watching_users_pageview": "[{{PLURAL:$1|משתמש אחד עוקב|$1 משתמשים עוקבים}} אחרי הדף]",
        "rc_categories": "הגבלה לקטגוריות (מופרדות בתו \"|\"):",
        "rc_categories_any": "כל אחת מהנבחרות",
-       "rc-change-size-new": "{{PLURAL:$1|×\91×\99×\99×\98 ×\90×\97×\93|$1 ×\91×\99×\99×\98ים}} לאחר השינוי",
+       "rc-change-size-new": "{{PLURAL:$1|×\91×\99ת ×\90×\97×\93|$1 ×\91תים}} לאחר השינוי",
        "newsectionsummary": "/* $1 */ פסקה חדשה",
        "rc-enhanced-expand": "הצגת הפרטים",
        "rc-enhanced-hide": "הסתרת הפרטים",
        "ignorewarnings": "התעלמות מכל האזהרות",
        "minlength1": "שמות קבצים צריכים להיות בני תו אחד לפחות.",
        "illegalfilename": "שם הקובץ \"$1\" מכיל תווים שאינם מותרים בכותרות דפים.\nנא לשנות את השם ולנסות להעלותו שנית.",
-       "filename-toolong": "ש×\9e×\95ת ×©×\9c ×§×\91צ×\99×\9d ×\9c×\90 ×\99×\9b×\95×\9c×\99×\9d ×\9c×\94×\99×\95ת ×\90ר×\95×\9b×\99×\9d ×\99×\95תר ×\9eÖ¾240 ×\91×\99×\99×\98ים.",
+       "filename-toolong": "ש×\9e×\95ת ×©×\9c ×§×\91צ×\99×\9d ×\9c×\90 ×\99×\9b×\95×\9c×\99×\9d ×\9c×\94×\99×\95ת ×\90ר×\95×\9b×\99×\9d ×\99×\95תר ×\9eÖ¾240 ×\91תים.",
        "badfilename": "שם הקובץ שונה ל־\"$1\".",
        "filetype-mime-mismatch": "סיומת הקובץ \".$1\" אינה מתאימה לסוג ה־MIME שנמצא לקובץ זה ($2).",
        "filetype-badmime": "לא ניתן להעלות קבצים שסוג ה־MIME שלהם הוא \"$1\".",
        "backend-fail-closetemp": "לא הייתה אפשרות לסגור את הקובץ הזמני.",
        "backend-fail-read": "לא ניתן היה לקרוא את הקובץ \"$1\".",
        "backend-fail-create": "לא ניתן היה לכתוב את הקובץ \"$1\".",
-       "backend-fail-maxsize": "לא ניתן היה לכתוב את הקובץ \"$1\" כיוון שהוא גדול יותר {{PLURAL:$2|מבייט אחד|מ־$2 בייטים}}.",
+       "backend-fail-maxsize": "לא ניתן היה לכתוב את הקובץ \"$1\" כי הוא גדול {{PLURAL:$2|מבית אחד|מ־$2 בתים}}.",
        "backend-fail-readonly": "מאגר האחסון לקבצים \"$1\" הוא כרגע במצב קריאה בלבד. הסיבה שניתנה לכך היא: <em>$2</em>",
        "backend-fail-synced": "הקובץ \"$1\" נמצא במצב לא עקבי בתוך מאגרי אחסון הקבצים הפנימיים",
        "backend-fail-connect": "לא ניתן היה להתחבר למאגר אחסון הקבצים הפנימי \"$1\".",
        "withoutinterwiki-legend": "תחילית",
        "withoutinterwiki-submit": "הצגה",
        "fewestrevisions": "הדפים בעלי מספר העריכות הנמוך ביותר",
-       "nbytes": "{{PLURAL:$1|×\91×\99×\99×\98 ×\90×\97×\93|$1 ×\91×\99×\99×\98ים}}",
+       "nbytes": "{{PLURAL:$1|×\91×\99ת ×\90×\97×\93|$1 ×\91תים}}",
        "ncategories": "{{PLURAL:$1|קטגוריה אחת|$1 קטגוריות}}",
        "ninterwikis": "{{PLURAL:$1|קישור בינוויקי קחד|$1 קישורי בינוויקי}}",
        "nlinks": "{{PLURAL:$1|קישור אחד|$1 קישורים}}",
        "restriction-level": "רמת ההגנה:",
        "minimum-size": "גודל מינימלי",
        "maximum-size": "גודל מרבי:",
-       "pagesize": "(×\91×\91×\99×\99×\98ים)",
+       "pagesize": "(×\91תים)",
        "restriction-edit": "עריכה",
        "restriction-move": "העברה",
        "restriction-create": "יצירה",
        "import-parse-failure": "שגיאה בפענוח ה־XML",
        "import-noarticle": "אין דף לייבוא!",
        "import-nonewrevisions": "כל הגרסאות יובאו בעבר.",
-       "xml-error-string": "$1 ×\91ש×\95ר×\94 $2, ×¢×\9e×\95×\93×\94 $3 (×\91×\99×\99×\98 מספר $4): $5",
+       "xml-error-string": "$1 ×\91ש×\95ר×\94 $2, ×¢×\9e×\95×\93×\94 $3 (×\91×\99ת מספר $4): $5",
        "import-upload": "העלאת קובץ XML",
        "import-token-mismatch": "מידע הכניסה אבד.\n\nייתכן שנותקתם מהחשבון. <strong>אנא ודאו שאתם עדיין מחוברים לחשבון ונסו שוב.</strong>\nאם זה עדיין לא עובד, נסו [[Special:UserLogout|לצאת מהחשבון]] ולהיכנס אליו שנית, וודאו שהדפדפן שלכם מאפשר קבלת עוגיות מאתר זה.",
        "import-invalid-interwiki": "לא ניתן לייבא מאתר הוויקי שצוין.",
        "pageinfo-header-properties": "מאפייני הדף",
        "pageinfo-display-title": "כותרת התצוגה",
        "pageinfo-default-sort": "מפתח המיון הרגיל",
-       "pageinfo-length": "×\90×\95ר×\9a ×\94×\93×£ (×\91×\91×\99×\99×\98ים)",
+       "pageinfo-length": "×\90×\95ר×\9a ×\94×\93×£ (×\91×\91תים)",
        "pageinfo-article-id": "מזהה הדף",
        "pageinfo-language": "שפת התוכן של הדף",
        "pageinfo-language-change": "שינוי",
        "exif-yresolution": "רזולוציה אנכית",
        "exif-stripoffsets": "מיקום מידע התמונה",
        "exif-rowsperstrip": "מספר השורות לרצועה",
-       "exif-stripbytecounts": "×\91×\99×\99×\98ים לרצועה דחוסה",
+       "exif-stripbytecounts": "×\91תים לרצועה דחוסה",
        "exif-jpeginterchangeformat": "יחס ל־JPEG SOI",
-       "exif-jpeginterchangeformatlength": "×\91×\99×\99×\98×\99×\9d ×©×\9c ×\9e×\99×\93×¢ JPEG",
+       "exif-jpeginterchangeformatlength": "×\91ת×\99×\9d ×©×\9c × ×ª×\95× ×\99 JPEG",
        "exif-whitepoint": "נקודה לבנה צבעונית",
        "exif-primarychromaticities": "צבעוניות ה־Primarity",
        "exif-ycbcrcoefficients": "מקדמי פעולת הטרנספורמציה של מרחב הצבע",
        "limitreport-ppvisitednodes": "מספר הצמתים שקדם־המפענח ביקר בהם",
        "limitreport-ppgeneratednodes": "מספר הצמתים שקדם־המפענח יצר",
        "limitreport-postexpandincludesize": "גודל הטקסט המוכלל לאחר הפריסה",
-       "limitreport-postexpandincludesize-value": "{{PLURAL:$2|$1 ×\9eת×\95×\9a ×\91×\99×\99×\98 ×\90×\97×\93|$1/$2 ×\91×\99×\99×\98ים}}",
+       "limitreport-postexpandincludesize-value": "{{PLURAL:$2|$1 ×\9eת×\95×\9a ×\91×\99ת ×\90×\97×\93|$1 ×\9eת×\95×\9a $2 ×\91תים}}",
        "limitreport-templateargumentsize": "גודל הפרמטרים של התבניות",
-       "limitreport-templateargumentsize-value": "{{PLURAL:$2|$1 ×\9eת×\95×\9a ×\91×\99×\99×\98 ×\90×\97×\93|$1/$2 ×\91×\99×\99×\98ים}}",
+       "limitreport-templateargumentsize-value": "{{PLURAL:$2|$1 ×\9eת×\95×\9a ×\91×\99ת ×\90×\97×\93|$1 ×\9eת×\95×\9a $2 ×\91תים}}",
        "limitreport-expansiondepth": "עומק הפריסה הגבוה ביותר",
        "limitreport-expensivefunctioncount": "מספר פונקציות המפענח שגוזלות משאבים",
        "expandtemplates": "פריסת תבניות",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 (<strong>מבוטל</strong>)",
        "mediastatistics": "סטטיסטיקות קבצים",
        "mediastatistics-summary": "סטטיסטיקה על סוגי קבצים שהועלו. הסטטיסטיקה כוללת רק את הגרסה החדשה ביותר של הקובץ: גרסאות ישנות או מחוקות של קבצים אינן כלולות.",
-       "mediastatistics-nbytes": "{{PLURAL:$1|×\91×\99×\99×\98 ×\90×\97×\93|$1 ×\91×\99×\99×\98ים}} ($2; $3%)",
-       "mediastatistics-bytespertype": "×\94×\92×\95×\93×\9c ×\94×\9b×\95×\9c×\9c ×©×\9c ×\94ק×\91צ×\99×\9d ×\91פרק ×\96×\94: {{PLURAL:$1|×\91×\99×\99×\98 ×\90×\97×\93|$1 ×\91×\99×\99×\98ים}} ($2; $3%).",
-       "mediastatistics-allbytes": "×\94×\92×\95×\93×\9c ×\94×\9b×\95×\9c×\9c ×©×\9c ×\9b×\9c ×\94ק×\91צ×\99×\9d: {{PLURAL:$1|×\91×\99×\99×\98 ×\90×\97×\93|$1 ×\91×\99×\99×\98ים}} ($2).",
+       "mediastatistics-nbytes": "{{PLURAL:$1|×\91×\99ת ×\90×\97×\93|$1 ×\91תים}} ($2; $3%)",
+       "mediastatistics-bytespertype": "×\94×\92×\95×\93×\9c ×\94×\9b×\95×\9c×\9c ×©×\9c ×\94ק×\91צ×\99×\9d ×\91פרק ×\96×\94: {{PLURAL:$1|×\91×\99ת ×\90×\97×\93|$1 ×\91תים}} ($2; $3%).",
+       "mediastatistics-allbytes": "×\94×\92×\95×\93×\9c ×\94×\9b×\95×\9c×\9c ×©×\9c ×\9b×\9c ×\94ק×\91צ×\99×\9d: {{PLURAL:$1|×\91×\99ת ×\90×\97×\93|$1 ×\91תים}} ($2).",
        "mediastatistics-table-mimetype": "סוג MIME",
        "mediastatistics-table-extensions": "סיומות אפשריות",
        "mediastatistics-table-count": "מספר הקבצים",
index f2e311d..c4042f1 100644 (file)
        "subject-preview": "Pregled teme:",
        "previewerrortext": "Pri pokušaju prikazivanja pretpregleda vaših promjena došlo je do pogrješke.",
        "blockedtitle": "Suradnik je blokiran",
-       "blockedtext": "'''Vaše suradničko ime ili IP adresa je blokirana'''\n\nBlokirao Vas je $1.\nRazlog blokiranja je sljedeći: ''$2''.\n\n* Početak blokade: $8\n* Istek blokade: $6\n* Ime blokiranog suradnika: $7\n\nMožete kontaktirati $1 ili jednog od [[{{MediaWiki:Grouppage-sysop}}|administratora]] kako bi Vam pojasnili razlog blokiranja.\n\nPrimijetite da ne možete koristiti opciju \"Pošalji mu e-poruku\" ako niste upisali valjanu adresu e-pošte u Vašim [[Special:Preferences|suradničkim postavkama]] i ako niste u tome onemogućeni prilikom blokiranja.\n\nVaša trenutačna IP adresa je $3, a oznaka bloka #$5. Molimo navedite ovaj broj kod svakog upita vezano za razlog blokiranja.",
-       "autoblockedtext": "Vaša IP adresa automatski je blokirana zbog toga što ju je koristio drugi suradnik, kojeg je blokirao $1.\nRazlog blokiranja je sljedeći:\n\n:''$2''\n\n* Početak blokade: $8\n* Blokada istječe: $6\n* Ime blokiranog suradnika: $7\n\nMožete kontaktirati $1 ili jednog od [[{{MediaWiki:Grouppage-sysop}}|administratora]] kako bi Vam pojasnili razlog blokiranja.\n\nPrimijetite da ne možete rabiti opciju \"Pošalji mu e-poruku\" ako niste upisali valjanu adresu e-pošte u Vašim [[Special:Preferences|suradničkim postavkama]] i ako niste u tome onemogućeni prilikom blokiranja.\n\nVaša trenutačna IP adresa je $3, a oznaka bloka #$5. Molimo navedite ovaj broj kod svakog upita vezano za razlog blokiranja.",
+       "blockedtext": "<strong>Vaše je suradničko ime blokirano ili je Vaša IP adresa blokirana.</strong>\n\nBlokirao Vas je $1.\nRazlog blokiranja je sljedeći: <em>$2</em>.\n\n* Početak blokade: $8\n* Blokada istječe: $6\n* Blokirani suradnik: $7\n\nMožete kontaktirati $1 ili jednog od [[{{MediaWiki:Grouppage-sysop}}|administratora]] kako bi Vam pojasnili razlog blokiranja.\n\nPrimijetite da ne možete koristiti opciju \"Pošalji e-poruku suradnici – suradniku\" ako niste upisali valjanu adresu e-pošte u Vašim [[Special:Preferences|suradničkim postavkama]] i ako niste u tome onemogućeni prilikom blokiranja.\n\nVaša trenutačna IP adresa je $3, a oznaka bloka #$5. Molimo uvrstite sve gore navedene detalje u svaki upit koji napišete.",
+       "autoblockedtext": "Vaša IP adresa automatski je blokirana zbog toga što ju je koristio drugi suradnik, kojeg je blokirao $1.\nRazlog blokiranja je sljedeći:\n\n:<em>$2</em>\n\n* Početak blokade: $8\n* Blokada istječe: $6\n* Blokirani suradnik: $7\n\nMožete kontaktirati $1 ili jednog od [[{{MediaWiki:Grouppage-sysop}}|administratora]] kako bi Vam pojasnili razlog blokiranja.\n\nPrimijetite da ne možete rabiti opciju \"Pošalji e-poruku suradnici – suradniku\" ako niste upisali valjanu adresu e-pošte u Vašim [[Special:Preferences|suradničkim postavkama]] i ako niste u tome onemogućeni prilikom blokiranja.\n\nVaša trenutačna IP adresa je $3, a oznaka bloka #$5. Molimo uvrstite sve gore navedene detalje u svaki upit koji napišete.",
        "blockednoreason": "bez obrazloženja",
        "whitelistedittext": "Za uređivanje stranice molimo $1.",
        "confirmedittext": "Morate potvrditi Vašu adresu e-pošte prije nego što Vam bude omogućeno uređivanje. Molim unesite i ovjerite Vašu adresu e-pošte u [[Special:Preferences|suradničkim postavkama]].",
        "rcfilters-filter-watchlist-watched-description": "Izmjene stranica na Vašem popisu praćenja.",
        "rcfilters-filter-watchlist-watchednew-label": "Nove izmjene na popisu praćenja",
        "rcfilters-filter-watchlist-watchednew-description": "Izmjene stranica na popisu praćenja koje niste posjetili od vremena učinjenih izmjena.",
-       "rcfilters-filter-watchlist-notwatched-label": "Van popisa praćenja",
+       "rcfilters-filter-watchlist-notwatched-label": "Izvan popisa praćenja",
        "rcfilters-filter-watchlist-notwatched-description": "Sve izmjene na stranicama osim onih na popisu praćenja.",
        "rcfilters-filtergroup-changetype": "Vrste promjena",
        "rcfilters-filter-pageedits-label": "Uređivanja stranice",
        "trackingcategories-disabled": "Kategorija onemogućena",
        "mailnologin": "Nema adrese pošiljatelja",
        "mailnologintext": "Morate biti [[Special:UserLogin|prijavljeni]]\ni imati valjanu adresu e-pošte u svojim [[Special:Preferences|postavkama]]\nda bi mogli slati poštu drugim suradnicima.",
-       "emailuser": "Pošalji mu e-poruku",
+       "emailuser": "Pošalji e-poruku suradnici – suradniku",
        "emailuser-title-target": "Pošalji poruku {{GENDER:$1|suradniku|suradnici|suradniku}}",
        "emailuser-title-notarget": "Pošalji e-poštu suradniku",
        "emailpagetext": "Možete koristiti ovaj obrazac za slanje elektroničke pošte {{GENDER:$1|suradniku|suradnici}}.\nE-mail adresa iz Vaših [[Special:Preferences|postavki]] nalazit će se u \"From\" polju poruke i primatelj će Vam moći izravno odgovoriti.",
        "historywarning": "<strong>Upozorenje:</strong> stranica koju želite izbrisati ima starije izmjene s $1 {{PLURAL:$1|inačicom|inačice|inačica}}:",
        "historyaction-submit": "Prikaži",
        "confirmdeletetext": "Zauvijek ćete izbrisati stranicu ili sliku zajedno s prijašnjim inačicama.\nMolim potvrdite svoju namjeru, da razumijete posljedice i da ovo radite u skladu s [[{{MediaWiki:Policy-url}}|pravilima]].",
-       "actioncomplete": "Zahvat završen",
+       "actioncomplete": "Radnja je dovršena",
        "actionfailed": "Radnja nije uspjela",
        "deletedtext": "\"$1\" je izbrisana.\nVidi $2 za evidenciju nedavnih brisanja.",
        "dellogpage": "Evidencija brisanja",
        "tooltip-feed-rss": "RSS feed za ovu stranicu",
        "tooltip-feed-atom": "Atom feed za ovu stranicu",
        "tooltip-t-contributions": "Pogledaj popis doprinosa {{GENDER:$1|ovog suradnika|ove suradnice}}",
-       "tooltip-t-emailuser": "Pošalji suradniku e-mail",
+       "tooltip-t-emailuser": "Pošalji {{GENDER:$1|suradniku|suradnici}} e-poruku",
        "tooltip-t-info": "Više informacija o ovoj stranici",
        "tooltip-t-upload": "Postavi datoteke",
        "tooltip-t-specialpages": "Popis svih posebnih stranica",
        "tooltip-ca-nstab-special": "Ovo je posebna stranica koju nije moguće izravno uređivati.",
        "tooltip-ca-nstab-project": "Pogledaj stranicu o projektu",
        "tooltip-ca-nstab-image": "Pogledaj stranicu o slici",
-       "tooltip-ca-nstab-mediawiki": "Pogledaj sistemske poruke",
+       "tooltip-ca-nstab-mediawiki": "Pogledaj sustavsku poruku",
        "tooltip-ca-nstab-template": "Pogledaj predložak",
        "tooltip-ca-nstab-help": "Pogledaj stranicu za pomoć",
        "tooltip-ca-nstab-category": "Pogledaj stranicu kategorije",
        "exif-software": "Korišteni softver",
        "exif-artist": "Autor",
        "exif-copyright": "Nositelj prava",
-       "exif-exifversion": "Exif verzija",
-       "exif-flashpixversion": "Podržana verzija Flashpixa",
+       "exif-exifversion": "Inačica Exifa",
+       "exif-flashpixversion": "Podržana inačica Flashpixa",
        "exif-colorspace": "Kolor prostor",
        "exif-componentsconfiguration": "Značenje pojedinih komponenti",
        "exif-compressedbitsperpixel": "Dubina boje poslije sažimanja",
        "exif-compression-4": "CCITT Grupa 4 faks kodiranje",
        "exif-copyrighted-true": "Zaštićeno autorskim pravom",
        "exif-copyrighted-false": "Status autorskih prava nije postavljen",
-       "exif-unknowndate": "Datum nepoznat",
+       "exif-unknowndate": "nepoznat datum",
        "exif-orientation-1": "Normalno",
        "exif-orientation-2": "Zrcaljeno po horizontali",
        "exif-orientation-3": "Zaokrenuto 180°",
        "confirm-unwatch-top": "Ukloni ovu stranicu s popisa praćenja?",
        "confirm-rollback-button": "U redu",
        "confirm-rollback-top": "Ukloniti uređivanja na ovoj stranici?",
+       "percent": "$1 %",
        "quotation-marks": "\"$1\"",
        "imgmultipageprev": "← prethodna slika",
        "imgmultipagenext": "sljedeća slika →",
        "table_pager_limit_submit": "Idi",
        "table_pager_empty": "Nema rezultata",
        "autosumm-blank": "uklonjen cjelokupni sadržaj stranice",
-       "autosumm-replace": "tekst stranice se zamjenjuje s '$1'",
-       "autoredircomment": "preusmjeravanje na [[$1]]",
-       "autosumm-new": "nova stranica: $1",
+       "autosumm-replace": "Zamijenjen sadržaj stranice s »$1«",
+       "autoredircomment": "Preusmjeravanje stranice na [[$1]]",
+       "autosumm-new": "Stvorena nova stranica sa sadržajem: »$1«.",
        "autosumm-newblank": "stvorena prazna stranica",
        "size-bytes": "$1 {{PLURAL:$1|bajt|bajta|bajtova}}",
        "lag-warn-normal": "Moguće je da izmjene nastale posljednjih $1 {{PLURAL:$1|sekundu|sekundi}} neće biti vidljive na ovom popisu.",
index e952253..5f2b0d7 100644 (file)
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Monstrar",
        "rcfilters-activefilters": "Filtros active",
+       "rcfilters-advancedfilters": "Filtros avantiate",
        "rcfilters-quickfilters": "Filtros salveguardate",
        "rcfilters-quickfilters-placeholder-title": "Nulle ligamine salveguardate ancora",
        "rcfilters-quickfilters-placeholder-description": "Pro salveguardar tu filtros pro uso posterior, clicca sur le icone marcapaginas in le area Filtro Active hic infra.",
        "rcfilters-filter-previousrevision-description": "Tote le modificationes que non es le modification le plus recente de un pagina.",
        "rcfilters-filter-excluded": "Excludite",
        "rcfilters-tag-prefix-namespace-inverted": "<strong>:non</strong> $1",
-       "rcfilters-view-tags": "Etiquettas",
+       "rcfilters-view-tags": "Modificationes con etiquettas",
        "rcnotefrom": "Ecce le {{PLURAL:$5|modification|modificationes}} a partir del <strong>$3 a $4</strong> (usque a <strong>$1</strong> entratas monstrate).",
        "rclistfromreset": "Reinitialisar selection de data",
        "rclistfrom": "Monstrar nove modificationes a partir del $3 a $2",
index 3231ded..a624660 100644 (file)
                        "Redredsonia",
                        "Luigi.delia",
                        "Samuele2002",
-                       "Kaspo"
+                       "Kaspo",
+                       "Pequod76"
                ]
        },
        "tog-underline": "Sottolinea i collegamenti:",
        "previewnote": "'''Ricorda che questa è solo un'anteprima.'''\nLe tue modifiche NON sono ancora state salvate!",
        "continue-editing": "Vai all'area di modifica",
        "previewconflict": "L'anteprima corrisponde al testo presente nella casella di modifica superiore e rappresenta la pagina come apparirà se si sceglie di salvarla in questo momento.",
-       "session_fail_preview": "Spiacenti. Non è stato possibile elaborare la modifica perché sono andati persi i dati relativi alla sessione.\n\nPotresti essere stato disconnesso. <strong>Verifica di essere ancora collegato e riprova</strong>.\nSe il problema persiste, puoi provare a [[Special:UserLogout|scollegarti]] ed effettuare un nuovo l'accesso, controllando che il tuo browser accetti i cookie da questo sito.",
+       "session_fail_preview": "Spiacenti. Non è stato possibile elaborare la modifica perché sono andati persi i dati relativi alla sessione.\n\nPotresti essere stato disconnesso. <strong>Verifica di essere ancora collegato e riprova</strong>.\nSe il problema persiste, puoi provare a [[Special:UserLogout|scollegarti]] e ad effettuare un nuovo accesso, controllando che il tuo browser accetti i cookie da questo sito.",
        "session_fail_preview_html": "Spiacenti. Non è stato possibile elaborare la modifica perché sono andati persi i dati relativi alla sessione.\n\n<em>Siccome {{SITENAME}} ha dell'HTML grezzo attivato e c'è stata una perdita dei dati della sessione, l'anteprima è nascosta come precauzione contro gli attacchi JavaScript.</em>\n\n<strong>Se si tratta di un normale tentativo d'anteprima, riprova.</strong> \nSe il problema persiste, puoi provare a [[Special:UserLogout|scollegarti]] ed effettuare un nuovo l'accesso, controllando che il tuo browser accetti i cookie da questo sito.",
        "token_suffix_mismatch": "'''La modifica non è stata salvata perché il client ha mostrato di gestire in modo errato i caratteri di punteggiatura nel token associato alla stessa. Per evitare una possibile corruzione del testo della pagina, è stata rifiutata l'intera modifica. Questa situazione può verificarsi, talvolta, quando vengono usati alcuni servizi di proxy anonimi via web che presentano dei bug.'''",
        "edit_form_incomplete": "'''Alcune parti del modulo di modifica non hanno raggiunto il server; controllare che le modifiche siano intatte e riprovare.'''",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Mostra",
        "rcfilters-activefilters": "Filtri attivi",
+       "rcfilters-advancedfilters": "Filtri avanzati",
        "rcfilters-quickfilters": "Salva le impostazioni del filtro",
        "rcfilters-quickfilters-placeholder-title": "Nessun collegamento salvato ancora",
        "rcfilters-quickfilters-placeholder-description": "Per salvare le impostazioni del tuo filtro e riutilizzarle dopo, clicca l'icona segnalibro nell'area \"Filtri attivi\" qui sotto",
        "rcfilters-filter-previousrevision-description": "Tutte le modifiche che non sono l'ultima modifica effettuata sulla voce.",
        "rcfilters-filter-excluded": "Escluso",
        "rcfilters-tag-prefix-namespace-inverted": "<strong>:non</strong> $1",
-       "rcfilters-view-tags": "Etichette",
+       "rcfilters-view-tags": "Modifiche etichettate",
        "rcnotefrom": "Di seguito {{PLURAL:$5|è elencata la modifica apportata|sono elencate le modifiche apportate}} a partire da <strong>$3, $4</strong> (mostrate fino a <strong>$1</strong>).",
        "rclistfromreset": "Reimposta la selezione della data",
        "rclistfrom": "Mostra le modifiche apportate a partire da $3 $2",
index e42fe51..a18eeb9 100644 (file)
@@ -2,7 +2,8 @@
        "@metadata": {
                "authors": [
                        "Gnangbade",
-                       "Stephanecbisson"
+                       "Stephanecbisson",
+                       "MF-Warburg"
                ]
        },
        "tog-underline": "Kpasɩ kɩhɛsɩ",
        "anontalk": "Ndɔnjɔɔlɩyɛ",
        "navigation": "Tʋʋzɩtʋ",
        "and": "&#32;nɛ",
-       "qbfind": "Ñɩnɩ",
-       "qbbrowse": "Kuli",
-       "qbedit": "Ñɔɔzɩ",
-       "qbpageoptions": "Takayɩhayʋʋ kʋnɛ",
-       "qbmyoptions": "Man-takayɩhatʋ",
        "faq": "Tɔm pɔsɩtʋ kɩkpɛndɩtʋ",
-       "faqpage": "Project:Tɔmpɔsɩtʋ kɩkpɛndɩtʋ",
        "actions": "Labɩtʋ",
        "namespaces": "Hɩla loniye",
        "variants": "Ndɩ ndɩ",
        "edit-local": "Ñɔɔzɩ kɛdɩtʋ kɩcɛyɩtʋ",
        "create": "Lɩzɩ",
        "create-local": "Sɔzɩ kɛdɩtʋ kɩcɛyɩtʋ",
-       "editthispage": "Ñɔɔzɩ takayɩhayʋʋ kʋnɛ",
-       "create-this-page": "Lɩzɩ takayɩhayʋʋ kʋnɛ",
        "delete": "Hɩzɩ",
-       "deletethispage": "Hɩzɩ takayɩhayʋʋ kʋnɛ",
-       "undeletethispage": "Kitina takayɩhayʋʋ kɩhɩzʋʋ",
        "undelete_short": "Kitina {{PLURAL:$1|ñɔɔzʋʋ|$1 ñɔɔzɩtʋ}}",
        "viewdeleted_short": "Na {{PLURAL:$1|ñɔɔzʋʋ kɩhɩzʋʋ|$1 ñɔɔzɩtʋ kɩhɩzɩtʋ}}",
        "protect": "Kandɩ",
        "protect_change": "Lɛɣzɩ",
-       "protectthispage": "Kandɩ takayɩhayʋʋ kʋnɛ kɩ-yɔɔ",
        "unprotect": "Lɛɣzɩ kandɩtʋ",
-       "unprotectthispage": "Lɛɣzɩ takayɩhayʋʋ kʋnɛ kɩ-yɔɔ kandɩtʋ",
        "newpage": "Takayɩhayʋʋ kɩfalʋʋ",
-       "talkpage": "Takayɩhayʋʋ kʋnɛ kɩ-yɔɔ ndɔnjɔlɩyɛ",
        "talkpagelinktext": "ndɔncɔɔlɩyɛ",
        "specialpage": "Takayɩhayʋʋ ndɩ",
        "personaltools": "Man-kɩlabɩnaʋ",
-       "articlepage": "Na takayɩhayʋʋ ŋgʋ kɩ-taa wɛ tɔm yɔ",
        "talk": "Ndɔncɔɔlɩyɛ",
        "views": "Taaɖɩtʋ",
        "toolbox": "Kɩlabɩnaʋ",
        "tool-link-userrights": "Lɛɣzɩ {{GENDER:$1|labɩnɩyaa}} tindima",
        "tool-link-userrights-readonly": "Na {{GENDER:$1|labɩnɩyaa}} tindima",
        "tool-link-emailuser": "Tiyina meeli kɛ labɩnayʋ",
-       "userpage": "Na labɩnayʋ takayɩhayʋʋ",
-       "projectpage": "Na tambaɣ takayɩhayʋʋ",
        "imagepage": "Na takayaɣ takayɩhayʋʋ",
        "mediawikipage": "Na tɔm kiyekitu takayɩhayʋʋ",
        "templatepage": "Na kɩtɩzɩnaʋ takayɩhayʋʋ",
        "tooltip-summary": "Ma tɔm keem natʋyʋ",
        "simpleantispam-label": "Spam lʋbɩnaʋ yɔɔ wiluu. \\nLa <strong>taala</strong> ma cɩnɛ!\"",
        "pageinfo-toolboxlink": "Takayɩhayʋʋ yɔɔ kiheyitu",
-       "previousdiff": "Wayɩ ñɔɔzɩtʋ",
-       "nextdiff": "Ñʋʋzʋʋ kɩtɩŋɩm",
+       "previousdiff": "← Wayɩ ñɔɔzɩtʋ",
+       "nextdiff": "Ñʋʋzʋʋ kɩtɩŋɩm →",
        "file-info-size": "Kpaɣna pɩkɩsɛlɩ $1 nɛ pɩtalɩ $2 ñɩŋgʋ, takayaɣ walanzɩ : $3, MIME akɩlɩ : $4",
        "file-nohires": "Tʋtʋ tʋnɛ tɩ-wayɩ fɛyɩ.",
        "svg-long-desc": "SVG takayaɣ; tʋtʋ $1 pikiseli powolo patɩlɩ $2; walanzɩ : $3",
index 53d0098..1fbf875 100644 (file)
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "recentchanges-submit": "보기",
        "rcfilters-activefilters": "사용 중인 필터",
+       "rcfilters-advancedfilters": "고급 필터",
        "rcfilters-quickfilters": "저장된 필터 설정",
        "rcfilters-quickfilters-placeholder-title": "저장된 링크가 아직 없습니다",
        "rcfilters-quickfilters-placeholder-description": "필터 설정을 저장하고 나중에 다시 사용하려면 아래의 사용 중인 필터 영역의 북마크 아이콘을 클릭하십시오.",
        "rcfilters-filter-previousrevision-description": "문서에 대한 최근 변경사항이 아닌 모든 변경사항입니다.",
        "rcfilters-filter-excluded": "제외됨",
        "rcfilters-tag-prefix-namespace-inverted": "<strong>:아님</strong> $1",
-       "rcfilters-view-tags": "태그",
+       "rcfilters-view-tags": "태그된 편집",
        "rcnotefrom": "아래는 <strong>$3, $4</strong>부터 시작하는 {{PLURAL:$5|바뀜이 있습니다}}. (최대 <strong>$1</strong>개가 표시됨)",
        "rclistfromreset": "날짜 선택 초기화",
        "rclistfrom": "$3 $2부터 시작하는 새로 바뀐 문서 보기",
index d9c56ca..a058de2 100644 (file)
        "recentchanges-legend-plusminus": "''(±123)''",
        "recentchanges-submit": "Weisen",
        "rcfilters-activefilters": "Aktiv Filteren",
+       "rcfilters-advancedfilters": "Erweidert Filteren",
        "rcfilters-quickfilters": "Gespäichert Filter-Astellungen",
        "rcfilters-quickfilters-placeholder-title": "Nach keng Linke gespäichert",
        "rcfilters-quickfilters-placeholder-description": "Fir Är Filterastellungen z'änneren a méi spéit nees ze benotzen, klickt op d'Zeeche  fir Lieszeechen (bookmark) am Beräich vun den Aktive Filteren hei drënner.",
        "rcfilters-filter-previousrevision-description": "All Ännerungen, déi net déi rezenst Ännerung vun enger Säit sinn.",
        "rcfilters-filter-excluded": "Ausgeschloss",
        "rcfilters-tag-prefix-namespace-inverted": "<strong>:net</strong> $1",
-       "rcfilters-view-tags": "Markéierungen",
+       "rcfilters-view-tags": "Markéiert Ännerungen",
        "rcnotefrom": "Hei drënner {{PLURAL:$5|gëtt d'Ännerung|ginn d'Ännerungen}} zanter <strong>$3, $4</strong> (maximal <strong>$1</strong> Ännerunge gi gewisen).",
        "rclistfrom": "Nei Ännerunge vum $3 $2 u weisen",
        "rcshowhideminor": "Kleng Ännerunge $1",
index f829501..eab248b 100644 (file)
        "readonlywarning": "<strong>Attençion</strong>: o database o l'è bloccou pe manutençion, no l'è momentaniamente poscibile sarvâ e modifiche effettuæ.\nPe no perdile, coppile in te'n file de testo e sarvilo in atteisa do sbrocco do database.\n\nL'amministratô de scistema ch'o l'ha misso l'abrocco o l'ha fornio questa spiegaçion: $1.",
        "protectedpagewarning": "'''Attençion: questa paggina a l'è stæta bloccâ de moddo che solo i utenti co-i privileggi d'amministratô possan modificala.'''\nL'urtimo elemento do registro o l'è riportou chì appreuvo pe referença:",
        "semiprotectedpagewarning": "'''Notta:''' Questa paggina a l'è stæta bloccä de moddo che solo i utenti registræ possan modificâla.\nL'urtimo elemento do registro o l'è riportou chì appreuvo pe referensa:",
-       "cascadeprotectedwarning": "'''Attençion:''' Questa paggina a l'è stæta bloccâ de moddo che solo i utenti co-i privileggi d'amministratô possan modificala da-o momento ch'a l'é inclusa seleçionando a proteçion \"ricorsciva\" {{PLURAL:$1|inta paggina|inte paggine}}:",
+       "cascadeprotectedwarning": "'''Attençion:''' Questa paggina a l'è stæta bloccâ de moddo che solo i utenti con [[Special:ListGroupRights|di driti speciffichi]] possan modificâla da-o momento ch'a l'è inclusa seleçionando a proteçion \"ricorsciva\" {{PLURAL:$1|inta paggina|inte paggine}}:",
        "titleprotectedwarning": "'''Attension: Questa paggina a l'è stæta bloccâ de moddo che seggian necessai [[Special:ListGroupRights|di driti speciffichi]] pe creâla.'''\nL'urtimo elemento do registro o l'è riportou chì appreuvo pe referensa:",
        "templatesused": "{{PLURAL:$1|Template dêuviòu|Template dêuviæ}} in sta pàgina:",
        "templatesusedpreview": "{{PLURAL:$1|Template deuviou|Template deuviæ}} in te st'anteprimma:",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (veddi e [[Special:NewPages|neuve paggine]])",
        "recentchanges-submit": "Fanni vedde",
        "rcfilters-activefilters": "Filtri attivi",
-       "rcfilters-quickfilters": "Inganci rappidi",
+       "rcfilters-advancedfilters": "Filtri avançæ",
+       "rcfilters-quickfilters": "Sarva e impostaçioin do filtro",
+       "rcfilters-quickfilters-placeholder-title": "Nesciun ingancio sarvou ancon",
+       "rcfilters-quickfilters-placeholder-description": "Pe sarvâ e impostaçioin do to filtro e doeuviâle torna ciu tardi, clicca l'icona segnalibbro inte l'area \"Filtri attivi\" chì de sotta",
        "rcfilters-savedqueries-defaultlabel": "Filtri sarvæ",
        "rcfilters-savedqueries-rename": "Rinommina",
        "rcfilters-savedqueries-setdefault": "Imposta comme predefinio",
        "rcfilters-savedqueries-unsetdefault": "Rimoeuvi comme predefinio",
        "rcfilters-savedqueries-remove": "Leva",
        "rcfilters-savedqueries-new-name-label": "Nomme",
-       "rcfilters-savedqueries-apply-label": "Crea ingancio rappido",
+       "rcfilters-savedqueries-apply-label": "Sarva impostaçioin",
        "rcfilters-savedqueries-cancel-label": "Anulla",
-       "rcfilters-savedqueries-add-new-title": "Sarva filtri comme ingancio rappido",
+       "rcfilters-savedqueries-add-new-title": "Sarva e impostaçioin attoale do filtro",
        "rcfilters-restore-default-filters": "Ripristina i filtri predefinii",
        "rcfilters-clear-all-filters": "Netezza tutti i filtri",
        "rcfilters-search-placeholder": "Filtra i urtime modiffiche (navega ò comença a digitâ)",
        "rcfilters-state-message-fullcoverage": "A seleçion de tutti i filtri inte 'n groppo l'è comme no seleçionâne manc'un, coscì che sto filtro o no fa effetto. O groppo o l'includde: $1",
        "rcfilters-filtergroup-registration": "Registraçion utente",
        "rcfilters-filter-registered-label": "Registrou",
+       "rcfilters-filter-registered-description": "Contributoî conessi.",
        "rcfilters-filter-unregistered-label": "Non registrou",
+       "rcfilters-filter-unregistered-description": "Contributoî non conessi.",
+       "rcfilters-filter-unregistered-conflicts-user-experience-level": "Questo filtro o l'è in conflito co-{{PLURAL:$2|o seguente filtro|i seguenti filtri}} Esperiença, ch'o {{PLURAL:$2|troeuva|troeuvan}} soltanto di utenti registræ: $1",
        "rcfilters-filtergroup-authorship": "Aotô do contributo",
        "rcfilters-filter-editsbyself-label": "E to modiffiche",
        "rcfilters-filter-editsbyself-description": "I to contributi.",
        "rcfilters-filter-editsbyother-label": "E modiffiche di atri",
        "rcfilters-filter-editsbyother-description": "Tutte e modiffiche sarvo e to.",
        "rcfilters-filtergroup-userExpLevel": "Livello d'esperiença (solo pe i utenti registræ)",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "I filtri esperiença troeuvan solo di utenti registræ, quindi questo filtroo l' è in conflito co-o filtro \"Non registrou\".",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "O filtro \"Non registrou\" o l'è in conflito con un ò ciu filtri Esperiença, ch'atroeuvan solo di utenti registræ. I filtri in conflito son marcæ inte l'area \"Filtri attivi\" chì de d'ato.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Noeuvi utenti",
        "rcfilters-filter-user-experience-level-newcomer-description": "Meno de 10 modiffiche e 4 giorni d'attivitæ.",
+       "rcfilters-filter-user-experience-level-learner-label": "Prinçipianti",
+       "rcfilters-filter-user-experience-level-learner-description": "Con ciu esperiença di \"Noeuvi arrivæ\" ma meno che i \"Utenti esperti\".",
        "rcfilters-filter-user-experience-level-experienced-label": "Utenti con esperiença",
        "rcfilters-filter-user-experience-level-experienced-description": "Ciù de 30 giorni d'attivitæ e 500 modiffiche.",
        "rcfilters-filtergroup-automated": "Contributi aotomattichi",
        "rcfilters-filter-minor-label": "Cangiamenti menoî",
        "rcfilters-filter-minor-description": "Modiffiche che l'aoto o l'ha indicou comme minoî.",
        "rcfilters-filter-major-label": "Cangiamenti non menoî",
+       "rcfilters-filter-major-description": "Modiffiche non indicæ comme minoî.",
+       "rcfilters-filtergroup-watchlist": "Paggine sotta oservaçion",
        "rcfilters-filter-watchlist-watched-label": "Sotta oservaçion",
+       "rcfilters-filter-watchlist-watched-description": "Modiffiche a-e paggine sotta oservaçion.",
+       "rcfilters-filter-watchlist-watchednew-label": "Noeuvi cangi a-e paggine sotta oservaçion",
+       "rcfilters-filter-watchlist-watchednew-description": "Cangi a-e paggine sotta oservaçion che non t'hæ vixitou doppo a modiffica.",
+       "rcfilters-filter-watchlist-notwatched-label": "Non sotta oservaçion",
+       "rcfilters-filter-watchlist-notwatched-description": "Tutto foeua che i cangi a-e to paggine sotta oservaçion.",
        "rcfilters-filtergroup-changetype": "Tipo de modiffica",
        "rcfilters-filter-pageedits-label": "Modiffiche a-e paggine",
+       "rcfilters-filter-pageedits-description": "Modiffiche a-o contegnto wiki, discuscioin, descriçioin categoria…",
        "rcfilters-filter-newpages-label": "Creaçioin de paggine",
-       "rcfilters-filter-logactions-description": "Açioin aministrative, creaçioin utençe, eliminaçioin paggine, caregamenti....",
+       "rcfilters-filter-newpages-description": "Modiffiche che crean de noeuve paggine.",
+       "rcfilters-filter-categorization-label": "Modiffiche a-e categorie",
+       "rcfilters-filter-categorization-description": "Registri de pagine azonte ò rimosse da-e categorie.",
+       "rcfilters-filter-logactions-label": "Açioin de registro",
+       "rcfilters-filter-logactions-description": "Açioin aministrative, creaçioin utençe, eliminaçioin paggine, caregamenti...",
+       "rcfilters-hideminor-conflicts-typeofchange-global": "O filtro \"Modiffiche minoî\" o l'è in confito con un ò ciu filtri \"Tipo de modiffica\", percose çerte modiffiche no poeuan ese indicæ comme \"minoî\". I filtri in conflito son indicæ inte l'area \"Filtri attivi\" chì de d'ato.",
+       "rcfilters-hideminor-conflicts-typeofchange": "Gh'è di tipi de modiffiche che no poeuan ese indicæ comme \"minoî\", quindi questo filtro o l'è in conflito co-i seguenti filtri \"Tipo de modiffica\": $1",
+       "rcfilters-typeofchange-conflicts-hideminor": "Questo filtro \"Tipo di modifica\" o l'è in conflito co-o  filtro \"Modiffiche minoî\". Çerti tipi de modiffiche no poeuan ese indicæ comme \"minoî\".",
        "rcfilters-filtergroup-lastRevision": "Urtima revixon",
        "rcfilters-filter-lastrevision-label": "Urtima revixon",
        "rcfilters-filter-lastrevision-description": "I urtime modiffiche a 'na paggina.",
        "rcfilters-filter-previousrevision-label": "Verscioin precedente",
+       "rcfilters-filter-previousrevision-description": "Tutte e modiffiche che no son l'urtima modiffica a-a paggina.",
+       "rcfilters-filter-excluded": "Escluzo",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:non</strong> $1",
+       "rcfilters-view-tags": "Modiffiche etichettæ",
        "rcnotefrom": "Chì sotta gh'è {{PLURAL:$5|o cangiamento|i cangiamenti}} a partî da <strong>$3, $4</strong> (scin a '''$1''').",
+       "rclistfromreset": "Reimposta a seleçion da dæta",
        "rclistfrom": "Fanni vedde e modiffiche apportæ partindo da $3 $2",
        "rcshowhideminor": "$1 cangiaménti minoî",
        "rcshowhideminor-show": "Fanni vedde",
        "php-uploaddisabledtext": "O caregamento di file tramite PHP o l'è disabilitou. Controlla a configuaçion de file_uploads.",
        "uploadscripted": "Questo file o conten un codiçe HTML ò de script, ch'o poriæ ese interpretou erroniamente da un browser web.",
        "upload-scripted-pi-callback": "Imposcibile caregâ un file ch'o conten un'instruçion de elaboaçion in XML-stylesheet.",
+       "upload-scripted-dtd": "Imposcibbile caregâ di file SVG che contegnan 'na deciaraçion DTD non-standard.",
        "uploaded-script-svg": "Trovou elemento de script \"$1\" into file caregou in formato SVG.",
        "uploaded-hostile-svg": "Trovou CSS no seguo inte l'elemento de stile do file in formato SVG caregou.",
        "uploaded-event-handler-on-svg": "Impostâ i attributi de gestion di eventi <code>$1=\"$2\"</code> no l'è consentio inti file SGV",
        "enotif_body_intro_moved": "A pagina $1 de {{SITENAME}} a l'è stæta mesciâ da {{gender:$2|$2}} o $PAGEEDITDATE, amia $3 pe-a verscion attoale.",
        "enotif_body_intro_restored": "A pagina $1 de {{SITENAME}} a l'è stæta ripristinâ da {{gender:$2|$2}} o $PAGEEDITDATE, amia $3 pe-a verscion attoale.",
        "enotif_body_intro_changed": "A pagina $1 de {{SITENAME}} a l'è stæta modificâ da {{gender:$2|$2}} o $PAGEEDITDATE, amia $3 pe-a verscion attoale.",
-       "enotif_lastvisited": "Vixita $1 pe vedde tutte e modiffiche da l'urtima vixita.",
-       "enotif_lastdiff": "Vixita $1 pe vedde a modiffica.",
+       "enotif_lastvisited": "Pe tutte e modiffiche da-a to urtima vixita, amia $1",
+       "enotif_lastdiff": "Pe vixualizâ sta modiffica, amia $1",
        "enotif_anon_editor": "ûtente anònnimo $1",
        "enotif_body": "Gentî $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nÖgetto de l'intervento, inseio da l'aotô: $PAGESUMMARY $PAGEMINOREDIT\n\nContatta l'aotô:\nvia posta eletronnica: $PAGEEDITOR_EMAIL\nin sciô scito: $PAGEEDITOR_WIKI\n\nNo saiâ mandou atre notiffiche in caxo de urteioî attivitæ, se no ti vixiti a pagina doppo avei effettuou l'accesso. Inoltre, l'è poscibbile modificâ e impostaçioin de notiffica pe tutte e paggine inta lista dei öservæ speciali.\n\nO scistema de notiffica de {{SITENAME}}, a-o to serviççio\n\n--\nPe modificâ e impostaçioin de notiffiche via posta elettronnica, vixita \n{{canonicalurl:{{#special:Preferences}}}}\n\nPe modificâ a lista di öservæ speciali, vixita \n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nPe rimoeuve a pagina da-a lista di öservæ speciali, vixita\n$UNWATCHURL\n\nPe commentâ e riçeive agiutto:\n$HELPPAGE",
        "changed": "cangiâ",
        "editcomment": "L'ogetto da modiffica o l'ea: <em>$1</em>.",
        "revertpage": "Annullou e modiffiche de [[Special:Contributions/$2|$2]] ([[User talk:$2|discuscion]]), riportâ a-a verscion precedente de [[User:$1|$1]]",
        "revertpage-nouser": "Annullou e modiffiche de un utente ascoso, riportâ a-a verscion precedente de {{GENDER:$1|[[User:$1|$1]]}}",
-       "rollback-success": "Annullou e modiffiche de $1; paggina riportâ a l'urtima verscion de $2.",
+       "rollback-success": "Annullou e modiffiche de {{GENDER:$3|$1}}; paggina riportâ a l'urtima verscion de {{GENDER:$4|$2}}.",
        "rollback-success-notify": "Annullou e modiffiche de $1;\npaggina riportâ a l'urtima revixon de $2. [$3 Mostra e modiffiche]",
        "sessionfailure-title": "Sescion fallia",
        "sessionfailure": "S'è veificou un problema inta sescion ch'a l'identiffica l'accesso; o scistema o no l'ha eseguio o comando impartio pe precauçion. Torna a-a paggina precedente co-o tasto 'Inderê' do to browser, recarega a paggina e riproeuva.",
        "changecontentmodel-emptymodels-title": "Nisciun modello de contegnuo disponibbile",
        "changecontentmodel-emptymodels-text": "O contegnuo de [[:$1]] o no poeu ese convertio inte nisciun tipo.",
        "log-name-contentmodel": "Modiffiche do modello di contegnui",
-       "log-description-contentmodel": "Eventi relativi a-o modello de contegnuo de 'na paggina",
+       "log-description-contentmodel": "Questa pagina a l'elenca e modiffiche a-o modello de contegnuo de paggine, e e paggine che son stæte creæ con un modello de contegnuo despægio da quello predefinio.",
        "logentry-contentmodel-new": "$1 {{GENDER:$2|l'ha creou}} a paggina $3 doeuviando un modello de contegnuo non predefinio \"$5\"",
        "logentry-contentmodel-change": "$1 {{GENDER:$2|l'ha modificou}} o modello de contegnuo da paggina $3 da \"$4\" a \"$5\"",
        "logentry-contentmodel-change-revertlink": "ripristina",
        "modifiedarticleprotection": "ha modificou o livello de proteçion de \"[[$1]]\"",
        "unprotectedarticle": "o l'ha sprotezuo \"[[$1]]\"",
        "movedarticleprotection": "o l'ha mesciou a proteçion da \"[[$2]]\" a \"[[$1]]\"",
+       "protectedarticle-comment": "{{GENDER:$2|Protezuo}} \"[[$1]]\"",
+       "modifiedarticleprotection-comment": "{{GENDER:$2|Cangiou o livello de proteçion}} pe \"[[$1]]\"",
+       "unprotectedarticle-comment": "{{GENDER:$2|Rimosso a proteçion}} da \"[[$1]]\"",
        "protect-title": "Cangio do livello de proteçion pe \"$1\"",
        "protect-title-notallowed": "Veddi o livello de proteçion de \" $1 \"",
        "prot_1movedto2": "[[$1]] mesciòu a [[$2]]",
        "sp-contributions-uploads": "caregaménti",
        "sp-contributions-logs": "log",
        "sp-contributions-talk": "Ciæti",
-       "sp-contributions-userrights": "manezzo di driti di utenti",
+       "sp-contributions-userrights": "gestion permissi {{GENDER:$1|utente}}",
        "sp-contributions-blocked-notice": "St'utente o l'è attualmente bloccòu.\nL'urtimo elemento into registro di blocchi o l'è riportòu chì de sotta pe rifeimento:",
        "sp-contributions-blocked-notice-anon": "St'addreçço IP o l'è attoalmente bloccòu.\nL'urtimo elemento into registro di blocchi o l'è riportòu chì de sotta pe rifeimento:",
        "sp-contributions-search": "Riçerca contribuçioìn",
        "unblocked-id": "O blocco $1 o l'è stæto rimòsso",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] o l'è stæto sbloccou.",
        "blocklist": "Utenti bloccæ",
+       "autoblocklist": "Aotoblocchi",
+       "autoblocklist-submit": "Çerchia",
+       "autoblocklist-legend": "Elenca aotoblocchi",
+       "autoblocklist-localblocks": "{{PLURAL:$1|Aotoblocco locale|Aotoblocchi locali}}",
+       "autoblocklist-total-autoblocks": "Nummero totâ di aotoblocchi: $1",
+       "autoblocklist-empty": "A lista di aotoblocchi a l'è voeua.",
+       "autoblocklist-otherblocks": "{{PLURAL:$1|Atro aotoblocco|Atri aotoblocchi}}",
        "ipblocklist": "Utenti blocæ",
        "ipblocklist-legend": "Çerca un utente bloccou",
        "blocklist-userblocks": "Ascondi i blocchi di utenti registræ",
        "cant-move-to-user-page": "No ti g'hæ o permisso pe mesciâ a pagina insce 'na pagina utente (escluse e sottopagine utente).",
        "cant-move-category-page": "No ti g'hæ o permisso pe mesciâ de categorie.",
        "cant-move-to-category-page": "No ti g'hæ o permisso pe mesciâ a pagina insce 'na categoria.",
+       "cant-move-subpages": "No ti g'hæ o permisso pe mesciâ de sottopaggine.",
+       "namespace-nosubpages": "O namespace \"$1\" o no consente sottopaggine.",
        "newtitle": "Noeuvo tittolo:",
        "move-watch": "Azzonze a li osservæ speçiâli",
        "movepagebtn": "Stramûâ a paggina",
        "movelogpagetext": "De sotta una lista de tutti i stramui de paggina.",
        "movesubpage": "{{PLURAL:$1|Sottopagina|Sottopagine}}",
        "movesubpagetext": "Questa pagina a g'ha $1 {{PLURAL:$1|sottopagina mostrâ|sottopagine mostræ}} chì de sotta.",
+       "movesubpagetalktext": "A corispondente paggina de discuscion a g'ha $1 {{PLURAL:$1|sottopaggina mostrâ|sottopaggine mostræ}} chì aproeuvo.",
        "movenosubpage": "Questa pagina a no g'ha de sottopagine.",
        "movereason": "Raxon",
        "revertmove": "Ristorâ",
        "tooltip-pt-mycontris": "A lista de {{GENDER:|to}} contribuçioin",
        "tooltip-pt-anoncontribs": "Un elenco de modiffiche fæte da questo adreçço IP",
        "tooltip-pt-login": "Consegemmo a registraçión, ma a no l'è obrigatoia.",
+       "tooltip-pt-login-private": "Ti devi acede pe doeuviâ sta wiki",
        "tooltip-pt-logout": "Sciorti",
        "tooltip-pt-createaccount": "Se conseggia de registrase e de intrâ, sciben che no segge obligatoio",
        "tooltip-ca-talk": "Discuscion riguardo a sta paggina.",
        "anonymous": "{{PLURAL:$1|Utente anonnimo|Utenti anonnimi}} de {{SITENAME}}",
        "siteuser": "$1, utente de {{SITENAME}}",
        "anonuser": "$1, utente anonnimo de {{SITENAME}}",
-       "lastmodifiedatby": "Sta pagina a l'è stæta cangiâ l'urtima votta a e $2 do $1 da $3.",
+       "lastmodifiedatby": "Sta paggina a l'è stæta cangiâ l'urtima votta o $1 a $2  da $3.",
        "othercontribs": "O testo attoale o l'è basou in sciô travaggio de $1.",
        "others": "atri",
        "siteusers": "$1, {{PLURAL:$2|{{GENDER:$1|utente}}|utenti}} de {{SITENAME}}",
        "pageinfo-length": "Longheçça da paggina (in byte)",
        "pageinfo-article-id": "ID da paggina",
        "pageinfo-language": "Lengua do contegnuo da paggina",
+       "pageinfo-language-change": "cangia",
        "pageinfo-content-model": "Modello do contegnuo da paggina",
        "pageinfo-content-model-change": "cangia",
        "pageinfo-robot-policy": "Indiçizzaçion pe-i robot",
        "pageinfo-category-pages": "Nummero de paggine",
        "pageinfo-category-subcats": "Nummio de sottacategorie",
        "pageinfo-category-files": "Nummero di file",
+       "pageinfo-user-id": "ID utente",
        "markaspatrolleddiff": "Marca comme controlâ",
        "markaspatrolledtext": "Marca sta paggina comme controlâ",
        "markaspatrolledtext-file": "Marca a verscion de sto file comme controlâ",
        "patrol-log-header": "Questo o l'è 'n registro de revixoin controlæ.",
        "log-show-hide-patrol": "$1 registro di controlli",
        "log-show-hide-tag": "$1 registro di etichette",
+       "confirm-markpatrolled-button": "OK",
+       "confirm-markpatrolled-top": "Marca verscion $3 de $2 comme veificâ?",
        "deletedrevision": "Scassou a vegia verscion de $1.",
        "filedeleteerror-short": "Errô inta scassatua do file: $1",
        "filedeleteerror-long": "Gh'è stæto di erroî into tentativo de scassâ o file:\n\n$1",
        "newimages-summary": "Questa pagina speciale a mostra i urtimi file caregæ.",
        "newimages-legend": "Filtro",
        "newimages-label": "Nomme do file (o una parte de questo):",
+       "newimages-user": "Adresso IP ò nomme utente",
+       "newimages-newbies": "Fanni vedde solo e contribuçioin di noeuvi utenti",
        "newimages-showbots": "Mostra i caregamenti fæti dai bot",
        "newimages-hidepatrolled": "Ascondi i caregamenti controlæ",
+       "newimages-mediatype": "Tipo de suporto:",
        "noimages": "No gh'è ninte da vedde.",
+       "gallery-slideshow-toggle": "Alterna miniatue",
        "ilsubmit": "Çerca",
        "bydate": "pe dæta",
        "sp-newimages-showfrom": "Mostra i file ciù reçenti a partî da-e oe $2 do $1",
        "tags-deactivate": "disattiva",
        "tags-hitcount": "$1 {{PLURAL:$1|modiffica|modiffiche}}",
        "tags-manage-no-permission": "No ti g'hæ a permiscion pe manezâ i cangi d'etichetta.",
-       "tags-manage-blocked": "No ti poeu manezâ i cangi d'etichetta dementre che t'ê blocou.",
+       "tags-manage-blocked": "No ti poeu gestî i etichette a-e modiffiche mentre t'ê {{GENDER:$1|bloccou|bloccâ}}.",
        "tags-create-heading": "Crea un noeuvo tag",
        "tags-create-explanation": "Pe impostaçion predefinia, i tag apen-a creæ saian disponibbili pe l'utilizzo di utenti e di bot.",
        "tags-create-tag-name": "Nomme de l'etichetta:",
index 7dba2f2..f2662c1 100644 (file)
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (skatīt arī [[Special:NewPages|jaunās lapas]])",
        "recentchanges-submit": "Rādīt",
        "rcfilters-activefilters": "Aktīvie filtri",
+       "rcfilters-quickfilters": "Saglabātie filtra iestatījumi",
        "rcfilters-restore-default-filters": "Atjaunot noklusētos filtrus",
        "rcfilters-clear-all-filters": "Noņemt visus filtrus",
        "rcfilters-search-placeholder": "Filtrēt pēdējās izmaiņas (pārlūko vai sāc rakstīt)",
index ecbaa92..c398130 100644 (file)
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Прикажи",
        "rcfilters-activefilters": "Активни филтри",
+       "rcfilters-advancedfilters": "Напредни филтри",
        "rcfilters-quickfilters": "Зачувани филтерски поставки",
        "rcfilters-quickfilters-placeholder-title": "Засега нема зачувани врски",
        "rcfilters-quickfilters-placeholder-description": "За да ги зачувате вашите филтерски псотавки за да ги употребите другпат, стиснете на иконката за бележник во подрачјето „Активен филтер“ подолу.",
        "rcfilters-filter-previousrevision-description": "Сите промени кои не се најнови преработки на страницата.",
        "rcfilters-filter-excluded": "Исклучени",
        "rcfilters-tag-prefix-namespace-inverted": "<strong>:не</strong> $1",
-       "rcfilters-view-tags": "Ознаки",
+       "rcfilters-view-tags": "Означени уредувања",
        "rcnotefrom": "Подолу {{PLURAL:$5|е прикажана промената|се прикажани промените}} почнувајќи од <strong>$3, $4</strong>  (се прикажуваат до <b>$1</b>).",
        "rclistfromreset": "Нов избор на датуми",
        "rclistfrom": "Прикажи нови промени почнувајќи од $3 $2",
index 07bf86a..68f0ce2 100644 (file)
        "mw-widgets-dateinput-no-date": "कोणताही दिनांक निवडला नाही",
        "mw-widgets-titleinput-description-new-page": "अद्याप पान अस्तित्वात नाही",
        "mw-widgets-titleinput-description-redirect": "$1ला पुनर्निर्देशित करा",
+       "date-range-from": "या दिनांकापासून:",
+       "date-range-to": "या दिनांकापर्यंत:",
        "sessionmanager-tie": "हे एकत्रित करु शकत नाही,बहुविध विनंती अधिप्रमाणन प्रकार:$1",
        "sessionprovider-generic": "$1 सत्रे",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "कुकी-आधारीत सत्रे",
index ed2f078..c7943f2 100644 (file)
        "mainpage-nstab": "ဗဟိုစာမျက်နှာ",
        "nosuchaction": "ဤကဲ့သို့ ဆောင်ရွက်ချက်မျိုး မရှိပါ။",
        "nosuchspecialpage": "ဤကဲ့သို့သော အထူးစာမျက်နှာ မရှိပါ",
+       "nospecialpagetext": "<strong>သင်သည် မရေရာသော အထူးစာမျက်နှာတစ်ခုကို တောင်းဆိုခဲ့သည်။</strong>\n\nရေရာသော အထူးစာမျက်နှာများ စာရင်းကို [[Special:SpecialPages|{{int:specialpages}}]] တွင် တွေ့ရှိနိုင်ပါသည်။",
        "error": "အမှား",
        "databaseerror": "ဒေတာဘေ့စ် အမှား",
        "databaseerror-function": "လုပ်ဆောင်ချက် - $1",
        "summary-preview": "အ​ကျဉ်း​ချုပ်​န​မူ​နာ:",
        "subject-preview": "အကြောင်းအရာ နမူနာ -",
        "blockedtitle": "အသုံးပြုသူကို ပိတ်ပင်ထားသည်",
+       "blockedtext": "<strong>သင်၏ အသုံးပြုသူအမည် သို့မဟုတ် အိုင်ပီလိပ်စာသည် ပိတ်ပင်ခြင်း ခံထားရသည်။</strong>\n\nဤပိတ်ပင်မှုအား $1 က ဆောင်ရွက်ခဲ့သည်။\nအကြောင်းရင်းမှာ <em>$2</em> ဖြစ်သည်။\n\n* ပိတ်ပင်ခြင်း စတင်ချိန်: $8\n* ပိတ်ပင်ခြင်း သက်တမ်းကုန်ချိန်: $6\n* ရည်ရွယ်ရာ blockee: $7\n\nသင်သည် ပိတ်ပင်မှုအတွက် ဆွေးနွေးရန် $1 သို့မဟုတ် အခြား [[{{MediaWiki:Grouppage-sysop}}|စီမံခန့်ခွဲသူ]] အား ဆက်သွယ်နိုင်သည်။\nသင့်အနေဖြင့် [[Special:Preferences|အကောင့်၏ ရွေးချယ်စရာများ]]ထဲတွင် ရေရာသော အီးမေးလိပ်စာအား မထည့်သွင်းထားပါက \"ဤအသုံးပြုသူအား အီးမေးပို့ပါ\" လုပ်ဆောင်ချက်ကို အသုံးပြုနိုင်မည် မဟုတ်ပါ။ အလားတူ ယင်းလုပ်ဆောင်ချက်ကို ပိတ်ပင်မခံရမှ လုပ်ဆောင်နိုင်မည်ဖြစ်သည်။\nသင်၏ လက်ရှိ အိုင်ပီလိပ်စာမှာ $3 ဖြစ်ပြီး၊ ပိတ်ပင်မှုအိုင်ဒီမှာ #$5 ဖြစ်သည်။\nသင်ပြုလုပ်မည့် စုံစမ်းမေးမြန်းမှုများတွင် အထက်ပါ အချက်များ အားလုံး ပါဝင်နေပါစေ။",
        "blockednoreason": "အကြောင်းပြချက် မပေးထားပါ",
        "whitelistedittext": "စာမျက်နှာများကို တည်းဖြတ်ရန် $1ရမည်။",
        "nosuchsectiontitle": "အပိုင်းကို ရှာမရနိုင်ပါ",
        "newarticletext": "သင်သည် မရှိသေးသော စာမျက်နှာလင့် ကို ရောက်လာခြင်းဖြစ်သည်။\nစာမျက်နှာအသစ်စတင်ရန် အောက်မှ သေတ္တာထဲတွင် စတင်ရိုက်ထည့်ပါ (နောက်ထပ် သတင်းအချက်အလက်များအတွက်[$1 အကူအညီ စာမျက်နှာ]ကို ကြည့်ပါ)။\nမတော်တဆရောက်လာခြင်း ဖြစ်ပါက ဘရောက်ဆာ၏ နောက်ပြန်ပြန်သွားသော <strong>back</strong> ခလုတ်ကို နှိပ်ပါ။",
        "noarticletext": "ဤစာမျက်နှာတွင် ယခုလက်ရှိတွင် မည်သည့်စာသားမှ မရှိပါ။\nသင်သည် အခြားစာမျက်နှာများတွင် [[Special:Search/{{PAGENAME}}|ဤစာမျက်နှာ၏ ခေါင်းစဉ်ကို ရှာနိုင်သည်]]၊ <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ဆက်စပ်ရာ မှတ်တမ်းများကို ရှာနိုင်သည်]၊ သို့မဟုတ် [{{fullurl:{{FULLPAGENAME}}|action=edit}} ဤစာမျက်နှာကို ဖန်တီးနိုင်သည်]</span>။",
        "noarticletext-nopermission": "ဤစာမျက်နှာတွင် ယခုလက်ရှိတွင် မည်သည့်စာသားမှ မရှိပါ။\nသင်သည် အခြားစာမျက်နှာများတွင် [[Special:Search/{{PAGENAME}}|ဤစာမျက်နှာ၏ ခေါင်းစဉ်ကို ရှာနိုင်သည်]]၊ သို့မဟုတ် <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ဆက်စပ်ရာ Logs များကို ရှာနိုင်သည်]</span>။ သို့သော် ဤစာမျက်နှာကို ဖန်တီးရန် သင့်တွင် အခွင့်အရေး မရှိပါ။",
+       "userpage-userdoesnotexist-view": "အသုံးပြုသူအကောင့် \"$1\" သည် မှတ်ပုံမတင်ထားပါ။",
        "blocked-notice-logextract": "ဤအသုံးပြုသူအား လတ်တလောတွင် ပိတ်ပင်ထားသည်။\nနောက်ဆုံးပိတ်ပင်မှု မှတ်တမ်းအား ကိုးကားနိုင်ရန် အောက်တွင် ဖော်ပြထားသည်။",
        "note": "'''မှတ်ချက် -'''",
        "previewnote": "<strong>ဤသည်မှာ နမူနာ ကြည့်နေခြင်းသာဖြစ်ကြောင်း မမေ့ပါနှင့်။</strong>\nသင်ပြောင်းလဲထားသည်များကို မသိမ်းရသေးပါ။",
        "postedit-confirmation-restored": "စာမျက်နှာကို ပြန်လည်ထိန်းသိမ်းပြီးပြီ။",
        "postedit-confirmation-saved": "သင့်တည်းဖြတ်မှုကို သိမ်းဆည်းပြီးပြီ။",
        "edit-already-exists": "စာမျက်နှာအသစ်တစ်ခု မဖန်တီးနိုင်ပါ။\nယင်းစာမျက်နှာ တည်ရှိပြီး ဖြစ်သည်။",
+       "content-model-wikitext": "ဝီကီစာသား",
        "duplicate-args-category": "တမ်းပလိတ်တွင်းရှိ arguments ထပ်နေသော စာမျက်နှာများ",
        "post-expand-template-inclusion-warning": "'''သတိပေးချက် -''' တမ်းပလိတ်အရွယ်အစား ကြီးလွန်းနေသည်။\nအချို့တမ်းပလိတ်တို့ ပါဝင်မည်မဟုတ်။",
        "post-expand-template-inclusion-category": "ထည့်သွင်းနိုင်သော တမ်းပလိတ်အရွယ်အစားပြည့်သွားပြီဖြစ်သော စာမျက်နှာများ",
        "post-expand-template-argument-warning": "'''သတိပေးချက် -''' ဤစာမျက်နှာတွင် ပမာဏအားဖြင့် ကြီးမားကျယ်ပြန့်သော template argument တစ်ခုပါဝင်သည်။\nယင်း arguments များကို ဖယ်ထုတ်လိုက်သည်။",
        "post-expand-template-argument-category": "ဖယ်ထုတ်ထားသော template arguments များပါဝင်သည့် စာမျက်နှာများ",
        "parser-template-loop-warning": "တမ်းပလိတ်များ လှည့်ပတ်ဆက်စပ် နေသည်ကို တွေ့ရသည်။ [[$1]]",
+       "undo-failure": "ကြားဖြတ် တည်းဖြတ်မှုများကြောင့် တည်းဖြတ်မှုကို နောက်ပြန် မပြင်နိုင်တော့ပါ။",
        "undo-summary": "[[Special:Contributions/$2|$2]] ([[User talk:$2|ဆွေးနွေး]]) ၏ တည်းဖြတ်မူ $1 ကို ပြန်လည်ပယ်ဖျက်လိုက်သည်",
        "viewpagelogs": "ဤစာမျက်နှာအတွက် မှတ်တမ်းများကို ကြည့်ရန်",
        "nohistory": "ဤစာမျက်နှာတွင် တည်းဖြတ်မှု ရာဇဝင်မရှိပါ",
        "page_first": "ပထမဆုံး",
        "page_last": "အနောက်ဆုံး",
        "histlegend": "တည်းဖြတ်မူများကို နှိုင်းယှဉ်ရန် radio boxes လေးများကို မှတ်သားပြီးနောက် Enter ရိုက်ချပါ သို့ အောက်ခြေမှ ခလုတ်ကို နှိပ်ပါ။<br />\nLegend: <strong>({{int:cur}})</strong> = နောက်ဆုံးမူနှင့် ကွဲပြားချက် <strong>({{int:last}})</strong> = ယင်းရှေ့မူနှင့် ကွဲပြားချက်, <strong>{{int:minoreditletter}}</strong> = အရေးမကြီးသော ပြုပြင်မှု.",
-       "history-fieldset-title": "á\80\9bá\80¬á\80\87á\80\9dá\80\84á\80ºá\80\9bá\80¾á\80¬á\80\80á\80¼á\80\8aá\80·á\80ºရန်",
+       "history-fieldset-title": "á\80\9aá\80\81á\80\84á\80ºá\80\99á\80°á\80\99á\80»á\80¬á\80¸ á\80\9bá\80¾á\80¬á\80\96á\80½á\80±ရန်",
        "history-show-deleted": "ဖျက်ထားသည်များသာ",
        "histfirst": "အဟောင်းဆုံး",
        "histlast": "အသစ်ဆုံး",
        "editundo": "နောက်ပြန် ပြန်ပြင်ရန်",
        "diff-empty": "(ကွဲပြားမှု မရှိ)",
        "diff-multi-sameuser": "(တူညီသော အသုံးပြုသူ၏ {{PLURAL:$1|အလယ်ကြား မူတစ်ခု|အလယ်ကြား မူများ $1 ခု}} အား ပြသမထားပါ)",
+       "diff-multi-otherusers": "({{PLURAL:$2|အခြား အသုံးပြုသူ|အသုံးပြုသူ $2 ဦးတို့}}၏ {{PLURAL:$1|အလယ်ကြား မူတစ်ခု|အလယ်ကြား မူများ $1 ခု}} အား ပြသမထားပါ)",
        "searchresults": "ရှာဖွေမှု ရလဒ်များ",
        "searchresults-title": "\"$1\" အတွက် ရှာတွေ့သည့် ရလဒ်များ",
        "titlematches": "စာမျက်နှာခေါင်းစဉ်ကိုက်ညီသည်",
        "search-redirect": "($1 မှ ပြန်ညွှန်းထားသည်)",
        "search-section": "(အပိုင်း $1)",
        "search-category": "(ကဏ္ဍ $1)",
+       "search-file-match": "(ကိုက်ညီသော ဖိုင်အကြောင်းအရာ)",
        "search-suggest": "$1 ဟု ဆိုလိုပါသလား။",
        "search-interwiki-caption": "ညီအစ်မ ပရောဂျက်များ",
        "search-interwiki-default": "$1 မှ ရလဒ်များ -",
        "recentchanges": "လတ်တလော အပြောင်းအလဲများ",
        "recentchanges-legend": "လတ်တလော အပြောင်းအလဲများအတွက် ရွေးချယ်စရာများ",
        "recentchanges-summary": "ဤစာမျက်နှာတွင် ဝီကီ၏ လတ်တလောပြောင်းလဲမှုများကို နောက်ကြောင်းခံလိုက်ရန်",
+       "recentchanges-noresult": "သတ်မှတ်ထားသည့် ကာလအတွင်း ဤသတ်မှတ်ချက်များနှင့် ကိုက်ညီသော ပြောင်းလဲမှုများ မရှိပါ။",
        "recentchanges-feed-description": "ဤ feed ထဲတွင် ဝီကီ၏ လတ်တလောပြောင်းလဲမှုများကို နောက်ကြောင်းခံလိုက်ရန်",
        "recentchanges-label-newpage": "ဤတည်းဖြတ်မှုသည် စာမျက်နှာအသစ်ကို ဖန်တီးခဲ့သည်။",
        "recentchanges-label-minor": "အရေးမကြီးသော ​ပြင်​ဆင်​မှု ​ဖြစ်​သည်​",
        "filehist-comment": "မှတ်ချက်",
        "imagelinks": "ဖိုင်သုံးစွဲမှု",
        "linkstoimage": "ဤဖိုင်သို့ အောက်ပါ {{PLURAL:$1|စာမျက်နှာလင့်|စာမျက်နှာလင့် $1 ခု}} -",
+       "linkstoimage-more": "ဤဖိုင်သို့ {{PLURAL:$1|စာမျက်နှာ အချိတ်အဆက်များ|စာမျက်နှာ အချိတ်အဆက်}} $1 ခု ထက်မက ချိတ်ဆက်ထားသည်။\nအောက်ပါစာရင်းသည် ဤဖိုင်သို့ ချိတ်ဆက်ထားသော {{PLURAL:$1|ပထမ စာမျက်နှာ အချိတ်အဆက်|ပထမ စာမျက်နှာ အချိတ်အဆက်များ}}ကိုသာ ပြသထားသည်။\n[[Special:WhatLinksHere/$2|စာရင်းအပြည့်အစုံ]]လည်း ရရှိနိုင်ပါသည်။",
        "nolinkstoimage": "ဤဖိုင်သို့လင့်ထားသော စာမျက်နှာမရှိပါ။",
        "morelinkstoimage": "ဤဖိုင်သို့[[Special:WhatLinksHere/$1|နောက်ထပ်လင့်များ]] ကိုကြည့်ပါ။",
+       "linkstoimage-redirect": "$1 (ဖိုင်ပြန်ညွှန်း) $2",
        "sharedupload": "ဤဖိုင်သည် $1 မှဖြစ်ပြီး အခြားပရောဂျက်များတွင် သုံးကောင်းသုံးလိမ့်မည်။",
        "sharedupload-desc-here": "ဤဖိုင်သည် $1 မှဖြစ်ပြီး အခြားပရောဂျက်များတွင် သုံးကောင်းသုံးလိမ့်မည်။\nယင်း၏ [$2 ဖိုင်အကြောင်းစာမျက်နှာ] တွင် ဖော်ပြထားချက်ကို အောက်တွင် ပြထားသည်။",
        "filepage-nofile": "ဤအမည်ဖြင့် မည်သည့်ဖိုင်မှ မရှိပါ။",
        "statistics-users-active-desc": "နောက်ဆုံး {{PLURAL:$1|ရက်|$1 ရက်}}အတွင်း ဆောင်ရွက်ချက်ရှိသည့် အသုံးပြုသူများ",
        "doubleredirects": "နှစ်ဆင့်ပြန် ပြန်ညွှန်းများ",
        "double-redirect-fixed-move": "[[$1]] ကို ရွှေ့ပြောင်းပြီးဖြစ်သည်။ ၎င်းအား အလိုအလျောက် ပြင်ဆင်ပြီး [[$2]] သို့ ပြန်ညွှန်းထားသည်။",
+       "double-redirect-fixer": "ပြန်ညွှန်းပြင်ဆင်သူ",
        "brokenredirects": "ကျိုးပျက်နေသော ပြန်ညွှန်းများ",
        "brokenredirectstext": "အောက်ပါ ပြန်ညွှန်းများသည် မရှိသောစာမျက်နှာများသို့ လင့်ထားသည် -",
        "brokenredirects-edit": "ပြင်ဆင်ရန်",
        "trackingcategories": "နောက်ယောင်ခံ ကဏ္ဍများ",
        "trackingcategories-msg": "နောက်ယောင်ခံ ကဏ္ဍ",
        "mailnologin": "ပို့ရန်လိပ်စာ မရှိပါ",
-       "emailuser": "ဤ​အ​သုံး​ပြု​သူ​အား​ အီး​မေး​ပို့​ပါ​",
+       "emailuser": "ဤအသုံးပြုသူအား အီးမေးပို့ပါ",
        "emailuser-title-target": "{{GENDER:$1|အသုံးပြုသူ}}ကို အီးမေးပို့ရန်",
        "defemailsubject": "{{SITENAME}} အသုံးပြုသူ \"$1\" ထံမှ အီးမေး",
        "usermaildisabled": "အသုံးပြုသူအီးမေးကို ပိတ်ထားသည်",
        "emailccme": "ကျွန်ုပ်ပို့လိုက်သော အီးမေးကော်ပီကို ကျွန်ုပ်ထံ ပြန်ပို့ပါ။",
        "emailsent": "အီးမေးပို့လိုက်ပြီ",
        "emailsenttext": "သင့်အီးမေးမက်ဆေ့ကို ပို့လိုက်ပြီးပြီ ဖြစ်သည်။",
+       "usermessage-editor": "စနစ်မက်ဆင်ဂျာ",
        "watchlist": "စောင့်ကြည့်စာရင်း",
        "mywatchlist": "စောင့်ကြည့်စာရင်း",
        "watchlistfor2": "$1 အတွက် $2",
        "watchlist-options": "စောင့်ကြည့်စာရင်းအတွက် ရွေးချယ်စရာများ",
        "watching": "စောင့်ကြည့်လျက်ရှိ...",
        "unwatching": "စောင့်မကြည့်တော့...",
+       "enotif_reset": "စာမျက်နှာများအားလုံး ကြည့်ရှုပြီးကြောင်း မှတ်သားရန်",
        "enotif_impersonal_salutation": "{{SITENAME}} အသုံးပြုသူ",
        "enotif_anon_editor": "အမည်မသိ အသုံးပြုသူ $1",
        "created": "ဖန်တီးလိုက်သည်",
        "sp-contributions-search": "ပံ့ပိုးမှုများကို ရှာရန်",
        "sp-contributions-username": "အိုင်ပီလိပ်စာ သို့ အသုံးပြုသူအမည် :",
        "sp-contributions-toponly": "နောက်ဆုံးတည်းဖြတ်မူများသာပြရန်",
+       "sp-contributions-newonly": "စာမျက်နှာ ဖန်တီးမှုများသာ ပြသရန်",
        "sp-contributions-hideminor": "အရေးမကြီးသော တည်းဖြတ်မှုများကို ဝှက်ရန်",
        "sp-contributions-submit": "ရှာဖွေရန်",
        "whatlinkshere": "ဘယ်ကလင့်ခ်ထားလဲ",
        "blocklogpage": "ပိတ်ပင်တားဆီးမှု မှတ်တမ်း",
        "blocklog-showlog": "ဤအသုံးပြုသူအား ယခင်က ပိတ်ပင်ထားပြီး ဖြစ်သည်။\nပိတ်ပင်မှု မှတ်တမ်းအား ကိုးကားနိုင်ရန် အောက်တွင် ဖော်ပြထားသည်။",
        "blocklogentry": "[[$1]] ကို $2 ကြာအောင် ပိတ်ပင် တားဆီးလိုက်သည် $3",
+       "reblock-logentry": "[[$1]] အတွက် ပိတ်ပင်မှု အပြင်အဆင်ကို သက်တမ်း $2 ဖြင့် ပြောင်းလဲခဲ့သည် $3",
        "blocklogtext": "ဤသည်မှာ အသုံးပြုသူအား ပိတ်ပင်ခြင်းနှင့် ပိတ်ပင်မှုဖယ်ရှားခြင်း ဆောင်ရွက်မှု မှတ်တမ်း ဖြစ်သည်။\nအလိုအလျောက် ပိတ်ပင်ထားသည့် အိုင်ပီလိပ်စာများအား မထည့်သွင်းထားပါ။\nလက်ရှိ တားမြစ်မှုများနှင့် ပိတ်ပင်မှုများ စာရင်းအတွက် [[Special:BlockList|ပိတ်ပင်စာရင်း]]ကို ကြည့်ပါ။",
        "unblocklogentry": "$1 ကို ပိတ်ထားရာမှ ပြန်ဖွင့်ရန်",
        "block-log-flags-anononly": "အမည်မသိ အသုံးပြုသူများသာ",
        "ipb_expiry_invalid": "သက်တမ်းကုန်လွန်မည့် အချိန်သည် တရားမဝင်ပါ။",
        "ipb_already_blocked": "\"$1\" ကို ပိတ်ပင်ထားပြီး ဖြစ်သည်။",
        "ipb-needreblock": "$1 ကို ပိတ်ပင်ထားပြီး ဖြစ်သည်။ အပြင်အဆင်များကို ပြောင်းလဲလိုပါသလား?",
+       "proxyblocker": "ပရောက်ဆီ ပိတ်ပင်သူ",
        "move-page": "$1 ကို ရွှေ့ရန်",
        "move-page-legend": "စာမျက်နှာကို ရွှေ့ပြောင်းရန်",
        "movepagetext": "အောက်ပါပုံစံကို အသုံးပြုခြင်းသည် စာမျက်နှာကို အမည်ပြောင်းလဲပေးမည် ဖြစ်ပြီး အမည်သစ်သို့ ယင်း၏ မှတ်တမ်းနှင့်တကွ ရွှေ့ပေးမည် ဖြစ်သည်။\nအမည်ဟောင်းသည် အမည်သစ်သို့ ပြန်ညွှန်းစာမျက်နှာ ဖြစ်လာမည်။\nသင်သည် မူလခေါင်းစဉ်သို့ ပြန်ညွှန်းများကို အလိုအလျောက် အပ်ဒိတ် update လုပ်နိုင်သည်။\nအကယ်၍ မပြုလုပ်လိုပါက [[Special:DoubleRedirects|နှစ်ဆင့်ပြန်ညွှန်းများ]] သို့မဟုတ် [[Special:BrokenRedirects|ပြန်ညွှန်း အပျက်များ]] ကို မှတ်သားရန် မမေ့ပါနှင့်။\nလင့်များ ညွှန်းလိုသည့် နေရာသို့ ညွှန်ပြနေရန် သင့်တွင် တာဝန် ရှိသည်။\n\nအကယ်၍ ခေါင်းစဉ်အသစ်တွင် စာမျက်နှာတစ်ခု ရှိနှင့်ပြီး ဖြစ်ပါက (သို့) ယင်းစာမျက်နှာသည် အလွတ်မဖြစ်ပါက (သို့) ပြန်ညွှန်းတစ်ခု မရှိပါက (သို့) ယခင်က ပြုပြင်ထားသော မှတ်တမ်း မရှိပါက စာမျက်နှာသည် <strong>ရွေ့မည်မဟုတ်</strong> သည်ကို သတိပြုပါ။ \nဆိုလိုသည်မှာ သင်သည် အမှားတစ်ခု ပြုလုပ်မိပါက စာမျက်နှာကို ယခင်အမည်ကို ပြန်လည် ပြောင်းလဲပေးနိုင်သည်။ ရှိပြီသားစာမျက်နှာတစ်ခုကို စာမျက်နှာ အသစ်နှင့် ပြန်အုပ် overwrite ခြင်း မပြုနိုင်။\n\n<strong>မှတ်ချက်။</strong>\nဤသည်မှာ လူဖတ်များသော စာမျက်နှာတစ်ခုဖြစ်ပါက မမျှော်လင့်ထားသော၊ ကြီးမားသော အပြောင်းအလဲတစ်ခု ဖြစ်ပေါ်လာနိုင်သည်။\nထို့ကြောင့် ဆက်လက် မဆောင်ရွက်မီ သင်သည် နောက်ဆက်တွဲ အကျိုးဆက်များကို နားလည်ကြောင်း ကျေးဇူးပြု၍ သေချာပါစေ။",
        "export-addnstext": "အမည်ညွှန်းမှ စာမျက်နှာများကို ပေါင်းထည့်ရန်",
        "export-addns": "ပေါင်းထည့်ရန်",
        "export-download": "ဖိုင်အဖြစ် သိမ်းရန်",
-       "allmessages": "စ​နစ်​၏​သ​တင်း​များ​",
+       "allmessages": "စနစ်၏ သတင်းများ",
        "allmessagesname": "အမည်",
        "allmessagesdefault": "ပုံမှန် အသိပေးချက် စာသား",
        "allmessages-filter-legend": "စစ်ထုတ်ခြင်း",
        "tooltip-summary": "အတိုချုပ်ထည့်ရန်",
        "others": "အခြား",
        "simpleantispam-label": "Anti-spam စစ်ဆေးခြင်း။\nဤအရာအား <strong>မဖြည့်ပါနှင့်</strong>!",
+       "pageinfo-title": "\"$1\" အတွက် အချက်အလက်များ",
+       "pageinfo-header-basic": "အခြေခံသတင်းအချက်အလက်",
+       "pageinfo-header-edits": "တည်းဖြတ်မှု ရာဇဝင်",
+       "pageinfo-header-restrictions": "စာမျက်နှာ ကာကွယ်ခြင်း",
+       "pageinfo-header-properties": "စာမျက်နှာ ဂုဏ်သတ္တိများ",
+       "pageinfo-display-title": "ပြသခေါင်းစဉ်",
+       "pageinfo-default-sort": "ပုံမှန် စာလုံးစီကီး",
+       "pageinfo-length": "စာမျက်နှာ အလျား (ဘိုက်ဖြင့်)",
+       "pageinfo-article-id": "စာမျက်နှာ အိုင်ဒီ",
        "pageinfo-language": "စာမျက်နှာ စာကိုယ် ဘာသာစကား",
+       "pageinfo-content-model": "စာမျက်နှာ မာတိကာမော်ဒယ်",
+       "pageinfo-robot-policy": "စက်ရုပ်များမှ index ပြုလုပ်ခြင်း",
+       "pageinfo-robot-index": "ခွင့်ပြုပြီး",
+       "pageinfo-robot-noindex": "ခွင့်မပြုထားပါ",
+       "pageinfo-watchers": "စာမျက်နှာ စောင့်ကြည့်သူများ အရေအတွက်",
+       "pageinfo-few-watchers": "{{PLURAL:$1|စောင့်ကြည့်သူ|စောင့်ကြည့်သူများ}} $1 ဦးထက် နည်းသော",
+       "pageinfo-redirects-name": "ဤစာမျက်နှာသို့ ပြန်ညွှန်းထားသည့် အရေအတွက်",
+       "pageinfo-subpages-name": "ဤစာမျက်နှာ၏ စာမျက်နှာခွဲများ အရေအတွက်",
+       "pageinfo-subpages-value": "$1 ({{PLURAL:$2|ပြန်ညွှန်း|ပြန်ညွှန်းများ}} $2 ခု; {{PLURAL:$3|ပြန်ညွှန်း-မဟုတ်|ပြန်ညွှန်း-မဟုတ်များ}} $3 ခု)",
+       "pageinfo-firstuser": "စာမျက်နှာ ဖန်တီးသူ",
+       "pageinfo-firsttime": "စာမျက်နှာ ဖန်တီးရက်စွဲ",
+       "pageinfo-lastuser": "နောက်ဆုံး တည်းဖြတ်သူ",
+       "pageinfo-lasttime": "နောက်ဆုံးတည်းဖြတ် ရက်စွဲ",
+       "pageinfo-edits": "စုစုပေါင်း တည်းဖြတ်မှု အရေအတွက်",
+       "pageinfo-authors": "သိသာသော တည်းဖြတ်သူများ အရေအတွက်စုစုပေါင်း",
+       "pageinfo-recent-edits": "မကြာမီက တည်းဖြတ်မှု အရေအတွက် (လွန်ခဲ့သော $1 အတွင်း)",
+       "pageinfo-recent-authors": "သိသာသော မကြာမီက တည်းဖြတ်သူများ အရေအတွက်",
+       "pageinfo-magic-words": "မှော်{{PLURAL:$1|စာလုံး|စာလုံးများ}} ($1)",
+       "pageinfo-hidden-categories": "ဝှက်ထားသော {{PLURAL:$1|ကဏ္ဍ|ကဏ္ဍများ}} ($1)",
+       "pageinfo-templates": "Transclude လုပ်ထားသော {{PLURAL:$1|တမ်းပလိတ်|တမ်းပလိတ်များ}} ($1)",
        "pageinfo-toolboxlink": "စာမျက်နှာ အချက်အလက်များ",
+       "pageinfo-contentpage": "မာတိကစာမျက်နှာအဖြစ် ရေတွက်ပြီး",
+       "pageinfo-contentpage-yes": "မှန်",
        "markaspatrolleddiff": "စောင့်ကြပ်စစ်ဆေးပြီးကြောင်း မှတ်သားရန်",
        "markaspatrolledtext": "ဤစာမျက်နှာအား စောင့်ကြပ်စစ်ဆေးပြီးကြောင်း မှတ်သားရန်",
        "markedaspatrolled": "စောင့်ကြပ်စစ်ဆေးပြီးကြောင်း မှတ်သားပြီး",
        "markedaspatrolledtext": "[[:$1]] ၏ ရွေးချယ်ထားသော တည်းဖြတ်မူကို စောင့်ကြပ်စစ်ဆေးပြီးကြောင်း မှတ်သားပြီးပါပြီ။",
        "markedaspatrollednotify": "$1 သို့ ဤပြောင်းလဲမှုအား စောင့်ကြပ်စစ်ဆေးပြီးကြောင်း မှတ်သားပြီးပါပြီ။",
+       "patrol-log-page": "စောင့်ကြပ်စစ်ဆေးမှု မှတ်တမ်း",
        "filedeleteerror-short": "ဖိုင်ဖျက်ရာတွင် အမှားအယွင်း - $1",
        "previousdiff": "← တည်းဖြတ်မူ အဟောင်း",
        "nextdiff": "ပိုသစ်သော တည်းဖြတ်မှု",
+       "widthheightpage": "$1 × $2, {{PLURAL:$3|စာမျက်နှာ|စာမျက်နှာများ}} $3 ခု",
        "file-info-size": "$1 × $2 pixels, ဖိုင်အရွယ်အစား - $3, MIME အမျိုးအစား $4",
+       "file-info-size-pages": "$1 × $2 pixels, ဖိုင်အရွယ်အစား: $3, MIME အမျိုးအစား: $4, {{PLURAL:$5|စာမျက်နှာ|စာမျက်နှာများ}} $5 ခု",
        "file-nohires": "သည်ထက်ကြီးသော resolution မရှိပါ.",
        "svg-long-desc": "SVG ဖိုင်, $1 × $2 pixels ကို အကြံပြုသည်, ဖိုင်အရွယ်အစား - $3",
        "show-big-image": "မူရင်းဖိုင်",
        "watchlistedit-normal-submit": "ခေါင်းစဉ်များကို ဖယ်ရှားရန်",
        "watchlistedit-normal-done": "{{PLURAL:$1|ခေါင်းစဉ်တစ်ခု|ခေါင်းစဉ် $1 ခုတို့}}ကို သင်၏ စောင့်ကြည့်စာရင်းမှ ဖယ်ရှားပြီးပြီ:",
        "watchlistedit-raw-titles": "ခေါင်းစဉ်များ -",
+       "watchlisttools-clear": "စောင့်ကြည့်စာရင်းကို ရှင်းလင်းရန်",
        "watchlisttools-view": "ကိုက်ညီသော အပြောင်းအလဲများကို ကြည့်ရန်",
        "watchlisttools-edit": "စောင့်ကြည့်စာရင်းများကို ကြည့်ပြီး တည်းဖြတ်ပါ။",
        "watchlisttools-raw": "စောင့်ကြည့်စာရင်း အကြမ်းကို တည်းဖြတ်ရန်",
        "version-software": "သွင်းထားသော ဆော့ဝဲ",
        "version-software-product": "ထုတ်ကုန်",
        "version-software-version": "ဗားရှင်း",
+       "redirect": "ဖိုင်၊ အသုံးပြုသူ၊ စာမျက်နှာ၊ တည်းဖြတ်မူ၊ သို့မဟုတ် မှတ်တမ်းအိုင်ဒီ မှ ပြန်ညွှန်းသည်",
+       "redirect-summary": "ဤအထူးစာမျက်နှာသည် ဖိုင်တစ်ခု (ပေးထားသော ဖိုင်အမည်)၊ စာမျက်နှာတစ်ခု (ပေးထားသော တည်းဖြတ်မူအိုင်ဒီ သို့ စာမျက်နှာအိုင်ဒီ)၊ အသုံးပြုသူစာမျက်နှာတစ်ခု (ပေးထားသော အသုံးပြုသူဂဏန်းအိုင်ဒီ)၊ သို့မဟုတ် မှတ်တမ်းတစ်ခု (ပေးထားသော မှတ်တမ်းအိုင်ဒီ) ဆီသို့ ပြန်ညွှန်းသည်။ အသုံးပြုပုံ - [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], သို့မဟုတ် [[{{#Special:Redirect}}/logid/186]].",
+       "redirect-submit": "သွားပါ",
+       "redirect-lookup": "ရှာဖွေ။",
+       "redirect-value": "တန်ဖိုး။",
+       "redirect-user": "အသုံးပြုသူ အိုင်ဒီ",
+       "redirect-page": "စာမျက်နှာ အိုင်ဒီ",
+       "redirect-revision": "စာမျက်နှာ တည်းဖြတ်မူ",
+       "redirect-file": "ဖိုင်အမည်",
        "fileduplicatesearch": "နှစ်ခုထပ်နေသောဖိုင်များကို ရှာရန်",
        "fileduplicatesearch-filename": "ဖိုင်အမည် -",
        "fileduplicatesearch-submit": "ရှာဖွေရန်",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|စာတွဲ|စာတွဲများ}}]]: $2)",
        "tags-title": "အမည်တွဲ",
        "tags-tag": "အမည်တွဲ အမည်",
+       "tags-active-yes": "မှန်",
+       "tags-active-no": "မလုပ်ပါ",
        "tags-edit": "ပြင်ဆင်ရန်",
+       "tags-hitcount": "ပြောင်းလဲချက် $1 {{PLURAL:$1|ခု|ခု}}",
        "comparepages": "စာမျက်နှာများကို နှိုင်းယှဉ်ရန်",
        "compare-page1": "စာမျက်နှာတစ်",
        "compare-page2": "စာမျက်နှာနှစ်",
        "htmlform-selectorother-other": "အခြား",
        "logentry-delete-delete": "$3 စာမျက်နှာကို $1 က {{GENDER:$2|ဖျက်ပစ်ခဲ့သည်}}",
        "logentry-delete-delete_redir": "ပြန်ညွှန်း $3 ကို ထပ်ပိုးရေးသားခြင်းဖြင့် $1 က {{GENDER:$2|ဖျက်ပစ်ခဲ့သည်}}",
+       "logentry-delete-restore": "စာမျက်နှာ $3 ($4) ကို $1 က {{GENDER:$2|ပြန်လည်ထိန်းသိမ်းခဲ့သည်}}",
        "logentry-delete-revision": "$3 စာမျက်နှာပေါ်ရှိ {{PLURAL:$5|တည်းဖြတ်မူတစ်ခု|တည်းဖြတ်မူ $5 ခု}}၏ အမြင်ပုံစံကို $1 က {{GENDER:$2|ပြောင်းလဲခဲ့သည်}}: $4",
        "revdelete-content-hid": "အကြောင်းအရာ ဝှက်ခြင်း",
        "revdelete-restricted": "အက်ဒမင်များသို့ ကန့်သတ်ချက်များ သက်ရောက်ရန်",
        "logentry-move-move-noredirect": "$3 မှ $4 သို့ စာမျက်နှာကို ပြန်ညွှန်းချန်မထားဘဲ $1 {{GENDER:$2|က ရွှေ့ခဲ့သည်}}",
        "logentry-move-move_redir": "$3 စာမျက်နှာကို $4 သို့ ပြန်ညွှန်းပေါ်ထပ်၍ $1 က {{GENDER:$2|ရွှေ့ခဲ့သည်}}",
        "logentry-move-move_redir-noredirect": "$3 မှ $4 သို့ ပြန်ညွှန်းပေါ်ထပ်အုပ်ကာ ပြန်ညွှန်းချန်မထားဘဲ $1 က {{GENDER:$2|ရွှေ့ခဲ့သည်}}",
+       "logentry-patrol-patrol-auto": "စာမျက်နှာ $3 ၏ တည်းဖြတ်မူ $4 အား $1 က စောင့်ကြပ်စစ်ဆေးပြီးကြောင်း အလိုအလျောက် {{GENDER:$2|မှတ်သားခဲ့သည်}}",
        "logentry-newusers-create": "အသုံးပြုသူအကောင့် $1 ကို {{GENDER:$2|ဖန်တီးခဲ့သည်}}",
        "logentry-newusers-autocreate": "အသုံးပြုသူအကောင့် $1 ကို အလိုအလျောက် {{GENDER:$2|ဖန်တီးခဲ့သည်}}",
        "logentry-protect-modify": "$3 အတွက် ကာကွယ်မှုအဆင့်ကို $1 {{GENDER:$2|က ပြောင်းလဲခဲ့သည်}} $4",
        "rightsnone": "(ဘာမှမရှိ)",
        "searchsuggest-search": "{{SITENAME}} တွင် ရှာဖွေရန်",
        "api-error-unknown-warning": "အမည်မသိ သတိပေးချက် - $1",
+       "duration-days": "$1 {{PLURAL:$1|ရက်|ရက်}}",
        "pagelanguage": "စာမျက်နှာ ဘာသာစကား ပြောင်းလဲရန်",
        "pagelang-name": "စာမျက်နှာ",
        "pagelang-language": "ဘာသာစကား",
        "log-description-pagelang": "ဤအရာသည် စာမျက်နှာ၏ဘာသာစကားများ ပြောင်းလဲမှုမှတ်တမ်း ဖြစ်သည်။",
        "mediastatistics-nbytes": "{{PLURAL:$1|$1 ဘိုက်|$1 ဘိုက်}} ($2; $3%)",
        "special-characters-group-symbols": "သင်္ကေတများ",
+       "randomrootpage": "ကျပန်း အခြေ စာမျက်နှာ",
        "log-action-filter-newusers": "အကောင့်ဖန်တီးမှု အမျိုးအစား:",
        "log-action-filter-all": "အားလုံး",
        "log-action-filter-newusers-create": "အမည်မသိ အသုံးပြုသူများမှ ဖန်တီးမှု",
index ed1ed8e..0f0fbcc 100644 (file)
        "delete": "Thâi",
        "undelete_short": "Kiù {{PLURAL:$1|$1|$1}} ê thâi-tiāu ê",
        "viewdeleted_short": "Khoàⁿ {{PLURAL:$1|chi̍t-ê thâi tiàu--ê pian-chi̍p|$1 ê thâi tiàu--ê pian-chi̍p}}",
-       "protect": "Pó-hō·",
+       "protect": "Pó-hō͘",
        "protect_change": "kái-piàn",
-       "unprotect": "kái pó-hō·",
+       "unprotect": "Kái-piàn pó-hō͘",
        "newpage": "Sin ia̍h",
        "talkpagelinktext": "thó-lūn",
        "specialpage": "Te̍k-sû-ia̍h",
        "alreadyrolled": "Bô-hoat-tō· kā [[User:$2|$2]] ([[User talk:$2|Thó-lūn]]) tùi [[:$1]] ê siu-kái ká-tńg-khì; í-keng ū lâng siu-kái a̍h-sī ká-tńg chit ia̍h. Téng 1 ūi siu-kái-chiá sī [[User:$3|$3]] ([[User talk:$3|Thó-lūn]]).",
        "editcomment": "Siu-kái phêng-lūn sī: <em>$1</em>.",
        "protectedarticle": "pó-hō͘ \"[[$1]]\"",
-       "protect-title": "Pó-hō· \"$1\"",
+       "protect-title": "Kái-piàn \"$1\" ê pó-hō͘ chân-kip",
        "prot_1movedto2": "[[$1]] sóa khì tī [[$2]]",
        "protect-legend": "Khak-tēng beh pó-hō·",
        "protectcomment": "Lí-iû:",
        "sp-contributions-newbies-sub": "Sin lâi--ê",
        "sp-contributions-blocklog": "Hong-só ji̍t-chì",
        "sp-contributions-deleted": "{{GENDER:$1|iōng-chiá}} hō͘ lâng thâi tiāu ê kòng-hiàn",
-       "sp-contributions-uploads": "Ap-ló͘",
+       "sp-contributions-uploads": "ap-ló͘",
        "sp-contributions-logs": "Ji̍t-chì",
        "sp-contributions-talk": "thó-lūn",
        "sp-contributions-userrights": "{{GENDER:$1|iōng-chiá}} khoân-hān koán-lí",
index 7e48196..00d8d12 100644 (file)
        "anontalk": "वार्ता",
        "navigation": "अन्वेषण",
        "and": "&#32;र",
-       "qbfind": "पत्ता लगाउनु",
-       "qbbrowse": "ब्राउज गर्ने",
-       "qbedit": "सम्पादन गर्ने",
-       "qbpageoptions": "यो पेज",
-       "qbmyoptions": "मेरो पेज",
        "faq": "धैरै सोधिएका प्रश्नहरू",
-       "faqpage": "Project:धैरै सोधिएका प्रश्नहरू",
        "actions": "कार्यहरु",
        "namespaces": "नेमस्पेस",
        "variants": "बहुरुपहरू",
        "edit-local": "स्थानिय वर्णन सम्पादन गर्नुहोस्",
        "create": "सृजना गर्नुहोस्",
        "create-local": "स्थानीय वर्णन थप्नुहोस",
-       "editthispage": "यो पृष्ठ सम्पादन गर्नुहोस",
-       "create-this-page": "यो पृष्ठ बनाउने",
        "delete": "मेट्ने",
-       "deletethispage": "यो पृष्ठ हटाउनुहोस्",
-       "undeletethispage": "मेटेको पृष्ठ फिर्तागर्ने",
        "undelete_short": "{{PLURAL:$1|एउटा  मेटिएको सम्पादन|$1 मेटिएका सम्पादनहरू}} फर्काउने",
        "viewdeleted_short": "{{PLURAL:$1|मेटिएको सम्पादन |$1 मेटिएका सम्पादनहरू}}",
        "protect": "सुरक्षित राख्नुहोस्",
        "protect_change": "परिवर्तन",
-       "protectthispage": "यो पृष्ठ सुरक्षित गर्नुहोस्",
        "unprotect": "सुरक्षा परिवर्तन गर्ने",
-       "unprotectthispage": "यो पृष्ठको सुरक्षा परिवर्तन  गर्ने",
        "newpage": "नयाँ पृष्ठ",
-       "talkpage": "यो पृष्ठको बारेमा छलफल गर्नुहोस्",
        "talkpagelinktext": "वार्तालाप",
        "specialpage": "विशेष पृष्ठ",
        "personaltools": "व्यक्तिगत औजारहरू",
-       "articlepage": "कन्टेन्ट पृष्ठ हेर्नुहोस्",
        "talk": "वार्तालाप",
        "views": "अवलोकनहरू",
        "toolbox": "औजारहरू",
        "tool-link-userrights": "परिवर्तन {{GENDER:$1|प्रयोगकर्ता}} समूह",
        "tool-link-userrights-readonly": "{{GENDER:$1|प्रयोगकर्ता}} समूहहरू हेर्नुहोस्।",
        "tool-link-emailuser": "{{GENDER:$1|प्रयोगकर्ता}} लाई इमेल गर्ने",
-       "userpage": "प्रयोगकर्ता पृष्ठ हेर्ने",
-       "projectpage": "आयोजना पृष्ठ हेर्ने",
        "imagepage": "फाइल पृष्ठ हेर्नुहोस्",
        "mediawikipage": "सन्देश पृष्ठ हेर्ने",
        "templatepage": "ढाँचा पृष्ठ हेर्ने",
        "prefs-skin": "काँचुली",
        "skin-preview": "पूर्वावलोकन",
        "datedefault": "कुनै अभिरुचि छैन",
-       "prefs-labs": "पà¥\8dरयà¥\8bà¤\97शाला à¤\97à¥\81णहरà¥\81",
+       "prefs-labs": "पà¥\8dरयà¥\8bà¤\97शाला à¤\97à¥\81णहरà¥\82",
        "prefs-user-pages": "प्रयोगकर्ता पृष्ठहरू",
        "prefs-personal": "प्रयोगकर्ताको विवरण",
        "prefs-rc": "नयाँ परिवर्तनहरू",
        "zip-file-open-error": "ZIP परीक्षणको लागि फाइल खोल्दा एक त्रुटी भेटीयो ।",
        "zip-wrong-format": "खुलाइएको फाइल ZIP फाइल हैन ।",
        "zip-bad": "यो फाइल बिग्रीएको अवस्थामा छ या खोल्न नसकिने ZIP फाइल हो\nसुरक्षाको कारणले गर्दा राम्ररी जाँच गर्न सकिएन ।",
-       "zip-unsupported": "यà¥\8b à¤«à¤¾à¤\87ल à¤\8fà¤\95 ZIP à¤«à¤¾à¤\87ल à¤¹à¥\8b à¤° à¤¯à¤¸à¤²à¥\87 à¤ªà¥\8dरयà¥\8bà¤\97 à¤\97रà¥\8dनà¥\87 à¤\97à¥\81णहरà¥\81 ,मेडियाविकिद्वारा समर्थित छैन ।\nसुरक्षाको कारणले राम्ररी जाँच गर्न सकिएन ।",
+       "zip-unsupported": "यà¥\8b à¤«à¤¾à¤\87ल à¤\8fà¤\95 ZIP à¤«à¤¾à¤\87ल à¤¹à¥\8b à¤° à¤¯à¤¸à¤²à¥\87 à¤ªà¥\8dरयà¥\8bà¤\97 à¤\97रà¥\8dनà¥\87 à¤\97à¥\81णहरà¥\82 ,मेडियाविकिद्वारा समर्थित छैन ।\nसुरक्षाको कारणले राम्ररी जाँच गर्न सकिएन ।",
        "uploadstash": "उर्ध्वभरण स्टाश",
        "uploadstash-summary": "यो पृष्ठ ती फाइलहरूलाई पहुँच प्रदान गर्छ जुन अपलोड गरिएको छ ‍‌‍‌(वा अपलोड प्रक्रियामा रहेको छ) तर विकिमा अहिले पनि प्रकासित गरिएको छैन। यो फाइलहरू अपलोड गरेको प्रयोगकर्ता वाहेक कसैको लागि पनि उपलब्ध छैन।",
        "uploadstash-clear": "स्टाश गरिएका फाइल हटाउने",
        "month": "महिना देखि (र पहिले):",
        "year": "वर्ष देखि( र पहिले):",
        "sp-contributions-newbies": "नयाँ खाताको योगदानहरू मात्र देखाउने",
-       "sp-contributions-newbies-sub": "नयाà¤\81 à¤\96ाताहरà¥\81को लागि",
+       "sp-contributions-newbies-sub": "नयाà¤\81 à¤\96ाताहरà¥\82को लागि",
        "sp-contributions-newbies-title": "नयाँ खाताहरूको लागि प्रयोगकर्ताका योगदानहरू",
        "sp-contributions-blocklog": "रोकावट लग",
        "sp-contributions-suppresslog": "प्रयोगकर्ताको योगदानहरू दबाइएको छ ।",
index 46309a4..a81953a 100644 (file)
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "recentchanges-submit": "Weergeven",
        "rcfilters-activefilters": "Actieve filters",
+       "rcfilters-advancedfilters": "Geavanceerde filters",
        "rcfilters-quickfilters": "Opgeslagen filterinstellingen",
        "rcfilters-quickfilters-placeholder-title": "Nog geen koppelingen opgeslagen",
+       "rcfilters-quickfilters-placeholder-description": "Om uw filterinstellingen op te slaan en later te kunnen hergebruiken, klik op het bladwijzer pictogram in het Actieve Filter gebied beneden.",
        "rcfilters-savedqueries-defaultlabel": "Opgeslagen filters",
        "rcfilters-savedqueries-rename": "Hernoemen",
        "rcfilters-savedqueries-setdefault": "Als standaard instellen",
        "rcfilters-filter-previousrevision-description": "Alle wijzigingen die niet de meest recente wijziging op de pagina zijn.",
        "rcfilters-filter-excluded": "Uitgesloten",
        "rcfilters-tag-prefix-namespace-inverted": "<strong>:niet</strong> $1",
-       "rcfilters-view-tags": "Labels",
+       "rcfilters-view-tags": "Gelabelde bewerkingen",
        "rcnotefrom": "Wijzigingen sinds <strong>$3 om $4</strong> (maximaal <strong>$1</strong> {{PLURAL:$1|wijziging|wijzigingen}}).",
        "rclistfromreset": "Datum selectie opnieuw instellen",
        "rclistfrom": "Wijzigingen bekijken vanaf $3 $2",
        "gotointerwiki-external": "U staat op het punt om {{SITENAME}} te verlaten en [[$2]] te bezoeken. [[$2]] is een aparte website.\n\n'''[$1 Doorgaan naar $1]'''",
        "undelete-cantedit": "U kunt deze pagina niet terug plaatsen omdat u niet het recht hebt om deze pagina te bewerken.",
        "undelete-cantcreate": "U kunt deze pagina niet terugplaatsen omdat er geen bestaande pagina met deze naam is en u geen toestemming hebt om deze pagina aan te maken.",
+       "pagedata-title": "Pagina data",
        "pagedata-not-acceptable": "Er is geen overeenkomende indeling gevonden. Ondersteunde MIME-typen: $1",
        "pagedata-bad-title": "Ongeldige titel: $1."
 }
index 7256630..0e286eb 100644 (file)
        "copyrightwarning": "Merk deg at alle bidrag til {{SITENAME}} er å rekne som utgjevne under $2 (sjå $1 for detaljar). Om du ikkje vil ha teksten endra og kopiert under desse vilkåra, kan du ikkje leggje han her.<br />\nTeksten må du ha skrive sjølv, eller kopiert frå ein ressurs som er kompatibel med vilkåra eller ikkje verna av opphavsrett.\n\n'''LEGG ALDRI INN MATERIALE SOM ANDRE HAR OPPHAVSRETT TIL UTAN LØYVE FRÅ DEI!'''",
        "copyrightwarning2": "Merk deg at alle bidrag til {{SITENAME}} kan bli endra, omskrive og fjerna av andre bidragsytarar. Om du ikkje vil ha teksten endra under desse vilkåra, kan du ikkje leggje han her.<br />\nTeksten må du ha skrive sjølv eller ha kopiert frå ein ressurs som er kompatibel med vilkåra eller ikkje verna av opphavsrett (sjå $1 for detaljar).\n\n'''LEGG ALDRI INN MATERIALE SOM ANDRE HAR OPPHAVSRETT TIL UTAN LØYVE FRÅ DEI!'''",
        "longpageerror": "'''Feil: Teksten du sende inn er {{PLURAL:$1|éin kilobyte|$1 kilobyte}} stor, noko som er større enn øvstegrensa på {{PLURAL:$2|éin kilobyte|$2 kilobyte}}.''' Han kan difor ikkje lagrast.",
-       "readonlywarning": "'''ÅTVARING: Databasen er skriveverna på grunn av vedlikehald, så du kan ikkje lagre endringane dine akkurat no. Det kan vera lurt å kopiere teksten din til ei tekstfil, så du kan lagre han her seinare.'''\n\nSystemadministratoren som låste databasen gav denne årsaka: $1",
+       "readonlywarning": "<strong>ÅTVARING: Databasen er skriveverna på grunn av vedlikehald, så du kan ikkje lagre endringane dine akkurat no. Det kan vera lurt å kopiere teksten din til ei tekstfil, så du kan lagre han her seinare.</strong>\n\nSystemadministratoren som låste databasen gav denne årsaka: $1",
        "protectedpagewarning": "'''ÅTVARING: Denne sida er verna, slik at berre administratorar kan endra henne.'''\nDet siste loggelementet er oppgjeve under som referanse:",
        "semiprotectedpagewarning": "'''Merk:''' Denne sida er verna slik at berre registrerte brukarar kan endre henne.\nDet siste loggelementet er oppgjeve under som referanse:",
        "cascadeprotectedwarning": "'''Åtvaring:''' Denne sida er verna så berre brukarar med administratortilgang kan endre henne. Dette er fordi ho er inkludert i {{PLURAL:$1|denne djupverna sida|desse djupverna sidene}}:",
        "search-category": "(kategorien $1)",
        "search-suggest": "Meinte du: «$1»",
        "search-rewritten": "Viser resultat for $1. Søk i staden etter $2.",
-       "search-interwiki-caption": "Systerprosjekt",
+       "search-interwiki-caption": "Resultat frå systerprosjekt",
        "search-interwiki-default": "Resultat frå $1:",
        "search-interwiki-more": "(meir)",
+       "search-interwiki-more-results": "fleire resultat",
        "search-relatedarticle": "Relatert",
        "searchrelated": "relatert",
        "searchall": "alle",
        "action-viewmyprivateinfo": "sjå den private informasjonen din",
        "action-editmyprivateinfo": "endra den private informasjonen din",
        "nchanges": "{{PLURAL:$1|Éi endring|$1 endringar}}",
+       "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|sidan sist vitjing}}",
        "enhancedrc-history": "historikk",
        "recentchanges": "Siste endringar",
        "recentchanges-legend": "Alternativ for siste endringar",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (sjå dessutan [[Special:NewPages|lista over nye sider]])",
        "recentchanges-submit": "Vis",
        "rcfilters-activefilters": "Aktive filter",
+       "rcfilters-advancedfilters": "Avanserte filter",
        "rcfilters-quickfilters": "Lagra filterinnstillingar",
        "rcfilters-quickfilters-placeholder-title": "Ingen lenkjer er lagra enno",
        "rcfilters-quickfilters-placeholder-description": "For å lagra filterinnstillingane dine og bruka dei på nytt seinare, klikk på bokmerkeikonet i området for aktive filter under.",
        "rcfilters-filter-user-experience-level-learner-description": "Meir røynsle enn «Nykomarar», men mindre enn «Røynde brukarar».",
        "rcfilters-filter-user-experience-level-experienced-label": "Røynde brukarar",
        "rcfilters-filter-user-experience-level-experienced-description": "Meir enn 30 dagar med aktivitet og 500 endringar.",
+       "rcfilters-filter-bots-label": "Robot",
        "rcfilters-filter-bots-description": "Endringar gjorde med automatiske verktøy.",
        "rcfilters-filter-humans-label": "Menneske (ikkje robot)",
+       "rcfilters-filter-humans-description": "Endringar gjorde av menneske.",
        "rcfilters-filter-patrolled-description": "Endringar merkte som patruljerte.",
        "rcfilters-filter-unpatrolled-description": "Endringar ikkje merkte som patruljerte.",
+       "rcfilters-filtergroup-significance": "Vekt",
        "rcfilters-filter-minor-label": "Småplukk",
+       "rcfilters-filter-minor-description": "Endringar merkte som småplukk av forfattaren.",
        "rcfilters-filter-major-label": "Ikkje småplukk",
+       "rcfilters-filter-major-description": "Endringar ikkje merkte som småplukk.",
        "rcfilters-filter-pageedits-label": "Sideendringar",
        "rcfilters-filter-pageedits-description": "Endringar av wikiinnhald, diskusjonar, kategoriskildringar ...",
        "rcfilters-filter-newpages-label": "Sideopprettingar",
+       "rcfilters-filter-newpages-description": "Endringar som opprettar nye sider.",
        "rcfilters-filter-categorization-label": "Kategoriendringar",
        "rcfilters-filter-categorization-description": "Oppføringar av sider som vert lagde til eller fjerna frå katerogiar.",
        "rcfilters-filter-logactions-label": "Loggførte handlingar",
+       "rcfilters-filtergroup-lastRevision": "Siste versjonen",
+       "rcfilters-view-tags": "Endringar med merke",
        "rcnotefrom": "Nedanfor er endringane gjorde sidan <strong>$2</strong> viste (opp til <strong>$1</strong> stykke)",
        "rclistfrom": "Vis nye endringar sidan $3 $2",
        "rcshowhideminor": "$1 småplukk",
        "upload-http-error": "Ein HTTP-feil oppstod: $1",
        "upload-copy-upload-invalid-domain": "Kopiopplastingar er ikkje tilgjengelege frå dette domenet.",
        "upload-dialog-button-cancel": "Bryt av",
+       "upload-dialog-button-back": "Attende",
+       "upload-dialog-button-save": "Lagra",
+       "upload-dialog-button-upload": "Last opp",
+       "upload-form-label-infoform-title": "Detaljar",
        "upload-form-label-infoform-name": "Namn",
        "upload-form-label-usage-filename": "Filnamn",
        "upload-form-label-infoform-categories": "Kategoriar",
        "alreadyrolled": "Kan ikkje rulla attende den siste endringa på [[:$1]] gjord av [[User:$2|$2]] ([[User talk:$2|diskusjon]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) av di nokon andre alt har endra eller attenderulla sida.\n\nDen siste endringa vart gjord av [[User:$3|$3]] ([[User talk:$3|brukardiskusjon]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
        "editcomment": "Samandraget for endringa var: <em>$1</em>.",
        "revertpage": "Attenderulla endring gjord av [[Special:Contributions/$2|$2]] ([[User talk:$2|diskusjon]]) til siste versjonen av [[User:$1|$1]]",
-       "revertpage-nouser": "Tilbakestilte endringar av (brukarnamn fjerna) til den siste versjonen av [[User:$1|$1]]",
+       "revertpage-nouser": "Attenderulla endring gjord av ein løynd brukar til siste versjonen av {{GENDER:$1|[[User:$1|$1]]}}",
        "rollback-success": "Rulla attende endringane av $1, attende til siste versjonen av $2.",
        "sessionfailure-title": "Feil med omgangen.",
        "sessionfailure": "Det ser ut til å vera eit problem med innloggingsøkta di. Handlinga er vorten avbroten for å vera føre var mot kidnapping av økta. Bruk attendeknappen i nettlesaren din og prøv om att.",
        "tooltip-pt-preferences": "{{GENDER:|Innstillingane}} dine",
        "tooltip-pt-watchlist": "Liste over sidene du overvakar.",
        "tooltip-pt-mycontris": "{{GENDER:|Liste}} over bidraga dine",
+       "tooltip-pt-anoncontribs": "Liste over endringar gjorde frå denne IP-adressa",
        "tooltip-pt-login": "Det er ikkje obligatorisk å logga inn, men medfører mange fordelar.",
        "tooltip-pt-logout": "Logg ut",
        "tooltip-pt-createaccount": "Me oppfordrar til at du oppretter ein konto og loggar inn, men det er ikkje påkravd.",
        "confirm-watch-top": "Legg denne sida til i overvakingslista di?",
        "confirm-unwatch-button": "OK",
        "confirm-unwatch-top": "Fjern denne sida frå overvakingslista di?",
+       "confirm-rollback-button": "OK",
        "quotation-marks": "«$1»",
        "imgmultipageprev": "← førre sida",
        "imgmultipagenext": "neste side →",
index b8ebc96..d2ada09 100644 (file)
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Pokaż",
        "rcfilters-activefilters": "Aktywne filtry",
+       "rcfilters-advancedfilters": "Zaawansowane filtry",
        "rcfilters-quickfilters": "Zapisane ustawienia filtrów",
        "rcfilters-quickfilters-placeholder-title": "Nie masz jeszcze zapisanych linków",
        "rcfilters-quickfilters-placeholder-description": "Aby zapisać ustawienia filtrów i używać ich później, kliknij ikonkę zakładki w polu aktywnych filtrów znajdującym się niżej.",
        "rcfilters-filter-previousrevision-description": "Wszystkie edycje, które nie są najnowszą zmianą strony.",
        "rcfilters-filter-excluded": "Wykluczono",
        "rcfilters-tag-prefix-namespace-inverted": "<strong>:nie z</strong> $1",
-       "rcfilters-view-tags": "Znaczniki",
+       "rcfilters-view-tags": "Edycje ze znacznikami zmian",
        "rcnotefrom": "Poniżej {{PLURAL:$5|pokazano zmianę|pokazano zmiany}} {{PLURAL:$5|wykonaną|wykonane}} po <strong>$3, $4</strong> (nie więcej niż '''$1''' pozycji).",
        "rclistfromreset": "Zresetuj wybór daty",
        "rclistfrom": "Pokaż nowe zmiany od $3 $2",
index 7fac425..1f3cf8e 100644 (file)
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Exibir",
        "rcfilters-activefilters": "Filtros ativos",
+       "rcfilters-advancedfilters": "Filtros avançados",
        "rcfilters-quickfilters": "Configurações de filtros gravadas",
        "rcfilters-quickfilters-placeholder-title": "Ainda não foi gravado nenhum link",
        "rcfilters-quickfilters-placeholder-description": "Para gravar as suas configurações dos filtros e reutilizá-las mais tarde, clique o ícone do marcador de página, na área Filtro Ativo abaixo.",
        "rcfilters-filter-previousrevision-description": "Todas as alterações que não são a alteração mais recente para uma página.",
        "rcfilters-filter-excluded": "Excluído",
        "rcfilters-tag-prefix-namespace-inverted": "<strong>:não</strong> $1",
-       "rcfilters-view-tags": "Etiquetas",
+       "rcfilters-view-tags": "Edições marcadas",
        "rcnotefrom": "Abaixo {{PLURAL:$5|é a mudança|são as mudanças}} desde <strong>$3, $4</strong> (up to <strong>$1</strong> shown).",
        "rclistfromreset": "Redefinir seleção da data",
        "rclistfrom": "Mostrar as novas alterações a partir das $2 de $3",
        "apisandbox-sending-request": "Enviando solicitação de API ...",
        "apisandbox-loading-results": "Recebendo resultados da API ...",
        "apisandbox-results-error": "Ocorreu um erro ao carregar a resposta de consulta da API: $1.",
+       "apisandbox-results-login-suppressed": "Esta solicitação foi processada como um usuário desconectado, pois poderia ser usado para ignorar a segurança do mesmo Same Origin. Tenha em atenção que o manuseio automático de toques da API sandbox não funciona corretamente com esses pedidos, preencha-os manualmente.",
        "apisandbox-request-selectformat-label": "Mostrar dados do pedido como:",
        "apisandbox-request-format-url-label": "Sequência de consulta de URL",
        "apisandbox-request-url-label": "URL solicitante:",
index b0095fa..4d691bc 100644 (file)
        "histlast": "Mais novas",
        "historysize": "({{PLURAL:$1|1 byte|$1 bytes}})",
        "historyempty": "(vazia)",
-       "history-feed-title": "Histórico de revisão",
+       "history-feed-title": "Histórico de revisões",
        "history-feed-description": "Histórico de edições para esta página nesta wiki",
        "history-feed-item-nocomment": "$1 em $2",
        "history-feed-empty": "A página solicitada não existe.\nPode ter sido eliminada da wiki ou o nome sido alterado.\nTente [[Special:Search|pesquisar na wiki]] novas páginas relevantes.",
        "mergehistory-fail-permission": "Privilégios insuficientes para fundir os históricos.",
        "mergehistory-fail-self-merge": "As páginas de origem e de destino não podem ser a mesma.",
        "mergehistory-fail-timestamps-overlap": "As revisões de origem sobrepõem ou são posteriores às revisões de destino.",
-       "mergehistory-fail-toobig": "Não é possível fundir o histórico, já que um número de revisão(ões) acima do limite ($1 {{PLURAL:$1|revisão|revisões}}) seriam movidos.",
+       "mergehistory-fail-toobig": "Não é possível fundir o histórico, porque seria movido um número de revisões superior ao limite de $1 {{PLURAL:$1|revisão|revisões}}.",
        "mergehistory-no-source": "A página de origem $1 não existe.",
        "mergehistory-no-destination": "A página de destino $1 não existe.",
        "mergehistory-invalid-source": "A página de origem precisa ser um título válido.",
        "powersearch-remember": "Lembrar seleção para pesquisas futuras",
        "search-external": "Pesquisa externa",
        "searchdisabled": "Foi impossibilitada a realização de pesquisas na wiki {{SITENAME}}.\nEntretanto, pode realizar pesquisas através do Google.\nNote, no entanto, que a indexação da wiki {{SITENAME}} neste motor de busca pode estar desatualizada.",
-       "search-error": "Um erro ocorreu enquanto se efectuava a pesquisa: $1",
+       "search-error": "Ocorreu um erro durante a pesquisa: $1",
        "search-warning": "Ocorreu um aviso ao pesquisar: $1",
        "preferences": "Preferências",
        "mypreferences": "Preferências",
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "recentchanges-submit": "Mostrar",
        "rcfilters-activefilters": "Filtros ativos",
+       "rcfilters-advancedfilters": "Filtros avançados",
        "rcfilters-quickfilters": "Configurações de filtros gravadas",
        "rcfilters-quickfilters-placeholder-title": "Ainda não foi gravado nenhum link",
        "rcfilters-quickfilters-placeholder-description": "Para gravar as suas configurações dos filtros e reutilizá-las mais tarde, clique o ícone do marcador de página, na área Filtro Ativo abaixo.",
        "rcfilters-filter-user-experience-level-experienced-description": "Mais de 30 dias de atividade e 500 edições.",
        "rcfilters-filtergroup-automated": "Contribuições automatizadas",
        "rcfilters-filter-bots-label": "Robô",
-       "rcfilters-filter-bots-description": "Edições efectuadas por ferramentas automatizadas.",
+       "rcfilters-filter-bots-description": "Edições efetuadas por ferramentas automatizadas.",
        "rcfilters-filter-humans-label": "Ser humano (não robô)",
-       "rcfilters-filter-humans-description": "Edições efectuadas por editores humanos.",
+       "rcfilters-filter-humans-description": "Edições efetuadas por editores humanos.",
        "rcfilters-filtergroup-reviewstatus": "Estado da revisão",
        "rcfilters-filter-patrolled-label": "Patrulhadas",
        "rcfilters-filter-patrolled-description": "Edições marcadas como patrulhadas.",
        "rcfilters-filter-previousrevision-description": "Todas as modificações que não sejam a modificação mais recente de uma página.",
        "rcfilters-filter-excluded": "Excluído",
        "rcfilters-tag-prefix-namespace-inverted": "<strong>:não</strong> $1",
-       "rcfilters-view-tags": "Etiquetas",
+       "rcfilters-view-tags": "Edições marcadas",
        "rcnotefrom": "Abaixo {{PLURAL:$5|está a mudança|estão as mudanças}} desde <strong>$2</strong> (mostradas até <strong>$1</strong>).",
        "rclistfromreset": "Reiniciar a seleção da data",
        "rclistfrom": "Mostrar as novas mudanças a partir das $2 de $3",
        "statistics-edits-average": "Média de edições por página",
        "statistics-users": "[[Special:ListUsers|Utilizadores]] registados",
        "statistics-users-active": "Utilizadores ativos",
-       "statistics-users-active-desc": "Utilizadores que efectuaram uma operação {{PLURAL:$1|no último dia|nos últimos $1 dias}}",
+       "statistics-users-active-desc": "Utilizadores que efetuaram uma operação {{PLURAL:$1|no último dia|nos últimos $1 dias}}",
        "pageswithprop": "Páginas que usam uma propriedade",
        "pageswithprop-legend": "Páginas que usam uma propriedade",
        "pageswithprop-text": "Esta página lista páginas que usam uma propriedade em particular.",
index d6f2b73..d6b322a 100644 (file)
        "anontalk": "'Ngazzaminde",
        "navigation": "Naveghesce",
        "and": "&#32;e",
-       "qbfind": "Cirche",
-       "qbbrowse": "Sfoglie",
-       "qbedit": "Cange",
-       "qbpageoptions": "Pàgene currende",
-       "qbmyoptions": "Pàggene mije",
        "faq": "FAQ",
-       "faqpage": "Project:FAQ",
        "actions": "Aziune",
        "namespaces": "Namespace",
        "variants": "Variande",
        "edit-local": "Cange 'a descrizione locale",
        "create": "Ccreje",
        "create-local": "Aggiunge 'a descrizione locale",
-       "editthispage": "Cange sta pàgene",
-       "create-this-page": "Ccreje 'a pàgene",
        "delete": "Scangìlle",
-       "deletethispage": "Scangille sta pàgene",
-       "undeletethispage": "Repristine sta pàgene",
        "undelete_short": "Annulle {{PLURAL:$1|'nu camgiamende|$1 cangiaminde}}",
        "viewdeleted_short": "Vide {{PLURAL:$1|'nu cangiamende scangellate|$1 cangiaminde scangellate}}",
        "protect": "Prutette",
        "protect_change": "cange",
-       "protectthispage": "Prutigge sta pàgene",
        "unprotect": "Cange 'a protezione",
-       "unprotectthispage": "Cange 'a protezione de sta pàgene",
        "newpage": "Pàgene nova",
-       "talkpage": "'Ngazzete pe sta pàgene",
        "talkpagelinktext": "Parle",
        "specialpage": "Pàgene Speciele",
        "personaltools": "Struminde personele",
-       "articlepage": "Vide 'a pàgene de le condenute",
        "talk": "'Ngazzaminde",
        "views": "Visite",
        "toolbox": "Struminde",
        "tool-link-userrights": "Cange le gruppe {{GENDER:$1|utinde}}",
        "tool-link-userrights-readonly": "'Ndruche le gruppe {{GENDER:$1|utinde}}",
        "tool-link-emailuser": "Manne 'na mail a stu {{GENDER:$1|utende}}",
-       "userpage": "Vide a pàgene de l'utende",
-       "projectpage": "Vide a pàgene de le pruggette",
        "imagepage": "Vide a pàgene de le file",
        "mediawikipage": "Vide a pàgene de le messàgge",
        "templatepage": "Vide a pàgene de le template",
        "whatlinkshere-hideredirs": "$1 ridirezionaminde",
        "whatlinkshere-hidetrans": "$1 transclusiune",
        "whatlinkshere-hidelinks": "$1 collegaminde",
-       "whatlinkshere-hideimages": "$1 collegaminde a 'u file",
+       "whatlinkshere-hideimages": "$1 collegaminde da file",
        "whatlinkshere-filters": "Filtre",
        "autoblockid": "Autoblocche #$1",
        "block": "Bluècche l'utende",
        "tooltip-feed-rss": "RSS feed pe sta pàgene",
        "tooltip-feed-atom": "Atom feed pe sta pàgene",
        "tooltip-t-contributions": "Vide l'elenghe de le condrebbute de {{GENDER:$1|stu utende}}",
-       "tooltip-t-emailuser": "Manne n'e-mail a stu utende",
+       "tooltip-t-emailuser": "Manne n'e-mail a {{GENDER:$1stu utende}}",
        "tooltip-t-info": "Cchiù 'mbormaziune sus a sta pàgene",
        "tooltip-t-upload": "Careche le file",
        "tooltip-t-specialpages": "Liste de tutte le pàggene speciale",
        "version-libraries-license": "Licenze",
        "version-libraries-description": "Descrizione",
        "version-libraries-authors": "Auture",
-       "redirect": "Redirette da 'u file, utende o ID d'a revisione",
-       "redirect-summary": "Sta pàgena speciale redirezione a 'nu file (date 'u nome d'u file), 'na pàgene (date 'n'ID de revisione), o 'na pàgene utende (date 'n'ID numeriche de l'utende). Ause: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], o [[{{#Special:Redirect}}/user/101]].",
+       "redirect": "Redirette da 'u file, utende, pàgene, revisione o ID de l'archivije",
+       "redirect-summary": "Sta pàgena speciale redirezione a 'nu file (date 'u nome d'u file), a 'na pàgene (date 'n'ID de revisione o 'n'ID de pàgene), o 'na pàgene utende (date 'n'ID a numere de l'utende), o a 'na vôsce de l'archivije (date 'n'ID de l'archivije). Ause: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], o [[{{#Special:Redirect}}/user/101]] o [[{{#Special:Redirect}}/logid/186]].",
        "redirect-submit": "Véje",
        "redirect-lookup": "Mappature:",
        "redirect-value": "Valore:",
index 97226e8..c7398ca 100644 (file)
        "index-category": "Индексируемые страницы",
        "noindex-category": "Неиндексируемые страницы",
        "broken-file-category": "Страницы с неработающими файловыми ссылками",
+       "categoryviewer-pagedlinks": "($1) ($2)",
+       "category-header-numerals": "$1–$2",
        "about": "Описание",
        "article": "Статья",
        "newwindow": "(в новом окне)",
        "versionrequiredtext": "Для работы с этой страницей требуется MediaWiki версии $1. См. [[Special:Version|информацию об программном обеспечении]].",
        "ok": "OK",
        "pagetitle": "$1 — {{SITENAME}}",
+       "backlinksubtitle": "← $1",
        "retrievedfrom": "Источник — «$1»",
        "youhavenewmessages": "Вы получили $1 ($2).",
        "youhavenewmessagesfromusers": "{{PLURAL:$4|Вы получили}} $1 от {{PLURAL:$3|1=$3 участника|$3 участников|1=другого участника}} ($2).",
        "headline_tip": "Заголовок 2-го уровня",
        "nowiki_sample": "Вставьте сюда текст, который не нужно форматировать",
        "nowiki_tip": "Игнорировать вики-форматирование",
+       "image_sample": "Пример.jpg",
        "image_tip": "Встроенный файл",
+       "media_sample": "Пример.ogg",
        "media_tip": "Ссылка на файл",
        "sig_tip": "Ваша подпись и момент времени",
        "hr_tip": "Горизонтальная линия (не используйте слишком часто)",
        "template-semiprotected": "(частично защищено)",
        "hiddencategories": "Эта страница относится к {{PLURAL:$1|$1 скрытой категории|$1 скрытым категориям|1=одной скрытой категории}}:",
        "edittools": "<!-- Расположенный здесь текст будет показываться под формой редактирования и формой загрузки. -->",
+       "edittools-upload": "-",
        "nocreatetext": "На этом сайте ограничена возможность создания новых страниц.\nВы можете вернуться назад и отредактировать существующую страницу, [[Special:UserLogin|представиться системе или создать новую учётную запись]].",
        "nocreate-loggedin": "У вас нет разрешения создавать новые страницы.",
        "sectioneditnotsupported-title": "Редактирование разделов не поддерживается",
        "content-model-text": "обычный текст",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
+       "content-model-json": "JSON",
        "content-json-empty-object": "Пустой объект",
        "content-json-empty-array": "Пустой массив",
        "deprecated-self-close-category": "Страницы, использующие недопустимые самозакрывающиеся HTML-теги",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Показать",
        "rcfilters-activefilters": "Активные фильтры",
+       "rcfilters-advancedfilters": "Расширенные фильтры",
        "rcfilters-quickfilters": "Сохранённые настройки фильтра",
        "rcfilters-quickfilters-placeholder-title": "Сохраненных ссылок еще нет",
        "rcfilters-quickfilters-placeholder-description": "Чтобы сохранить настройки фильтра и повторно использовать их позже, щелкните значок закладки в области «Активный фильтр» ниже.",
        "rcfilters-filter-previousrevision-description": "Все правки, не являющиеся самыми последними на странице.",
        "rcfilters-filter-excluded": "Исключено",
        "rcfilters-tag-prefix-namespace-inverted": "<strong>:not</strong> $1",
-       "rcfilters-view-tags": "Ð\9cеÑ\82ки",
+       "rcfilters-view-tags": "ТегиÑ\80ованнÑ\8bе Ð¿Ñ\80авки",
        "rcnotefrom": "Ниже {{PLURAL:$5|указано изменение|перечислены изменения}} с <strong>$3, $4</strong> (показано не более <strong>$1</strong>).",
        "rclistfromreset": "Сбросить выбор даты",
        "rclistfrom": "Показать изменения с $3 $2.",
        "unknown-error": "Неизвестная ошибка.",
        "tmp-create-error": "Невозможно создать временный файл.",
        "tmp-write-error": "Ошибка записи во временный файл.",
-       "large-file": "Рекомендуется использовать файлы, размер которых не превышает $1 байт (размер загруженного файла составляет $2 байт).",
+       "large-file": "Рекомендуется использовать файлы, размер которых не превышает $1 {{PLURAL:$1|байт|байта|байт}} (размер загруженного файла составляет $2 {{PLURAL:$2|байт|байта|байт}}).",
        "largefileserver": "Размер файла превышает максимально разрешённый.",
        "emptyfile": "Загруженный вами файл, вероятно, пустой. Возможно, это произошло из-за ошибки при наборе имени файла. Пожалуйста, проверьте, действительно ли вы хотите загрузить этот файл.",
        "windows-nonascii-filename": "Эта вики не поддерживает имена файлов с символами, отсутствующими в таблице ASCII.",
        "apisandbox-sending-request": "Отправка API-запроса…",
        "apisandbox-loading-results": "Получение API-результатов…",
        "apisandbox-results-error": "Произошла ошибка при загрузке API-ответа на запрос: $1.",
+       "apisandbox-results-login-suppressed": "Этот запрос обработался как запрос неавторизованного пользователя, так как он может быть использован для обхода правила ограничения домена в браузере. Обратите внимание, что автоматическая обработка токенов песочницы API не работает корректно с такими запросами; пожалуйста, заполните их вручную.",
        "apisandbox-request-selectformat-label": "Показать данные запроса, как:",
        "apisandbox-request-format-url-label": "Строка URL-запроса",
        "apisandbox-request-url-label": "URL-адрес запроса:",
        "whatlinkshere-hideredirs": "$1 перенаправления",
        "whatlinkshere-hidetrans": "$1 включения",
        "whatlinkshere-hidelinks": "$1 ссылки",
-       "whatlinkshere-hideimages": "$1 файл{{PLURAL:$1|овая ссылка|овых ссылки|овых ссылок}}",
+       "whatlinkshere-hideimages": "$1 файловые ссылки",
        "whatlinkshere-filters": "Фильтры",
        "whatlinkshere-submit": "Выполнить",
        "autoblockid": "Автоблокировка #$1",
        "exif-compression-2": "CCITT Group 3, 1-мерная модификация кодирования длин серий Хаффмана",
        "exif-compression-3": "CCITT Group 3, факсовое кодирование",
        "exif-compression-4": "CCITT Group 4, факсовое кодирование",
+       "exif-compression-5": "LZW",
+       "exif-compression-6": "JPEG (старый)",
+       "exif-compression-7": "JPEG",
        "exif-copyrighted-true": "Охраняется авторским правом",
        "exif-copyrighted-false": "Авторско-правовой статус не задан",
+       "exif-photometricinterpretation-0": "Чёрный и белый (белый — 0)",
        "exif-photometricinterpretation-1": "Чёрный и белый (чёрный — 0)",
        "exif-photometricinterpretation-4": "Маска прозрачности",
        "exif-photometricinterpretation-5": "Разделены (вероятно CMYK)",
        "autoredircomment": "Перенаправление на [[$1]]",
        "autosumm-new": "Новая страница: «$1»",
        "autosumm-newblank": "Создана пустая страница",
-       "size-bytes": "$1 байт",
+       "size-bytes": "$1 {{PLURAL:$1|байт|байта|байт}}",
        "size-kilobytes": "$1 КБ",
        "size-megabytes": "$1 МБ",
        "size-gigabytes": "$1 ГБ",
+       "size-terabytes": "$1 ТБ",
+       "size-petabytes": "$1 ПБ",
+       "size-exabytes": "$1 ЭБ",
+       "size-zetabytes": "$1 ЗБ",
+       "size-yottabytes": "$1 ИБ",
+       "size-pixel": "$1 {{PLURAL:$1|пиксель|пикселя|пикселей}}",
        "bitrate-bits": "$1 б/с",
        "bitrate-kilobits": "$1 Кб/с",
        "bitrate-megabits": "$1 Мб/с",
        "bitrate-gigabits": "$1 Гб/с",
        "bitrate-terabits": "$1 Тб/с",
+       "bitrate-petabits": "$1 Пб/с",
+       "bitrate-exabits": "$1 Эб/с",
+       "bitrate-zetabits": "$1 Зб/с",
+       "bitrate-yottabits": "$1 Иб/с",
        "lag-warn-normal": "Изменения, сделанные менее {{PLURAL:$1|$1 секунды|$1 секунд|1=секунды}} назад, могут не отображаться в этом списке.",
        "lag-warn-high": "Из-за большого отставания в синхронизации серверов, в этом списке могут не отображаться изменения, сделанные менее {{PLURAL:$1|$1 секунды|$1 секунд|1=секунды}} назад.",
        "watchlistedit-normal-title": "Изменение списка наблюдения",
        "hebrew-calendar-m11-gen": "Ава",
        "hebrew-calendar-m12-gen": "Элула",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|обсуждение]])",
+       "timezone-utc": "UTC",
        "timezone-local": "Местное",
        "duplicate-defaultsort": "Внимание. Ключ сортировки по умолчанию «$2» переопределяет прежний ключ сортировки по умолчанию «$1».",
        "duplicate-displaytitle": "<strong>Внимание:</strong> Отображаемое название «$2» переопределяет ранее заданное отображаемое название «$1».",
        "version-parserhooks": "Перехватчики синтаксического анализатора",
        "version-variables": "Переменные",
        "version-antispam": "Антиспам",
+       "version-api": "API",
        "version-other": "Иное",
        "version-mediahandlers": "Обработчики медиа",
        "version-hooks": "Перехватчики",
        "limitreport-walltime": "Использование в режиме реального времени",
        "limitreport-walltime-value": "$1 {{PLURAL:$1|секунда|секунды|секунд}}",
        "limitreport-ppvisitednodes": "Количество узлов, посещённых препроцессором",
+       "limitreport-ppvisitednodes-value": "$1/$2",
        "limitreport-ppgeneratednodes": "Количество сгенерированных препроцессором узлов",
+       "limitreport-ppgeneratednodes-value": "$1/$2",
        "limitreport-postexpandincludesize": "Размер раскрытых включений",
        "limitreport-postexpandincludesize-value": "$1/$2 {{PLURAL:$2|байт|байта|байт}}",
        "limitreport-templateargumentsize": "Размер аргумента шаблона",
        "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|байт|байта|байт}}",
        "limitreport-expansiondepth": "Наибольшая глубина расширения",
+       "limitreport-expansiondepth-value": "$1/$2",
        "limitreport-expensivefunctioncount": "Количество «дорогих» функций анализатора",
+       "limitreport-expensivefunctioncount-value": "$1/$2",
        "expandtemplates": "Развёртка шаблонов",
        "expand_templates_intro": "Эта служебная страница преобразует текст, рекурсивно разворачивая все шаблоны в нём.\nТакже развёртке подвергаются функции парсера\n<code><nowiki>{{#language:…}}</nowiki></code> и переменные вида\n<code><nowiki>{{CURRENTDAY}}</nowiki></code> — в общем, всё внутри двойных фигурных скобок.",
        "expand_templates_title": "Заголовок страницы для {{FULLPAGENAME}} и т. п.:",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 (<strong>отключено</strong>)",
        "mediastatistics": "Медиа-статистика",
        "mediastatistics-summary": "Статистические данные о типах загруженных файлов. Она включает информацию только о последних версиях файлов. Более старые или удалённые версии файлов не учитываются.",
-       "mediastatistics-nbytes": "$1 байт{{PLURAL:$1||а|ов}} ($2; $3%)",
-       "mediastatistics-bytespertype": "Общий размер файла для этого раздела: $1 байт{{PLURAL:$1||ов|а}} ($2; $3%).",
-       "mediastatistics-allbytes": "Общий размер всех файлов: $1 байт{{PLURAL:$1||ов|а}} ($2).",
+       "mediastatistics-nfiles": "$1 ($2%)",
+       "mediastatistics-nbytes": "$1 {{PLURAL:$1|байт|байта|байт}} ($2; $3%)",
+       "mediastatistics-bytespertype": "Общий размер файла для этого раздела: $1 {{PLURAL:$1|байт|байта|байт}} ($2; $3%).",
+       "mediastatistics-allbytes": "Общий размер всех файлов: $1 {{PLURAL:$1|байт|байта|байт}} ($2).",
        "mediastatistics-table-mimetype": "MIME-тип",
        "mediastatistics-table-extensions": "Возможные расширения",
        "mediastatistics-table-count": "Количество файлов",
index 80f7f9f..497104f 100644 (file)
@@ -4,7 +4,8 @@
                        "Dalinanir",
                        "Ebe123",
                        "Zanatos",
-                       "아라"
+                       "아라",
+                       "Amara-Amaziɣ"
                ]
        },
        "tog-underline": "krrj du izdayn:",
        "thu": "Akwas",
        "fri": "Asimwas",
        "sat": "Asidyas",
-       "january": "Innayr",
+       "january": "ⵉⵏⵏⴰⵢⵔ",
        "february": "brayr",
        "march": "Mars",
        "april": "Ibrir",
        "may_long": "Mayyu",
-       "june": "Yunyu",
+       "june": "ⵢⵓⵏⵢⵓ",
        "july": "Yulyu",
-       "august": "Γuct",
-       "september": "Cutanbir",
+       "august": "ⵖⵓⵛⵜ",
+       "september": "ⵛⵓⵜⴰⵏⴱⵉⵔ",
        "october": "Kṭubr",
-       "november": "Nuwanbir",
-       "december": "Dujanbir",
-       "january-gen": "Innayr",
+       "november": "ⵏⵓⵡⴰⵏⴱⵉⵔ",
+       "december": "ⴷⵓⵊⴰⵏⴱⵉⵔ",
+       "january-gen": "ⵉⵏⵏⴰⵢⵔ",
        "february-gen": "Brayr",
        "march-gen": "Mars",
        "april-gen": "Ibrir",
        "may-gen": "Mayyu",
-       "june-gen": "Yunyu",
+       "june-gen": "ⵢⵓⵏⵢⵓ",
        "july-gen": "Yulyu",
-       "august-gen": "Γuct",
-       "september-gen": "Cutanbir",
+       "august-gen": "ⵖⵓⵛⵜ",
+       "september-gen": "ⵛⵓⵜⴰⵏⴱⵉⵔ",
        "october-gen": "Kṭubr",
-       "november-gen": "Nuwanbir",
-       "december-gen": "Dujanbir",
-       "jan": "Innayr",
+       "november-gen": "ⵏⵓⵡⴰⵏⴱⵉⵔ",
+       "december-gen": "ⴷⵓⵊⴰⵏⴱⵉⵔ",
+       "jan": "ⵉⵏⵏ",
        "feb": "brayr",
        "mar": "Mar",
        "apr": "Ibrir",
-       "may": "Mayyuh",
-       "jun": "yunyu",
-       "jul": "yulyu",
-       "aug": "ɣuct",
-       "sep": "cutanbir",
+       "may": "ⵎⴰⵢ",
+       "jun": "ⵢⵓⵍ",
+       "jul": "ⵢⵓⵍ",
+       "aug": "ⵖⵓⵛ",
+       "sep": "ⵛⵓⵜ",
        "oct": "kṭuber",
        "nov": "Nuw",
        "dec": "Duj",
        "index-category": "Tisniwin su umatar",
        "noindex-category": "Tisniwin bla amatar",
        "broken-file-category": "Tisniwin ɣ llan izdayn rzanin",
-       "about": "F",
+       "about": "ⵅⴼ",
        "article": "Mayllan ɣ tasna",
        "newwindow": "Murzemt ɣ tasatmt tamaynut",
        "cancel": "ḥiyyd",
        "mytalk": "Amsgdal inu",
        "anontalk": "Amsgdal i w-ansa yad",
        "navigation": "Tunigin",
-       "and": "&#32; d",
-       "qbfind": "Af",
-       "qbbrowse": "Cabba",
-       "qbedit": "Sbadl",
-       "qbpageoptions": "Tasnat ad",
-       "qbmyoptions": "Tisnatin inu",
+       "and": "&#32;ⴷ",
        "faq": "Isqsitn li bdda tsutulnin",
-       "faqpage": "Project: Isqqsit li bdda",
        "actions": "Imskarn",
        "namespaces": "Ismawn n tɣula",
        "variants": "lmotaghayirat",
        "errorpagetitle": "Laffut",
        "returnto": "Urri s $1.",
        "tagline": "Ž {{SITENAME}}",
-       "help": "Asaws",
-       "search": "Acnubc",
-       "searchbutton": "Cabba",
+       "help": "ⵜⵉⵡⵉⵙⵉ",
+       "search": "ⵙⵉⴳⴳⵍ",
+       "searchbutton": "ⵙⵉⴳⴳⵍ",
        "go": "Balak",
        "searcharticle": "Ftu",
-       "history": "Amzruy n tasna",
-       "history_short": "Amzruy",
+       "history": "ⴰⵎⵣⵔⵓⵢ ⵏ ⵜⴰⵙⵏⴰ",
+       "history_short": "ⴰⵎⵣⵔⵓⵢ",
        "updatedmarker": "Tuybddal z tizrink li iğuran",
        "printableversion": "Tasna nu sugz",
        "permalink": "Azday Bdda illan",
        "print": "Siggz",
-       "edit": "Ẓreg (bddel)",
-       "create": "Skr",
-       "editthispage": "Ara tasna yad",
-       "create-this-page": "Sker tasna yad",
-       "delete": "Ḥiyd",
-       "deletethispage": "Ḥiyd tasna yad",
+       "edit": "ⵙⵏⴼⵍ",
+       "create": "ⵙⵏⵓⵍⴼⵓ",
+       "delete": "ⴽⴽⵙ",
        "undelete_short": "Yurrid {{PLURAL:$1|yan umbddel|$1 imbddeln}}",
        "protect": "Ḥbu",
        "protect_change": "Abddel",
-       "protectthispage": "Ḥbu tasna yad",
        "unprotect": "Kksas aḥbu",
-       "unprotectthispage": "Kks aḥbu i tasnatad",
-       "newpage": "tawriqt tamaynut",
-       "talkpage": "Sgdl f tasna yad",
+       "newpage": "ⵜⴰⵙⵏⴰ ⵜⴰⵎⴰⵢⵏⵓⵜ",
        "talkpagelinktext": "Sgdl (mdiwil)",
        "specialpage": "Tasna izlin",
        "personaltools": "Imasn inu",
-       "articlepage": "Mel mayllan ɣ tasna",
        "talk": "Amsgdal",
        "views": "Ẓr.. (Mel)",
-       "toolbox": "Tanaka n imasn",
-       "userpage": "Ẓr n tasna n umsqdac",
-       "projectpage": "Ẓr tasna n tuwwuri",
+       "toolbox": "ⵉⵎⴰⵙⵙⵏ",
        "imagepage": "Ẓr tasna n-usddaw",
        "mediawikipage": "Ẓr tasna n tabrat",
        "templatepage": "Ẓr tasna n Tamudemt",
        "protectedpage": "Tasnayat iqn ugdal nes.",
        "jumpto": "Ftu s:",
        "jumptonavigation": "Tunigen",
-       "jumptosearch": "Acnubc",
+       "jumptosearch": "ⵙⵉⴳⴳⵍ",
        "view-pool-error": "Surf, iqddacn žayn ɣilad. mnnaw midn yaḍnin ay siggiln tasna yad. Qqel imik fad addaɣ talst at tarmt at lkmt tasna yad\n\n$1",
        "pool-timeout": "Tzrit tizi n uql lli yak ittuykfan. Ggutn midn lli iran ad iẓr tasna yad. Urrid yan imik..",
        "pool-queuefull": "Umuɣ n twuri iẓun (iεmr)",
        "pool-errorunknown": "Anzri (error) ur ittuyssan.",
-       "aboutsite": "F {{SITENAME}}",
+       "aboutsite": "ⵅⴼ {{SITENAME}}",
        "aboutpage": "Project:f' mayad",
        "copyright": "Mayllan gis illa ɣ ddu $1.",
        "copyrightpage": "{{ns:project}}:Izrfan n umgay",
        "disclaimers": "Ur darssuq",
        "disclaimerpage": "Project: Ur illa maddar illa ssuq",
        "edithelp": "Aws ɣ tirra",
-       "mainpage": "Tasana tamzwarut",
-       "mainpage-description": "Tasna tamzwarut",
+       "mainpage": "ⵜⴰⵙⵏⴰ ⵏ ⵓⵙⵏⵓⴱⴳ",
+       "mainpage-description": "ⵜⴰⵙⵏⴰ ⵏ ⵓⵙⵏⵓⴱⴳ",
        "policy-url": "Project:Tasrtit",
        "portal": "Ağur n w-amun",
        "portal-url": "Project:Ağur n w-amun",
        "retrievedfrom": "Yurrid z \"$1\"",
        "youhavenewmessages": "Illa dark $1 ($2).",
        "youhavenewmessagesmulti": "Dark tibratin timaynutin ɣ $1",
-       "editsection": "Ẓreg (bddel)",
-       "editold": "Ẓreg (bddel)",
+       "editsection": "ⵙⵏⴼⵍ",
+       "editold": "ⵙⵏⴼⵍ",
        "viewsourceold": "Mel aɣbalu",
-       "editlink": "Ẓreg (bddel)",
+       "editlink": "ⵙⵏⴼⵍ",
        "viewsourcelink": "Mel aɣbalu",
        "editsectionhint": "Ẓreg ayyaw: $1",
-       "toc": "Mayllan",
+       "toc": "ⵜⵓⵎⴰⵢⵉⵏ",
        "showtoc": "Mel",
        "hidetoc": "ḥbu",
        "collapsible-collapse": "Smnuḍu",
        "page-rss-feed": "\"$1\" tlqim RSS",
        "page-atom-feed": "$1 azday atom",
        "red-link-title": "$1 (tasna yad ur tlli)",
-       "nstab-main": "Tasnat",
+       "nstab-main": "ⵜⴰⵙⵏⴰ",
        "nstab-user": "Tasnat u-msxdam",
        "nstab-media": "Tasnat Ntuzumt",
        "nstab-special": "Tasna tamzlit",
        "nstab-project": "Tasna n tuwuri",
-       "nstab-image": "Asdaw",
-       "nstab-mediawiki": "Tabrat",
+       "nstab-image": "ⴰⴼⴰⵢⵍⵓ",
+       "nstab-mediawiki": "ⵜⵓⵣⵉⵏⵜ",
        "nstab-template": "Talɣa",
-       "nstab-help": "Tasna n-aws",
+       "nstab-help": "ⵜⴰⵙⵏⴰ ⵏ ⵜⵡⵉⵙⵉ",
        "nstab-category": "Taggayt",
        "nosuchaction": "Ur illa mat iskrn",
        "nosuchactiontext": "Mytuskarn ɣu tansa yad ur tti tgi.\n\nIrwas is turit tansa  skra mani yaḍnin, ulla azday ur igi amya.\n\nTzdar attili tamukrist ɣ {{SITENAME}}.",
        "mailmypassword": "sifd yi awal ihdan yadni",
        "mailerror": "Gar azn n tbrat : $1",
        "emailconfirmlink": "Als i tasna nk n tbratin izd nit nttat ayan.",
-       "loginlanguagelabel": "Tutlayt: $1",
+       "loginlanguagelabel": "ⵜⵓⵜⵍⴰⵢⵜ: $1",
        "php-mail-error-unknown": "Kra ur igadda tasɣnt btbratin() n PHP.",
        "changepassword": "bdl awal ihdan",
        "resetpass_announce": "Tkcmt {{GENDER:||e|(e)}} s yat tangalt lli kin ilkmt s tbrat emeil . tangaltad ur tgi abla tin yat twalt. Bac ad tkmlt tqqiyyidank kcm tangalt tamaynut nk ɣid:",
        "loginreqlink": "Kcm ɣid",
        "loginreqpagetext": "Illa fllak  $1 bac ad tẓṛt tisniwin yaḍn.",
        "accmailtitle": "awal ihdan hatin yuznak nnit",
-       "newarticle": "(Amaynu)",
+       "newarticle": "(ⴰⵎⴰⵢⵏⵓ)",
        "newarticletext": "Tfrt yan uzday s yat tasna lli ur ta jju illan [{{fullurl:Special:Log|type=delete&page={{FULLPAGENAMEE}}}} ttuykkas].\nIɣ rast daɣ tskrt skcm atṛiṣ nk ɣ tanaka  yad (Tẓḍaṛt an taggt γi [$1 tasna u usaws] iɣ trit inɣmisn yaḍn).\nIvd tlkmt {{GENDER:||e|(e)}} ɣis bla trit, klikki f tajrrayt n '''urrir''' n iminig nk (navigateur).",
        "noarticletext": "ɣilad ur illa walu may ityuran  f tasnatad ad, tzdart at [[Special:Search/{{PAGENAME}}|search for this page title]] in other pages,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} search the related logs],\nulla cabba  [{{fullurl:{{FULLPAGENAME}}|action=edit}} edit this page]</span>.",
        "noarticletext-nopermission": "Ur illa may itt yuran ɣ tasna tad.\nẒr [[Special:Search/{{PAGENAME}}|search for this page title]] ɣ tisnatin yaḍnin,\nulla <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}}search the related logs]</span>.",
        "history-feed-item-nocomment": "$1 ar $2",
        "rev-delundel": "Mel/ĥbu",
        "rev-showdeleted": "Mel",
-       "revdelete-show-file-submit": "yah",
+       "revdelete-show-file-submit": "ⵢⴰⵀ",
        "revdelete-radio-set": "yah",
        "revdelete-radio-unset": "uhu",
        "revdelete-suppress": "Ḥbu issfkatn ḥtta iy-indbal",
        "searchprofile-images": "Multimedia",
        "searchprofile-everything": "kullu",
        "searchprofile-advanced": "motaqqadim",
-       "searchprofile-articles-tooltip": "qlb gh $1",
+       "searchprofile-articles-tooltip": "ⵙⵉⴳⴳⵍ ⴳ $1",
        "searchprofile-images-tooltip": "qlb gh tswira",
        "searchprofile-everything-tooltip": "Cabba ɣ kullu may ityran ɣid (d ḥtta ɣ tisna nu umsgdal)",
        "searchprofile-advanced-tooltip": "Cabba ɣ igmmaḍn li tuyzlaynin",
        "search-result-category-size": "$1 amdan{{PLURAL:$1||i-n}} ($2 ddu talɣa{{PLURAL:$2||i-s}}, $3 asdaw{{PLURAL:$3||i-n}})",
        "search-redirect": "(Asmmati $1)",
        "search-section": "Ayyaw $1",
-       "search-suggest": "Is trit att nnit: $1",
+       "search-suggest": "ⵉⵙ ⵜⵔⵉⴷ ⴰⴷ ⵜⵉⵏⵉⴷ: $1",
        "search-interwiki-caption": "Tiwuriwin taytmatin",
        "search-interwiki-default": "$1 imyakkatn",
-       "search-interwiki-more": "(Uggar)",
+       "search-interwiki-more": "(ⵓⴳⴳⴰⵔ)",
        "search-relatedarticle": "Tzdi",
        "searchrelated": "Tuyzday",
        "searchall": "Kullu",
        "username": "smiyt o-msxdam:",
        "prefs-registration": "waqt n tsjil:",
        "yourrealname": "smiyt nk lmqol",
-       "yourlanguage": "tutlayt:",
+       "yourlanguage": "ⵜⵓⵜⵍⴰⵢⵜ:",
        "yournick": "sinyator",
        "yourgender": "ljins",
        "gender-unknown": "ghayr mohdad",
        "newuserlogpage": "Aɣmis n willi mmurzmn imiḍan amsqdac",
        "rightslog": "Anɣmas n imbddlnn izrfan n umsqdac",
        "action-read": "Ssɣr tasna yad",
-       "action-edit": "Ẓrig tasna yad.",
+       "action-edit": "ⵙⵏⴼⵍ ⵜⴰⵙⵏⴰ ⴰⴷ",
        "action-createpage": "Snufl tasna yad. (gttin)",
        "action-createtalk": "Snufl Tisniwin ad. (xlqtnt)",
        "action-createaccount": "snulf amiḍan ad n usqdac",
        "rcshowhidemine": "$1 iẓṛign inu",
        "rclinks": "Ml id  $1 n imbddltn immgura li ittuyskarn n id $2 ussan ad gguranin",
        "diff": "Gar",
-       "hist": "Amzruy",
-       "hide": "Ḥbu",
+       "hist": "ⵎⵣⵔⵢ",
+       "hide": "ⵙⵙⵏⵜⵍ",
        "show": "Mel",
-       "minoreditletter": "m",
-       "newpageletter": "A",
-       "boteditletter": "q",
+       "minoreditletter": "ⵎⵥⵢ",
+       "newpageletter": "ⵎⵢⵏ",
+       "boteditletter": "",
        "unpatrolledletter": "!",
        "number_of_watching_users_pageview": "[$1 iżŗi {{PLURAL:$1|amsqdac|imsqdacn}}]",
        "rc_categories_any": "wanna",
        "recentchangeslinked-toolbox": "Imbddeln zund ɣwid",
        "recentchangeslinked-title": "Imbddeln li izdin \"$1\"",
        "recentchangeslinked-summary": "Ɣid umuɣ iymbddeln li ittyskarnin tigira yad ɣ tisniwin li ittuyzdayn d kra n tasna (ulla i igmamn n kra taggayt ittuyzlayn). Tisniwin  ɣ [[Special:Watchlist|Umuɣ n tisniwin li ttsaggat]].",
-       "recentchangeslinked-page": "Assaɣ n tasna",
+       "recentchangeslinked-page": "ⵉⵙⵎ ⵏ ⵜⴰⵙⵏⴰ:",
        "recentchangeslinked-to": "Afficher les changements vers les pages liées au lieu de la page donnée\nMel imbddeln z tisniwin li ittuyzdayni bla tasna li trit.",
        "upload": "Srbu asddaw",
        "uploadbtn": "Srbu asddaw",
        "uploadnologintext": "Mel zwar mat git [[Special:UserLogin|Mel mat git]] iɣ trit ad tsrbut isddawn.",
        "upload_directory_missing": "Akaram n w-affay ($1) ur ittyufa d urt iskr uqadac web (serveur)",
        "uploadlogpage": "Anɣmis n isrbuṭn",
-       "filename": "Assaɣ n usdaw",
+       "filename": "ⵉⵙⵎ ⵏ ⵓⴼⴰⵢⵍⵓ",
        "filedesc": "Talusi",
        "fileuploadsummary": "Talusi",
        "filereuploadsummary": "Imbddln n usdaw",
        "filestatus": "Izrfan ḥbanin",
-       "filesource": "Aɣbalu",
+       "filesource": "ⴰⵙⴰⴳⵎ:",
        "upload-source": "Aɣbalu n usdaw",
        "sourcefilename": "Aɣbalu n ussaɣ n usdaw",
        "license": "Tlla s izrfan",
        "license-header": "Tẓrg ddu n izrfan",
-       "file-anchor-link": "Asdaw",
-       "filehist": "Amzry n usdaw",
+       "file-anchor-link": "ⴰⴼⴰⵢⵍⵓ",
+       "filehist": "ⴰⵎⵣⵔⵓⵢ ⵏ ⵓⴼⴰⵢⵍⵓ",
        "filehist-help": "Adr i asakud/tizi bac attżrt manik as izwar usddaw ɣ tizi yad",
        "filehist-revert": "Sgadda daɣ",
        "filehist-current": "Ɣilad",
-       "filehist-datetime": "Asakud/Tizi",
+       "filehist-datetime": "ⴰⵙⴰⴽⵓⴷ/ⴰⴽⵓⴷ",
        "filehist-thumb": "Awlaf imżżin",
        "filehist-thumbtext": "Mżżi n lqim ɣ tizi $1",
        "filehist-user": "Amsqdac",
        "filehist-dimensions": "Dimensions",
-       "filehist-comment": "Aɣfawal",
+       "filehist-comment": "ⴰⵅⴼⴰⵡⴰⵍ",
        "imagelinks": "Izdayn n usdaw",
        "linkstoimage": "Tasna yad {{PLURAL:$1|izdayn n tasna|$1 azday n tasniwin}} s usdaw:",
        "nolinkstoimage": "Ḥtta kra n tasna ur tra asdaw ad",
        "uncategorizedcategories": "Taggayin ur ittuyzlayn ɣ kraygan taggayt",
        "prefixindex": "Tisniwin lli izwarn s ...",
        "usercreated": "{{GENDER:$3|tuyskar}}  z $1 ar $2",
-       "newpages": "Tisniwin timaynutin",
-       "move": "Smmatti",
-       "movethispage": "Smmatti tasna yad",
+       "newpages": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⵜⵉⵎⴰⵢⵏⵓⵜⵉⵏ",
+       "move": "ⵙⵎⴰⵜⵜⵉ",
+       "movethispage": "ⵙⵎⴰⵜⵜⵉ ⵜⴰⵙⵏⴰ ⴰⴷ",
        "unusedcategoriestext": "Taggayin ad llant waxxa gis nt ur tlli kra n tasna wala kra n taggayin yaḍnin",
        "notargettitle": "F walu",
        "nopagetext": "Tasna li trit ur tlli",
        "categories": "imggrad",
        "linksearch": "Izdayn n brra",
        "linksearch-line": "$1 tmmuttid z $2",
-       "listgrouprights-members": "Umuɣ n  midn",
+       "listgrouprights-members": "(ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⵉⴳⵎⴰⵎⵏ)",
        "emailuser": "Azn tabrat umsqdac ad",
        "watchlist": "Umuɣ n imtfrn",
        "mywatchlist": "Umuɣ inu lli tsaggaɣ",
-       "watchlistfor2": "I $1 $2",
+       "watchlistfor2": " $1 $2",
        "addedwatchtext": "tasna « [[:$1]] » tllan ɣ [[Special:Watchlist|umuɣ n umtfr]]. Imbdln lli dyuckan d tasna lli dis iṭṭuzn rad asn nskr agmmaḍ nsn. Tasna radd ttbayan s \"uḍnay\" ɣ [[Special:RecentChanges|Umuɣ n imbddeln imaynutn]]",
        "removedwatchtext": "Tasna \"[[:$1]]\" ḥra ttuykkas z [[Special:Watchlist|your watchlist]].",
        "watch": "zaydtin i tochwafin-niw",
        "watchlist-options": "Tixtiṛiyin n umuɣ lli ntfar",
        "watching": "Ar itt sagga",
        "unwatching": "Ur at sul ntsagga",
-       "deletepage": "Amḥiyd n tasna",
+       "deletepage": "ⴽⴽⵙ ⵜⴰⵙⵏⴰ",
        "confirmdeletetext": "Ḥan tbidt f attkkist tasna yad kullu d kullu amzruy nes.\nilla fllak ad ni tẓrt is trit ast tkkist d is tssnt marad igguṛu iɣt tkkist d is iffaɣ mayad i [[{{MediaWiki:Policy-url}}|tasrtit]].",
        "actioncomplete": "tigawt tummidt",
        "actionfailed": "Tawwuri i xsrn",
        "protect-expiring": "tzri $1 (UTC)",
        "protect-cascade": "gdlnt wala tisniwin llin illan ɣ tasna yad (Agdal s imuzzar)",
        "protect-cantedit": "Ur as tufit ad sbadlt tiskfal n ugdal n tasna yad acku urak ittuyskar",
-       "restriction-type": "Turagt",
+       "restriction-type": "ⵜⵓⵔⴰⴳⵜ:",
        "restriction-level": "Restriction level:",
        "undeletelink": "mel/rard",
        "undeleteviewlink": "Ẓṛ",
        "blanknamespace": "(Amuqran)",
        "contributions": "Tiwuriwin n umsaws",
        "contributions-title": "Umuɣ n tiwuriwin n umsqdac $1",
-       "mycontris": "Tiwuriwin inu",
+       "mycontris": "ⵜⵓⵎⵓⵜⵉⵏ",
        "contribsub2": "I $1 ($2)",
        "uctop": "(tamgarut)",
        "month": "Z usggas (d urbur):",
        "sp-contributions-userrights": "Sgiddi izrfan",
        "sp-contributions-blocked-notice": "Amsqdac ad ittuysbddad. Maf ittuysbddad illa ɣ uɣmmis n n willi n sbid. Mayad ɣ trit ad tsnt maɣ",
        "sp-contributions-blocked-notice-anon": "Tansa yad IP ttuysbddad. Maf ittuysbddad illa ɣ uɣmmis n n willi n sbid. Mayad ɣ trit ad tsnt maɣ",
-       "sp-contributions-search": "Cnubc f tiwuriwin",
+       "sp-contributions-search": "ⵙⵉⴳⴳⵍ ⵜⵓⵎⵓⵜⵉⵏ",
        "sp-contributions-username": "Tansa IP niɣ assaɣ nu umsqdac:",
        "sp-contributions-toponly": "Ad urtmlt adla mat ittuyẓran tigira yad",
-       "sp-contributions-submit": "Cabba (Sigl)",
+       "sp-contributions-submit": "ⵙⵉⴳⴳⵍ",
        "sp-contributions-explain": "↓",
        "whatlinkshere": "May izdayn ɣid",
        "whatlinkshere-title": "Tisniwin li izdayn d \"$1\"",
-       "whatlinkshere-page": "Tasna:",
+       "whatlinkshere-page": "ⵜⴰⵙⵏⴰ:",
        "linkshere": "Tasnawinad ar slkamnt i '''[[:$1]]''':",
        "nolinkshere": "Ur llant tasniwin li izdin d '''[[:$1]]'''.",
        "nolinkshere-ns": "Ur tlla kra n tasna izdin d  '''[[:$1]]''' ɣ tɣult l-ittuystayn.",
        "blocklink": "Adur tajt",
        "unblocklink": "kkis agdal",
        "change-blocklink": "Sbadl agdal",
-       "contribslink": "tikkin",
+       "contribslink": "ⵜⵓⵎⵓⵜⵉⵏ",
        "blocklogpage": "aɣmmis n may ittuyqqanin",
        "blocklog-showlog": "Amsqdac ikkattin ittuyqqan. anɣmis n willi ttuyqqanin  ɣid:",
        "blocklog-showsuppresslog": "Amsqdac ikkattin ittuyqqan d iḥba. Anɣmis n willi ttuyqqanin  ɣid:",
        "movereason": "Maɣ:",
        "revertmove": "Rard",
        "export": "assufɣ n tasniwin",
-       "allmessagesname": "Assaɣ",
+       "allmessagesname": "ⵉⵙⵎ",
        "allmessagesdefault": "Tabrat bla astay",
        "thumbnail-more": "Simɣur",
        "thumbnail_error": "Irrur n uskr n umssutl: $1",
        "tooltip-ca-history": "Tunɣilt tamzwarut n tasna yad",
        "tooltip-ca-protect": "Ḥbu tasna yad",
        "tooltip-ca-unprotect": "Kkis aḥbu n tasna yad",
-       "tooltip-ca-delete": "Kkis tasna yad",
+       "tooltip-ca-delete": "ⴽⴽⵙ ⵜⴰⵙⵏⴰ ⴰⴷ",
        "tooltip-ca-undelete": "Rard imbddeln imzwura li ittyskarnin ɣ tasna yad",
-       "tooltip-ca-move": "Smmati tasna yad",
+       "tooltip-ca-move": "ⵙⵎⴰⵜⵜⵉ ⵜⴰⵙⵏⴰ ⴰⴷ",
        "tooltip-ca-watch": "Smd tasna yad itilli tsaggat.",
        "tooltip-ca-unwatch": "Kkis tasna yad z ɣ tilli tsaggat",
-       "tooltip-search": "siggl ɣ {{SITENAME}}",
+       "tooltip-search": "ⵙⵉⴳⴳⵍ ⴳ {{SITENAME}}",
        "tooltip-search-go": "Ftu s tasna s w-assaɣ znd ɣ-wad  iɣ tlla",
        "tooltip-search-fulltext": "Cnubc aṭṛiṣad ɣ tisnatin",
        "tooltip-p-logo": "Tasnat tamuqrant",
        "metadata-expand": "Ml ifruriyn lluzzanin",
        "metadata-collapse": "Aḥbu n ifruriyn lluzzanin",
        "metadata-fields": "Igran n isfkan n metadata li illan ɣ tabratad ran ilin ɣ tawlaf n tasna iɣ mzzin tiflut n isfka n mita\nWiyyaḍ raggis ḥbun s ɣiklli sttin kkan gantn.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
-       "exif-exposureprogram-1": "w-ofoss",
+       "exif-exposureprogram-1": "ⴰⵡⴼⵓⵙ",
        "exif-subjectdistance-value": "$1 metro",
        "exif-meteringmode-0": "orityawssan",
        "exif-meteringmode-1": "moyen",
        "exif-lightsource-1": "dow n wass",
        "exif-lightsource-2": "Fluorescent",
        "exif-lightsource-3": "dow ijhddn",
-       "exif-lightsource-4": "lflash",
+       "exif-lightsource-4": "ⴼⵍⴰⵛ",
        "exif-lightsource-9": "ljow ifolkin",
        "exif-lightsource-10": "tagot",
        "exif-lightsource-11": "asklo",
        "exif-sensingmethod-2": "amfay n lon n tozmi ghyat tosa",
        "exif-sensingmethod-3": "amfay n lon n tozmi ghsnat tosatin",
-       "exif-gaincontrol-0": "walo",
+       "exif-gaincontrol-0": "ⵡⴰⵍⵓ",
        "exif-contrast-0": "normal",
        "exif-contrast-1": "irtb",
        "exif-contrast-2": "iqor",
        "namespacesall": "kullu",
        "monthsall": "kullu",
        "recreate": "awd skr",
-       "confirm_purge_button": "Waxxa",
+       "confirm_purge_button": "ⵡⴰⵅⵅⴰ",
        "imgmultigo": "ballak !",
        "ascending_abbrev": "aryaqliw",
        "descending_abbrev": "aritgiiz",
        "version-poweredby-others": "wiyyad",
        "version-software-product": "lmntoj",
        "version-software-version": "noskha",
-       "fileduplicatesearch-filename": "smiyt n-wasdaw:",
-       "fileduplicatesearch-submit": "Sigl",
+       "fileduplicatesearch-filename": "ⵉⵙⵎ ⵏ ⵓⴼⴰⵢⵍⵓ:",
+       "fileduplicatesearch-submit": "ⵙⵉⴳⴳⵍ",
        "specialpages": "tiwriqin tesbtarin",
        "specialpages-group-other": "tiwriqin khassa yadnin",
        "specialpages-group-login": "kchm/sjl",
        "specialpages-group-users": "imskhdamn d salahiyat",
        "specialpages-group-highuse": "tiwriqim li bahra skhdamn midn",
        "specialpages-group-pages": "lista n twriqin",
-       "specialpages-group-pagetools": "tawriqt n ladawat",
+       "specialpages-group-pagetools": "ⵉⵎⴰⵙⵙⵏ ⵏ ⵜⴰⵙⵏⵉⵡⵉⵏ",
        "specialpages-group-wiki": "wiki ladawat dlmalomat",
        "specialpages-group-redirects": "sfhat tahwil gant khassa",
        "specialpages-group-spam": "ladawat n spam",
        "tag-filter-submit": "Istayn",
        "tags-title": "imarkiwn",
        "tags-hitcount-header": "tghyiran markanin",
-       "tags-edit": "bddl",
+       "tags-active-no": "ⵓⵀⵓ",
+       "tags-edit": "ⵙⵏⴼⵍ",
        "comparepages": "qarnn tiwriqin",
-       "compare-page1": "tawriqt 1",
-       "compare-page2": "tawriqt 2",
+       "compare-page1": "ⵜⴰⵙⵏⴰ 1",
+       "compare-page2": "ⵜⴰⵙⵏⴰ 2",
        "compare-rev1": "morajaa 1",
        "compare-rev2": "morajaa 2",
        "compare-submit": "qarn",
index 2dd9a61..862e809 100644 (file)
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (glej tudi [[Special:NewPages|seznam novih strani]])",
        "recentchanges-submit": "Prikaži",
        "rcfilters-activefilters": "Dejavni filtri",
+       "rcfilters-advancedfilters": "Napredni filtri",
        "rcfilters-quickfilters": "Nastavitve shranjenega filtra",
        "rcfilters-quickfilters-placeholder-title": "Shranjena ni še nobena povezava",
        "rcfilters-quickfilters-placeholder-description": "Da shranite svoje nastavitve filtrov in jih ponovno uporabite pozneje, kliknite na ikono za zaznamek v območju Dejavni filtri spodaj.",
        "rcfilters-filter-previousrevision-description": "Vse spremembe, ki niso najnovejša sprememba strani.",
        "rcfilters-filter-excluded": "Izključeno",
        "rcfilters-tag-prefix-namespace-inverted": "<strong>:ne</strong> $1",
-       "rcfilters-view-tags": "Oznake",
+       "rcfilters-view-tags": "Označena urejanja",
        "rcnotefrom": "{{PLURAL:$5|Navedena je sprememba|Navedeni sta spremembi|Navedene so spremembe}} od <strong>$3 $4</strong> dalje (prikazujem jih do <strong>$1</strong>).",
        "rclistfromreset": "Ponastavi izbiro datuma",
        "rclistfrom": "Prikaži spremembe od $3 $2 naprej",
index 9100bdd..28c73ee 100644 (file)
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Visa",
        "rcfilters-activefilters": "Aktiva filter",
+       "rcfilters-advancedfilters": "Avancerade filter",
        "rcfilters-quickfilters": "Sparade filterinställningar",
        "rcfilters-quickfilters-placeholder-title": "Inga länkar har sparats ännu",
        "rcfilters-quickfilters-placeholder-description": "För att spara dina filterinställningar och återanvända dem senare, klicka på bokmärkesikonen under \"Aktiva filter\" nedan.",
        "rcfilters-filter-previousrevision-description": "Alla ändringar som inte är den senaste ändringen av en sida.",
        "rcfilters-filter-excluded": "Exkluderad",
        "rcfilters-tag-prefix-namespace-inverted": "<strong>:not</strong> $1",
-       "rcfilters-view-tags": "Märken",
+       "rcfilters-view-tags": "Märkta redigeringar",
        "rcnotefrom": "Nedan visas {{PLURAL:$5|ändringen|ändringar}} sedan <strong>$3, $4</strong> (upp till <strong>$1</strong> ändringar visas).",
        "rclistfromreset": "Återställ datumval",
        "rclistfrom": "Visa nya ändringar från och med $2 $3",
index 6d35235..200cd07 100644 (file)
        "category-empty": "''ಈ ವರ್ಗೊಡು ಸದ್ಯಗ್ ಓವುಲ ಪುಟೊಕುಲಾವಡ್ ಅತ್ತಂಡ ಚಿತ್ರೊಲಾವಡ್ ಇಜ್ಜಿ.''",
        "hidden-categories": "{{PLURAL:$1|Hidden category|ದೆಂಗಾದ್ ದೀತಿನ ವರ್ಗೊಲು}}",
        "hidden-category-category": "ದೆಂಗಾದ್ ದೀತಿನ ವರ್ಗೊಲು",
-       "category-subcat-count": "{{PLURAL:$2|This category has only the following subcategory.|ಈ ವರ್ಗೊಡು ಈ ತಿರ್ತ್‍ದ {{PLURAL:$1|subcategory|$1 ಉಪವರ್ಗೊಲೆನ್}} ಸೇರಾದ್, ಒಟ್ಟಿಗೆ $2 ಉಂಡು.}}",
+       "category-subcat-count": "{{PLURAL:$2|ಈ ವರ್ಗೊಡು ತಿರ್ತ್ ಕೊರ್ತಿನ ಒಂಜಿ ಉಪವರ್ಗೊ ಮಾತ್ರ ಉಂಡು.|ಈ ವರ್ಗೊಡು ತಿರ್ತ್ ಕೊರ್ತಿನ {{PLURAL:$1|ಉಪವರ್ಗೊ|$1 ಉಪವರ್ಗೊಲೆನ್}} ಸೇರಾದ್, ಒಟ್ಟುಗು $2 ಉಪವರ್ಗೊಲು ಉಂಡು.}}",
        "category-subcat-count-limited": "ಈ ವರ್ಗೊಡು ತಿರ್ತ್ ತೊಜ್ಪಾದಿನ {{PLURAL:$1|ಉಪವರ್ಗ|$1 ಉಪವರ್ಗೊಲು}} ಉಂಡು.",
        "category-article-count": "{{PLURAL:$2|ಈ ವರ್ಗೊಡು ತಿರ್ತ್ ಉಪ್ಪುನ ಒಂಜಿ ಪುಟೊ ಮಾತ್ರ ಉಂಡು|ಒಟ್ಟು $2 ಪುಟೊಕುಲೆಡ್ ತಿರ್ತ್ ಉಪ್ಪುನ {{PLURAL:$1|ಪುಟೊ|$1 ಪುಟೊಕುಲು}} ಈ ವರ್ಗೊಡು ಉಂಡು.}}",
        "category-article-count-limited": "ಪ್ರಸಕ್ತ ವರ್ಗೊಡು ಈ ತಿರ್ತ್’ದ {{PLURAL:$1|ಪುಟ ಉಂಡು|$1 ಪುಟೊಲು ಉಂಡು}}.",
        "copyrightpage": "{{ns:project}}:ಕೃತಿ ಸ್ವಾಮ್ಯತೆಲು",
        "currentevents": "ಇತ್ತೆದ ಸಂಗತಿಲು",
        "currentevents-url": "Project:ಇತ್ತೆದ ಸಂಗತಿಲು",
-       "disclaimers": "ಹà²\95à³\8dà²\95à³\8dâ\80\8c à²¬à³\81ಡà³\8dâ\80\8dನ",
+       "disclaimers": "ಹà²\95à³\8dà²\95à³\8dâ\80\8c à²¨à²¿à²°à²¾à²\95ರಣà³\86ಲà³\81",
        "disclaimerpage": "Project:ಸಾಮಾನ್ಯೊ ಹಕ್ಕ್‌ ಬುಡ್‌ನ",
        "edithelp": "ಸಂಪಾದನೆಗ್ ಸಹಾಯೊ",
        "helppage-top-gethelp": "ಸಹಾಯೊ",
        "creating": "$1 ನ್ನು ಸ್ರಿಸ್ಟಿಸವೊಂದುಂಡು",
        "editingsection": "$1(ವಿಬಾಗೊನು) ಸಂಪದನೆ ಮಲ್ತೊಂದುಲ್ಲರ್",
        "yourtext": "ಇರೆನ ಸಂಪಾದನೆ",
+       "editingold": "<strong>ಎಚ್ಚರಿಕೆ: ಈ ಪುಟೊತ್ತ ಪರತ್ತ್ ಆವೃತ್ತಿನ್ ಸಂಪೊಲಿತ್ತೊಂದುಲ್ಲರ್. ಈ ಬದಲಾವಣೆನ್ ಒರಿಪಾಂಡ, ಈ ಆವೃತ್ತಿಡ್ದ್ ಬೊಕ್ಕ ಮಲ್ತಿನ ಬದಲಾವಣೆಲು ಮಾತಾ ಮಾಜಿದ್ ಪೋಪುಂಡು. </strong>",
        "yourdiff": "ವ್ಯತ್ಯಾಸೊಲು",
        "copyrightwarning": "ದಯಮಲ್ತ್’ದ್ ಗಮನಿಸ್’ಲೆ: {{SITENAME}} ಸೈಟ್’ಡ್ ಇರೆನ ಪೂರಾ ಕಾಣಿಕೆಲುಲಾ $2 ಅಡಿಟ್ ಬಿಡುಗಡೆ ಆಪುಂಡು (ಮಾಹಿತಿಗ್ $1 ನ್ ತೂಲೆ). ಇರೆನ ಸಂಪಾದನೆಲೆನ್ ಬೇತೆಕುಲು ನಿರ್ಧಾಕ್ಷಿಣ್ಯವಾದ್ ಬದಲ್ ಮಲ್ತ್’ದ್ ಬೇತೆ ಕಡೆಲೆಡ್ ಪಟ್ಟೆರ್. ಇಂದೆಕ್ ಇರೆನ ಒಪ್ಪಿಗೆ ಇತ್ತ್’ನ್ಡ ಮಾತ್ರ ಮುಲ್ಪ ಸಂಪಾದನೆ ಮಲ್ಪುಲೆ.<br />\nಅತ್ತಂದೆ ಇರೆನ ಸಂಪಾದನೆಲೆನ್ ಈರ್ ಸ್ವತಃ ಬರೆತರ್, ಅತ್ತ್’ನ್ಡ ಕೃತಿಸ್ವಾಮ್ಯತೆ ಇಜ್ಜಂದಿನ ಕಡೆರ್ದ್ ದೆತೊನ್ದರ್ ಪಂಡ್’ದ್ ಪ್ರಮಾಣಿಸೊಂದುಲ್ಲರ್.\n'''ಕೃತಿಸ್ವಾಮ್ಯತೆದ ಅಡಿಟುಪ್ಪುನಂಚಿನ ಕೃತಿಲೆನ್ ಒಪ್ಪಿಗೆ ಇಜ್ಜಂದೆ ಮುಲ್ಪ ಪಾಡೊಚಿ!'''",
        "templatesused": "ಈ ಪುಟೊಟ್ ಉಪಯೋಗ ಮಲ್ತಿನ {{PLURAL:$1|Template|ಟೆಂಪ್ಲೇಟುಲೂ}}:",
        "lineno": "$1ನೇ ಸಾಲ್:",
        "compareselectedversions": "ಆಯ್ಕೆ ಮಲ್ತಿನ ಆವೃತ್ತಿಲೆನ್ ಹೊಂದಾಣಿಕೆ ಮಲ್ತ್ ತೂಲೆ",
        "editundo": "ದುಂಬುದಲೆಕೊ",
+       "diff-empty": "(ದಾಲ ವ್ಯತ್ಯಾಸೊ ಇಜ್ಜಿ)",
        "diff-multi-sameuser": "({{PLURAL:$1|One intermediate revision|$1 ಮದ್ಯಂತರೊ ಪರಿಸ್ಕರಣೆ}} ಅವ್ವೇ ಬಳಕೆದಾರೆರೆನ್ ತೋಜಾದ್‍ಜಿ)",
        "searchresults": "ನಾಡ್‍ಪತ್ತ್‌ನೆತ ಪಲಿತಾಂಸೊಲು",
        "searchresults-title": "\"$1\"ಕ್ ನಾಡ್‍ಪತ್ತ್‌ನೆತ ಪಲಿತಾಂಸೊಲು",
        "notextmatches": "ವಾ ಪುಟೊತ ಪಠ್ಯೊಡುಲಾ ಹೋಲಿಕೆ ಇಜ್ಜಿ",
-       "prevn": "ದà³\81à²\82ಬà³\81ತà³\8dತ {{PLURAL:$1|$1}}",
+       "prevn": "ದà³\81à²\82ಬà³\81ದ {{PLURAL:$1|$1}}",
        "nextn": "ಬೊಕ್ಕದ {{PLURAL:$1|$1}}",
        "prev-page": "ದುಂಬುತ ಪುಟೊ",
        "next-page": "ನನತಾ ಪುಟ",
        "viewprevnext": "ತೂಲೆ ($1 {{int:pipe-separator}} $2) ($3)",
        "searchmenu-exists": "<strong>ಈ ವಿಕಿಟ್ \"[[:$1]]\" ಪುದರ್ದ ಪುಟೊ ಉಂಡು.</strong> {{PLURAL:$2|0=|ನಾಡಿನ ಪುದರ್ಗ್ ತಿಕ್ಕಿನ ಬೇತೆ ಫಲಿತಾಶೊಲೆನ್ಲಾ ತೂಲೆ.}}",
        "searchmenu-new": "<strong>ಈ ಪುಟೊನು ರಚಿಸಲೆ \"[[:$1]]\" ಈ ವಿಕಿಡ್!</strong> {{PLURAL:$2|0=|See also the page found with your search.|ನಾಡ್‍ನಗ ತೋಜಿದ್ ಬರ್ಪುನ ಪಲಿತಾಂಸೊನು ತೂಲೆ.}}",
-       "searchprofile-articles": "ಲà³\87à²\95ನà³\8a à²ªà³\81à²\9fà³\8a",
+       "searchprofile-articles": "ವಿಸಯ à²ªà³\81à²\9fà³\8aà²\95à³\81ಲà³\81",
        "searchprofile-images": "ಮಲ್ಟಿಮೀಡಿಯೊ",
        "searchprofile-everything": "ಪ್ರತಿ ವಿಸಯೊ",
-       "searchprofile-advanced": "ಸà³\81ದಾರಣà³\86ದ",
+       "searchprofile-advanced": "ಸà³\81ದಾರà³\8dತಿನ",
        "searchprofile-articles-tooltip": "$1ಟ್ ನಾಡ್‍ಲೆ",
        "searchprofile-images-tooltip": "ಫೈಲ್‍ನ್ ನಾಡ್‍ಲೆ",
        "searchprofile-everything-tooltip": "ಮಾತ ಮಾಹಿತಿಲೆನ್ ನಾಡ್‍ಲೆ (ಪಾತೆರದ ಪುಟೊಲ ಸೇರ್ದ್)",
-       "searchprofile-advanced-tooltip": "ಬಳà²\95à³\86ದ à²¨à²¾à²®à³\8aವರà³\8dà²\97à³\8aಡà³\81 ನಾಡ್‍ಲೆ",
+       "searchprofile-advanced-tooltip": "ವà³\88ಯà²\95à³\8dತಿà²\95à³\8a à²ªà³\81ದರà³\8d-à²\9cಾà²\97à³\86ಲà³\86ಡà³\8d ನಾಡ್‍ಲೆ",
        "search-result-size": "$1 ({{PLURAL:$2|೧ ಪದೊ|$2 ಪದೊಕುಲು}})",
        "search-result-category-size": "{{PLURAL:$1|1 ಸದಸ್ಯೆರ್|$1 ಸದಸ್ಯೆರ್ಲು}} ({{PLURAL:$2|1 ಉಪವರ್ಗೊ|$2 ಉಪವರ್ಗೊಲು}}, {{PLURAL:$3|1 ಫೈಲ್|$3 ಫೈಲ್‍ಲು}})",
        "search-redirect": "($1 ಡ್ದ್ ಪಿರ ನಿರ್ದೇಸನೊ)",
        "grouppage-sysop": "{{ns:project}}:ನಿರ್ವಾಹಕೆರ್",
        "right-read": "ಪುಟಕ್‍ಲೆನ್ ಓದುಲೆ",
        "right-edit": "ಪುಟೊನ್ ಸಂಪಾದನೆ ಮಲ್ಪುಲೆ",
-       "right-writeapi": "ಬರà³\86ಯಿನ à²\8eಪಿà²\90ದ à²¬à²³à²\95à³\86",
+       "right-writeapi": "ಬರವà³\81 à²\8e.ಪಿ.à²\90. à²¦ à²\89ಪಯà³\8bà²\97à³\8a",
        "right-delete": "ಪುಟೊಕುಲೆನ್ ಮಾಜಾಲೆ",
        "right-undelete": "ಪುಟೊನ್ ಮಾಜಾವಡೆ",
        "grant-group-email": "ಇ-ಅಂಚೆ ಕಡಪುಡುಲೆ",
        "grant-createaccount": "ಪೊಸ ಕಾತೆ ಸುರು ಮಲ್ಪುಲೆ",
-       "newuserlogpage": "ಸದಸà³\8dಯà³\86ರà³\86 à²¸à³\8dರಿಸà³\8dà²\9fಿದ ದಾಕಲೆ",
+       "newuserlogpage": "ಸದಸà³\8dಯà³\86ರà³\86 à²\89à²\82ಡà³\81ಮಲà³\8dತಿನ ದಾಕಲೆ",
        "rightslog": "ಸದಸ್ಯೆರ್ನ ಹಕ್ಕು ದಾಖಲೆ",
        "action-read": "ಈ ಪುಟೊನು ಓದುಲೆ",
        "action-edit": "ಈ ಪುಟೊನು ಎಡಿಟ್ ಮಲ್ಪುಲೆ",
        "recentchanges-legend": "ಇಂಚಿಪೊದ ಬದಲಾವಣೆಲೆ ಆಯ್ಕೆಲು",
        "recentchanges-summary": "ಈ ವಿಕಿಟ್ ಇಂಚಿಪ್ಪ ಮಲ್ತ್‌ನ ಬದಲಾವಣೆನ್ ಈ ಪುಟೊಡು ಈರ್ ತೂವೊಲಿ",
        "recentchanges-feed-description": "ಈ ಫೀಡ್’ಡ್ ವಿಕಿಕ್ ಇಂಚಿಪ್ಪ ಆತಿನಂಚಿನ ಬದಲಾವಣೆಲೆನ್ ಟ್ರ್ಯಾಕ್ ಮಲ್ಪುಲೆ.",
-       "recentchanges-label-newpage": "à²\87ರà³\8dನ à²\88 à²¬à²¦à²²à²¾à²µà²£à³\86 à²ªà³\8aಸ à²ªà³\81à²\9fà³\8aನà³\81 à²¸à³\81ರà³\81 à²®à²²à³\8dಪà³\81à²\82ಡà³\81",
+       "recentchanges-label-newpage": "à²\88 à²¬à²¦à²²à²¾à²µà²£à³\86 à²\92à²\82à²\9cಿ à²ªà³\8aಸ à²ªà³\81à²\9fà³\8aನà³\81 à²\89à²\82ಡà³\81 à²®à²²à³\8dತà³\8dâ\80\8cà²\82ಡà³\8d.",
        "recentchanges-label-minor": "ಉಂದು ಕಿಞ್ಞ ಬದಲಾವಣೆ",
        "recentchanges-label-bot": "ಈ ಸಂಪದನೆ ಒಂಜಿ ಬಾಟ್‍ಡ್ ಆತ್ಂಡ್",
        "recentchanges-label-unpatrolled": "ಈ ಸಂಪಾದನೆನ್ ನನಲಾ ಪರೀಕ್ಷೆ ಮಲ್ತ್‌ಜಿ.",
        "recentchanges-label-plusminus": "ಬೈಟ್ಸ್‌ದ ಲೆಕ್ಕೊಡು ಈ ಪುಟೊತ್ತ ಗಾತ್ರೊ ಬದಲಾತ್ಂಡ್",
        "recentchanges-legend-heading": "<strong>ಪರಿವಿಡಿ:</strong>",
-       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (ಬೊಕ್ಕೊಲಾ ತೂಲೆ [[Special:NewPages|ಪೊಸ ಪುಟೊದ ಪಟ್ಟಿ]])",
+       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|ಪೊಸ ಪುಟೊಕ್ಲೆನ ಪಟ್ಟಿ]]ನ್ಲಾ ತೂಲೆ)",
        "recentchanges-submit": "ತೋಜಾಲೆ",
        "rcfilters-filterlist-whatsthis": "ಉಂದು ದಾದಾ?",
        "rcfilters-filter-user-experience-level-learner-label": "ಕಲ್ಪುನರ್",
        "listfiles-latestversion-no": "ಅತ್ತ್",
        "file-anchor-link": "ಫೈಲ್",
        "filehist": "ಫೈಲ್‍ದ ಇತಿಹಾಸೊ",
-       "filehist-help": "ದಿನà³\8a/ಪà³\8aರà³\8dತà³\81ದ à²®à²¿à²¤à³\8dತà³\8d à²\92ತà³\8dತà³\8dâ\80\8cà²\82ಡ à²\88 à²«à³\88ಲà³\8dâ\80\8dದ à²¨à²¿à²\9cà³\8aಸà³\8dತಿತಿ à²¤à³\8bà²\9cà³\81à²\82ಡà³\81.",
+       "filehist-help": "ದಿನà³\8a/ಪà³\8aರà³\8dತà³\81ದ à²®à²¿à²¤à³\8dತà³\8d à²\92ತà³\8dತà³\8dâ\80\8cà²\82ಡ à²«à³\88ಲà³\8dâ\80\8d à²\86 à²ªà³\8aರà³\8dತà³\81ಡà³\81 à²\8eà²\82à²\9a à²¤à³\8bà²\9cà³\8aà²\82ದಿತà³\8dತà³\8dà²\82ಡà³\8d à²ªà²\82ದà³\8d à²¤à³\82ವà³\8aಲಿ.",
        "filehist-deleteall": "ಮಾತಾ ಮಾಜಾಲೆ",
        "filehist-deleteone": "ಮಾಜಾಲೆ",
        "filehist-revert": "ದುಂಬುದ ಲೆಕ ಮಲ್ಪುಲೆ",
        "filehist-thumb": "ಎಲ್ಯಚಿತ್ರೊ",
        "filehist-thumbtext": "$1ತ ಆವೃತ್ತಿದ ಎಲ್ಯಚಿತ್ರೊ",
        "filehist-nothumb": "ಎಲ್ಯಚಿತ್ರೊ ಇಜ್ಜಿ",
-       "filehist-user": "ಬಳà²\95à³\86ದಾರೆರ್",
+       "filehist-user": "ಸದಸà³\8dಯೆರ್",
        "filehist-dimensions": "ಆಯಾಮೊಲು",
        "filehist-filesize": "ಫೈಲ್’ದ ಗಾತ್ರ",
        "filehist-comment": "ಅಬಿಪ್ರಾಯೊ",
        "imagelinks": "ಫೈಲ್‍ದ ಉಪಯೋಗ",
-       "linkstoimage": "ಈ ತಿರ್ತ್‍ದ {{PLURAL:$1|page links|$1 ಪುಟೊಲೆ ಕೊಂಡಿ}}ಈ ಫೈಲ್‍ಗ್ ಕೊನಪೋಪುಂಡು.",
+       "linkstoimage": "ಈ ತಿರ್ತ್‍ದ {{PLURAL:$1|ಪುಟೊ|$1 ಪುಟೊಕುಲು}} ಈ ಫೈಲ್‍ಗ್ ಸಂಪರ್ಕೊ ಕೊರ್ಪುಂಡು.",
        "nolinkstoimage": "ಈ ಫೈಲ್‍ಗ್ ಸಂಪರ್ಕೊ ಉಪ್ಪುನ ವಾ ಪುಟೊಲಾ ಇದ್ದಿ.",
        "sharedupload": "ಈ ಫೈಲ್’ನ್ ಮಸ್ತ್ ಜನ ಪಟ್ಟ್’ದುಲ್ಲೆರ್ ಅಂಚೆನೆ ಉಂದು ಮಸ್ತ್ ಪ್ರೊಜೆಕ್ಟ್’ಲೆಡ್ ಉಪಯೋಗಿಸೊಲಿ",
-       "sharedupload-desc-here": "à²\88 à²ªà³\81à²\9fà³\8a $1ಡà³\8dದà³\8d à²¬à³\8aà²\95à³\8dà²\95 à²¬à³\87ತà³\86 à²¯à³\8bà²\9cನà³\86ಡà³\8dದà³\8d à²\97ಲಸà³\8aಲಿ.\nà²\88 à²ªà³\81à²\9fà³\8aತ à²µà²¿à²µà²°à³\8a [$2 à²ªà³\81à²\9fà³\8aತ à²µà²¿à²µà²°à³\8a] à²¤à²¿à²°à³\8dತ à²¸à²¾à²²à³\8dâ\80\8dಡà³\8d à²¤à³\8bà²\9cಾದà³\8dà²\82ಡà³\8d",
-       "upload-disallowed-here": "à²\88ರà³\8d à²\88 à²«à³\88ಲà³\8dâ\80\8dನà³\8d à²\95à³\81ಡà³\8aರà³\8a à²¬à²°à³\86ವರà³\86 à²¸à²¾à²¦à³\8dಯà³\8a à²\87ದà³\8dದಿ.",
+       "sharedupload-desc-here": "à²\88 à²ªà³\81à²\9fà³\8a $1ಡà³\8dದà³\8d à²¬à³\88ದà³\8dà²\82ಡà³\8d à²¬à³\8aà²\95à³\8dà²\95 à²¬à³\87ತà³\86 à²¯à³\8bà²\9cನà³\86ಲà³\86ಡà³\8d à²\97ಲಸà³\8aಲಿ.\n[$2 à²\95ಡತ à²µà²¿à²µà²°à²£à³\86 à²ªà³\81à²\9f]ತ à²®à²¿à²¤à³\8dತà³\8d à²µà²¿à²µà²°à²£à³\86ನà³\8d à²¤à²¿à²°à³\8dತ à²¸à²¾à²²à³\8dâ\80\8dಡà³\8d à²¤à³\8bà²\9cಾದà³\8dà²\82ಡà³\8d.",
+       "upload-disallowed-here": "à²\88ರà³\8d à²\88 à²«à³\88ಲà³\8dâ\80\8dನà³\8d à²\95à³\81ಡà³\8aರà³\8a à²¬à²°à³\86ಯà³\86ರà³\86 à²¸à²¾à²¦à³\8dಯà³\8a à²\87à²\9cà³\8dà²\9cಿ.",
        "filerevert-comment": "ಕಾರಣ:",
        "filerevert-submit": "ದುಂಬುದ ಲೆಕ ಮಲ್ಪುಲೆ",
        "filedelete": "$1 ನ್ ಮಾಜಾಲೆ",
        "deletecomment": "ಕಾರಣ:",
        "deletereasonotherlist": "ಬೇತೆ ಕಾರಣ",
        "delete-edit-reasonlist": "ಮಾಜಾಯಿನ ಕಾರಣೊಲೆನ್ ಸಂಪಾದನೆ ಮಲ್ಪುಲೆ",
-       "rollbacklink": "ಪà³\81ಡತà³\8dತà³\8d à²ªà²¾à²¡್",
-       "rollbacklinkcount": "ಪಿರ ದೆತೊನ್ಲೆ $1 {{PLURAL:$1|edit|ಸಂಪದನೆಲು}}",
+       "rollbacklink": "ಪಿರ à²¤à²¿à²°à³\8dà²\97ಾವ್",
+       "rollbacklinkcount": "$1 {{PLURAL:$1|ಸಂಪಾದನೆನ್|ಸಂಪಾದನೆಲೆನ್}} ಪಿರ ತಿರ್ಗಾವ್",
        "changecontentmodel": "ಪುಟೊತ ವಿಸಯ ಮಾದರಿನ್ ಬದಲ್ ಮಲ್ಪುಲೆ",
        "changecontentmodel-title-label": "ಪುಟೊದ ಪುದರ್",
        "changecontentmodel-reason-label": "ಕಾರಣ:",
        "blocklist-target": "ಗುರಿ",
        "blocklist-reason": "ಕಾರಣೊ",
        "ipblocklist-submit": "ನಾಡ್‍ಲೆ",
-       "blocklink": "à²\85ಡà³\8dಡ à²ªà²¤à³\8dತà³\8dâ\80\8cಲೆ",
+       "blocklink": "ತಡà³\86ಪà³\81ಲೆ",
        "unblocklink": "ಅಡ್ಡನ್ ದೆಪ್ಪುಲೆ",
        "change-blocklink": "ಬ್ಲಾಕ್’ನ್ ಬದಲಾಲೆ",
        "contribslink": "ಕಾಣಿಕೆಲು",
        "tooltip-ca-unwatch": "ಈ ಪುಟೊನು ಇರೆನ ವೀಕ್ಷಣಾ ಪಟ್ಟಿರ್ದ್ ದೆಪ್ಪುಲೆ",
        "tooltip-search": "{{SITENAME}}ನ್ ನಾಡ್‍ಲೆ",
        "tooltip-search-go": "ಉಂದುವೇ ಪುದರ್ದ ಪುಟೊ ಇತ್ತ್‌ಂಡ ಅಡೆ ಪೋಲೆ",
-       "tooltip-search-fulltext": "ಈ ಪಟ್ಯೊಡ್ ಉಪ್ಪುನಂಚಿನ ಪುಟೊಲೆನ್ ನಾಡ್‌ಲೆ",
+       "tooltip-search-fulltext": "à²\88 à²ªà²\9fà³\8dಯà³\8aಡà³\8d à²\89ಪà³\8dಪà³\81ನà²\82à²\9aಿನ à²ªà³\81à²\9fà³\8aà²\95à³\81ಲà³\86ನà³\8d à²¨à²¾à²¡à³\8dâ\80\8cಲà³\86",
        "tooltip-p-logo": "ಮುಖ್ಯ ಪುಟಕ್ ಪೋಲೆ",
        "tooltip-n-mainpage": "ಮುಖ್ಯಪುಟನ್ ತೂಲೆ",
        "tooltip-n-mainpage-description": "ಮುಕ್ಯೊ ಪುಟೊನ್ ತೂಲೆ",
        "tooltip-n-recentchanges": "ವಿಕಿಡ್ ದುಂಬುದ ಒಂತೆ ಸಮಯೊಡ್ ಆತಿನಂಚಿನ ಬದಲಾವಣೆಲೆನ ಪಟ್ಟಿ",
        "tooltip-n-randompage": "ಇಚ್ಚೆದ ಪುಟೊ ಒಂಜೆನ್ ತೋಜಾವು",
        "tooltip-n-help": "ಇಂದೆತ ಬಗೆಟ್ ತೆರೆಯೊನುನ ಜಾಗೆ",
-       "tooltip-t-whatlinkshere": "ಇಡೆಗ್ ಕೊಂಡಿ ಕೊರ್ಪುನಂಚಿನ ಪೂರ ವಿಕಿ ಪುಟೊಲೆನ ಪಟ್ಟಿ",
+       "tooltip-t-whatlinkshere": "à²\87ಡà³\86à²\97à³\8d à²\95à³\8aà²\82ಡಿ à²\95à³\8aರà³\8dಪà³\81ನà²\82à²\9aಿನ à²ªà³\82ರ à²µà²¿à²\95ಿ à²ªà³\81à²\9fà³\8aà²\95à³\81ಲà³\86ನ à²ªà²\9fà³\8dà²\9fಿ",
        "tooltip-t-recentchangeslinked": "ಈ ಪುಟೊಡ್ದ್ ಸಂಪರ್ಕೊ ಉಪ್ಪುನಂಚಿನ ಪುಟೊಟು ಇಂಚಿಪೊದ ಬದಲಾವಣೆಲು",
        "tooltip-feed-rss": "ಈ ಪುಟೊಗು ಆರ್.ಎಸ್.ಎಸ್ ಫೀಡ್",
        "tooltip-feed-atom": "ಈ ಪುಟೊಕು ಆಟಮ್ ಫೀಡ್ ಮಲ್ಪುಲೆ",
        "tooltip-t-contributions": "{{GENDER:$1|ಈ ಸದಸ್ಯೆರ್ನ}} ಕಾಣಿಕೆದ ಪಟ್ಟಿನ್ ತೋಜಾವು",
        "tooltip-t-emailuser": "{{GENDER:$1|ಈ ಸದಸ್ಯೆರೆಗ್}} ಇ-ಮೇಲ್ ಕಡಪುಡ್ಲೆ",
        "tooltip-t-upload": "ಫೈಲ್’ನ್ ಅಪ್ಲೋಡ್ ಮಲ್ಪುಲೆ",
-       "tooltip-t-specialpages": "ಪೂರ  ವಿಸೇಸೊ ಪುಟೊಲೆನ ಪಟ್ಟಿ",
+       "tooltip-t-specialpages": "ಪà³\82ರ  à²µà²¿à²¸à³\87ಸà³\8a à²ªà³\81à²\9fà³\8aà²\95à³\81ಲà³\86ನ à²ªà²\9fà³\8dà²\9fಿ",
        "tooltip-t-print": "ಈ ಪುಟೊತ ಮುದ್ರಣೊ ಮಲ್ಪುನ ಆವೃತ್ತಿ",
        "tooltip-t-permalink": "ಪುಟೊತ ಈ ಆವೃತ್ತಿಗ್ ಸಾಸಿತೊ ಕೊಂಡಿ",
        "tooltip-ca-nstab-main": "ಮಾಹಿತಿ ಪುಟೊನ್ ತೂಲೆ",
        "tooltip-watch": "ಈ ಪುಟನ್ ಈರ್ನ ತೂಪುನ ಪಟ್ಟಿಗ್ ಸೇರ್ಸಾಲೆ",
        "tooltip-recreate": "ಈ ಪುಟ ಇತ್ತೆ ಇಜ್ಜ೦ಡಲಾ ಐನ್ ಪಿರ ಮಲ್ಪ್",
        "tooltip-upload": "ಅಪ್ಲೋಡ್ ಸುರು ಮಲ್ಪು",
-       "tooltip-rollback": "ಅಕೇರಿದ ಸಂಪಾದಕೆರೆನ ಮಾಂತ ಸಂಪದನೆನ್ಲಾ ಮಾಜದ್ ಪಾಡುಂಡು",
+       "tooltip-rollback": "\"ಪಿರ ತಿರ್ಗಾವ್\" ಅಕೇರಿದ ಸಂಪಾದಕೆರೆನ ಸಂಪಾದನೆಲೆನ್ ಒಂಜೇ ಕ್ಲಿಕ್ಕ್‌ಡ್ ಈ ಪುಟೊಕು ಪಿರ ತಿರ್ಗಾವುಂಡು.",
        "tooltip-undo": "\"ವಜಾ ಮಲ್ಪುಲೆ\" ಈ ಬದಲಾವಣೆನ್ ದೆತೊನುಜಿ ಬುಕ್ಕೊ ಪ್ರಿವ್ಯೂ ಮೋಡ್‍ಡ್ ಬದಲಾವಣೆ ಮಲ್ಪೆರ್ ಕೊನೊಪು೦ಡು. ಅ೦ಚೆನೆ ಸಾರಾಂಸೊಡು ಬದಲಾವಣೆಗ್ ಕಾರಣ ಸೇರಾಯರ ಆಪು೦ಡು.",
        "tooltip-summary": "ಒಂಜಿ ಎಲ್ಯ ಸಾರಾಂಸೊ ಕೊರ್ಲೆ",
        "simpleantispam-label": "ಯಾಂಟಿ-ಸ್ಪಾಮ್ ಚೆಕ್.\nಮುಲ್ಪ <strong>ದಿಂಜಾವೊಡ್ಚಿ</strong>",
        "file-nohires": "ಇಂದೆರ್ದ್ ಜಾಸ್ತಿ ರೆಸಲ್ಯೂಶನ್ ಇಜ್ಜಿ.",
        "svg-long-desc": "ಎಸ್.ವಿ.ಜಿ ಫೈಲ್, ಸುಮಾರಾದ್ $1 × $2 ಚಿತ್ರೊಬಿಂದು, ಫೈಲ್‍ದ ಗಾತ್ರ: $3",
        "show-big-image": "ಮೂಲೊ ಫೈಲ್",
-       "show-big-image-preview": "ಪಿರವà³\81ದ à²ªà³\81à²\9fà³\8aತ ಗಾತ್ರೊ: $1.",
-       "show-big-image-other": "ಬೇತೆ{{PLURAL:$2|resolution|ಪಟೊತ್ತ ಗಾತ್ರೊ }}: $1.",
+       "show-big-image-preview": "à²\88 à²®à³\81ನà³\8dನà³\8bà²\9fದ ಗಾತ್ರೊ: $1.",
+       "show-big-image-other": "ಬೇತೆ{{PLURAL:$2|ಪಟೊತ್ತ ಗಾತ್ರೊ|ಪಟೊತ್ತ ಗಾತ್ರೊ }}: $1.",
        "show-big-image-size": "$1 × $2 ಚಿತ್ರೊ ಬಿಂದುಲು",
        "newimages": "ಪೊಸ ಕಡತೊಲೆನ್ ಗ್ಯಾಲರಿ",
        "newimages-legend": "ಅರಿಪೆ",
        "days": "{{PLURAL:$1|$1 ದಿನೊ|$1 ದಿನೊಕುಲು}}",
        "bad_image_list": "ವ್ಯವಸ್ಥೆದ ಆಕಾರ ಈ ರೀತಿ ಉಂಡು:\n\nಪಟ್ಟಿಡುಪ್ಪುನಂಚಿನ ದಾಖಲೆಲೆನ್ (* ರ್ದ್ ಶುರು ಆಪುನ ಸಾಲ್’ಲು) ಮಾತ್ರ ಪರಿಗಣನೆಗ್ ದೆತೊನೆರಾಪುಂಡು.\nಪ್ರತಿ ಸಾಲ್’ದ ಶುರುತ ಲಿಂಕ್ ಒಂಜಿ ದೋಷ ಉಪ್ಪುನಂಚಿನ ಫೈಲ್’ಗ್ ಲಿಂಕಾದುಪ್ಪೊಡು.\nಅವ್ವೇ ಸಾಲ್’ದ ಶುರುತ ಪೂರಾ ಲಿಂಕ್’ಲೆನ್ ಪರಿಗನೆರ್ದ್ ದೆಪ್ಪೆರಾಪುಂಡು, ಪಂಡ ಓವು ಪುಟೊಲೆಡ್ ಫೈಲ್’ದ ಬಗ್ಗೆ ಬರ್ಪುಂಡೋ ಔಲು.",
        "metadata": "ಮೆಟಾಡೇಟಾ",
-       "metadata-help": "à²\88 à²ªà³\88ಲà³\8dâ\80\8dಡà³\8d à²\9cಾಸà³\8dತಿ à²®à²¾à²¹à²¿à²¤à²¿ à²\89à²\82ಡà³\81. à²¹à³\86à²\9aà³\8dà²\9aಿನà²\82ಸà³\8a à²ªà³\88ಲà³\8dâ\80\8dನà³\8d à²\89à²\82ಡà³\81 à²®à²²à³\8dಪà³\86ರà³\86 à²\89ಪಯà³\8bà²\97 à²®à²²à³\8dತಿನ à²¡à²¿à²\9cಿà²\9fಲà³\8d à²\95à³\8dಯಾಮà³\86ರರà³\8dದà³\8d à²\85ತà³\8dತà³\8dà²\82ಡ à²¸à³\8dà²\95à³\8dಯಾನರà³\8dâ\80\8cರà³\8dದà³\8d à²\88 à²®à²¾à²¹à²¿à²¤à²¿ à²¬à³\88ದà³\8dà²\82ಡà³\8d.\nಮà³\82ಲಪà³\8dರತಿರà³\8dದà³\8d à²\88 à²ªà³\88ಲà³\8d à²¬à²¦à²²à²¾à²¦à²¿à²¤à³\8dತà³\8dà²\82ಡ, à²\95à³\86ಲವà³\81 à²®à²¾à²¹à²¿à²¤à²¿ à²¬à²¦à²²à²¾à²¤à²¿à²¨ à²ªà³\88ಲà³\8dâ\80\8dದ à²µà²¿à²µà²°à³\8aಲà³\86à²\97à³\8d à²¸à²°à²¿à²¯à²¾à²¦à³\8d à²¹à³\8aà²\82ದಂದೆ ಉಪ್ಪು.",
+       "metadata-help": "à²\88 à²ªà³\88ಲà³\8dâ\80\8dಡà³\8d à²\9cಾಸà³\8dತಿ à²®à²¾à²¹à²¿à²¤à²¿ à²\89à²\82ಡà³\81. à²¹à³\86à²\9aà³\8dà²\9aಿನà²\82ಸà³\8a à²ªà³\88ಲà³\8dâ\80\8dನà³\8d à²\89à²\82ಡà³\81 à²®à²²à³\8dಪà³\86ರà³\86 à²\89ಪಯà³\8bà²\97 à²®à²²à³\8dತಿನ à²¡à²¿à²\9cಿà²\9fಲà³\8d à²\95à³\8dಯಾಮà³\86ರರà³\8dದà³\8d à²\85ತà³\8dತà³\8dà²\82ಡ à²¸à³\8dà²\95à³\8dಯಾನರà³\8dâ\80\8cರà³\8dದà³\8d à²\88 à²®à²¾à²¹à²¿à²¤à²¿ à²¬à³\88ದà³\8dà²\82ಡà³\8d.\nಮà³\82ಲಪà³\8dರತಿರà³\8dದà³\8d à²\88 à²ªà³\88ಲà³\8d à²¬à²¦à²²à²¾à²¦à²¿à²¤à³\8dತà³\8dà²\82ಡ, à²\95à³\86ಲವà³\81 à²®à²¾à²¹à²¿à²¤à²¿ à²¬à²¦à²²à²¾à²¤à²¿à²¨ à²ªà³\88ಲà³\8dâ\80\8dದ à²µà²¿à²µà²°à³\8aಲà³\86à²\97à³\8d à²¸à²°à²¿à²¯à²¾à²¦à³\8d à²\92ಪà³\8dಪಂದೆ ಉಪ್ಪು.",
        "metadata-expand": "ವಿಸ್ತಾರವಾಯಿನ ವಿವರೊಲೆನ್ ತೊಜ್ಪಾವು",
        "metadata-collapse": "ವಿಸ್ತಾರವಾಯಿನ ವಿವರೊಲೆನ್ ದೆಂಗಾವು",
-       "metadata-fields": "à²\88 à²¸à²\82ದà³\87ಸà³\8aಡà³\81 à²ªà²\9fà³\8dà²\9fಿ à²®à²²à³\8dತಿನà²\82à²\9aಿನ EXIF à²®à²¿à²¤à³\8dತ à²¦à²°à³\8dà²\9cà³\86ದ à²®à²¾à²¹à²¿à²¤à²¿à²¨à³\8d à²\9aಿತà³\8dರà³\8a à²ªà³\81à²\9fà³\8aà²\95à³\81 à²¸à³\87ರà³\8dಪಾಯà³\86ರà³\86 à²\86ವà³\8aà²\82ದà³\81à²\82ಡà³\81. à²ªà³\81à²\9fà³\8aà²\9fà³\81 à²®à²¿à²¤à³\8dತ à²¦à²°à³\8dà²\9cà³\86 à²®à²¾à²¹à²¿à²¤à²¿à²¦ à²ªà²\9fà³\8dà²\9fಿನà³\8d à²¦à³\86ಪà³\8dಪà³\81ನà²\97 à²\89à²\82ದà³\81 à²¤à³\8bà²\9cà³\81à²\82ಡà³\81.\nà²\92ರಿದನವà³\81 à²®à³\82ಲà³\8a à²¸à³\8dಥಿತಿà²\9fà³\8d à²\85ಡà³\86à²\82à²\97à³\8dâ\80\8dದà³\81à²\82ಡà³\81.\n*ಮಲà³\8dಪà³\81ಲà³\86\n*ಮಾದರಿ\n*ದಿನà³\8a à²ªà³\8aರà³\8dತà³\81 à²®à³\82ಲà³\8a\n*ಮಾನಾದಿà²\97à³\86ದ à²¸à²®à²¯à³\8a\n*ಫà³\8dâ\80\8dಸà²\82à²\96à³\8dಯà³\86\n*à²\90à²\8eಸà³\8dà²\92 à²µà³\87à²\97à³\8aದ à²°à³\87à²\9fಿà²\82à²\97à³\8d\n*ತà³\82ಪಿನ à²\9cಾà²\97à³\86ದ à²¦à³\82ರ\n*à²\95ಲಾವಿದà³\86\n*à²\95à³\83ತಿಸà³\8dವಾಮà³\8dಯà³\8a\n*à²\9aಿತà³\8dರà³\8a à²µà²¿à²µà²°à²£à³\86\n*à²\9cಿಪಿà²\8eಸà³\8d à²\85à²\95à³\8dಷಾà²\82ಸà³\8a\n*à²\9cಿಪಿà²\8eಸà³\8d à²°à³\87à²\96ಾà²\82ಸà³\8a\n*à²\9cಿಪಿà²\8eಸà³\8d à²\8eತà³\8dತರà³\8a",
+       "metadata-fields": "ಮà³\86à²\9fಾಡà³\87à²\9fಾ à²\9fà³\87ಬಲà³\8d à²\8eಲà³\8dಯ à²\86ನà²\97, à²\88 à²¸à²\82ದà³\87ಸà³\8aಡà³\81 à²ªà²\9fà³\8dà²\9fಿ à²®à²²à³\8dತಿನ à²\9aಿತà³\8dರ à²®à³\86à²\9fಾಡà³\87à²\9fಾ à²\9cಾà²\97à³\86ಲà³\81 à²\9aಿತà³\8dರ à²ªà³\81à²\9f à²ªà³\8dರದರà³\8dಶನà³\8aಡà³\81 à²¸à³\87ರà³\81à²\82ಡà³\81. à²\92ರಿದಿನವà³\81 à²®à³\82ಲ à²¸à³\8dಥಿತಿà²\9fà³\8d à²¦à³\86à²\82à²\97à³\8dâ\80\8cದà³\81ಪà³\8dಪà³\81à²\82ಡà³\81.   \n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
        "exif-imagewidth": "ಅಗೆಲ",
        "exif-imagelength": "ಎತ್ತರೊ",
        "exif-orientation": "ದಿಕ್ಕ್ ದಿಸೆ",
        "logentry-move-move": "$1 {{GENDER:$2|ಜಾರಲೆ}} ಪುಟೊ $3 ಡ್ದ್ $4",
        "logentry-move-move-noredirect": "$1 ಪುಟೊ $3 ನ್ ಪುಟೊ $4 ಕ್ ರೀಡೈರೆಕ್ಟ್ ಕೊರಂದೆ {{GENDER:$2|ವರ್ಗಾವಣೆ ಮಲ್ತೆರ್}}",
        "logentry-move-move_redir": "$1 ಪುಟೊ $3 ನ್ ಪುಟೊ $4 ಕ್ ರೀಡೈರೆಕ್ಟ್ ಕೊರ್ದು {{GENDER:$2|ವರ್ಗಾವಣೆ ಮಲ್ತೆರ್}}",
-       "logentry-newusers-create": "ಬಳà²\95à³\86ದಾರà³\86ರà³\86 à²\95ಾತà³\86 $1 à²¨à³\8d {{GENDER:$2|ಸà³\8dರಿಸà³\8dà²\9fಿ à²®à²²à³\8dತಾಂಡ್}}",
+       "logentry-newusers-create": "ಸದಸà³\8dಯà³\86ರà³\86 à²\95ಾತà³\86 $1 à²¨à³\8d {{GENDER:$2|à²\89à²\82ಡà³\81 à²®à²²à³\8dತà³\8dâ\80\8cಂಡ್}}",
        "logentry-newusers-autocreate": "ಸದಸ್ಯೆರೆ ಖಾತೆ $1 ತನ್ನಾತೆಗ್ {{GENDER:$2|ಉಂಡಾತ್ಂಡ್}}",
        "logentry-upload-upload": "$1 {{GENDER:$2|ಅಪ್ಲೋಡ್ ಮಲ್ತ್‌ದೆರ್}} $3",
        "searchsuggest-search": "{{SITENAME}}ನ್ ನಾಡ್‍ಲೆ",
index 2ea966a..f700a7a 100644 (file)
        "anontalk": "Usapan",
        "navigation": "Paglilibot (nabigasyon)",
        "and": ",&#32;at",
-       "qbfind": "Hanapin",
-       "qbbrowse": "Basa-basahin",
-       "qbedit": "Baguhin",
-       "qbpageoptions": "Itong pahina",
-       "qbmyoptions": "Mga pahina ko",
        "faq": "Mga karaniwang itinatanong (''FAQ'')",
-       "faqpage": "Project:Mga karaniwang itinatanong (''FAQ'')",
        "actions": "Mga kilos",
        "namespaces": "Mga ngalan-espasyo",
        "variants": "Naiiba pa",
        "edit-local": "Baguhin ang lokal na paglalarawan",
        "create": "Likhain",
        "create-local": "Magdagdag ng lokal na paglalarawan",
-       "editthispage": "Baguhin ang pahinang ito",
-       "create-this-page": "Likhain ang pahinang ito",
        "delete": "Burahin",
-       "deletethispage": "Burahin itong pahina",
-       "undeletethispage": "Ibalik mula sa pagkakabura ang pahinang ito",
        "undelete_short": "Baligtarin ang pagbura ng {{PLURAL:$1|isang pagbabago|$1 pagbabago}}",
        "viewdeleted_short": "Tingnan ang {{PLURAL:$1|isang binurang pagbabago|$1 binurang pagbabago}}",
        "protect": "Ipagsanggalang",
        "protect_change": "baguhin",
-       "protectthispage": "Ipagsanggalang itong pahina",
        "unprotect": "Baguhin ang pagsasanggalang",
-       "unprotectthispage": "Baguhin ang pagsasanggalang sa pahinang ito",
        "newpage": "Bagong pahina",
-       "talkpage": "Pag-usapan ang pahinang ito",
        "talkpagelinktext": "Usapan",
        "specialpage": "Natatanging pahina",
        "personaltools": "Mga kagamitang pansarili",
-       "articlepage": "Tingnan ang pahina ng nilalaman",
        "talk": "Usapan",
        "views": "Mga anyo",
        "toolbox": "Mga kagamitan",
-       "userpage": "Tingnan ang pahina ng tagagamit",
-       "projectpage": "Tingnan ang pahina ng proyekto",
        "imagepage": "Tingnan ang pahina ng talaksan",
        "mediawikipage": "Tingnan ang pahina ng mensahe",
        "templatepage": "Tingnan ang pahina ng padron",
        "recentchanges-label-plusminus": "Nagbago ang laki ng pahina sa ganitong bilang ng mga byte",
        "recentchanges-legend-heading": "<strong>Gabay:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (tingnan din [[Special:NewPages|ang talaan ng mga bagong pahina]])",
+       "rcfilters-advancedfilters": "Mga abansadong piltro",
        "rcfilters-quickfilters": "Mga mabilisang kawing",
        "rcfilters-savedqueries-rename": "Pangalanang muli",
        "rcfilters-savedqueries-remove": "Alisin",
        "rcfilters-restore-default-filters": "Ibalik ang mga napagkaukulang 'filters'",
        "rcfilters-clear-all-filters": "Burahin lahat ng mga 'filters'",
        "rcfilters-empty-filter": "Walang aktibong panangga. Lahat ay ipinamalas.",
+       "rcfilters-view-tags": "Mga minarkahang pagbabago",
        "rcnotefrom": "Nasa ibaba ang mga pagbabago mula pa noong '''$2''' (ipinapakita ang magpahanggang sa '''$1''').",
        "rclistfrom": "Ipakita ang bagong mga pagbabago simula sa $3 $2",
        "rcshowhideminor": "$1 ang mga maliliit na pagbabago",
index afa9d5c..2b3796f 100644 (file)
        "delete": "אויסמעקן",
        "undelete_short": "צוריקשטעלן {{PLURAL:$1|איין רעדאַקטירונג|$1 רעדאַקטירונגען}}",
        "viewdeleted_short": "באַקוקן {{PLURAL:$1|איין געמעקטע ענדערונג|$1 געמעקטע ענדערונגען}}",
-       "protect": "באשיצן",
+       "protect": "באַשיצן",
        "protect_change": "טוישן",
        "unprotect": "ענדערונג באַשיצונג",
        "newpage": "נייער בלאַט",
        "botpasswords-updated-title": "באט פאסווארט דערהיינטיקט",
        "botpasswords-updated-body": "דאס באט פאסווארט פאר באט־נאמען \"$1\" פון באניצער \"$2\" איז דערהיינטיקט געווארן.",
        "botpasswords-deleted-title": "באט פאסווארט אויסגעמעקט",
+       "botpasswords-not-exist": "באניצער \"$1\" האט נישט קיין באט פאסווארט מיטן נאמען \"$2\".",
        "resetpass_forbidden": "פאסווערטער קענען נישט ווערן געטוישט",
        "resetpass_forbidden-reason": "פאסווערטער קענען נישט ווערן געטוישט: $1",
        "resetpass-no-info": "איר דארפֿט זיין אריינלאגירט צוצוקומען גלייך צו דעם דאזיגן בלאט.",
        "invalid-content-data": "אומגילטיקע אינהאלט דאטן",
        "content-not-allowed-here": "\"$1\" אינהאלט נישט דערלויבט אויף בלאט [[$2]]",
        "editwarning-warning": "איבערלאזן דעם בלאט קען גורם זײַן פֿארלירן אײַערע ענדערונגען.\nאויב איר זענט ארײַנלאגירט, קענט איר מבטל זײַן די דאזיגע ווארענונג אין דער \"באארבעטן\" אפטיילונג פון אײַערע פרעפערענצן.",
+       "editpage-invalidcontentmodel-title": "אינהאלט־מאדעל נישט געשטיצט",
+       "editpage-invalidcontentmodel-text": "דער אינהאלט מאדעל \"$1\" איז נישט געשטיצט.",
        "editpage-notsupportedcontentformat-title": "אינהאלט־פארמאט נישט געשטיצט",
        "editpage-notsupportedcontentformat-text": "דער אינהאלט־פארמאט $1 ווערט ניט געשטיצט דורכן אינהאלט־מאדעל $2.",
        "content-model-wikitext": "וויקיטעקסט",
        "grant-group-email": "שיקן ע־פאסט",
        "grant-group-other": "פֿארשידענע אקטיוויטעטן",
        "grant-createaccount": "שאַפֿן קאנטעס",
+       "grant-createeditmovepage": "שאפֿן, רעדאקטירן און באוועגן בלעטער",
+       "grant-delete": "אויסמעקן בלעטער, ווערסיעס און לאגבוך פרטים",
+       "grant-editinterface": "רעדאקטירן דעם מעדיעוויקי נאמענטייל און באניצער CSS/JavaScript",
+       "grant-editmycssjs": "רעדאקטירן אייער באניצער CSS/JavaScript",
+       "grant-editmyoptions": "רעדאקטירן אײַערע באניצער פרעפֿערענצן",
        "grant-editmywatchlist": "רעדאקטירן אײַער אויפֿפאסונג ליסטע",
        "grant-editpage": "רעדאקטירן עקזיסטירנדע בלעטער",
        "grant-editprotected": "רעדאקטירן געשיצטע בלעטער",
        "action-writeapi": "ניצן דעם שרײַבן API",
        "action-delete": "אויסמעקן דעם בלאַט",
        "action-deleterevision": "אויסמעקן רעוויזיעס",
+       "action-deletelogentry": "אויסמעקן לאגבוך איינצלען",
        "action-deletedhistory": "באַקוקן א בלאט'ס אויסגעמעקטע היסטאריע",
        "action-deletedtext": "באקוקן אויסגעמעקטן רעוויזיע טעקסט",
        "action-browsearchive": "זוכן אויסגעמעקטע בלעטער",
        "rcfilters-filterlist-title": "פֿילטערס",
        "rcfilters-filterlist-whatsthis": "וואס איז דאס?",
        "rcfilters-filterlist-noresults": "קיין פֿילטערס נישט געטראפֿן",
+       "rcfilters-filtergroup-registration": "באניצער איינשרייבונג",
        "rcfilters-filter-registered-label": "אײַנגעשריבן",
        "rcfilters-filter-editsbyself-label": "ענדערונגען פון אייך",
        "rcfilters-filter-editsbyself-description": "אייערע אייגענע בײשטײערונגען.",
        "rcfilters-filter-humans-description": "רעדאקטירונגען געמאכט פון מענטשן רעדאקטארן.",
        "rcfilters-filtergroup-reviewstatus": "רעצענזירונג־סטאטוס",
        "rcfilters-filter-patrolled-label": "פאטראלירט",
+       "rcfilters-filter-unpatrolled-label": "אומפאטראלירט",
+       "rcfilters-filter-minor-label": "מינערדיקע רעדאַקטירונגען",
+       "rcfilters-filter-pageedits-label": "בלאט רעדאקטירונגען",
        "rcfilters-filter-newpages-label": "בלאַט־שאַפֿונגען",
        "rcfilters-filtergroup-lastRevision": "לעצטע ווערסיע",
        "rcfilters-filter-lastrevision-label": "לעצטע ווערסיע",
+       "rcfilters-filter-previousrevision-label": "פֿריערדיקע ווערסיעס",
+       "rcfilters-filter-excluded": "אויסגעשלאסן",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:נישט</strong> $1",
        "rcnotefrom": "פֿאלגנד {{PLURAL:$5|איז די ענדערונג| זענען די ענדערונגען}} זײַט <strong>$3, $4</strong> (ביז <strong>$1</strong>).",
        "rclistfrom": "װײַזן נײַע ענדערונגען פֿון $3 $2",
        "rcshowhideminor": "$1 מינערדיגע ענדערונגען",
        "protectedpages-unknown-performer": "אומבאוואוסטער באניצער",
        "protectedtitles": "געשיצטע קעפלעך",
        "protectedtitlesempty": "אצינד זענען קיין קעפלעך נישט באַשיצט מיט די דאזיגע פאַראַמעטערס.",
+       "protectedtitles-submit": "צייגן קעפלעך",
        "listusers": "באַניצער ליסטע",
        "listusers-editsonly": "ווייזן נאר באניצערס מיט רעדאקטירונגען",
        "listusers-creationsort": "סארטירן לויט דער שאַפן דאַטע",
        "querypage-disabled": "דער באַזונדער־בלאַט איז אומאַקטיווירט צוליב אויספֿירונג סיבות.",
        "apihelp": "API־הילף",
        "apihelp-no-such-module": "מאָדול \"$1\" נישט געפונען.",
+       "apisandbox": "API זאמדקאסטן",
        "apisandbox-unfullscreen": "ווייזן בלאט",
        "apisandbox-reset": "רייניקן",
        "apisandbox-retry": "פרובירן נאכאמאל",
        "modifiedarticleprotection": "געענדערט באשיצונג שטאפל פון [[$1]]",
        "unprotectedarticle": "אראפגענומען שוץ פון \"[[$1]] \"",
        "movedarticleprotection": "באוועגט די שיץ באשטימונגען פֿון \"[[$2]]\" אויף \"[[$1]]\"",
+       "protectedarticle-comment": "{{GENDER:$2|האט געשיצט}} \"[[$1]]\"",
        "protect-title": "ענדערן שיץ ניווא פֿאַר \"$1\"",
        "protect-title-notallowed": "באקוקן שיץ־ניווא פון \"$1\"",
        "prot_1movedto2": "[[$1]] אריבערגעפירט צו [[$2]]",
        "logentry-newusers-create2": "באניצער קאנטע $1 איז {{GENDER:$2|געשאפן געווארן}} דורך $3",
        "logentry-newusers-byemail": "באניצער קאנטע $3 איז {{GENDER:$2|געשאפן געווארן}} דורך $1 און דאס פאסווארט איז געשיקט געווארט דורך ע־פאסט",
        "logentry-newusers-autocreate": "באַניצער קאנטע $1 {{GENDER:$2|געשאפן}} אויטאמאטיש",
+       "logentry-protect-protect": "$1 {{GENDER:$2|האט געשיצט}} דעם בלאַט $3 $4",
        "logentry-rights-rights": "$1 האָט {{GENDER:$2|געביטן}} גרופּע מיטגלידערשאַפט פאַר {{GENDER:$6|$3}} פון $4 אויף $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|האט געביטן}} גרופע מיטגלידערשאפט פאר $3",
        "logentry-rights-autopromote": "$1 אויטאמאטיש  {{GENDER:$2|פראמאווירט}} פון $4 צו $5",
index 72ce362..fd55bfe 100644 (file)
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "recentchanges-submit": "显示",
        "rcfilters-activefilters": "激活的过滤器",
+       "rcfilters-advancedfilters": "高级过滤器",
        "rcfilters-quickfilters": "已保存过滤器设置",
        "rcfilters-quickfilters-placeholder-title": "尚未保存链接",
        "rcfilters-quickfilters-placeholder-description": "要保存您的过滤器设置并供日后再利用,点击下方激活的过滤器区域内的书签图标。",
        "rcfilters-filter-previousrevision-description": "除最近更改外,所有对某一页面的更改。",
        "rcfilters-filter-excluded": "已排除",
        "rcfilters-tag-prefix-namespace-inverted": "<strong>:不是</strong>$1",
-       "rcfilters-view-tags": "标",
+       "rcfilters-view-tags": "标记的编辑",
        "rcnotefrom": "下面{{PLURAL:$5|是}}<strong>$3 $4</strong>之后的更改(最多显示<strong>$1</strong>个)。",
        "rclistfromreset": "重置时间选择",
        "rclistfrom": "显示$3 $2之后的新更改",
        "apisandbox-sending-request": "正在发送API请求...",
        "apisandbox-loading-results": "正在接收API请求...",
        "apisandbox-results-error": "加载API查询响应时出错:$1。",
+       "apisandbox-results-login-suppressed": "此请求已作为退出用户处理,因为这可用于绕过浏览器同源安全措施。注意API沙盒的自动令牌处理不能通过该请求正常工作,请手动填充。",
        "apisandbox-request-selectformat-label": "显示请求数据为:",
        "apisandbox-request-format-url-label": "URL查询字符串",
        "apisandbox-request-url-label": "请求的URL:",
index 47984f5..7f95f75 100644 (file)
        "search-file-match": "(符合檔案內容)",
        "search-suggest": "您指的是不是:$1",
        "search-rewritten": "顯示 $1 的搜尋結果,改搜尋 $2。",
-       "search-interwiki-caption": "æº\90è\87ªå§\90妹專案的結果",
+       "search-interwiki-caption": "æº\90è\87ªå§\8a妹專案的結果",
        "search-interwiki-default": "來自 $1 的結果:",
        "search-interwiki-more": "(更多)",
        "search-interwiki-more-results": "更多結果",
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "recentchanges-submit": "顯示",
        "rcfilters-activefilters": "使用中的過濾條件",
+       "rcfilters-advancedfilters": "進階查詢條件",
        "rcfilters-quickfilters": "已儲存的查詢條件設定",
        "rcfilters-quickfilters-placeholder-title": "尚未儲存任何連結",
        "rcfilters-quickfilters-placeholder-description": "要儲存您的篩選器設定並供以後重新使用,點選下方啟用的篩選器區域之內的書籤圖示。",
        "rcfilters-filter-lastrevision-label": "最新版本",
        "rcfilters-filter-lastrevision-description": "對頁面最近做的更改。",
        "rcfilters-filter-previousrevision-label": "早期版本",
-       "rcfilters-view-tags": "標",
+       "rcfilters-view-tags": "標記的編輯",
        "rcnotefrom": "以下{{PLURAL:$5|為}}自 <strong>$3 $4</strong> 以來的變更 (最多顯示 <strong>$1</strong> 筆)。",
        "rclistfromreset": "重設日期選擇",
        "rclistfrom": "顯示自 $3 $2 以來的新變更",
index 5e8e754..9ccf6d6 100644 (file)
@@ -49,4 +49,3 @@ class CodeCleanerGlobalsPass extends \Psy\CodeCleaner\CodeCleanerPass {
                return $nodes;
        }
 }
-
index 0039d20..832da4d 100644 (file)
@@ -35,15 +35,20 @@ require_once __DIR__ . '/../Maintenance.php';
  */
 abstract class Benchmarker extends Maintenance {
        protected $defaultCount = 100;
+       private $lang;
 
        public function __construct() {
                parent::__construct();
                $this->addOption( 'count', 'How many times to run a benchmark', false, true );
+               $this->addOption( 'verbose', 'Verbose logging of resource usage', false, false, 'v' );
        }
 
        public function bench( array $benchs ) {
+               $this->lang = Language::factory( 'en' );
+
                $this->startBench();
                $count = $this->getOption( 'count', $this->defaultCount );
+               $verbose = $this->hasOption( 'verbose' );
                foreach ( $benchs as $key => $bench ) {
                        // Shortcut for simple functions
                        if ( is_callable( $bench ) ) {
@@ -66,6 +71,9 @@ abstract class Benchmarker extends Maintenance {
                                $t = microtime( true );
                                call_user_func_array( $bench['function'], $bench['args'] );
                                $t = ( microtime( true ) - $t ) * 1000;
+                               if ( $verbose ) {
+                                       $this->verboseRun( $i );
+                               }
                                $times[] = $t;
                        }
 
@@ -104,6 +112,10 @@ abstract class Benchmarker extends Maintenance {
                                'median' => $median,
                                'mean' => $mean,
                                'max' => $max,
+                               'usage' => [
+                                       'mem' => memory_get_usage( true ),
+                                       'mempeak' => memory_get_peak_usage( true ),
+                               ],
                        ] );
                }
        }
@@ -126,12 +138,32 @@ abstract class Benchmarker extends Maintenance {
                        'times',
                        $res['count']
                );
+
                foreach ( [ 'total', 'min', 'median', 'mean', 'max' ] as $metric ) {
                        $ret .= sprintf( "  %' 6s: %6.2fms\n",
                                $metric,
                                $res[$metric]
                        );
                }
+
+               foreach ( [
+                       'mem' => 'Current memory usage',
+                       'mempeak' => 'Peak memory usage'
+               ] as $key => $label ) {
+                       $ret .= sprintf( "%' 20s: %s\n",
+                               $label,
+                               $this->lang->formatSize( $res['usage'][$key] )
+                       );
+               }
+
                $this->output( "$ret\n" );
        }
+
+       protected function verboseRun( $iteration ) {
+               $this->output( sprintf( "#%3d - memory: %-10s - peak: %-10s\n",
+                       $iteration,
+                       $this->lang->formatSize( memory_get_usage( true ) ),
+                       $this->lang->formatSize( memory_get_peak_usage( true ) )
+               ) );
+       }
 }
diff --git a/maintenance/benchmarks/benchmarkJSMinPlus.php b/maintenance/benchmarks/benchmarkJSMinPlus.php
new file mode 100644 (file)
index 0000000..dc92516
--- /dev/null
@@ -0,0 +1,62 @@
+<?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
+ * @ingroup Benchmark
+ * @author Timo Tijhof
+ */
+
+require_once __DIR__ . '/Benchmarker.php';
+
+/**
+ * Maintenance script that benchmarks JSMinPlus.
+ *
+ * @ingroup Benchmark
+ */
+class BenchmarkJSMinPlus extends Benchmarker {
+       protected $defaultCount = 10;
+
+       public function __construct() {
+               parent::__construct();
+               $this->addDescription( 'Benchmarks JSMinPlus.' );
+               $this->addOption( 'file', 'Path to JS file', true, true );
+       }
+
+       public function execute() {
+               MediaWiki\suppressWarnings();
+               $content = file_get_contents( $this->getOption( 'file' ) );
+               MediaWiki\restoreWarnings();
+               if ( $content === false ) {
+                       $this->error( 'Unable to open input file', 1 );
+               }
+
+               $filename = basename( $this->getOption( 'file' ) );
+               $parser = new JSParser();
+
+               $this->bench( [
+                       "JSParser::parse ($filename)" => [
+                               'function' => function ( $parser, $content, $filename ) {
+                                       $parser->parse( $content, $filename, 1 );
+                               },
+                               'args' => [ $parser, $content, $filename ]
+                       ]
+               ] );
+       }
+}
+
+$maintClass = 'BenchmarkJSMinPlus';
+require_once RUN_MAINTENANCE_IF_MAIN;
index af05a81..0f33a14 100644 (file)
@@ -21,7 +21,6 @@
  *
  * @file
  * @ingroup Maintenance
- * @author Aaron Schulz
  */
 
 require_once __DIR__ . '/Maintenance.php';
index 2fb83fc..905b5d9 100644 (file)
@@ -21,7 +21,6 @@
  *
  * @file
  * @ingroup Maintenance
- * @author Aaron Schulz
  */
 
 require_once __DIR__ . '/Maintenance.php';
index 1ddc0f5..c90056d 100644 (file)
@@ -19,7 +19,6 @@
  *
  * @file
  * @ingroup Maintenance
- * @author Aaron Schulz
  */
 
 require_once __DIR__ . '/Maintenance.php';
index 7979e7d..4ce7ca6 100644 (file)
@@ -16,7 +16,6 @@
  * http://www.gnu.org/copyleft/gpl.html
  *
  * @file
- * @author Aaron Schulz
  */
 
 require_once __DIR__ . '/Maintenance.php';
index 5980631..765fbe4 100644 (file)
@@ -16,7 +16,6 @@
  * http://www.gnu.org/copyleft/gpl.html
  *
  * @file
- * @author Aaron Schulz
  */
 
 require_once __DIR__ . '/Maintenance.php';
index e7fdd7d..91e0bc1 100644 (file)
@@ -50,7 +50,7 @@
        <script src="modules/lib/oojs-ui/oojs-ui-widgets.js"></script>
        <script src="modules/lib/oojs-ui/oojs-ui-toolbars.js"></script>
        <script src="modules/lib/oojs-ui/oojs-ui-windows.js"></script>
-       <script src="modules/lib/oojs-ui/oojs-ui-mediawiki.js"></script>
+       <script src="modules/lib/oojs-ui/oojs-ui-wikimediaui.js"></script>
        <style>
                body {
                        font-size: 0.8em;
index 770251c..49b945c 100644 (file)
@@ -24,7 +24,7 @@
 require_once __DIR__ . '/Maintenance.php';
 
 /**
- * Maintenance script to do test JavaScript validity parses using jsmin+'s parser
+ * Maintenance script to test JavaScript validity using JsMinPlus' parser
  *
  * @ingroup Maintenance
  */
index bbedf0c..32333b7 100644 (file)
@@ -19,7 +19,6 @@
  *
  * @file
  * @ingroup Maintenance
- * @author Aaron Schulz
  */
 
 require_once __DIR__ . '/Maintenance.php';
index e252256..bca1c96 100644 (file)
@@ -20,7 +20,6 @@
  * http://www.gnu.org/copyleft/gpl.html
  *
  * @file
- * @author Aaron Schulz
  * @ingroup Maintenance
  */
 
index 9906990..aa1f668 100644 (file)
@@ -8,7 +8,7 @@ class ValidateRegistrationFile extends Maintenance {
                $this->addArg( 'path', 'Path to extension.json/skin.json file.', true );
        }
        public function execute() {
-               $validator = new ExtensionJsonValidator( function( $msg ) {
+               $validator = new ExtensionJsonValidator( function ( $msg ) {
                        $this->error( $msg, 1 );
                } );
                $validator->checkDependencies();
index 440604e..197cc78 100644 (file)
--- a/phpcs.xml
+++ b/phpcs.xml
@@ -38,7 +38,7 @@
                </properties>
        </rule>
        <file>.</file>
-       <arg name="encoding" value="utf8"/>
+       <arg name="encoding" value="UTF-8"/>
        <arg name="extensions" value="php,php5,inc,sample"/>
        <rule ref="Generic.Files.LineLength">
                <exclude-pattern>*/languages/messages/Messages*.php</exclude-pattern>
index f398b54..8695a0c 100644 (file)
@@ -1867,6 +1867,7 @@ return [
                        'oojs-ui.styles.icons-editing-styling',
                        'oojs-ui.styles.icons-interactions',
                        'oojs-ui.styles.icons-content',
+                       'oojs-ui.styles.icons-layout',
                ],
        ],
        'mediawiki.special' => [
index 05b1a80..879509f 100644 (file)
@@ -535,6 +535,8 @@ jQuery.Deferred = function( func ) {
        return deferred;
 };
 
+// Preserve handler of uncaught exceptions in promise chains
+jQuery.Deferred.exceptionHook = oldDeferred.exceptionHook;
 
 
 })( jQuery, window );
index d3fb66e..2307f30 100644 (file)
@@ -12,6 +12,7 @@
         * @cfg {string} [view='default'] Name of the display group this group
         *  is a part of.
         * @cfg {string} [title] Group title
+        * @cfg {boolean} [hidden] This group is hidden from the regular menu views
         * @cfg {string} [separator='|'] Value separator for 'string_options' groups
         * @cfg {boolean} [active] Group is active
         * @cfg {boolean} [fullCoverage] This filters in this group collectively cover all results
@@ -36,6 +37,7 @@
                this.type = config.type || 'send_unselected_if_any';
                this.view = config.view || 'default';
                this.title = config.title || name;
+               this.hidden = !!config.hidden;
                this.separator = config.separator || '|';
                this.labelPrefixKey = config.labelPrefixKey;
 
                                        identifiers: filter.identifiers
                                } );
 
-                       filter.subset = filter.subset || [];
-                       filter.subset = filter.subset.map( function ( el ) {
-                               return el.filter;
-                       } );
-
                        if ( filter.subset ) {
+                               filter.subset = filter.subset.map( function ( el ) {
+                                       return el.filter;
+                               } );
+
                                subsetNames = [];
+
                                filter.subset.forEach( function ( subsetFilterName ) { // eslint-disable-line no-loop-func
                                        // Subsets (unlike conflicts) are always inside the same group
                                        // We can re-map the names of the filters we are getting from
                                        return item.getParamName();
                                } )
                        ).join( this.getSeparator() );
+               } else if ( this.getType() === 'single_option' ) {
+                       // For this group, the parameter is the group name,
+                       // and a single item can be selected, or none at all
+                       // The item also must be recognized or none is set as
+                       // default
+                       model.defaultParams[ this.getName() ] = this.getItemByParamName( groupDefault ) ? groupDefault : '';
                }
        };
 
        /**
         * Respond to filterItem update event
         *
+        * @param {mw.rcfilters.dm.FilterItem} item Updated filter item
         * @fires update
         */
-       mw.rcfilters.dm.FilterGroup.prototype.onFilterItemUpdate = function () {
+       mw.rcfilters.dm.FilterGroup.prototype.onFilterItemUpdate = function ( item ) {
                // Update state
-               var active = this.areAnySelected();
+               var active = this.areAnySelected(),
+                       itemName = item && item.getName();
+
+               if ( item.isSelected() && this.getType() === 'single_option' ) {
+                       // Change the selection to only be the newly selected item
+                       this.getItems().forEach( function ( filterItem ) {
+                               if ( filterItem.getName() !== itemName ) {
+                                       filterItem.toggleSelected( false );
+                               }
+                       } );
+               }
 
                if ( this.active !== active ) {
                        this.active = active;
                return this.active;
        };
 
+       /**
+        * Get group hidden state
+        *
+        * @return {boolean} Hidden state
+        */
+       mw.rcfilters.dm.FilterGroup.prototype.isHidden = function () {
+               return this.hidden;
+       };
+
        /**
         * Get group name
         *
                        areAnySelected = false,
                        buildFromCurrentState = !filterRepresentation,
                        result = {},
-                       filterParamNames = {};
+                       model = this,
+                       filterParamNames = {},
+                       getSelectedParameter = function ( filters ) {
+                               var item,
+                                       selected = [];
+
+                               // Find if any are selected
+                               $.each( filters, function ( name, value ) {
+                                       if ( value ) {
+                                               selected.push( name );
+                                       }
+                               } );
+
+                               item = model.getItemByName( selected[ 0 ] );
+                               return ( item && item.getParamName() ) || '';
+                       };
 
                filterRepresentation = filterRepresentation || {};
 
 
                        result[ this.getName() ] = ( values.length === Object.keys( filterRepresentation ).length ) ?
                                'all' : values.join( this.getSeparator() );
+               } else if ( this.getType() === 'single_option' ) {
+                       result[ this.getName() ] = getSelectedParameter( filterRepresentation );
                }
 
                return result;
                                        // Otherwise, the filter is selected only if it appears in the parameter values
                                        paramValues.indexOf( filterItem.getParamName() ) > -1;
                        } );
+               } else if ( this.getType() === 'single_option' ) {
+                       // There is parameter that fits a single filter, or none at all
+                       this.getItems().forEach( function ( filterItem ) {
+                               result[ filterItem.getName() ] = filterItem.getParamName() === paramRepresentation;
+                       } );
                }
 
                // Go over result and make sure all filters are represented.
                return result;
        };
 
+       /**
+        * Get item by its filter name
+        *
+        * @param {string} filterName Filter name
+        * @return {mw.rcfilters.dm.FilterItem} Filter item
+        */
+       mw.rcfilters.dm.FilterGroup.prototype.getItemByName = function ( filterName ) {
+               return this.getItems().filter( function ( item ) {
+                       return item.getName() === filterName;
+               } )[ 0 ];
+       };
+
        /**
         * Get item by its parameter name
         *
index 46f0fd8..75431d9 100644 (file)
         * Set filters and preserve a group relationship based on
         * the definition given by an object
         *
-        * @param {Array} filters Filters definition
+        * @param {Array} filterGroups Filters definition
         * @param {Object} [views] Extra views definition
         *  Expected in the following format:
         *  {
         *         {
         *            // Group info
         *            name: 'namespaces' // Parameter name
-        *            definition: {
-        *               title: 'namespaces' // Message key
-        *               type: 'string_options',
-        *               separator: ';',
-        *               labelPrefixKey: { 'default': 'rcfilters-tag-prefix-namespace', inverted: 'rcfilters-tag-prefix-namespace-inverted' },
-        *               fullCoverage: true
-        *            },
+        *            title: 'namespaces' // Message key
+        *            type: 'string_options',
+        *            separator: ';',
+        *            labelPrefixKey: { 'default': 'rcfilters-tag-prefix-namespace', inverted: 'rcfilters-tag-prefix-namespace-inverted' },
+        *            fullCoverage: true
         *            items: []
         *         }
         *       ]
         *     }
         *  }
         */
-       mw.rcfilters.dm.FiltersViewModel.prototype.initializeFilters = function ( filters, views ) {
-               var filterItem, filterConflictResult, groupConflictResult,
+       mw.rcfilters.dm.FiltersViewModel.prototype.initializeFilters = function ( filterGroups, views ) {
+               var filterConflictResult, groupConflictResult,
+                       allViews = {},
                        model = this,
                        items = [],
                        groupConflictMap = {},
                this.groups = {};
                this.views = {};
 
-               views = views || {};
-
-               // Filters
-               this.views.default = { name: 'default', label: mw.msg( 'rcfilters-filterlist-title' ) };
-               filters.forEach( function ( data ) {
-                       var i,
-                               group = data.name;
-
-                       if ( !model.groups[ group ] ) {
-                               model.groups[ group ] = new mw.rcfilters.dm.FilterGroup( group, {
-                                       type: data.type,
-                                       title: data.title ? mw.msg( data.title ) : group,
-                                       separator: data.separator,
-                                       fullCoverage: !!data.fullCoverage,
-                                       whatsThis: {
-                                               body: data.whatsThisBody,
-                                               header: data.whatsThisHeader,
-                                               linkText: data.whatsThisLinkText,
-                                               url: data.whatsThisUrl
-                                       }
-                               } );
-                       }
+               // Clone
+               filterGroups = OO.copy( filterGroups );
+
+               // Normalize definition from the server
+               filterGroups.forEach( function ( data ) {
+                       var i;
+                       // What's this information needs to be normalized
+                       data.whatsThis = {
+                               body: data.whatsThisBody,
+                               header: data.whatsThisHeader,
+                               linkText: data.whatsThisLinkText,
+                               url: data.whatsThisUrl
+                       };
+
+                       // Title is a msg-key
+                       data.title = data.title ? mw.msg( data.title ) : data.name;
 
                        // Filters are given to us with msg-keys, we need
                        // to translate those before we hand them off
                                data.filters[ i ].label = data.filters[ i ].label ? mw.msg( data.filters[ i ].label ) : data.filters[ i ].name;
                                data.filters[ i ].description = data.filters[ i ].description ? mw.msg( data.filters[ i ].description ) : '';
                        }
+               } );
 
-                       model.groups[ group ].initializeFilters( data.filters, data.default );
-                       items = items.concat( model.groups[ group ].getItems() );
-
-                       // Prepare conflicts
-                       if ( data.conflicts ) {
-                               // Group conflicts
-                               groupConflictMap[ group ] = data.conflicts;
+               // Collect views
+               allViews = {
+                       'default': {
+                               title: mw.msg( 'rcfilters-filterlist-title' ),
+                               groups: filterGroups
                        }
+               };
 
-                       for ( i = 0; i < data.filters.length; i++ ) {
-                               // Filter conflicts
-                               if ( data.filters[ i ].conflicts ) {
-                                       filterItem = model.groups[ group ].getItemByParamName( data.filters[ i ].name );
-                                       filterConflictMap[ filterItem.getName() ] = data.filters[ i ].conflicts;
-                               }
-                       }
-               } );
+               if ( views && mw.config.get( 'wgStructuredChangeFiltersEnableExperimentalViews' ) ) {
+                       // If we have extended views, add them in
+                       $.extend( true, allViews, views );
+               }
 
-               if ( mw.config.get( 'wgStructuredChangeFiltersEnableExperimentalViews' ) ) {
-                       $.each( views, function ( viewName, viewData ) {
-                               model.views[ viewName ] = {
-                                       name: viewData.name,
-                                       title: viewData.title,
-                                       trigger: viewData.trigger
-                               };
+               // Go over all views
+               $.each( allViews, function ( viewName, viewData ) {
+                       // Define the view
+                       model.views[ viewName ] = {
+                               name: viewData.name,
+                               title: viewData.title,
+                               trigger: viewData.trigger
+                       };
 
-                               // Group
-                               viewData.groups.forEach( function ( groupData ) {
-                                       model.groups[ groupData.name ] = new mw.rcfilters.dm.FilterGroup(
-                                               groupData.name,
-                                               $.extend( true, {}, groupData.definition, { view: viewName } )
+                       // Go over groups
+                       viewData.groups.forEach( function ( groupData ) {
+                               var group = groupData.name;
+
+                               if ( !model.groups[ group ] ) {
+                                       model.groups[ group ] = new mw.rcfilters.dm.FilterGroup(
+                                               group,
+                                               $.extend( true, {}, groupData, { view: viewName } )
                                        );
+                               }
+
+                               model.groups[ group ].initializeFilters( groupData.filters, groupData.default );
+                               items = items.concat( model.groups[ group ].getItems() );
 
-                                       // Add items
-                                       model.groups[ groupData.name ].initializeFilters( groupData.items );
+                               // Prepare conflicts
+                               if ( groupData.conflicts ) {
+                                       // Group conflicts
+                                       groupConflictMap[ group ] = groupData.conflicts;
+                               }
 
-                                       // Add to global search list
-                                       items = items.concat( model.groups[ groupData.name ].getItems() );
+                               groupData.filters.forEach( function ( itemData ) {
+                                       var filterItem = model.groups[ group ].getItemByParamName( itemData.name );
+                                       // Filter conflicts
+                                       if ( itemData.conflicts ) {
+                                               filterConflictMap[ filterItem.getName() ] = itemData.conflicts;
+                                       }
                                } );
                        } );
-               }
+               } );
 
                // Add item references to the model, for lookup
                this.addItems( items );
                                groupModel.getItems().forEach( function ( filterItem ) {
                                        model.parameterMap[ filterItem.getParamName() ] = filterItem;
                                } );
-                       } else if ( groupModel.getType() === 'string_options' ) {
+                       } else if (
+                               groupModel.getType() === 'string_options' ||
+                               groupModel.getType() === 'single_option'
+                       ) {
                                // Group
                                model.parameterMap[ groupModel.getName() ] = groupModel;
                        }
        /**
         * Get the label for the current view
         *
+        * @param {string} viewName View name
         * @return {string} Label for the current view
         */
-       mw.rcfilters.dm.FiltersViewModel.prototype.getCurrentViewLabel = function () {
-               return this.views[ this.getCurrentView() ].title;
+       mw.rcfilters.dm.FiltersViewModel.prototype.getViewTitle = function ( viewName ) {
+               viewName = viewName || this.getCurrentView();
+
+               return this.views[ viewName ] && this.views[ viewName ].title;
        };
 
        /**
index 15caded..7de6669 100644 (file)
                                groups: [ {
                                        // Group definition (single group)
                                        name: 'namespaces',
-                                       definition: {
-                                               type: 'string_options',
-                                               title: mw.msg( 'namespaces' ),
-                                               labelPrefixKey: { 'default': 'rcfilters-tag-prefix-namespace', inverted: 'rcfilters-tag-prefix-namespace-inverted' },
-                                               separator: ';',
-                                               fullCoverage: true
-                                       },
-                                       items: items
+                                       type: 'string_options',
+                                       title: mw.msg( 'namespaces' ),
+                                       labelPrefixKey: { 'default': 'rcfilters-tag-prefix-namespace', inverted: 'rcfilters-tag-prefix-namespace-inverted' },
+                                       separator: ';',
+                                       fullCoverage: true,
+                                       filters: items
                                } ]
                        };
                }
                                groups: [ {
                                        // Group definition (single group)
                                        name: 'tagfilter', // Parameter name
-                                       definition: {
-                                               type: 'string_options',
-                                               title: 'rcfilters-view-tags', // Message key
-                                               labelPrefixKey: 'rcfilters-tag-prefix-tags',
-                                               separator: '|',
-                                               fullCoverage: false
-                                       },
-                                       items: tagList
+                                       type: 'string_options',
+                                       title: 'rcfilters-view-tags', // Message key
+                                       labelPrefixKey: 'rcfilters-tag-prefix-tags',
+                                       separator: '|',
+                                       fullCoverage: false,
+                                       filters: tagList
                                } ]
                        };
                }
index 28aae6c..ea93247 100644 (file)
@@ -2,7 +2,13 @@
 
 .mw-rcfilters-ui-filterMenuOptionWidget {
        &.oo-ui-flaggedElement-muted {
-               background-color: #f8f9fa; // Base90 AAA
+               &:not( .oo-ui-optionWidget-selected ) {
+                       // Namespaces are muted 'the other way around' when they
+                       // are also inverted, so if they are also selected, we
+                       // should make sure the selected background is shown rather
+                       // than the muted one
+                       background-color: #f8f9fa; // Base90 AAA
+               }
 
                .mw-rcfilters-ui-itemMenuOptionWidget-label-title,
                .mw-rcfilters-ui-itemMenuOptionWidget-label-desc {
index 6ab1575..5ce7988 100644 (file)
@@ -4,6 +4,7 @@
        .oo-ui-tagMultiselectWidget-input input {
                // Make sure this uses the interface direction, not the content direction
                direction: ltr;
+               border-bottom-right-radius: 0;
        }
 
        &.oo-ui-widget-enabled .oo-ui-tagMultiselectWidget-handle {
@@ -53,7 +54,7 @@
                                }
 
                                &.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget:last-child a.oo-ui-buttonElement-button {
-                                       border-radius: 0;
+                                       border-bottom-right-radius: 2px;
                                }
 
                        }
index fe91489..0138884 100644 (file)
        mw.rcfilters.ui.FilterMenuHeaderWidget.prototype.onModelUpdate = function () {
                var currentView = this.model.getCurrentView();
 
-               this.setLabel( this.model.getCurrentViewLabel() );
+               this.setLabel( this.model.getViewTitle( currentView ) );
 
                this.invertNamespacesButton.toggle( currentView === 'namespaces' );
                this.backButton.toggle( currentView !== 'default' );
index d235c39..5198c69 100644 (file)
         * Set the current muted view of the widget based on its state
         */
        mw.rcfilters.ui.FilterMenuOptionWidget.prototype.setCurrentMuteState = function () {
-               this.setFlags( {
-                       muted: (
-                               this.model.isConflicted() ||
-                               (
-                                       // Item is also muted when any of the items in its group is active
-                                       this.model.getGroupModel().isActive() &&
-                                       // But it isn't selected
-                                       !this.model.isSelected() &&
-                                       // And also not included
-                                       !this.model.isIncluded()
+               if (
+                       this.model.getGroupModel().getView() === 'namespaces' &&
+                       this.model.isInverted()
+               ) {
+                       // This is an inverted behavior than the other rules, specifically
+                       // for inverted namespaces
+                       this.setFlags( {
+                               muted: this.model.isSelected()
+                       } );
+               } else {
+                       this.setFlags( {
+                               muted: (
+                                       this.model.isConflicted() ||
+                                       (
+                                               // Item is also muted when any of the items in its group is active
+                                               this.model.getGroupModel().isActive() &&
+                                               // But it isn't selected
+                                               !this.model.isSelected() &&
+                                               // And also not included
+                                               !this.model.isIncluded()
+                                       )
                                )
-                       )
-               } );
+                       } );
+               }
        };
 }( mediaWiki ) );
index 752bbe6..0ab459e 100644 (file)
@@ -47,6 +47,7 @@
                                footers: [
                                        {
                                                name: 'viewSelect',
+                                               sticky: false,
                                                // View select menu, appears on default view only
                                                $element: $( '<div>' )
                                                        .append( new mw.rcfilters.ui.ViewSwitchWidget( this.controller, this.model ).$element ),
@@ -69,7 +70,7 @@
                                ]
                        },
                        input: {
-                               icon: 'search',
+                               icon: 'menu',
                                placeholder: mw.msg( 'rcfilters-search-placeholder' )
                        }
                }, config ) );
                                this.input.setValue( '' );
                        }
                }
+
+               this.input.setIcon( isVisible ? 'search' : 'menu' );
        };
 
        /**
                        menuOption = this.menu.getItemFromModel( tagItem.getModel() ),
                        oldInputValue = this.input.getValue();
 
+               this.menu.setUserSelecting( true );
+
                // Reset input
                this.input.setValue( '' );
 
                        // user filtered the results
                        this.getMenu().once(
                                'itemVisibilityChange',
-                               function () { widget.scrollToTop( menuOption.$element ); }
+                               function () {
+                                       widget.scrollToTop( menuOption.$element );
+                                       widget.menu.setUserSelecting( false );
+                               }
                        );
                } else {
                        this.scrollToTop( menuOption.$element );
+                       this.menu.setUserSelecting( false );
                }
+
        };
 
        /**
index 4e1ae97..dbee65c 100644 (file)
         * Clean up the old-style show/hide that we have implemented in the filter list
         */
        mw.rcfilters.ui.FormWrapperWidget.prototype.cleanUpFieldset = function () {
-               var $namespaceSelect = this.$element.find( '#namespace' ),
-                       collapseCookieName = 'changeslist-state';
+               var $namespaceSelect = this.$element.find( '#namespace' );
 
                this.$element.find( '.rcshowhideoption[data-feature-in-structured-ui=1]' ).each( function () {
                        // HACK: Remove the text node after the span.
                        this.$element.find( '.mw-tagfilter-label' ).closest( 'tr' ).detach();
                }
 
-               // Collapse legend
-               // see resources/src/mediawiki.special/mediawiki.special.changelist.legend.js
-               this.$element.find( '.mw-changeslist-legend' )
-                       .makeCollapsible( {
-                               collapsed: mw.cookie.get( collapseCookieName ) === 'collapsed'
-                       } )
-                       .on( 'beforeExpand.mw-collapsible', function () {
-                               mw.cookie.set( collapseCookieName, 'expanded' );
-                       } )
-                       .on( 'beforeCollapse.mw-collapsible', function () {
-                               mw.cookie.set( collapseCookieName, 'collapsed' );
-                       } );
-
+               if ( !this.$element.find( '.mw-recentchanges-table tr' ).length ) {
+                       this.$element.find( 'hr' ).detach();
+               }
        };
 }( mediaWiki ) );
index dda4ac5..c12e10e 100644 (file)
@@ -30,6 +30,7 @@
                this.model = model;
                this.currentView = '';
                this.views = {};
+               this.userSelecting = false;
 
                this.inputValue = '';
                this.$overlay = config.$overlay || this.$element;
                // based on view
                config.footers = config.footers || [];
                config.footers.forEach( function ( footerData ) {
-                       var adjustedData = {
-                               // Wrap the element with our own footer wrapper
-                               $element: $( '<div>' )
-                                       .addClass( 'mw-rcfilters-ui-menuSelectWidget-footer' )
-                                       .addClass( 'mw-rcfilters-ui-menuSelectWidget-footer-' + footerData.name )
-                                       .append( footerData.$element ),
-                               views: footerData.views
-                       };
+                       var isSticky = footerData.sticky === undefined ? true : !!footerData.sticky,
+                               adjustedData = {
+                                       // Wrap the element with our own footer wrapper
+                                       $element: $( '<div>' )
+                                               .addClass( 'mw-rcfilters-ui-menuSelectWidget-footer' )
+                                               .addClass( 'mw-rcfilters-ui-menuSelectWidget-footer-' + footerData.name )
+                                               .append( footerData.$element ),
+                                       views: footerData.views
+                               };
 
                        this.footers.push( adjustedData );
-                       this.$element.append( adjustedData.$element );
+
+                       if ( isSticky ) {
+                               this.$element.append( adjustedData.$element );
+                       } else {
+                               this.$body.append( adjustedData.$element );
+                       }
                }.bind( this ) );
 
                // Switch to the correct view
 
                // Count groups per view
                $.each( groups, function ( groupName, groupModel ) {
-                       viewGroupCount[ groupModel.getView() ] = viewGroupCount[ groupModel.getView() ] || 0;
-                       viewGroupCount[ groupModel.getView() ]++;
+                       if ( !groupModel.isHidden() ) {
+                               viewGroupCount[ groupModel.getView() ] = viewGroupCount[ groupModel.getView() ] || 0;
+                               viewGroupCount[ groupModel.getView() ]++;
+                       }
                } );
 
                $.each( groups, function ( groupName, groupModel ) {
                        var currentItems = [],
                                view = groupModel.getView();
 
-                       if ( viewGroupCount[ view ] > 1 ) {
-                               // Only add a section header if there is more than
-                               // one group
-                               currentItems.push(
-                                       // Group section
-                                       new mw.rcfilters.ui.FilterMenuSectionOptionWidget(
-                                               widget.controller,
-                                               groupModel,
-                                               {
-                                                       $overlay: widget.$overlay
-                                               }
-                                       )
-                               );
-                       }
+                       if ( !groupModel.isHidden() ) {
+                               if ( viewGroupCount[ view ] > 1 ) {
+                                       // Only add a section header if there is more than
+                                       // one group
+                                       currentItems.push(
+                                               // Group section
+                                               new mw.rcfilters.ui.FilterMenuSectionOptionWidget(
+                                                       widget.controller,
+                                                       groupModel,
+                                                       {
+                                                               $overlay: widget.$overlay
+                                                       }
+                                               )
+                                       );
+                               }
 
-                       // Add items
-                       widget.model.getGroupFilters( groupName ).forEach( function ( filterItem ) {
-                               currentItems.push(
-                                       new mw.rcfilters.ui.FilterMenuOptionWidget(
-                                               widget.controller,
-                                               filterItem,
-                                               {
-                                                       $overlay: widget.$overlay
-                                               }
-                                       )
-                               );
-                       } );
-
-                       // Cache the items per view, so we can switch between them
-                       // without rebuilding the widgets each time
-                       widget.views[ view ] = widget.views[ view ] || [];
-                       widget.views[ view ] = widget.views[ view ].concat( currentItems );
+                               // Add items
+                               widget.model.getGroupFilters( groupName ).forEach( function ( filterItem ) {
+                                       currentItems.push(
+                                               new mw.rcfilters.ui.FilterMenuOptionWidget(
+                                                       widget.controller,
+                                                       filterItem,
+                                                       {
+                                                               $overlay: widget.$overlay
+                                                       }
+                                               )
+                                       );
+                               } );
+
+                               // Cache the items per view, so we can switch between them
+                               // without rebuilding the widgets each time
+                               widget.views[ view ] = widget.views[ view ] || [];
+                               widget.views[ view ] = widget.views[ view ].concat( currentItems );
+                       }
                } );
 
                this.switchView( this.model.getCurrentView() );
 
                // Since the method hides/shows items, we don't want to
                // call it unless the input actually changed
-               if ( this.inputValue !== inputVal ) {
+               if (
+                       !this.userSelecting &&
+                       this.inputValue !== inputVal
+               ) {
                        // Parent method
                        mw.rcfilters.ui.MenuSelectWidget.parent.prototype.updateItemVisibility.call( this );
 
        mw.rcfilters.ui.MenuSelectWidget.prototype.scrollToTop = function () {
                this.$body.scrollTop( 0 );
        };
+
+       /**
+        * Set whether the user is currently selecting an item.
+        * This is important when the user selects an item that is in between
+        * different views, and makes sure we do not re-select a different
+        * item (like the item on top) when this is happening.
+        *
+        * @param {boolean} isSelecting User is selecting
+        */
+       mw.rcfilters.ui.MenuSelectWidget.prototype.setUserSelecting = function ( isSelecting ) {
+               this.userSelecting = !!isSelecting;
+       };
 }( mediaWiki ) );
index 3f920f0..fc0f302 100644 (file)
@@ -24,7 +24,7 @@
                // Parent
                mw.rcfilters.ui.SaveFiltersPopupButtonWidget.parent.call( this, $.extend( {
                        framed: false,
-                       icon: 'clip',
+                       icon: 'unClip',
                        $overlay: this.$overlay,
                        title: mw.msg( 'rcfilters-savedqueries-add-new-title' ),
                        popup: {
@@ -36,7 +36,7 @@
                        }
                }, config ) );
                // // HACK: Add an icon to the popup head label
-               this.popup.$head.prepend( ( new OO.ui.IconWidget( { icon: 'clip' } ) ).$element );
+               this.popup.$head.prepend( ( new OO.ui.IconWidget( { icon: 'unClip' } ) ).$element );
 
                this.input = new OO.ui.TextInputWidget( {
                        validate: /\S/
@@ -71,8 +71,7 @@
 
                // Events
                this.popup.connect( this, {
-                       ready: 'onPopupReady',
-                       toggle: 'onPopupToggle'
+                       ready: 'onPopupReady'
                } );
                this.input.connect( this, { enter: 'onInputEnter' } );
                this.input.$input.on( {
                }
        };
 
-       /**
-        * Respond to popup toggle event
-        *
-        * @param {boolean} isVisible Popup is visible
-        */
-       mw.rcfilters.ui.SaveFiltersPopupButtonWidget.prototype.onPopupToggle = function ( isVisible ) {
-               this.setIcon( isVisible ? 'unClip' : 'clip' );
-       };
-
        /**
         * Respond to popup ready event
         */
index 73c3c45..694f86a 100644 (file)
                                                if ( $.isFunction( f.focus ) ) {
                                                        f.focus();
                                                }
-                                       },
-                                       doNothing = function () {};
+                                       };
 
                                // This is something of a hack. We always want the 'format' and
                                // 'action' parameters from the main module to be specified,
                                                // it makes it too hard to read and our "disabled"
                                                // isn't really disabled.
                                                widgetField.onFieldDisable( false );
-                                               widgetField.onFieldDisable = doNothing;
+                                               widgetField.onFieldDisable = $.noop;
 
                                                if ( Util.apiBool( pi.parameters[ i ].deprecated ) ) {
                                                        deprecatedItems.push( widgetField, helpField );
index f217bf5..ea63e39 100644 (file)
@@ -7,18 +7,21 @@
        var
                cookieName = 'changeslist-state',
                // Expanded by default
-               isCollapsed = mw.cookie.get( cookieName ) === 'collapsed';
+               isCollapsed = mw.cookie.get( cookieName ) === 'collapsed',
+               doCollapsibleLegend = function ( $container ) {
+                       $container.find( '.mw-changeslist-legend' )
+                               .makeCollapsible( {
+                                       collapsed: isCollapsed
+                               } )
+                               .on( 'beforeExpand.mw-collapsible', function () {
+                                       mw.cookie.set( cookieName, 'expanded' );
+                               } )
+                               .on( 'beforeCollapse.mw-collapsible', function () {
+                                       mw.cookie.set( cookieName, 'collapsed' );
+                               } );
+               };
 
        $( function () {
-               $( '.mw-changeslist-legend' )
-                       .makeCollapsible( {
-                               collapsed: isCollapsed
-                       } )
-                       .on( 'beforeExpand.mw-collapsible', function () {
-                               mw.cookie.set( cookieName, 'expanded' );
-                       } )
-                       .on( 'beforeCollapse.mw-collapsible', function () {
-                               mw.cookie.set( cookieName, 'collapsed' );
-                       } );
+               mw.hook( 'wikipage.content' ).add( doCollapsibleLegend );
        } );
 }( mediaWiki, jQuery ) );
index 6765270..253e0ef 100644 (file)
         */
        Title.exists = function ( title ) {
                var match,
-                       type = $.type( title ),
                        obj = Title.exist.pages;
 
-               if ( type === 'string' ) {
+               if ( typeof title === 'string' ) {
                        match = obj[ title ];
-               } else if ( type === 'object' && title instanceof Title ) {
+               } else if ( title instanceof Title ) {
                        match = obj[ title.toString() ];
                } else {
                        throw new Error( 'mw.Title.exists: title must be a string or an instance of Title' );
                }
 
-               if ( typeof match === 'boolean' ) {
-                       return match;
+               if ( typeof match !== 'boolean' ) {
+                       return null;
                }
 
-               return null;
+               return match;
        };
 
        /**
index 2c3e137..be7aa63 100644 (file)
@@ -1,5 +1,12 @@
 @import 'mediawiki.ui/variables';
 
+// Increase the area of the button, so that the user can move the mouse cursor
+// to the popup without the popup disappearing. (T157544)
+.mediawiki-filewarning-anchor {
+       padding-bottom: 10px;
+       margin-bottom: -10px;
+}
+
 .mediawiki-filewarning {
        visibility: hidden;
 
index f44b0d5..a373142 100644 (file)
@@ -28,6 +28,7 @@
 use Wikimedia\Rdbms\IDatabase;
 use MediaWiki\MediaWikiServices;
 use Wikimedia\ScopedCallback;
+use Wikimedia\TestingAccessWrapper;
 
 /**
  * @ingroup Testing
@@ -240,7 +241,7 @@ class ParserTestRunner {
                        'name' => 'nullLockManager',
                        'class' => 'NullLockManager',
                ] ];
-               $reset = function() {
+               $reset = function () {
                        LockManagerGroup::destroySingletons();
                };
                $setup[] = $reset;
@@ -288,7 +289,7 @@ class ParserTestRunner {
                MediaWikiServices::getInstance()->disableService( 'MediaHandlerFactory' );
                MediaWikiServices::getInstance()->redefineService(
                        'MediaHandlerFactory',
-                       function() {
+                       function () {
                                return new MockMediaHandlerFactory();
                        }
                );
@@ -428,7 +429,7 @@ class ParserTestRunner {
         * @return ScopedCallback
         */
        protected function createTeardownObject( $teardown, $nextTeardown = null ) {
-               return new ScopedCallback( function() use ( $teardown, $nextTeardown ) {
+               return new ScopedCallback( function () use ( $teardown, $nextTeardown ) {
                        // Schedule teardown snippets in reverse order
                        $teardown = array_reverse( $teardown );
 
@@ -1045,6 +1046,11 @@ class ParserTestRunner {
                $context->setUser( $user );
                $context->setLanguage( $lang );
                $teardown[] = function () use ( $context ) {
+                       // Clear language conversion tables
+                       $wrapper = TestingAccessWrapper::newFromObject(
+                               $context->getLanguage()->getConverter()
+                       );
+                       $wrapper->reloadTables();
                        // Reset context to the restored globals
                        $context->setUser( $GLOBALS['wgUser'] );
                        $context->setLanguage( $GLOBALS['wgContLang'] );
index df3d568..c1ada45 100644 (file)
@@ -309,7 +309,7 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
                ConfigFactory $oldFactory,
                array $configurations
        ) {
-               return function( MediaWikiServices $services ) use ( $oldFactory, $configurations ) {
+               return function ( MediaWikiServices $services ) use ( $oldFactory, $configurations ) {
                        $factory = new ConfigFactory();
 
                        // clone configurations from $oldFactory that are not overwritten by $configurations
diff --git a/tests/phpunit/data/resourceloader/script-comment.js b/tests/phpunit/data/resourceloader/script-comment.js
new file mode 100644 (file)
index 0000000..46b60f9
--- /dev/null
@@ -0,0 +1,3 @@
+/* eslint-disable */
+mw.foo()
+// mw.bar();
diff --git a/tests/phpunit/data/resourceloader/script-nosemi.js b/tests/phpunit/data/resourceloader/script-nosemi.js
new file mode 100644 (file)
index 0000000..2b1550f
--- /dev/null
@@ -0,0 +1,2 @@
+/* eslint-disable */
+mw.foo()
index afd80ff..388aee7 100644 (file)
@@ -3,19 +3,19 @@
 class WfArrayFilterTest extends \PHPUnit_Framework_TestCase {
        public function testWfArrayFilter() {
                $arr = [ 'a' => 1, 'b' => 2, 'c' => 3 ];
-               $filtered = wfArrayFilter( $arr, function( $val, $key ) {
+               $filtered = wfArrayFilter( $arr, function ( $val, $key ) {
                        return $key !== 'b';
                } );
                $this->assertSame( [ 'a' => 1, 'c' => 3 ], $filtered );
 
                $arr = [ 'a' => 1, 'b' => 2, 'c' => 3 ];
-               $filtered = wfArrayFilter( $arr, function( $val, $key ) {
+               $filtered = wfArrayFilter( $arr, function ( $val, $key ) {
                        return $val !== 2;
                } );
                $this->assertSame( [ 'a' => 1, 'c' => 3 ], $filtered );
 
                $arr = [ 'a', 'b', 'c' ];
-               $filtered = wfArrayFilter( $arr, function( $val, $key ) {
+               $filtered = wfArrayFilter( $arr, function ( $val, $key ) {
                        return $key !== 0;
                } );
                $this->assertSame( [ 1 => 'b',  2 => 'c' ], $filtered );
@@ -23,13 +23,13 @@ class WfArrayFilterTest extends \PHPUnit_Framework_TestCase {
 
        public function testWfArrayFilterByKey() {
                $arr = [ 'a' => 1, 'b' => 2, 'c' => 3 ];
-               $filtered = wfArrayFilterByKey( $arr, function( $key ) {
+               $filtered = wfArrayFilterByKey( $arr, function ( $key ) {
                        return $key !== 'b';
                } );
                $this->assertSame( [ 'a' => 1, 'c' => 3 ], $filtered );
 
                $arr = [ 'a', 'b', 'c' ];
-               $filtered = wfArrayFilterByKey( $arr, function( $key ) {
+               $filtered = wfArrayFilterByKey( $arr, function ( $key ) {
                        return $key !== 0;
                } );
                $this->assertSame( [ 1 => 'b',  2 => 'c' ], $filtered );
index 115a8cf..f3d4916 100644 (file)
@@ -588,7 +588,7 @@ class HtmlTest extends MediaWikiTestCase {
                ];
 
                # <button> specific handling
-               # see remarks on http://msdn.microsoft.com/en-us/library/ie/ms535211%28v=vs.85%29.aspx
+               # see remarks on https://msdn.microsoft.com/library/ms535211(v=vs.85).aspx
                $cases[] = [ '<button type="submit"></button>',
                        'button', [ 'type' => 'submit' ],
                        'According to standard the default type is "submit". '
index 3edf99f..2ca5935 100644 (file)
@@ -385,21 +385,21 @@ class LinkerTest extends MediaWikiLangTestCase {
                return [
                        // Override $html
                        [
-                               function( $dummy, $title, $options, &$html, &$attribs, &$ret ) {
+                               function ( $dummy, $title, $options, &$html, &$attribs, &$ret ) {
                                        $html = 'foobar';
                                },
                                '<a href="/wiki/Special:BlankPage" title="Special:BlankPage">foobar</a>'
                        ],
                        // Modify $attribs
                        [
-                               function( $dummy, $title, $options, &$html, &$attribs, &$ret ) {
+                               function ( $dummy, $title, $options, &$html, &$attribs, &$ret ) {
                                        $attribs['bar'] = 'baz';
                                },
                                '<a href="/wiki/Special:BlankPage" title="Special:BlankPage" bar="baz">Special:BlankPage</a>'
                        ],
                        // Fully override return value and abort hook
                        [
-                               function( $dummy, $title, $options, &$html, &$attribs, &$ret ) {
+                               function ( $dummy, $title, $options, &$html, &$attribs, &$ret ) {
                                        $ret = 'blahblahblah';
                                        return false;
                                },
index 5977652..498532f 100644 (file)
@@ -262,21 +262,43 @@ class MWNamespaceTest extends MediaWikiTestCase {
        }
        */
 
+       public function provideHasTalkNamespace() {
+               return [
+                       [ NS_MEDIA, false ],
+                       [ NS_SPECIAL, false ],
+
+                       [ NS_MAIN, true ],
+                       [ NS_TALK, true ],
+                       [ NS_USER, true ],
+                       [ NS_USER_TALK, true ],
+
+                       [ 100, true ],
+                       [ 101, true ],
+               ];
+       }
+
        /**
-        * @covers MWNamespace::canTalk
+        * @dataProvider provideHasTalkNamespace
+        * @covers MWNamespace::hasTalkNamespace
+        *
+        * @param int $index
+        * @param bool $expected
         */
-       public function testCanTalk() {
-               $this->assertCanNotTalk( NS_MEDIA );
-               $this->assertCanNotTalk( NS_SPECIAL );
-
-               $this->assertCanTalk( NS_MAIN );
-               $this->assertCanTalk( NS_TALK );
-               $this->assertCanTalk( NS_USER );
-               $this->assertCanTalk( NS_USER_TALK );
+       public function testHasTalkNamespace( $index, $expected ) {
+               $actual = MWNamespace::hasTalkNamespace( $index );
+               $this->assertSame( $actual, $expected, "NS $index" );
+       }
 
-               // User defined namespaces
-               $this->assertCanTalk( 100 );
-               $this->assertCanTalk( 101 );
+       /**
+        * @dataProvider provideHasTalkNamespace
+        * @covers MWNamespace::canTalk
+        *
+        * @param int $index
+        * @param bool $expected
+        */
+       public function testCanTalk( $index, $expected ) {
+               $actual = MWNamespace::canTalk( $index );
+               $this->assertSame( $actual, $expected, "NS $index" );
        }
 
        /**
index 037faa6..b4e9626 100644 (file)
@@ -77,7 +77,7 @@ class MediaWikiServicesTest extends MediaWikiTestCase {
 
                $newServices->defineService(
                        'Test',
-                       function() use ( $service1 ) {
+                       function () use ( $service1 ) {
                                return $service1;
                        }
                );
@@ -121,7 +121,7 @@ class MediaWikiServicesTest extends MediaWikiTestCase {
 
                $newServices->defineService(
                        'Test',
-                       function() use ( &$instantiatorReturnValues ) {
+                       function () use ( &$instantiatorReturnValues ) {
                                return array_shift( $instantiatorReturnValues );
                        }
                );
@@ -150,7 +150,7 @@ class MediaWikiServicesTest extends MediaWikiTestCase {
 
                $newServices->redefineService(
                        'DBLoadBalancerFactory',
-                       function() use ( $lbFactory ) {
+                       function () use ( $lbFactory ) {
                                return $lbFactory;
                        }
                );
@@ -194,7 +194,7 @@ class MediaWikiServicesTest extends MediaWikiTestCase {
 
                $newServices->defineService(
                        'Test',
-                       function() use ( &$instantiatorReturnValues ) {
+                       function () use ( &$instantiatorReturnValues ) {
                                return array_shift( $instantiatorReturnValues );
                        }
                );
@@ -217,7 +217,7 @@ class MediaWikiServicesTest extends MediaWikiTestCase {
 
                $services->defineService(
                        'Test',
-                       function() use ( &$serviceCounter ) {
+                       function () use ( &$serviceCounter ) {
                                $serviceCounter++;
                                $service = $this->createMock( 'MediaWiki\Services\DestructibleService' );
                                $service->expects( $this->once() )->method( 'destroy' );
@@ -247,7 +247,7 @@ class MediaWikiServicesTest extends MediaWikiTestCase {
 
                $services->defineService(
                        'Test',
-                       function() {
+                       function () {
                                $service = $this->createMock( 'MediaWiki\Services\DestructibleService' );
                                $service->expects( $this->never() )->method( 'destroy' );
                                return $service;
index 617e39c..b68ee48 100644 (file)
@@ -20,7 +20,7 @@ class ServiceContainerTest extends PHPUnit_Framework_TestCase {
                $this->assertEmpty( $names );
 
                $name = 'TestService92834576';
-               $services->defineService( $name, function() {
+               $services->defineService( $name, function () {
                        return null;
                } );
 
@@ -34,7 +34,7 @@ class ServiceContainerTest extends PHPUnit_Framework_TestCase {
                $name = 'TestService92834576';
                $this->assertFalse( $services->hasService( $name ) );
 
-               $services->defineService( $name, function() {
+               $services->defineService( $name, function () {
                        return null;
                } );
 
@@ -50,7 +50,7 @@ class ServiceContainerTest extends PHPUnit_Framework_TestCase {
 
                $services->defineService(
                        $name,
-                       function( $actualLocator, $extra ) use ( $services, $theService, &$count ) {
+                       function ( $actualLocator, $extra ) use ( $services, $theService, &$count ) {
                                $count++;
                                PHPUnit_Framework_Assert::assertSame( $services, $actualLocator );
                                PHPUnit_Framework_Assert::assertSame( $extra, 'Foo' );
@@ -79,14 +79,14 @@ class ServiceContainerTest extends PHPUnit_Framework_TestCase {
 
                $services->defineService(
                        'Foo',
-                       function() {
+                       function () {
                                return new stdClass();
                        }
                );
 
                $services->defineService(
                        'Bar',
-                       function() {
+                       function () {
                                return new stdClass();
                        }
                );
@@ -122,7 +122,7 @@ class ServiceContainerTest extends PHPUnit_Framework_TestCase {
                $theService = new stdClass();
                $name = 'TestService92834576';
 
-               $services->defineService( $name, function( $actualLocator ) use ( $services, $theService ) {
+               $services->defineService( $name, function ( $actualLocator ) use ( $services, $theService ) {
                        PHPUnit_Framework_Assert::assertSame( $services, $actualLocator );
                        return $theService;
                } );
@@ -137,13 +137,13 @@ class ServiceContainerTest extends PHPUnit_Framework_TestCase {
                $theService = new stdClass();
                $name = 'TestService92834576';
 
-               $services->defineService( $name, function() use ( $theService ) {
+               $services->defineService( $name, function () use ( $theService ) {
                        return $theService;
                } );
 
                $this->setExpectedException( 'MediaWiki\Services\ServiceAlreadyDefinedException' );
 
-               $services->defineService( $name, function() use ( $theService ) {
+               $services->defineService( $name, function () use ( $theService ) {
                        return $theService;
                } );
        }
@@ -152,10 +152,10 @@ class ServiceContainerTest extends PHPUnit_Framework_TestCase {
                $services = $this->newServiceContainer();
 
                $wiring = [
-                       'Foo' => function() {
+                       'Foo' => function () {
                                return 'Foo!';
                        },
-                       'Bar' => function() {
+                       'Bar' => function () {
                                return 'Bar!';
                        },
                ];
@@ -170,13 +170,13 @@ class ServiceContainerTest extends PHPUnit_Framework_TestCase {
                $services = $this->newServiceContainer();
 
                $wiring = [
-                       'Foo' => function() {
+                       'Foo' => function () {
                                return 'Foo!';
                        },
-                       'Bar' => function() {
+                       'Bar' => function () {
                                return 'Bar!';
                        },
-                       'Car' => function() {
+                       'Car' => function () {
                                return 'FUBAR!';
                        },
                ];
@@ -187,7 +187,7 @@ class ServiceContainerTest extends PHPUnit_Framework_TestCase {
 
                // define a service before importing, so we can later check that
                // existing service instances survive importWiring()
-               $newServices->defineService( 'Car', function() {
+               $newServices->defineService( 'Car', function () {
                        return 'Car!';
                } );
 
@@ -196,7 +196,7 @@ class ServiceContainerTest extends PHPUnit_Framework_TestCase {
 
                // Define another service, so we can later check that extra wiring
                // is not lost.
-               $newServices->defineService( 'Xar', function() {
+               $newServices->defineService( 'Xar', function () {
                        return 'Xar!';
                } );
 
@@ -249,7 +249,7 @@ class ServiceContainerTest extends PHPUnit_Framework_TestCase {
                $theService1 = new stdClass();
                $name = 'TestService92834576';
 
-               $services->defineService( $name, function() {
+               $services->defineService( $name, function () {
                        PHPUnit_Framework_Assert::fail(
                                'The original instantiator function should not get called'
                        );
@@ -258,7 +258,7 @@ class ServiceContainerTest extends PHPUnit_Framework_TestCase {
                // redefine before instantiation
                $services->redefineService(
                        $name,
-                       function( $actualLocator, $extra ) use ( $services, $theService1 ) {
+                       function ( $actualLocator, $extra ) use ( $services, $theService1 ) {
                                PHPUnit_Framework_Assert::assertSame( $services, $actualLocator );
                                PHPUnit_Framework_Assert::assertSame( 'Foo', $extra );
                                return $theService1;
@@ -275,14 +275,14 @@ class ServiceContainerTest extends PHPUnit_Framework_TestCase {
                $theService1 = new stdClass();
                $name = 'TestService92834576';
 
-               $services->defineService( $name, function() {
+               $services->defineService( $name, function () {
                        return 'Foo';
                } );
 
                // disable the service. we should be able to redefine it anyway.
                $services->disableService( $name );
 
-               $services->redefineService( $name, function() use ( $theService1 ) {
+               $services->redefineService( $name, function () use ( $theService1 ) {
                        return $theService1;
                } );
 
@@ -298,7 +298,7 @@ class ServiceContainerTest extends PHPUnit_Framework_TestCase {
 
                $this->setExpectedException( 'MediaWiki\Services\NoSuchServiceException' );
 
-               $services->redefineService( $name, function() use ( $theService ) {
+               $services->redefineService( $name, function () use ( $theService ) {
                        return $theService;
                } );
        }
@@ -309,7 +309,7 @@ class ServiceContainerTest extends PHPUnit_Framework_TestCase {
                $theService = new stdClass();
                $name = 'TestService92834576';
 
-               $services->defineService( $name, function() {
+               $services->defineService( $name, function () {
                        return 'Foo';
                } );
 
@@ -318,7 +318,7 @@ class ServiceContainerTest extends PHPUnit_Framework_TestCase {
 
                $this->setExpectedException( 'MediaWiki\Services\CannotReplaceActiveServiceException' );
 
-               $services->redefineService( $name, function() use ( $theService ) {
+               $services->redefineService( $name, function () use ( $theService ) {
                        return $theService;
                } );
        }
@@ -331,13 +331,13 @@ class ServiceContainerTest extends PHPUnit_Framework_TestCase {
                $destructible->expects( $this->once() )
                        ->method( 'destroy' );
 
-               $services->defineService( 'Foo', function() use ( $destructible ) {
+               $services->defineService( 'Foo', function () use ( $destructible ) {
                        return $destructible;
                } );
-               $services->defineService( 'Bar', function() {
+               $services->defineService( 'Bar', function () {
                        return new stdClass();
                } );
-               $services->defineService( 'Qux', function() {
+               $services->defineService( 'Qux', function () {
                        return new stdClass();
                } );
 
@@ -377,7 +377,7 @@ class ServiceContainerTest extends PHPUnit_Framework_TestCase {
 
                $this->setExpectedException( 'MediaWiki\Services\NoSuchServiceException' );
 
-               $services->redefineService( $name, function() use ( $theService ) {
+               $services->redefineService( $name, function () use ( $theService ) {
                        return $theService;
                } );
        }
@@ -390,11 +390,11 @@ class ServiceContainerTest extends PHPUnit_Framework_TestCase {
                $destructible->expects( $this->once() )
                        ->method( 'destroy' );
 
-               $services->defineService( 'Foo', function() use ( $destructible ) {
+               $services->defineService( 'Foo', function () use ( $destructible ) {
                        return $destructible;
                } );
 
-               $services->defineService( 'Bar', function() {
+               $services->defineService( 'Bar', function () {
                        return new stdClass();
                } );
 
index 186021a..b6ff4eb 100644 (file)
@@ -4,7 +4,7 @@
  */
 
 return [
-       'Foo' => function() {
+       'Foo' => function () {
                return 'Foo!';
        },
 ];
index 3b4fff0..dfff64f 100644 (file)
@@ -4,7 +4,7 @@
  */
 
 return [
-       'Bar' => function() {
+       'Bar' => function () {
                return 'Bar!';
        },
 ];
index 84a6adf..21d1bf2 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Testing logger
  *
- * Copyright (C) 2015 Brad Jorsch <bjorsch@wikimedia.org>
+ * Copyright (C) 2015 Wikimedia Foundation and contributors
  *
  * 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
@@ -20,7 +20,6 @@
  * http://www.gnu.org/copyleft/gpl.html
  *
  * @file
- * @author Brad Jorsch <bjorsch@wikimedia.org>
  */
 
 use Psr\Log\LogLevel;
index 6c44999..c06a2e4 100644 (file)
@@ -675,6 +675,47 @@ class TitleTest extends MediaWikiTestCase {
                );
        }
 
+       public function provideCanHaveTalkPage() {
+               return [
+                       'User page has talk page' => [
+                               Title::makeTitle( NS_USER, 'Jane' ), true
+                       ],
+                       'Talke page has talk page' => [
+                               Title::makeTitle( NS_TALK, 'Foo' ), true
+                       ],
+                       'Special page cannot have talk page' => [
+                               Title::makeTitle( NS_SPECIAL, 'Thing' ), false
+                       ],
+                       'Virtual namespace cannot have talk page' => [
+                               Title::makeTitle( NS_MEDIA, 'Kitten.jpg' ), false
+                       ],
+               ];
+       }
+
+       /**
+        * @dataProvider provideCanHaveTalkPage
+        * @covers Title::canHaveTalkPage
+        *
+        * @param Title $title
+        * @param bool $expected
+        */
+       public function testCanHaveTalkPage( Title $title, $expected ) {
+               $actual = $title->canHaveTalkPage();
+               $this->assertSame( $expected, $actual, $title->getPrefixedDBkey() );
+       }
+
+       /**
+        * @dataProvider provideCanHaveTalkPage
+        * @covers Title::canTalk
+        *
+        * @param Title $title
+        * @param bool $expected
+        */
+       public function testCanTalk( Title $title, $expected ) {
+               $actual = $title->canTalk();
+               $this->assertSame( $expected, $actual, $title->getPrefixedDBkey() );
+       }
+
        public function provideCreateFragmentTitle() {
                return [
                        [ Title::makeTitle( NS_MAIN, 'Test' ), 'foo' ],
index 872c580..6b436a8 100644 (file)
@@ -21,9 +21,9 @@ class WatchedItemQueryServiceUnitTest extends PHPUnit_Framework_TestCase {
                                $this->isType( 'array' ),
                                $this->isType( 'int' )
                        )
-                       ->will( $this->returnCallback( function( $a, $conj ) {
+                       ->will( $this->returnCallback( function ( $a, $conj ) {
                                $sqlConj = $conj === LIST_AND ? ' AND ' : ' OR ';
-                               return join( $sqlConj, array_map( function( $s ) {
+                               return join( $sqlConj, array_map( function ( $s ) {
                                        return '(' . $s . ')';
                                }, $a
                                ) );
@@ -31,7 +31,7 @@ class WatchedItemQueryServiceUnitTest extends PHPUnit_Framework_TestCase {
 
                $mock->expects( $this->any() )
                        ->method( 'addQuotes' )
-                       ->will( $this->returnCallback( function( $value ) {
+                       ->will( $this->returnCallback( function ( $value ) {
                                return "'$value'";
                        } ) );
 
@@ -41,7 +41,7 @@ class WatchedItemQueryServiceUnitTest extends PHPUnit_Framework_TestCase {
 
                $mock->expects( $this->any() )
                        ->method( 'bitAnd' )
-                       ->willReturnCallback( function( $a, $b ) {
+                       ->willReturnCallback( function ( $a, $b ) {
                                return "($a & $b)";
                        } );
 
@@ -106,12 +106,12 @@ class WatchedItemQueryServiceUnitTest extends PHPUnit_Framework_TestCase {
 
                $mock->expects( $this->any() )
                        ->method( 'isAllowed' )
-                       ->will( $this->returnCallback( function( $action ) use ( $notAllowedAction ) {
+                       ->will( $this->returnCallback( function ( $action ) use ( $notAllowedAction ) {
                                return $action !== $notAllowedAction;
                        } ) );
                $mock->expects( $this->any() )
                        ->method( 'isAllowedAny' )
-                       ->will( $this->returnCallback( function() use ( $notAllowedAction ) {
+                       ->will( $this->returnCallback( function () use ( $notAllowedAction ) {
                                $actions = func_get_args();
                                return !in_array( $notAllowedAction, $actions );
                        } ) );
@@ -1450,7 +1450,7 @@ class WatchedItemQueryServiceUnitTest extends PHPUnit_Framework_TestCase {
                $mockDb = $this->getMockDb();
                $mockDb->expects( $this->any() )
                        ->method( 'addQuotes' )
-                       ->will( $this->returnCallback( function( $value ) {
+                       ->will( $this->returnCallback( function ( $value ) {
                                return "'$value'";
                        } ) );
                $mockDb->expects( $this->any() )
@@ -1459,9 +1459,9 @@ class WatchedItemQueryServiceUnitTest extends PHPUnit_Framework_TestCase {
                                $this->isType( 'array' ),
                                $this->isType( 'int' )
                        )
-                       ->will( $this->returnCallback( function( $a, $conj ) {
+                       ->will( $this->returnCallback( function ( $a, $conj ) {
                                $sqlConj = $conj === LIST_AND ? ' AND ' : ' OR ';
-                               return join( $sqlConj, array_map( function( $s ) {
+                               return join( $sqlConj, array_map( function ( $s ) {
                                        return '(' . $s . ')';
                                }, $a
                                ) );
index f31028d..fa81eb1 100644 (file)
@@ -48,7 +48,7 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
                        ->getMock();
                $mock->expects( $this->any() )
                        ->method( 'makeKey' )
-                       ->will( $this->returnCallback( function() {
+                       ->will( $this->returnCallback( function () {
                                return implode( ':', func_get_args() );
                        } ) );
                return $mock;
@@ -313,12 +313,12 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
                        ->will( $this->returnValue( 7 ) );
                $mockDb->expects( $this->exactly( 1 ) )
                        ->method( 'addQuotes' )
-                       ->will( $this->returnCallback( function( $value ) {
+                       ->will( $this->returnCallback( function ( $value ) {
                                return "'$value'";
                        } ) );
                $mockDb->expects( $this->exactly( 1 ) )
                        ->method( 'timestamp' )
-                       ->will( $this->returnCallback( function( $value ) {
+                       ->will( $this->returnCallback( function ( $value ) {
                                return 'TS' . $value . 'TS';
                        } ) );
 
@@ -351,12 +351,12 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
                $mockDb = $this->getMockDb();
                $mockDb->expects( $this->exactly( 2 * 3 ) )
                        ->method( 'addQuotes' )
-                       ->will( $this->returnCallback( function( $value ) {
+                       ->will( $this->returnCallback( function ( $value ) {
                                return "'$value'";
                        } ) );
                $mockDb->expects( $this->exactly( 3 ) )
                        ->method( 'timestamp' )
-                       ->will( $this->returnCallback( function( $value ) {
+                       ->will( $this->returnCallback( function ( $value ) {
                                return 'TS' . $value . 'TS';
                        } ) );
                $mockDb->expects( $this->any() )
@@ -365,9 +365,9 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
                                $this->isType( 'array' ),
                                $this->isType( 'int' )
                        )
-                       ->will( $this->returnCallback( function( $a, $conj ) {
+                       ->will( $this->returnCallback( function ( $a, $conj ) {
                                $sqlConj = $conj === LIST_AND ? ' AND ' : ' OR ';
-                               return join( $sqlConj, array_map( function( $s ) {
+                               return join( $sqlConj, array_map( function ( $s ) {
                                        return '(' . $s . ')';
                                }, $a
                                ) );
@@ -446,12 +446,12 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
                $mockDb = $this->getMockDb();
                $mockDb->expects( $this->exactly( 2 * 3 ) )
                        ->method( 'addQuotes' )
-                       ->will( $this->returnCallback( function( $value ) {
+                       ->will( $this->returnCallback( function ( $value ) {
                                return "'$value'";
                        } ) );
                $mockDb->expects( $this->exactly( 3 ) )
                        ->method( 'timestamp' )
-                       ->will( $this->returnCallback( function( $value ) {
+                       ->will( $this->returnCallback( function ( $value ) {
                                return 'TS' . $value . 'TS';
                        } ) );
                $mockDb->expects( $this->any() )
@@ -460,9 +460,9 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
                                $this->isType( 'array' ),
                                $this->isType( 'int' )
                        )
-                       ->will( $this->returnCallback( function( $a, $conj ) {
+                       ->will( $this->returnCallback( function ( $a, $conj ) {
                                $sqlConj = $conj === LIST_AND ? ' AND ' : ' OR ';
-                               return join( $sqlConj, array_map( function( $s ) {
+                               return join( $sqlConj, array_map( function ( $s ) {
                                        return '(' . $s . ')';
                                }, $a
                                ) );
@@ -1970,7 +1970,7 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                // Note: This does not actually assert the job is correct
                $callableCallCounter = 0;
-               $mockCallback = function( $callable ) use ( &$callableCallCounter ) {
+               $mockCallback = function ( $callable ) use ( &$callableCallCounter ) {
                        $callableCallCounter++;
                        $this->assertInternalType( 'callable', $callable );
                };
@@ -2011,7 +2011,7 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                // Note: This does not actually assert the job is correct
                $callableCallCounter = 0;
-               $mockCallback = function( $callable ) use ( &$callableCallCounter ) {
+               $mockCallback = function ( $callable ) use ( &$callableCallCounter ) {
                        $callableCallCounter++;
                        $this->assertInternalType( 'callable', $callable );
                };
@@ -2105,13 +2105,13 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $callableCallCounter = 0;
                $scopedOverride = $store->overrideDeferredUpdatesAddCallableUpdateCallback(
-                       function( $callable ) use ( &$callableCallCounter, $title, $user ) {
+                       function ( $callable ) use ( &$callableCallCounter, $title, $user ) {
                                $callableCallCounter++;
                                $this->verifyCallbackJob(
                                        $callable,
                                        $title,
                                        $user->getId(),
-                                       function( $time ) {
+                                       function ( $time ) {
                                                return $time === null;
                                        }
                                );
@@ -2172,13 +2172,13 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $addUpdateCallCounter = 0;
                $scopedOverrideDeferred = $store->overrideDeferredUpdatesAddCallableUpdateCallback(
-                       function( $callable ) use ( &$addUpdateCallCounter, $title, $user ) {
+                       function ( $callable ) use ( &$addUpdateCallCounter, $title, $user ) {
                                $addUpdateCallCounter++;
                                $this->verifyCallbackJob(
                                        $callable,
                                        $title,
                                        $user->getId(),
-                                       function( $time ) {
+                                       function ( $time ) {
                                                return $time !== null && $time > '20151212010101';
                                        }
                                );
@@ -2187,7 +2187,7 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $getTimestampCallCounter = 0;
                $scopedOverrideRevision = $store->overrideRevisionGetTimestampFromIdCallback(
-                       function( $titleParam, $oldidParam ) use ( &$getTimestampCallCounter, $title, $oldid ) {
+                       function ( $titleParam, $oldidParam ) use ( &$getTimestampCallCounter, $title, $oldid ) {
                                $getTimestampCallCounter++;
                                $this->assertEquals( $title, $titleParam );
                                $this->assertEquals( $oldid, $oldidParam );
@@ -2248,13 +2248,13 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $callableCallCounter = 0;
                $scopedOverride = $store->overrideDeferredUpdatesAddCallableUpdateCallback(
-                       function( $callable ) use ( &$callableCallCounter, $title, $user ) {
+                       function ( $callable ) use ( &$callableCallCounter, $title, $user ) {
                                $callableCallCounter++;
                                $this->verifyCallbackJob(
                                        $callable,
                                        $title,
                                        $user->getId(),
-                                       function( $time ) {
+                                       function ( $time ) {
                                                return $time === null;
                                        }
                                );
@@ -2315,13 +2315,13 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $addUpdateCallCounter = 0;
                $scopedOverrideDeferred = $store->overrideDeferredUpdatesAddCallableUpdateCallback(
-                       function( $callable ) use ( &$addUpdateCallCounter, $title, $user ) {
+                       function ( $callable ) use ( &$addUpdateCallCounter, $title, $user ) {
                                $addUpdateCallCounter++;
                                $this->verifyCallbackJob(
                                        $callable,
                                        $title,
                                        $user->getId(),
-                                       function( $time ) {
+                                       function ( $time ) {
                                                return $time === '30151212010101';
                                        }
                                );
@@ -2330,7 +2330,7 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $getTimestampCallCounter = 0;
                $scopedOverrideRevision = $store->overrideRevisionGetTimestampFromIdCallback(
-                       function( $titleParam, $oldidParam ) use ( &$getTimestampCallCounter, $title, $oldid ) {
+                       function ( $titleParam, $oldidParam ) use ( &$getTimestampCallCounter, $title, $oldid ) {
                                $getTimestampCallCounter++;
                                $this->assertEquals( $title, $titleParam );
                                $this->assertEquals( $oldid, $oldidParam );
@@ -2393,13 +2393,13 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $addUpdateCallCounter = 0;
                $scopedOverrideDeferred = $store->overrideDeferredUpdatesAddCallableUpdateCallback(
-                       function( $callable ) use ( &$addUpdateCallCounter, $title, $user ) {
+                       function ( $callable ) use ( &$addUpdateCallCounter, $title, $user ) {
                                $addUpdateCallCounter++;
                                $this->verifyCallbackJob(
                                        $callable,
                                        $title,
                                        $user->getId(),
-                                       function( $time ) {
+                                       function ( $time ) {
                                                return $time === false;
                                        }
                                );
@@ -2408,7 +2408,7 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $getTimestampCallCounter = 0;
                $scopedOverrideRevision = $store->overrideRevisionGetTimestampFromIdCallback(
-                       function( $titleParam, $oldidParam ) use ( &$getTimestampCallCounter, $title, $oldid ) {
+                       function ( $titleParam, $oldidParam ) use ( &$getTimestampCallCounter, $title, $oldid ) {
                                $getTimestampCallCounter++;
                                $this->assertEquals( $title, $titleParam );
                                $this->assertEquals( $oldid, $oldidParam );
@@ -2454,7 +2454,7 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
                        ->will( $this->returnValue( true ) );
                $mockDb->expects( $this->exactly( 1 ) )
                        ->method( 'timestamp' )
-                       ->will( $this->returnCallback( function( $value ) {
+                       ->will( $this->returnCallback( function ( $value ) {
                                return 'TS' . $value . 'TS';
                        } ) );
 
@@ -2484,7 +2484,7 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
                        ->will( $this->returnValue( true ) );
                $mockDb->expects( $this->exactly( 0 ) )
                        ->method( 'timestamp' )
-                       ->will( $this->returnCallback( function( $value ) {
+                       ->will( $this->returnCallback( function ( $value ) {
                                return 'TS' . $value . 'TS';
                        } ) );
 
@@ -2515,7 +2515,7 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
                        ->will( $this->returnValue( true ) );
                $mockDb->expects( $this->exactly( 1 ) )
                        ->method( 'timestamp' )
-                       ->will( $this->returnCallback( function( $value ) {
+                       ->will( $this->returnCallback( function ( $value ) {
                                return 'TS' . $value . 'TS';
                        } ) );
                $mockDb->expects( $this->once() )
index 8a2146a..1aa0a13 100644 (file)
@@ -14,7 +14,7 @@ class ApiPageSetTest extends ApiTestCase {
                        ],
 
                        'A simple merge policy adds the redirect data in' => [
-                               function( $current, $new ) {
+                               function ( $current, $new ) {
                                        if ( !isset( $current['index'] ) || $new['index'] < $current['index'] ) {
                                                $current['index'] = $new['index'];
                                        }
index b508928..4f4453f 100644 (file)
@@ -210,7 +210,7 @@ class ApiQueryWatchlistIntegrationTest extends ApiTestCase {
 
                // not checking values of all keys of the actual item, so removing unwanted keys from comparison
                $actualItemsOnlyComparedValues = array_map(
-                       function( array $item ) use ( $keysUsedInValueComparison ) {
+                       function ( array $item ) use ( $keysUsedInValueComparison ) {
                                return array_intersect_key( $item, array_flip( $keysUsedInValueComparison ) );
                        },
                        $actualItems
index d5c17ee..50a59f9 100644 (file)
@@ -87,7 +87,7 @@ class RandomImageGenerator {
                                        __DIR__ . '/words.txt'
                                ] as $dictionaryFile
                        ) {
-                               if ( is_file( $dictionaryFile ) and is_readable( $dictionaryFile ) ) {
+                               if ( is_file( $dictionaryFile ) && is_readable( $dictionaryFile ) ) {
                                        $this->dictionaryFile = $dictionaryFile;
                                        break;
                                }
index 8a76618..ba38128 100644 (file)
@@ -63,7 +63,7 @@ class ConfigFactoryTest extends MediaWikiTestCase {
                // define new config instance
                $newFactory = new ConfigFactory();
                $newFactory->register( 'foo', 'GlobalVarConfig::newInstance' );
-               $newFactory->register( 'bar', function() {
+               $newFactory->register( 'bar', function () {
                        return new HashConfig();
                } );
 
index 403bee1..ee79ffa 100644 (file)
@@ -28,7 +28,7 @@ class ContentHandlerTest extends MediaWikiTestCase {
                                CONTENT_MODEL_CSS => 'CssContentHandler',
                                CONTENT_MODEL_TEXT => 'TextContentHandler',
                                'testing' => 'DummyContentHandlerForTesting',
-                               'testing-callbacks' => function( $modelId ) {
+                               'testing-callbacks' => function ( $modelId ) {
                                        return new DummyContentHandlerForTesting( $modelId );
                                }
                        ],
@@ -418,7 +418,7 @@ class ContentHandlerTest extends MediaWikiTestCase {
 
                $searchEngine->expects( $this->any() )
                        ->method( 'makeSearchFieldMapping' )
-                       ->will( $this->returnCallback( function( $name, $type ) {
+                       ->will( $this->returnCallback( function ( $name, $type ) {
                                        return new DummySearchIndexFieldDefinition( $name, $type );
                        } ) );
 
index f61569a..3dc810c 100644 (file)
  *
  * @file
  * @author Antoine Musso
- * @author Bryan Davis
  * @copyright © 2013 Antoine Musso
- * @copyright © 2013 Bryan Davis
- * @copyright © 2013 Wikimedia Foundation Inc.
+ * @copyright © 2013 Wikimedia Foundation and contributors
  */
 
 use Wikimedia\Rdbms\TransactionProfiler;
index 00c47c8..6723a0b 100644 (file)
@@ -112,7 +112,7 @@ class JobTest extends MediaWikiTestCase {
        public function provideTestJobFactory() {
                return [
                        'class name' => [ 'NullJob' ],
-                       'closure' => [ function( Title $title, array $params ) {
+                       'closure' => [ function ( Title $title, array $params ) {
                                return new NullJob( $title, $params );
                        } ],
                        'function' => [ [ $this, 'newNullJob' ] ],
index 5e1970b..cba2939 100644 (file)
@@ -17,7 +17,7 @@ class DeferredStringifierTest extends PHPUnit_Framework_TestCase {
                        // No args
                        [
                                [
-                                       function() {
+                                       function () {
                                                return 'foo';
                                        }
                                ],
@@ -26,7 +26,7 @@ class DeferredStringifierTest extends PHPUnit_Framework_TestCase {
                        // Has args
                        [
                                [
-                                       function( $i ) {
+                                       function ( $i ) {
                                                return $i;
                                        },
                                        'bar'
@@ -41,7 +41,7 @@ class DeferredStringifierTest extends PHPUnit_Framework_TestCase {
         * it is never converted to a string
         */
        public function testCallbackNotCalled() {
-               $ds = new DeferredStringifier( function() {
+               $ds = new DeferredStringifier( function () {
                        throw new Exception( 'This should not be reached!' );
                } );
                // No exception was thrown
index 3e0a61e..35a7b60 100644 (file)
@@ -27,13 +27,13 @@ class ObjectFactoryTest extends PHPUnit_Framework_TestCase {
                $obj = ObjectFactory::getObjectFromSpec( [
                        'class' => 'ObjectFactoryTestFixture',
                        'args' => [
-                               function() {
+                               function () {
                                        return 'wrapped';
                                },
                                'unwrapped',
                        ],
                        'calls' => [
-                               'setter' => [ function() {
+                               'setter' => [ function () {
                                        return 'wrapped';
                                }, ],
                        ],
@@ -54,13 +54,13 @@ class ObjectFactoryTest extends PHPUnit_Framework_TestCase {
                $obj = ObjectFactory::getObjectFromSpec( [
                        'class' => 'ObjectFactoryTestFixture',
                        'args' => [
-                               function() {
+                               function () {
                                        return 'wrapped';
                                },
                                'unwrapped',
                        ],
                        'calls' => [
-                               'setter' => [ function() {
+                               'setter' => [ function () {
                                        return 'wrapped';
                                }, ],
                        ],
@@ -74,11 +74,11 @@ class ObjectFactoryTest extends PHPUnit_Framework_TestCase {
 
                $obj = ObjectFactory::getObjectFromSpec( [
                        'class' => 'ObjectFactoryTestFixture',
-                       'args' => [ function() {
+                       'args' => [ function () {
                                return 'unwrapped';
                        }, ],
                        'calls' => [
-                               'setter' => [ function() {
+                               'setter' => [ function () {
                                        return 'unwrapped';
                                }, ],
                        ],
index a0fb563..35e9005 100644 (file)
@@ -21,8 +21,7 @@
 /**
  * @uses XhprofData
  * @uses AutoLoader
- * @author Bryan Davis <bd808@wikimedia.org>
- * @copyright © 2014 Bryan Davis and Wikimedia Foundation.
+ * @copyright © 2014 Wikimedia Foundation and contributors
  * @since 1.25
  */
 class XhprofDataTest extends PHPUnit_Framework_TestCase {
index 7f9a772..5c5eeaa 100644 (file)
@@ -66,7 +66,7 @@ XML;
                        null,
                        false,
                        [
-                               'processing_instruction_handler' => function() use ( &$called ) {
+                               'processing_instruction_handler' => function () use ( &$called ) {
                                        $called = true;
                                }
                        ]
index 2b04366..3d405fa 100644 (file)
@@ -176,7 +176,7 @@ class WANObjectCacheTest extends PHPUnit_Framework_TestCase  {
                $priorValue = null;
                $priorAsOf = null;
                $wasSet = 0;
-               $func = function( $old, &$ttl, &$opts, $asOf )
+               $func = function ( $old, &$ttl, &$opts, $asOf )
                use ( &$wasSet, &$priorValue, &$priorAsOf, $value )
                {
                        ++$wasSet;
@@ -583,7 +583,7 @@ class WANObjectCacheTest extends PHPUnit_Framework_TestCase  {
                $value = wfRandomString();
 
                $calls = 0;
-               $func = function() use ( &$calls, $value, $cache, $key ) {
+               $func = function () use ( &$calls, $value, $cache, $key ) {
                        ++$calls;
                        // Immediately kill any mutex rather than waiting a second
                        $cache->delete( $cache::MUTEX_KEY_PREFIX . $key );
@@ -625,7 +625,7 @@ class WANObjectCacheTest extends PHPUnit_Framework_TestCase  {
                $value = wfRandomString();
 
                $calls = 0;
-               $func = function( $oldValue, &$ttl, &$setOpts ) use ( &$calls, $value, $cache, $key ) {
+               $func = function ( $oldValue, &$ttl, &$setOpts ) use ( &$calls, $value, $cache, $key ) {
                        ++$calls;
                        $setOpts['since'] = microtime( true ) - 10;
                        // Immediately kill any mutex rather than waiting a second
@@ -659,7 +659,7 @@ class WANObjectCacheTest extends PHPUnit_Framework_TestCase  {
                $busyValue = wfRandomString();
 
                $calls = 0;
-               $func = function() use ( &$calls, $value, $cache, $key ) {
+               $func = function () use ( &$calls, $value, $cache, $key ) {
                        ++$calls;
                        // Immediately kill any mutex rather than waiting a second
                        $cache->delete( $cache::MUTEX_KEY_PREFIX . $key );
@@ -921,7 +921,7 @@ class WANObjectCacheTest extends PHPUnit_Framework_TestCase  {
                $value = wfRandomString();
 
                $wasSet = 0;
-               $func = function( $old, &$ttl ) use ( &$wasSet, $value ) {
+               $func = function ( $old, &$ttl ) use ( &$wasSet, $value ) {
                        ++$wasSet;
                        return $value;
                };
diff --git a/tests/phpunit/includes/libs/rdbms/TransactionProfilerTest.php b/tests/phpunit/includes/libs/rdbms/TransactionProfilerTest.php
new file mode 100644 (file)
index 0000000..cb18fb3
--- /dev/null
@@ -0,0 +1,141 @@
+<?php
+
+use Wikimedia\Rdbms\TransactionProfiler;
+use Psr\Log\LoggerInterface;
+
+class TransactionProfilerTest extends PHPUnit_Framework_TestCase {
+       public function testAffected() {
+               $logger = $this->getMockBuilder( LoggerInterface::class )->getMock();
+               $logger->expects( $this->exactly( 3 ) )->method( 'info' );
+
+               $tp = new TransactionProfiler();
+               $tp->setLogger( $logger );
+               $tp->setExpectation( 'maxAffected', 100, __METHOD__ );
+
+               $tp->transactionWritingIn( 'srv1', 'db1', '123' );
+               $tp->recordQueryCompletion( "SQL 1", microtime( true ) - 3, true, 200 );
+               $tp->recordQueryCompletion( "SQL 2", microtime( true ) - 3, true, 200 );
+               $tp->transactionWritingOut( 'srv1', 'db1', '123', 1, 400 );
+       }
+
+       public function testReadTime() {
+               $logger = $this->getMockBuilder( LoggerInterface::class )->getMock();
+               // 1 per query
+               $logger->expects( $this->exactly( 2 ) )->method( 'info' );
+
+               $tp = new TransactionProfiler();
+               $tp->setLogger( $logger );
+               $tp->setExpectation( 'readQueryTime', 5, __METHOD__ );
+
+               $tp->transactionWritingIn( 'srv1', 'db1', '123' );
+               $tp->recordQueryCompletion( "SQL 1", microtime( true ) - 10, false, 1 );
+               $tp->recordQueryCompletion( "SQL 2", microtime( true ) - 10, false, 1 );
+               $tp->transactionWritingOut( 'srv1', 'db1', '123', 0, 0 );
+       }
+
+       public function testWriteTime() {
+               $logger = $this->getMockBuilder( LoggerInterface::class )->getMock();
+               // 1 per query, 1 per trx, and one "sub-optimal trx" entry
+               $logger->expects( $this->exactly( 4 ) )->method( 'info' );
+
+               $tp = new TransactionProfiler();
+               $tp->setLogger( $logger );
+               $tp->setExpectation( 'writeQueryTime', 5, __METHOD__ );
+
+               $tp->transactionWritingIn( 'srv1', 'db1', '123' );
+               $tp->recordQueryCompletion( "SQL 1", microtime( true ) - 10, true, 1 );
+               $tp->recordQueryCompletion( "SQL 2", microtime( true ) - 10, true, 1 );
+               $tp->transactionWritingOut( 'srv1', 'db1', '123', 20, 1 );
+       }
+
+       public function testAffectedTrx() {
+               $logger = $this->getMockBuilder( LoggerInterface::class )->getMock();
+               $logger->expects( $this->exactly( 1 ) )->method( 'info' );
+
+               $tp = new TransactionProfiler();
+               $tp->setLogger( $logger );
+               $tp->setExpectation( 'maxAffected', 100, __METHOD__ );
+
+               $tp->transactionWritingIn( 'srv1', 'db1', '123' );
+               $tp->transactionWritingOut( 'srv1', 'db1', '123', 1, 200 );
+       }
+
+       public function testWriteTimeTrx() {
+               $logger = $this->getMockBuilder( LoggerInterface::class )->getMock();
+               // 1 per trx, and one "sub-optimal trx" entry
+               $logger->expects( $this->exactly( 2 ) )->method( 'info' );
+
+               $tp = new TransactionProfiler();
+               $tp->setLogger( $logger );
+               $tp->setExpectation( 'writeQueryTime', 5, __METHOD__ );
+
+               $tp->transactionWritingIn( 'srv1', 'db1', '123' );
+               $tp->transactionWritingOut( 'srv1', 'db1', '123', 10, 1 );
+       }
+
+       public function testConns() {
+               $logger = $this->getMockBuilder( LoggerInterface::class )->getMock();
+               $logger->expects( $this->exactly( 2 ) )->method( 'info' );
+
+               $tp = new TransactionProfiler();
+               $tp->setLogger( $logger );
+               $tp->setExpectation( 'conns', 2, __METHOD__ );
+
+               $tp->recordConnection( 'srv1', 'db1', false );
+               $tp->recordConnection( 'srv1', 'db2', false );
+               $tp->recordConnection( 'srv1', 'db3', false ); // warn
+               $tp->recordConnection( 'srv1', 'db4', false ); // warn
+       }
+
+       public function testMasterConns() {
+               $logger = $this->getMockBuilder( LoggerInterface::class )->getMock();
+               $logger->expects( $this->exactly( 2 ) )->method( 'info' );
+
+               $tp = new TransactionProfiler();
+               $tp->setLogger( $logger );
+               $tp->setExpectation( 'masterConns', 2, __METHOD__ );
+
+               $tp->recordConnection( 'srv1', 'db1', false );
+               $tp->recordConnection( 'srv1', 'db2', false );
+
+               $tp->recordConnection( 'srv1', 'db1', true );
+               $tp->recordConnection( 'srv1', 'db2', true );
+               $tp->recordConnection( 'srv1', 'db3', true ); // warn
+               $tp->recordConnection( 'srv1', 'db4', true ); // warn
+       }
+
+       public function testReadQueryCount() {
+               $logger = $this->getMockBuilder( LoggerInterface::class )->getMock();
+               $logger->expects( $this->exactly( 2 ) )->method( 'info' );
+
+               $tp = new TransactionProfiler();
+               $tp->setLogger( $logger );
+               $tp->setExpectation( 'queries', 2, __METHOD__ );
+
+               $tp->recordQueryCompletion( "SQL 1", microtime( true ) - .01, false, 0 );
+               $tp->recordQueryCompletion( "SQL 2", microtime( true ) - .01, false, 0 );
+               $tp->recordQueryCompletion( "SQL 3", microtime( true ) - .01, false, 0 ); // warn
+               $tp->recordQueryCompletion( "SQL 4", microtime( true ) - .01, false, 0 ); // warn
+       }
+
+       public function testWriteQueryCount() {
+               $logger = $this->getMockBuilder( LoggerInterface::class )->getMock();
+               $logger->expects( $this->exactly( 2 ) )->method( 'info' );
+
+               $tp = new TransactionProfiler();
+               $tp->setLogger( $logger );
+               $tp->setExpectation( 'writes', 2, __METHOD__ );
+
+               $tp->recordQueryCompletion( "SQL 1", microtime( true ) - .01, false, 0 );
+               $tp->recordQueryCompletion( "SQL 2", microtime( true ) - .01, false, 0 );
+               $tp->recordQueryCompletion( "SQL 3", microtime( true ) - .01, false, 0 );
+               $tp->recordQueryCompletion( "SQL 4", microtime( true ) - .01, false, 0 );
+
+               $tp->transactionWritingIn( 'srv1', 'db1', '123' );
+               $tp->recordQueryCompletion( "SQL 1w", microtime( true ) - .01, true, 2 );
+               $tp->recordQueryCompletion( "SQL 2w", microtime( true ) - .01, true, 5 );
+               $tp->recordQueryCompletion( "SQL 3w", microtime( true ) - .01, true, 3 );
+               $tp->recordQueryCompletion( "SQL 4w", microtime( true ) - .01, true, 1 );
+               $tp->transactionWritingOut( 'srv1', 'db1', '123', 1, 1 );
+       }
+}
index d606142..264e35d 100644 (file)
@@ -37,66 +37,6 @@ class ParserOptionsTest extends MediaWikiTestCase {
                ];
        }
 
-       /**
-        * @dataProvider provideOptionsHashPre30
-        * @param array $usedOptions Used options
-        * @param string $expect Expected value
-        * @param array $options Options to set
-        * @param array $globals Globals to set
-        */
-       public function testOptionsHashPre30( $usedOptions, $expect, $options, $globals = [] ) {
-               global $wgHooks;
-
-               $globals += [
-                       'wgRenderHashAppend' => '',
-                       'wgHooks' => [],
-               ];
-               $globals['wgHooks'] += [
-                       'PageRenderingHash' => [],
-               ] + $wgHooks;
-               $this->setMwGlobals( $globals );
-
-               $popt = new ParserOptions();
-               foreach ( $options as $setter => $value ) {
-                       $popt->$setter( $value );
-               }
-               $this->assertSame( $expect, $popt->optionsHashPre30( $usedOptions ) );
-       }
-
-       public static function provideOptionsHashPre30() {
-               $used = [ 'wrapclass', 'printable' ];
-
-               return [
-                       'Canonical options, nothing used' => [ [], '*!*!*!*!*!*', [] ],
-                       'Canonical options, used some options' => [ $used, '*!*!*!*!*!*', [] ],
-                       'Used some options, non-default values' => [
-                               $used,
-                               '*!*!*!*!*!*!printable=1!wrapclass=foobar',
-                               [
-                                       'setWrapOutputClass' => 'foobar',
-                                       'setIsPrintable' => true,
-                               ]
-                       ],
-                       'Canonical options, nothing used, but with hooks and $wgRenderHashAppend' => [
-                               [],
-                               '*!*!*!*!*!wgRenderHashAppend!*!onPageRenderingHash',
-                               [],
-                               [
-                                       'wgRenderHashAppend' => '!wgRenderHashAppend',
-                                       'wgHooks' => [ 'PageRenderingHash' => [ [ __CLASS__ . '::onPageRenderingHash' ] ] ],
-                               ]
-                       ],
-
-                       // Test weird historical behavior is still weird
-                       'Canonical options, editsection=true used' => [ [ 'editsection' ], '*!*!*!*!*', [
-                               'setEditSection' => true,
-                       ] ],
-                       'Canonical options, editsection=false used' => [ [ 'editsection' ], '*!*!*!*!*!edit=0', [
-                               'setEditSection' => false,
-                       ] ],
-               ];
-       }
-
        /**
         * @dataProvider provideOptionsHash
         * @param array $usedOptions Used options
index 7d12e59..ded56e9 100644 (file)
@@ -41,6 +41,12 @@ class ResourceLoaderFileModuleTest extends ResourceLoaderTestCase {
                                ]
                        ],
 
+                       'htmlTemplateUnknown' => $base + [
+                               'templates' => [
+                                       'templates/notfound.html',
+                               ]
+                       ],
+
                        'aliasedHtmlTemplateModule' => $base + [
                                'templates' => [
                                        'foo.html' => 'templates/template.html',
@@ -126,10 +132,30 @@ class ResourceLoaderFileModuleTest extends ResourceLoaderTestCase {
         */
        public function testDeprecatedModules( $name, $expected ) {
                $modules = self::getModules();
-               $rl = new ResourceLoaderFileModule( $modules[$name] );
-               $rl->setName( $name );
+               $module = new ResourceLoaderFileModule( $modules[$name] );
+               $module->setName( $name );
+               $ctx = $this->getResourceLoaderContext();
+               $this->assertEquals( $module->getScript( $ctx ), $expected );
+       }
+
+       /**
+        * @covers ResourceLoaderFileModule::getScript
+        */
+       public function testGetScript() {
+               $module = new ResourceLoaderFileModule( [
+                       'localBasePath' => __DIR__ . '/../../data/resourceloader',
+                       'scripts' => [ 'script-nosemi.js', 'script-comment.js' ],
+               ] );
+               $module->setName( 'testing' );
                $ctx = $this->getResourceLoaderContext();
-               $this->assertEquals( $rl->getScript( $ctx ), $expected );
+               $this->assertEquals(
+                       "/* eslint-disable */\nmw.foo()\n" .
+                       "\n" .
+                       "/* eslint-disable */\nmw.foo()\n// mw.bar();\n" .
+                       "\n",
+                       $module->getScript( $ctx ),
+                       'scripts are concatenated with a new-line'
+               );
        }
 
        /**
@@ -259,6 +285,10 @@ class ResourceLoaderFileModuleTest extends ResourceLoaderTestCase {
                                        'bar.html' => "<div>goodbye</div>\n",
                                ],
                        ],
+                       [
+                               $modules['htmlTemplateUnknown'],
+                               false,
+                       ],
                ];
        }
 
@@ -270,9 +300,17 @@ class ResourceLoaderFileModuleTest extends ResourceLoaderTestCase {
                $rl = new ResourceLoaderFileModule( $module );
                $rl->setName( 'testing' );
 
-               $this->assertEquals( $rl->getTemplates(), $expected );
+               if ( $expected === false ) {
+                       $this->setExpectedException( MWException::class );
+                       $rl->getTemplates();
+               } else {
+                       $this->assertEquals( $rl->getTemplates(), $expected );
+               }
        }
 
+       /**
+        * @covers ResourceLoaderFileModule::stripBom
+        */
        public function testBomConcatenation() {
                $basePath = __DIR__ . '/../../data/css';
                $testModule = new ResourceLoaderFileModule( [
index 17861d8..6057b97 100644 (file)
@@ -94,6 +94,52 @@ class ResourceLoaderModuleTest extends ResourceLoaderTestCase {
                );
        }
 
+       public static function provideBuildContentScripts() {
+               return [
+                       [
+                               "mw.foo()",
+                               "mw.foo();\n",
+                       ],
+                       [
+                               "mw.foo();",
+                               "mw.foo();",
+                       ],
+                       [
+                               "mw.foo();\n",
+                               "mw.foo();\n",
+                       ],
+                       [
+                               "mw.foo()\n",
+                               "mw.foo()\n;\n",
+                       ],
+                       [
+                               "mw.foo()\n// mw.bar();",
+                               "mw.foo()\n// mw.bar();",
+                       ],
+                       [
+                               "mw.foo()// mw.bar();",
+                               "mw.foo()// mw.bar();",
+                       ],
+               ];
+       }
+
+       /**
+        * @dataProvider provideBuildContentScripts
+        * @covers ResourceLoaderModule::buildContent
+        */
+       public function testBuildContentScripts( $raw, $build, $message = null ) {
+               $context = $this->getResourceLoaderContext();
+               $module = new ResourceLoaderTestModule( [
+                       'script' => $raw
+               ] );
+               $this->assertEquals( $raw, $module->getScript( $context ), 'Raw script' );
+               $this->assertEquals(
+                       [ 'scripts' => $build ],
+                       $module->getModuleContent( $context ),
+                       $message
+               );
+       }
+
        /**
         * @covers ResourceLoaderModule::getRelativePaths
         * @covers ResourceLoaderModule::expandRelativePaths
index 79d0784..b7b2473 100644 (file)
@@ -165,6 +165,14 @@ class ResourceLoaderTest extends ResourceLoaderTestCase {
                $this->assertSame( $expected, $rl->isFileModule( 'test' ) );
        }
 
+       /**
+        * @covers ResourceLoader::isFileModule
+        */
+       public function testIsFileModuleUnknown() {
+               $rl = TestingAccessWrapper::newFromObject( new EmptyResourceLoader() );
+               $this->assertSame( false, $rl->isFileModule( 'unknown' ) );
+       }
+
        /**
         * @covers ResourceLoader::isModuleRegistered
         */
@@ -199,7 +207,7 @@ class ResourceLoaderTest extends ResourceLoaderTestCase {
         * @covers ResourceLoader::getModule
         */
        public function testGetModuleFactory() {
-               $factory = function( array $info ) {
+               $factory = function ( array $info ) {
                        $this->assertArrayHasKey( 'kitten', $info );
                        return new ResourceLoaderTestModule( $info );
                };
@@ -588,6 +596,12 @@ mw.example();
                ] );
                $context = $this->getResourceLoaderContext( [], $rl );
 
+               $this->assertEquals(
+                       '',
+                       $rl->getCombinedVersion( $context, [] ),
+                       'empty list'
+               );
+
                $this->assertEquals(
                        ResourceLoader::makeHash( self::BLANK_VERSION ),
                        $rl->getCombinedVersion( $context, [ 'foo' ] ),
@@ -603,10 +617,94 @@ mw.example();
                );
        }
 
+       public static function provideMakeModuleResponseConcat() {
+               $testcases = [
+                       [
+                               'modules' => [
+                                       'foo' => 'foo()',
+                               ],
+                               'expected' => "foo();\n" . 'mw.loader.state( {
+    "foo": "ready"
+} );',
+                               'minified' => "foo();" . 'mw.loader.state({"foo":"ready"});',
+                               'message' => 'Script without semi-colon',
+                       ],
+                       [
+                               'modules' => [
+                                       'foo' => 'foo()',
+                                       'bar' => 'bar()',
+                               ],
+                               'expected' => "foo();\nbar();\n" . 'mw.loader.state( {
+    "foo": "ready",
+    "bar": "ready"
+} );',
+                               'minified' => "foo();bar();" . 'mw.loader.state({"foo":"ready","bar":"ready"});',
+                               'message' => 'Two scripts without semi-colon',
+                       ],
+                       [
+                               'modules' => [
+                                       'foo' => "foo()\n// bar();"
+                               ],
+                               // FIXME: Invalid code (T162719)
+                               'expected' => "foo()\n// bar();" . 'mw.loader.state( {
+    "foo": "ready"
+} );',
+                               // FIXME: Invalid code (T162719)
+                               'minified' => "foo()" . 'mw.loader.state({"foo":"ready"});',
+                               'message' => 'Script with semi-colon in comment',
+                       ],
+               ];
+               $ret = [];
+               foreach ( $testcases as $i => $case ) {
+                       $ret["#$i"] = [
+                               $case['modules'],
+                               $case['expected'],
+                               true, // debug
+                               $case['message'],
+                       ];
+                       $ret["#$i (minified)"] = [
+                               $case['modules'],
+                               $case['minified'],
+                               false, // debug
+                               $case['message'],
+                       ];
+               }
+               return $ret;
+       }
+
+       /**
+        * Verify how multiple scripts and mw.loader.state() calls are concatenated.
+        *
+        * @dataProvider provideMakeModuleResponseConcat
+        * @covers ResourceLoader::makeModuleResponse
+        */
+       public function testMakeModuleResponseConcat( $scripts, $expected, $debug, $message = null ) {
+               $rl = new EmptyResourceLoader();
+               $modules = array_map( function ( $script ) {
+                       return self::getSimpleModuleMock( $script );
+               }, $scripts );
+               $rl->register( $modules );
+
+               $this->setMwGlobals( 'wgResourceLoaderDebug', $debug );
+               $context = $this->getResourceLoaderContext(
+                       [
+                               'modules' => implode( '|', array_keys( $modules ) ),
+                               'only' => 'scripts',
+                       ],
+                       $rl
+               );
+
+               $response = $rl->makeModuleResponse( $context, $modules );
+               $this->assertCount( 0, $rl->getErrors(), 'Error count' );
+               $this->assertEquals( $expected, $response, $message ?: 'Response' );
+       }
+
        /**
         * Verify that when building module content in a load.php response,
         * an exception from one module will not break script output from
         * other modules.
+        *
+        * @covers ResourceLoader::makeModuleResponse
         */
        public function testMakeModuleResponseError() {
                $modules = [
@@ -643,6 +741,8 @@ mw.example();
         * Verify that when building the startup module response,
         * an exception from one module class will not break the entire
         * startup module response. See T152266.
+        *
+        * @covers ResourceLoader::makeModuleResponse
         */
        public function testMakeModuleResponseStartupError() {
                $rl = new EmptyResourceLoader();
index fbbcee5..4c5bab3 100644 (file)
@@ -185,7 +185,7 @@ class SearchEnginePrefixTest extends MediaWikiLangTestCase {
        public function testSearch( array $case ) {
                $this->search->setLimitOffset( 3 );
                $results = $this->search->defaultPrefixSearch( $case['query'] );
-               $results = array_map( function( Title $t ) {
+               $results = array_map( function ( Title $t ) {
                        return $t->getPrefixedText();
                }, $results );
 
@@ -203,7 +203,7 @@ class SearchEnginePrefixTest extends MediaWikiLangTestCase {
        public function testSearchWithOffset( array $case ) {
                $this->search->setLimitOffset( 3, 1 );
                $results = $this->search->defaultPrefixSearch( $case['query'] );
-               $results = array_map( function( Title $t ) {
+               $results = array_map( function ( Title $t ) {
                        return $t->getPrefixedText();
                }, $results );
 
@@ -349,7 +349,7 @@ class SearchEnginePrefixTest extends MediaWikiLangTestCase {
                $search->setLimitOffset( 3 );
                $results = $search->completionSearch( $case['query'] );
 
-               $results = $results->map( function( SearchSuggestion $s ) {
+               $results = $results->map( function ( SearchSuggestion $s ) {
                        return $s->getText();
                } );
 
index c74c893..c945d1e 100644 (file)
@@ -121,7 +121,25 @@ class SearchEngineTest extends MediaWikiLangTestCase {
                $this->assertEquals(
                        [ 'Smithee' ],
                        $this->fetchIds( $this->search->searchText( 'smithee' ) ),
-                       "Plain search failed" );
+                       "Plain search" );
+       }
+
+       public function testPhraseSearch() {
+               $res = $this->search->searchText( '"smithee is one who smiths"' );
+               $this->assertEquals(
+                       [ 'Smithee' ],
+                       $this->fetchIds( $res ),
+                       "Search a phrase" );
+               $res = $this->search->searchText( '"smithee is one who smiths"' );
+               $match = $res->next();
+               $terms = [ 'smithee', 'is', 'one', 'who', 'smiths' ];
+               $snippet = "";
+               foreach ( $terms as $term ) {
+                       $snippet .= " <span class='searchmatch'>" . $term . "</span>";
+               }
+               $this->assertRegexp( '/' . preg_quote( $snippet, '/' ) . '/',
+                       $match->getTextSnippet( $res->termMatches() ),
+                       "Highlight a phrase search" );
        }
 
        public function testTextPowerSearch() {
@@ -132,7 +150,7 @@ class SearchEngineTest extends MediaWikiLangTestCase {
                                'Talk:Not Main Page',
                        ],
                        $this->fetchIds( $this->search->searchText( 'smithee' ) ),
-                       "Power search failed" );
+                       "Power search" );
        }
 
        public function testTitleSearch() {
@@ -142,7 +160,7 @@ class SearchEngineTest extends MediaWikiLangTestCase {
                                'Smithee',
                        ],
                        $this->fetchIds( $this->search->searchTitle( 'smithee' ) ),
-                       "Title search failed" );
+                       "Title search" );
        }
 
        public function testTextTitlePowerSearch() {
@@ -154,7 +172,7 @@ class SearchEngineTest extends MediaWikiLangTestCase {
                                'Talk:Smithee',
                        ],
                        $this->fetchIds( $this->search->searchTitle( 'smithee' ) ),
-                       "Title power search failed" );
+                       "Title power search" );
        }
 
        /**
index 60559fc..28c69fa 100644 (file)
@@ -43,7 +43,7 @@ class SearchSuggestionSetTest extends \PHPUnit_Framework_TestCase {
                $this->assertEquals( 3, $set->getBestScore() );
                $this->assertEquals( 1, $suggestion->getScore() );
 
-               $scores = $set->map( function( $s ) {
+               $scores = $set->map( function ( $s ) {
                        return $s->getScore();
                } );
                $sorted = $scores;
@@ -80,7 +80,7 @@ class SearchSuggestionSetTest extends \PHPUnit_Framework_TestCase {
                $this->assertEquals( 6, $set->getBestScore() );
                $this->assertEquals( 6, $suggestion->getScore() );
 
-               $scores = $set->map( function( $s ) {
+               $scores = $set->map( function ( $s ) {
                        return $s->getScore();
                } );
                $sorted = $scores;
index 7e37907..adf95e6 100644 (file)
@@ -101,7 +101,7 @@ class CachingSiteStoreTest extends MediaWikiTestCase {
 
                $dbSiteStore->expects( $this->any() )
                        ->method( 'getSites' )
-                       ->will( $this->returnCallback( function() {
+                       ->will( $this->returnCallback( function () {
                                $siteList = new SiteList();
                                $siteList->setSite( $this->getTestSite() );
 
index 4e9d826..94924ee 100644 (file)
@@ -183,7 +183,7 @@ class SpecialSearchTest extends MediaWikiTestCase {
                $rewrittenQuery,
                array $resultTitles
        ) {
-               $results = array_map( function( $title ) {
+               $results = array_map( function ( $title ) {
                        return SearchResult::newFromTitle( $title );
                }, $resultTitles );
 
index 6506d58..017e97d 100644 (file)
@@ -36,7 +36,7 @@ class BatchRowUpdateTest extends MediaWikiTestCase {
                $batchSize = 2;
                $reader = new BatchRowIterator( $db, 'some_table', 'id_field', $batchSize );
 
-               $response = $this->genSelectResult( $batchSize, /*numRows*/ 5, function() {
+               $response = $this->genSelectResult( $batchSize, /*numRows*/ 5, function () {
                        static $i = 0;
                        return [ 'id_field' => ++$i ];
                } );
@@ -171,7 +171,7 @@ class BatchRowUpdateTest extends MediaWikiTestCase {
        public function testReaderSelectConditionsMultiplePrimaryKeys(
                $message, $expectedSecondIteration, $primaryKeys, $batchSize = 3
        ) {
-               $results = $this->genSelectResult( $batchSize, $batchSize * 3, function() {
+               $results = $this->genSelectResult( $batchSize, $batchSize * 3, function () {
                        static $i = 0, $j = 100, $k = 1000;
                        return [ 'id_field' => ++$i, 'foo' => ++$j, 'bar' => ++$k ];
                } );
@@ -204,7 +204,7 @@ class BatchRowUpdateTest extends MediaWikiTestCase {
                        ->will( $this->consecutivelyReturnFromSelect( $retvals ) );
                $db->expects( $this->any() )
                        ->method( 'addQuotes' )
-                       ->will( $this->returnCallback( function( $value ) {
+                       ->will( $this->returnCallback( function ( $value ) {
                                return "'$value'"; // not real quoting: doesn't matter in test
                        } ) );
 
index 13c8c3d..5212ee9 100644 (file)
 /* eslint-disable camelcase */
 ( function ( mw, $ ) {
+       var filterDefinition = [ {
+                       name: 'group1',
+                       type: 'send_unselected_if_any',
+                       filters: [
+                               {
+                                       name: 'filter1', label: 'group1filter1-label', description: 'group1filter1-desc',
+                                       default: true,
+                                       conflicts: [ { group: 'group2' } ],
+                                       subset: [
+                                               {
+                                                       group: 'group1',
+                                                       filter: 'filter2'
+                                               },
+                                               {
+                                                       group: 'group1',
+                                                       filter: 'filter3'
+                                               }
+                                       ]
+                               },
+                               {
+                                       name: 'filter2', label: 'group1filter2-label', description: 'group1filter2-desc',
+                                       conflicts: [ { group: 'group2', filter: 'filter6' } ],
+                                       subset: [
+                                               {
+                                                       group: 'group1',
+                                                       filter: 'filter3'
+                                               }
+                                       ]
+                               },
+                               { name: 'filter3', label: 'group1filter3-label', description: 'group1filter3-desc', default: true }
+                       ]
+               }, {
+                       name: 'group2',
+                       type: 'send_unselected_if_any',
+                       fullCoverage: true,
+                       conflicts: [ { group: 'group1', filter: 'filter1' } ],
+                       filters: [
+                               { name: 'filter4', label: 'group2filter4-label', description: 'group2filter4-desc' },
+                               { name: 'filter5', label: 'group2filter5-label', description: 'group2filter5-desc', default: true },
+                               {
+                                       name: 'filter6', label: 'group2filter6-label', description: 'group2filter6-desc',
+                                       conflicts: [ { group: 'group1', filter: 'filter2' } ]
+                               }
+                       ]
+               }, {
+                       name: 'group3',
+                       type: 'string_options',
+                       separator: ',',
+                       default: 'filter8',
+                       filters: [
+                               { name: 'filter7', label: 'group3filter7-label', description: 'group3filter7-desc' },
+                               { name: 'filter8', label: 'group3filter8-label', description: 'group3filter8-desc' },
+                               { name: 'filter9', label: 'group3filter9-label', description: 'group3filter9-desc' }
+                       ]
+               }, {
+                       name: 'group4',
+                       type: 'single_option',
+                       default: 'option1',
+                       filters: [
+                               { name: 'option1', label: 'group4option1-label', description: 'group4option1-desc' },
+                               { name: 'option2', label: 'group4option2-label', description: 'group4option2-desc' },
+                               { name: 'option3', label: 'group4option3-label', description: 'group4option3-desc' }
+                       ]
+               } ],
+               viewsDefinition = {
+                       namespaces: {
+                               label: 'Namespaces',
+                               trigger: ':',
+                               groups: [ {
+                                       name: 'namespace',
+                                       label: 'Namespaces',
+                                       type: 'string_options',
+                                       separator: ';',
+                                       filters: [
+                                               { name: 0, label: 'Main' },
+                                               { name: 1, label: 'Talk' },
+                                               { name: 2, label: 'User' },
+                                               { name: 3, label: 'User talk' }
+                                       ]
+                               } ]
+                       }
+               },
+               defaultParameters = {
+                       filter1: '1',
+                       filter2: '0',
+                       filter3: '1',
+                       filter4: '0',
+                       filter5: '1',
+                       filter6: '0',
+                       group3: 'filter8',
+                       group4: 'option1',
+                       namespace: ''
+               },
+               baseParamRepresentation = {
+                       filter1: '0',
+                       filter2: '0',
+                       filter3: '0',
+                       filter4: '0',
+                       filter5: '0',
+                       filter6: '0',
+                       group3: '',
+                       group4: '',
+                       namespace: ''
+               },
+               baseFilterRepresentation = {
+                       group1__filter1: false,
+                       group1__filter2: false,
+                       group1__filter3: false,
+                       group2__filter4: false,
+                       group2__filter5: false,
+                       group2__filter6: false,
+                       group3__filter7: false,
+                       group3__filter8: false,
+                       group3__filter9: false,
+                       group4__option1: false,
+                       group4__option2: false,
+                       group4__option3: false,
+                       namespace__0: false,
+                       namespace__1: false,
+                       namespace__2: false,
+                       namespace__3: false
+               },
+               baseFullFilterState = {
+                       group1__filter1: { selected: false, conflicted: false, included: false },
+                       group1__filter2: { selected: false, conflicted: false, included: false },
+                       group1__filter3: { selected: false, conflicted: false, included: false },
+                       group2__filter4: { selected: false, conflicted: false, included: false },
+                       group2__filter5: { selected: false, conflicted: false, included: false },
+                       group2__filter6: { selected: false, conflicted: false, included: false },
+                       group3__filter7: { selected: false, conflicted: false, included: false },
+                       group3__filter8: { selected: false, conflicted: false, included: false },
+                       group3__filter9: { selected: false, conflicted: false, included: false },
+                       group4__option1: { selected: false, conflicted: false, included: false },
+                       group4__option2: { selected: false, conflicted: false, included: false },
+                       group4__option3: { selected: false, conflicted: false, included: false },
+                       namespace__0: { selected: false, conflicted: false, included: false },
+                       namespace__1: { selected: false, conflicted: false, included: false },
+                       namespace__2: { selected: false, conflicted: false, included: false },
+                       namespace__3: { selected: false, conflicted: false, included: false }
+               };
+
        QUnit.module( 'mediawiki.rcfilters - FiltersViewModel', QUnit.newMwEnvironment( {
                messages: {
-                       'group1filter1-label': 'Group 1: Filter 1',
+                       'group1filter1-label': 'Group 1: Filter 1 title',
                        'group1filter1-desc': 'Description of Filter 1 in Group 1',
-                       'group1filter2-label': 'Group 1: Filter 2',
+                       'group1filter2-label': 'Group 1: Filter 2 title',
                        'group1filter2-desc': 'Description of Filter 2 in Group 1',
-                       'group2filter1-label': 'Group 2: Filter 1',
-                       'group2filter1-desc': 'Description of Filter 1 in Group 2',
-                       'group2filter2-label': 'xGroup 2: Filter 2',
-                       'group2filter2-desc': 'Description of Filter 2 in Group 2'
+                       'group1filter3-label': 'Group 1: Filter 3',
+                       'group1filter3-desc': 'Description of Filter 3 in Group 1',
+
+                       'group2filter4-label': 'Group 2: Filter 4 title',
+                       'group2filter4-desc': 'Description of Filter 4 in Group 2',
+                       'group2filter5-label': 'Group 2: Filter 5',
+                       'group2filter5-desc': 'Description of Filter 5 in Group 2',
+                       'group2filter6-label': 'xGroup 2: Filter 6',
+                       'group2filter6-desc': 'Description of Filter 6 in Group 2'
                },
                config: {
                        wgStructuredChangeFiltersEnableExperimentalViews: true
        } ) );
 
        QUnit.test( 'Setting up filters', function ( assert ) {
-               var definition = [ {
-                               name: 'group1',
-                               title: 'Group 1',
-                               type: 'send_unselected_if_any',
-                               filters: [
-                                       {
-                                               name: 'filter1',
-                                               label: 'Group 1: Filter 1',
-                                               description: 'Description of Filter 1 in Group 1'
-                                       },
-                                       {
-                                               name: 'filter2',
-                                               label: 'Group 1: Filter 2',
-                                               description: 'Description of Filter 2 in Group 1'
-                                       }
-                               ]
-                       }, {
-                               name: 'group2',
-                               title: 'Group 2',
-                               type: 'send_unselected_if_any',
-                               filters: [
-                                       {
-                                               name: 'filter1',
-                                               label: 'Group 2: Filter 1',
-                                               description: 'Description of Filter 1 in Group 2'
-                                       },
-                                       {
-                                               name: 'filter2',
-                                               label: 'Group 2: Filter 2',
-                                               description: 'Description of Filter 2 in Group 2'
-                                       }
-                               ]
-                       }, {
-                               name: 'group3',
-                               title: 'Group 3',
-                               type: 'string_options',
-                               filters: [
-                                       {
-                                               name: 'filter1',
-                                               label: 'Group 3: Filter 1',
-                                               description: 'Description of Filter 1 in Group 3'
-                                       },
-                                       {
-                                               name: 'filter2',
-                                               label: 'Group 3: Filter 2',
-                                               description: 'Description of Filter 2 in Group 3'
-                                       }
-                               ]
-                       } ],
-                       views = {
-                               namespaces: {
-                                       label: 'Namespaces',
-                                       trigger: ':',
-                                       groups: [ {
-                                               name: 'namespace',
-                                               label: 'Namespaces',
-                                               separator: ';',
-                                               items: [
-                                                       { name: 0, label: 'Main' },
-                                                       { name: 1, label: 'Talk' },
-                                                       { name: 2, label: 'User' },
-                                                       { name: 3, label: 'User talk' }
-                                               ]
-                                       } ]
-                               }
-                       },
-                       model = new mw.rcfilters.dm.FiltersViewModel();
+               var model = new mw.rcfilters.dm.FiltersViewModel();
 
-               model.initializeFilters( definition, views );
+               model.initializeFilters( filterDefinition, viewsDefinition );
 
+               // Test that all items were created
                assert.ok(
-                       model.getItemByName( 'group1__filter1' ) instanceof mw.rcfilters.dm.FilterItem &&
-                       model.getItemByName( 'group1__filter2' ) instanceof mw.rcfilters.dm.FilterItem &&
-                       model.getItemByName( 'group2__filter1' ) instanceof mw.rcfilters.dm.FilterItem &&
-                       model.getItemByName( 'group2__filter2' ) instanceof mw.rcfilters.dm.FilterItem &&
-                       model.getItemByName( 'group3__filter1' ) instanceof mw.rcfilters.dm.FilterItem &&
-                       model.getItemByName( 'group3__filter2' ) instanceof mw.rcfilters.dm.FilterItem,
-                       model.getItemByName( 'namespace__0' ) instanceof mw.rcfilters.dm.FilterItem,
-                       model.getItemByName( 'namespace__1' ) instanceof mw.rcfilters.dm.FilterItem,
-                       model.getItemByName( 'namespace__2' ) instanceof mw.rcfilters.dm.FilterItem,
-                       model.getItemByName( 'namespace__3' ) instanceof mw.rcfilters.dm.FilterItem,
+                       Object.keys( baseFilterRepresentation ).every( function ( filterName ) {
+                               return model.getItemByName( filterName ) instanceof mw.rcfilters.dm.FilterItem;
+                       } ),
                        'Filters instantiated and stored correctly'
                );
 
                assert.deepEqual(
                        model.getSelectedState(),
-                       {
-                               group1__filter1: false,
-                               group1__filter2: false,
-                               group2__filter1: false,
-                               group2__filter2: false,
-                               group3__filter1: false,
-                               group3__filter2: false,
-                               namespace__0: false,
-                               namespace__1: false,
-                               namespace__2: false,
-                               namespace__3: false
-                       },
+                       baseFilterRepresentation,
                        'Initial state of filters'
                );
 
                model.toggleFiltersSelected( {
                        group1__filter1: true,
-                       group2__filter2: true,
-                       group3__filter1: true
+                       group2__filter5: true,
+                       group3__filter7: true
                } );
                assert.deepEqual(
                        model.getSelectedState(),
-                       {
+                       $.extend( true, {}, baseFilterRepresentation, {
                                group1__filter1: true,
-                               group1__filter2: false,
-                               group2__filter1: false,
-                               group2__filter2: true,
-                               group3__filter1: true,
-                               group3__filter2: false,
-                               namespace__0: false,
-                               namespace__1: false,
-                               namespace__2: false,
-                               namespace__3: false
-                       },
+                               group2__filter5: true,
+                               group3__filter7: true
+                       } ),
                        'Updating filter states correctly'
                );
        } );
 
        QUnit.test( 'Default filters', function ( assert ) {
-               var definition = [ {
-                               name: 'group1',
-                               title: 'Group 1',
-                               type: 'send_unselected_if_any',
-                               filters: [
-                                       {
-                                               name: 'hidefilter1',
-                                               label: 'Show filter 1',
-                                               description: 'Description of Filter 1 in Group 1',
-                                               default: true
-                                       },
-                                       {
-                                               name: 'hidefilter2',
-                                               label: 'Show filter 2',
-                                               description: 'Description of Filter 2 in Group 1'
-                                       },
-                                       {
-                                               name: 'hidefilter3',
-                                               label: 'Show filter 3',
-                                               description: 'Description of Filter 3 in Group 1',
-                                               default: true
-                                       }
-                               ]
-                       }, {
-                               name: 'group2',
-                               title: 'Group 2',
-                               type: 'send_unselected_if_any',
-                               filters: [
-                                       {
-                                               name: 'hidefilter4',
-                                               label: 'Show filter 4',
-                                               description: 'Description of Filter 1 in Group 2'
-                                       },
-                                       {
-                                               name: 'hidefilter5',
-                                               label: 'Show filter 5',
-                                               description: 'Description of Filter 2 in Group 2',
-                                               default: true
-                                       },
-                                       {
-                                               name: 'hidefilter6',
-                                               label: 'Show filter 6',
-                                               description: 'Description of Filter 3 in Group 2'
-                                       }
-                               ]
-                       }, {
+               var model = new mw.rcfilters.dm.FiltersViewModel();
 
-                               name: 'group3',
-                               title: 'Group 3',
-                               type: 'string_options',
-                               separator: ',',
-                               default: 'filter8',
-                               filters: [
-                                       {
-                                               name: 'filter7',
-                                               label: 'Group 3: Filter 1',
-                                               description: 'Description of Filter 1 in Group 3'
-                                       },
-                                       {
-                                               name: 'filter8',
-                                               label: 'Group 3: Filter 2',
-                                               description: 'Description of Filter 2 in Group 3'
-                                       },
-                                       {
-                                               name: 'filter9',
-                                               label: 'Group 3: Filter 3',
-                                               description: 'Description of Filter 3 in Group 3'
-                                       }
-                               ]
-                       } ],
-                       model = new mw.rcfilters.dm.FiltersViewModel();
-
-               model.initializeFilters( definition );
+               model.initializeFilters( filterDefinition, viewsDefinition );
 
                // Empty query = only default values
                assert.deepEqual(
                        model.getDefaultParams(),
-                       {
-                               hidefilter1: '1',
-                               hidefilter2: '0',
-                               hidefilter3: '1',
-                               hidefilter4: '0',
-                               hidefilter5: '1',
-                               hidefilter6: '0',
-                               group3: 'filter8'
-                       },
+                       defaultParameters,
                        'Default parameters are stored properly per filter and group'
                );
        } );
 
        QUnit.test( 'Finding matching filters', function ( assert ) {
                var matches,
-                       definition = [ {
-                               name: 'group1',
-                               title: 'Group 1 title',
-                               type: 'send_unselected_if_any',
-                               filters: [
-                                       {
-                                               name: 'filter1',
-                                               label: 'group1filter1-label',
-                                               description: 'group1filter1-desc'
-                                       },
-                                       {
-                                               name: 'filter2',
-                                               label: 'group1filter2-label',
-                                               description: 'group1filter2-desc'
-                                       }
-                               ]
-                       }, {
-                               name: 'group2',
-                               title: 'Group 2 title',
-                               type: 'send_unselected_if_any',
-                               filters: [
-                                       {
-                                               name: 'filter1',
-                                               label: 'group2filter1-label',
-                                               description: 'group2filter1-desc'
-                                       },
-                                       {
-                                               name: 'filter2',
-                                               label: 'group2filter2-label',
-                                               description: 'group2filter2-desc'
-                                       }
-                               ]
-                       } ],
-                       views = {
-                               namespaces: {
-                                       label: 'Namespaces',
-                                       trigger: ':',
-                                       groups: [ {
-                                               name: 'namespace',
-                                               label: 'Namespaces',
-                                               separator: ';',
-                                               items: [
-                                                       { name: 0, label: 'Main' },
-                                                       { name: 1, label: 'Talk' },
-                                                       { name: 2, label: 'User' },
-                                                       { name: 3, label: 'User talk' }
-                                               ]
-                                       } ]
-                               }
-                       },
                        testCases = [
                                {
                                        query: 'group',
                                        expectedMatches: {
-                                               group1: [ 'group1__filter1', 'group1__filter2' ],
-                                               group2: [ 'group2__filter1' ]
+                                               group1: [ 'group1__filter1', 'group1__filter2', 'group1__filter3' ],
+                                               group2: [ 'group2__filter4', 'group2__filter5' ]
                                        },
                                        reason: 'Finds filters starting with the query string'
                                },
                                {
-                                       query: 'filter 2 in group',
+                                       query: 'in Group 2',
                                        expectedMatches: {
-                                               group1: [ 'group1__filter2' ],
-                                               group2: [ 'group2__filter2' ]
+                                               group2: [ 'group2__filter4', 'group2__filter5', 'group2__filter6' ]
                                        },
                                        reason: 'Finds filters containing the query string in their description'
                                },
                                        query: 'title',
                                        expectedMatches: {
                                                group1: [ 'group1__filter1', 'group1__filter2' ],
-                                               group2: [ 'group2__filter1', 'group2__filter2' ]
+                                               group2: [ 'group2__filter4' ]
                                        },
                                        reason: 'Finds filters containing the query string in their group title'
                                },
                                        expectedMatches: {
                                                namespace: [ 'namespace__0' ]
                                        },
-                                       reason: 'Finds namespaces when using : prefix'
+                                       reason: 'Finds item in view when a prefix is used'
                                },
                                {
                                        query: ':group',
                                return result;
                        };
 
-               model.initializeFilters( definition, views );
+               model.initializeFilters( filterDefinition, viewsDefinition );
 
                testCases.forEach( function ( testCase ) {
                        matches = model.findMatches( testCase.query );
        } );
 
        QUnit.test( 'getParametersFromFilters', function ( assert ) {
-               var definition = [ {
-                               name: 'group1',
-                               title: 'Group 1',
-                               type: 'send_unselected_if_any',
-                               filters: [
-                                       {
-                                               name: 'hidefilter1',
-                                               label: 'Group 1: Filter 1',
-                                               description: 'Description of Filter 1 in Group 1'
-                                       },
-                                       {
-                                               name: 'hidefilter2',
-                                               label: 'Group 1: Filter 2',
-                                               description: 'Description of Filter 2 in Group 1'
-                                       },
-                                       {
-                                               name: 'hidefilter3',
-                                               label: 'Group 1: Filter 3',
-                                               description: 'Description of Filter 3 in Group 1'
-                                       }
-                               ]
-                       }, {
-                               name: 'group2',
-                               title: 'Group 2',
-                               type: 'send_unselected_if_any',
-                               filters: [
-                                       {
-                                               name: 'hidefilter4',
-                                               label: 'Group 2: Filter 1',
-                                               description: 'Description of Filter 1 in Group 2'
-                                       },
-                                       {
-                                               name: 'hidefilter5',
-                                               label: 'Group 2: Filter 2',
-                                               description: 'Description of Filter 2 in Group 2'
-                                       },
-                                       {
-                                               name: 'hidefilter6',
-                                               label: 'Group 2: Filter 3',
-                                               description: 'Description of Filter 3 in Group 2'
-                                       }
-                               ]
-                       }, {
-                               name: 'group3',
-                               title: 'Group 3',
-                               type: 'string_options',
-                               separator: ',',
-                               filters: [
-                                       {
-                                               name: 'filter7',
-                                               label: 'Group 3: Filter 1',
-                                               description: 'Description of Filter 1 in Group 3'
-                                       },
-                                       {
-                                               name: 'filter8',
-                                               label: 'Group 3: Filter 2',
-                                               description: 'Description of Filter 2 in Group 3'
-                                       },
-                                       {
-                                               name: 'filter9',
-                                               label: 'Group 3: Filter 3',
-                                               description: 'Description of Filter 3 in Group 3'
-                                       }
-                               ]
-                       } ],
-                       model = new mw.rcfilters.dm.FiltersViewModel();
+               var model = new mw.rcfilters.dm.FiltersViewModel();
 
-               model.initializeFilters( definition );
+               model.initializeFilters( filterDefinition, viewsDefinition );
 
                // Starting with all filters unselected
                assert.deepEqual(
                        model.getParametersFromFilters(),
-                       {
-                               hidefilter1: '0',
-                               hidefilter2: '0',
-                               hidefilter3: '0',
-                               hidefilter4: '0',
-                               hidefilter5: '0',
-                               hidefilter6: '0',
-                               group3: ''
-                       },
+                       baseParamRepresentation,
                        'Unselected filters return all parameters falsey or \'\'.'
                );
 
                // Select 1 filter
                model.toggleFiltersSelected( {
-                       group1__hidefilter1: true,
-                       group1__hidefilter2: false,
-                       group1__hidefilter3: false,
-                       group2__hidefilter4: false,
-                       group2__hidefilter5: false,
-                       group2__hidefilter6: false
+                       group1__filter1: true
                } );
                // Only one filter in one group
                assert.deepEqual(
                        model.getParametersFromFilters(),
-                       {
+                       $.extend( true, {}, baseParamRepresentation, {
                                // Group 1 (one selected, the others are true)
-                               hidefilter1: '0',
-                               hidefilter2: '1',
-                               hidefilter3: '1',
-                               // Group 2 (nothing is selected, all false)
-                               hidefilter4: '0',
-                               hidefilter5: '0',
-                               hidefilter6: '0',
-                               group3: ''
-                       },
+                               filter2: '1',
+                               filter3: '1'
+                       } ),
                        'One filter in one "send_unselected_if_any" group returns the other parameters truthy.'
                );
 
                // Select 2 filters
                model.toggleFiltersSelected( {
-                       group1__hidefilter1: true,
-                       group1__hidefilter2: true,
-                       group1__hidefilter3: false,
-                       group2__hidefilter4: false,
-                       group2__hidefilter5: false,
-                       group2__hidefilter6: false
+                       group1__filter1: true,
+                       group1__filter2: true
                } );
                // Two selected filters in one group
                assert.deepEqual(
                        model.getParametersFromFilters(),
-                       {
-                               // Group 1 (two selected, the others are true)
-                               hidefilter1: '0',
-                               hidefilter2: '0',
-                               hidefilter3: '1',
-                               // Group 2 (nothing is selected, all false)
-                               hidefilter4: '0',
-                               hidefilter5: '0',
-                               hidefilter6: '0',
-                               group3: ''
-                       },
+                       $.extend( true, {}, baseParamRepresentation, {
+                               // Group 1 (two selected, the other is true)
+                               filter3: '1'
+                       } ),
                        'Two filters in one "send_unselected_if_any" group returns the other parameters truthy.'
                );
 
                // Select 3 filters
                model.toggleFiltersSelected( {
-                       group1__hidefilter1: true,
-                       group1__hidefilter2: true,
-                       group1__hidefilter3: true,
-                       group2__hidefilter4: false,
-                       group2__hidefilter5: false,
-                       group2__hidefilter6: false
+                       group1__filter1: true,
+                       group1__filter2: true,
+                       group1__filter3: true
                } );
                // All filters of the group are selected == this is the same as not selecting any
                assert.deepEqual(
                        model.getParametersFromFilters(),
-                       {
-                               // Group 1 (all selected, all false)
-                               hidefilter1: '0',
-                               hidefilter2: '0',
-                               hidefilter3: '0',
-                               // Group 2 (nothing is selected, all false)
-                               hidefilter4: '0',
-                               hidefilter5: '0',
-                               hidefilter6: '0',
-                               group3: ''
-                       },
+                       baseParamRepresentation,
                        'All filters selected in one "send_unselected_if_any" group returns all parameters falsy.'
                );
 
                // All filters of the group are selected == this is the same as not selecting any
                assert.deepEqual(
                        model.getParametersFromFilters(),
-                       {
-                               // Group 1 (all selected, all)
-                               hidefilter1: '0',
-                               hidefilter2: '0',
-                               hidefilter3: '0',
-                               // Group 2 (nothing is selected, all false)
-                               hidefilter4: '0',
-                               hidefilter5: '0',
-                               hidefilter6: '0',
+                       $.extend( true, {}, baseParamRepresentation, {
                                group3: 'filter7'
-                       },
+                       } ),
                        'One filter selected in "string_option" group returns that filter in the value.'
                );
 
                // All filters of the group are selected == this is the same as not selecting any
                assert.deepEqual(
                        model.getParametersFromFilters(),
-                       {
-                               // Group 1 (all selected, all)
-                               hidefilter1: '0',
-                               hidefilter2: '0',
-                               hidefilter3: '0',
-                               // Group 2 (nothing is selected, all false)
-                               hidefilter4: '0',
-                               hidefilter5: '0',
-                               hidefilter6: '0',
+                       $.extend( true, {}, baseParamRepresentation, {
                                group3: 'filter7,filter8'
-                       },
+                       } ),
                        'Two filters selected in "string_option" group returns those filters in the value.'
                );
 
                // All filters of the group are selected == this is the same as not selecting any
                assert.deepEqual(
                        model.getParametersFromFilters(),
-                       {
-                               // Group 1 (all selected, all)
-                               hidefilter1: '0',
-                               hidefilter2: '0',
-                               hidefilter3: '0',
-                               // Group 2 (nothing is selected, all false)
-                               hidefilter4: '0',
-                               hidefilter5: '0',
-                               hidefilter6: '0',
+                       $.extend( true, {}, baseParamRepresentation, {
                                group3: 'all'
-                       },
+                       } ),
                        'All filters selected in "string_option" group returns \'all\'.'
                );
 
+               // Reset
+               model = new mw.rcfilters.dm.FiltersViewModel();
+               model.initializeFilters( filterDefinition, viewsDefinition );
+
+               // Select an option from single_option group
+               model.toggleFiltersSelected( {
+                       group4__option2: true
+               } );
+               // All filters of the group are selected == this is the same as not selecting any
+               assert.deepEqual(
+                       model.getParametersFromFilters(),
+                       $.extend( true, {}, baseParamRepresentation, {
+                               group4: 'option2'
+                       } ),
+                       'Selecting an option from "single_option" group returns that option as a value.'
+               );
+
+               // Select a different option from single_option group
+               model.toggleFiltersSelected( {
+                       group4__option3: true
+               } );
+               // All filters of the group are selected == this is the same as not selecting any
+               assert.deepEqual(
+                       model.getParametersFromFilters(),
+                       $.extend( true, {}, baseParamRepresentation, {
+                               group4: 'option3'
+                       } ),
+                       'Selecting a different option from "single_option" group changes the selection.'
+               );
        } );
 
        QUnit.test( 'getParametersFromFilters (custom object)', function ( assert ) {
+               // This entire test uses different base definition than the global one
+               // on purpose, to verify that the values inserted as a custom object
+               // are the ones we expect in return
                var originalState,
                        model = new mw.rcfilters.dm.FiltersViewModel(),
                        definition = [ {
                                        { name: 'filter8', label: 'Hide filter 8', description: '' },
                                        { name: 'filter9', label: 'Hide filter 9', description: '' }
                                ]
+                       }, {
+                               name: 'group4',
+                               title: 'Group 4',
+                               type: 'single_option',
+                               filters: [
+                                       { name: 'filter10', label: 'Hide filter 10', description: '' },
+                                       { name: 'filter11', label: 'Hide filter 11', description: '' },
+                                       { name: 'filter12', label: 'Hide filter 12', description: '' }
+                               ]
                        } ],
+                       baseResult = {
+                               hidefilter1: '0',
+                               hidefilter2: '0',
+                               hidefilter3: '0',
+                               hidefilter4: '0',
+                               hidefilter5: '0',
+                               hidefilter6: '0',
+                               group3: '',
+                               group4: ''
+                       },
                        cases = [
                                {
                                        // This is mocking the cases above, both
                                                group3__filter8: true,
                                                group3__filter9: false
                                        },
-                                       expected: {
+                                       expected: $.extend( true, {}, baseResult, {
                                                // Group 1 (two selected, the others are true)
-                                               hidefilter1: '0',
-                                               hidefilter2: '0',
                                                hidefilter3: '1',
-                                               // Group 2 (nothing is selected, all false)
-                                               hidefilter4: '0',
-                                               hidefilter5: '0',
-                                               hidefilter6: '0',
+                                               // Group 3 (two selected)
                                                group3: 'filter7,filter8'
-                                       },
+                                       } ),
                                        msg: 'Given an explicit (complete) filter state object, the result is the same as if the object given represented the model state.'
                                },
                                {
                                        input: {
                                                group1__hidefilter1: 1
                                        },
-                                       expected: {
+                                       expected: $.extend( true, {}, baseResult, {
                                                // Group 1 (one selected, the others are true)
-                                               hidefilter1: '0',
                                                hidefilter2: '1',
-                                               hidefilter3: '1',
-                                               // Group 2 (nothing is selected, all false)
-                                               hidefilter4: '0',
-                                               hidefilter5: '0',
-                                               hidefilter6: '0',
-                                               group3: ''
-                                       },
+                                               hidefilter3: '1'
+                                       } ),
                                        msg: 'Given an explicit (incomplete) filter state object, the result is the same as if the object give represented the model state.'
                                },
                                {
-                                       input: {},
-                                       expected: {
-                                               hidefilter1: '0',
-                                               hidefilter2: '0',
-                                               hidefilter3: '0',
-                                               hidefilter4: '0',
-                                               hidefilter5: '0',
-                                               hidefilter6: '0',
-                                               group3: ''
+                                       input: {
+                                               group4__filter10: true
+                                       },
+                                       expected: $.extend( true, {}, baseResult, {
+                                               group4: 'filter10'
+                                       } ),
+                                       msg: 'Given a single value for "single_option" that option is represented in the result.'
+                               },
+                               {
+                                       input: {
+                                               group4__filter10: true,
+                                               group4__filter11: true
                                        },
+                                       expected: $.extend( true, {}, baseResult, {
+                                               group4: 'filter10'
+                                       } ),
+                                       msg: 'Given more than one true value for "single_option" (which should not happen!) only the first value counts, and the second is ignored.'
+                               },
+                               {
+                                       input: {},
+                                       expected: baseResult,
                                        msg: 'Given an explicit empty object, the result is all filters set to their falsey unselected value.'
                                }
                        ];
        } );
 
        QUnit.test( 'getFiltersFromParameters', function ( assert ) {
-               var definition = [ {
-                               name: 'group1',
-                               title: 'Group 1',
-                               type: 'send_unselected_if_any',
-                               filters: [
-                                       {
-                                               name: 'hidefilter1',
-                                               label: 'Show filter 1',
-                                               description: 'Description of Filter 1 in Group 1',
-                                               default: true
-                                       },
-                                       {
-                                               name: 'hidefilter2',
-                                               label: 'Show filter 2',
-                                               description: 'Description of Filter 2 in Group 1'
-                                       },
-                                       {
-                                               name: 'hidefilter3',
-                                               label: 'Show filter 3',
-                                               description: 'Description of Filter 3 in Group 1',
-                                               default: true
-                                       }
-                               ]
-                       }, {
-                               name: 'group2',
-                               title: 'Group 2',
-                               type: 'send_unselected_if_any',
-                               filters: [
-                                       {
-                                               name: 'hidefilter4',
-                                               label: 'Show filter 4',
-                                               description: 'Description of Filter 1 in Group 2'
-                                       },
-                                       {
-                                               name: 'hidefilter5',
-                                               label: 'Show filter 5',
-                                               description: 'Description of Filter 2 in Group 2',
-                                               default: true
-                                       },
-                                       {
-                                               name: 'hidefilter6',
-                                               label: 'Show filter 6',
-                                               description: 'Description of Filter 3 in Group 2'
-                                       }
-                               ]
-                       }, {
-
-                               name: 'group3',
-                               title: 'Group 3',
-                               type: 'string_options',
-                               separator: ',',
-                               default: 'filter8',
-                               filters: [
-                                       {
-                                               name: 'filter7',
-                                               label: 'Group 3: Filter 1',
-                                               description: 'Description of Filter 1 in Group 3'
-                                       },
-                                       {
-                                               name: 'filter8',
-                                               label: 'Group 3: Filter 2',
-                                               description: 'Description of Filter 2 in Group 3'
-                                       },
-                                       {
-                                               name: 'filter9',
-                                               label: 'Group 3: Filter 3',
-                                               description: 'Description of Filter 3 in Group 3'
-                                       }
-                               ]
-                       } ],
-                       baseFilterRepresentation = {
-                               group1__hidefilter1: false,
-                               group1__hidefilter2: false,
-                               group1__hidefilter3: false,
-                               group2__hidefilter4: false,
-                               group2__hidefilter5: false,
-                               group2__hidefilter6: false,
-                               group3__filter7: false,
-                               group3__filter8: false,
-                               group3__filter9: false
-                       },
-                       model = new mw.rcfilters.dm.FiltersViewModel();
+               var model = new mw.rcfilters.dm.FiltersViewModel();
 
-               model.initializeFilters( definition );
+               model.initializeFilters( filterDefinition, viewsDefinition );
 
                // Empty query = only default values
                assert.deepEqual(
 
                assert.deepEqual(
                        model.getFiltersFromParameters( {
-                               hidefilter2: '1'
+                               filter2: '1'
                        } ),
                        $.extend( {}, baseFilterRepresentation, {
-                               group1__hidefilter1: true, // The text is "show filter 1"
-                               group1__hidefilter2: false, // The text is "show filter 2"
-                               group1__hidefilter3: true // The text is "show filter 3"
+                               group1__filter1: true, // The text is "show filter 1"
+                               group1__filter2: false, // The text is "show filter 2"
+                               group1__filter3: true // The text is "show filter 3"
                        } ),
                        'One truthy parameter in a group whose other parameters are true by default makes the rest of the filters in the group false (unchecked)'
                );
 
                assert.deepEqual(
                        model.getFiltersFromParameters( {
-                               hidefilter1: '1',
-                               hidefilter2: '1',
-                               hidefilter3: '1'
+                               filter1: '1',
+                               filter2: '1',
+                               filter3: '1'
                        } ),
                        $.extend( {}, baseFilterRepresentation, {
-                               group1__hidefilter1: false, // The text is "show filter 1"
-                               group1__hidefilter2: false, // The text is "show filter 2"
-                               group1__hidefilter3: false // The text is "show filter 3"
+                               group1__filter1: false, // The text is "show filter 1"
+                               group1__filter2: false, // The text is "show filter 2"
+                               group1__filter3: false // The text is "show filter 3"
                        } ),
                        'All paremeters in the same \'send_unselected_if_any\' group false is equivalent to none are truthy (checked) in the interface'
                );
                // to the input it receives.
                model.toggleFiltersSelected(
                        model.getFiltersFromParameters( {
-                               hidefilter1: '1'
+                               filter1: '1'
                        } )
                );
 
                model.toggleFiltersSelected(
                        model.getFiltersFromParameters( {
-                               hidefilter6: '1'
+                               filter6: '1'
                        } )
                );
 
                assert.deepEqual(
                        model.getSelectedState(),
                        $.extend( {}, baseFilterRepresentation, {
-                               group2__hidefilter4: true,
-                               group2__hidefilter5: true,
-                               group2__hidefilter6: false
+                               group2__filter4: true,
+                               group2__filter5: true,
+                               group2__filter6: false
                        } ),
                        'getFiltersFromParameters does not care about previous or existing state.'
                );
 
                // Reset
                model = new mw.rcfilters.dm.FiltersViewModel();
-               model.initializeFilters( definition );
+               model.initializeFilters( filterDefinition, viewsDefinition );
 
                model.toggleFiltersSelected(
                        model.getFiltersFromParameters( {
                        } ),
                        'A \'string_options\' parameter containing an invalid value, results in the invalid value ignored and the valid corresponding filters checked.'
                );
+
+               model.toggleFiltersSelected(
+                       model.getFiltersFromParameters( {
+                               group4: 'option1'
+                       } )
+               );
+               assert.deepEqual(
+                       model.getSelectedState(),
+                       $.extend( {}, baseFilterRepresentation, {
+                               group4__option1: true
+                       } ),
+                       'A \'single_option\' parameter reflects a single selected value.'
+               );
+
+               assert.deepEqual(
+                       model.getFiltersFromParameters( {
+                               group4: 'option1,option2'
+                       } ),
+                       baseFilterRepresentation,
+                       'An invalid \'single_option\' parameter is ignored.'
+               );
+
+               // Change to one value
+               model.toggleFiltersSelected(
+                       model.getFiltersFromParameters( {
+                               group4: 'option1'
+                       } )
+               );
+               // Change again to another value
+               model.toggleFiltersSelected(
+                       model.getFiltersFromParameters( {
+                               group4: 'option2'
+                       } )
+               );
+               assert.deepEqual(
+                       model.getSelectedState(),
+                       $.extend( {}, baseFilterRepresentation, {
+                               group4__option2: true
+                       } ),
+                       'A \'single_option\' parameter always reflects the latest selected value.'
+               );
        } );
 
        QUnit.test( 'sanitizeStringOptionGroup', function ( assert ) {
-               var definition = [ {
-                               name: 'group1',
-                               title: 'Group 1',
-                               type: 'string_options',
-                               filters: [
-                                       {
-                                               name: 'filter1',
-                                               label: 'Show filter 1',
-                                               description: 'Description of Filter 1 in Group 1'
-                                       },
-                                       {
-                                               name: 'filter2',
-                                               label: 'Show filter 2',
-                                               description: 'Description of Filter 2 in Group 1'
-                                       },
-                                       {
-                                               name: 'filter3',
-                                               label: 'Show filter 3',
-                                               description: 'Description of Filter 3 in Group 1'
-                                       }
-                               ]
-                       } ],
-                       model = new mw.rcfilters.dm.FiltersViewModel();
+               var model = new mw.rcfilters.dm.FiltersViewModel();
 
-               model.initializeFilters( definition );
+               model.initializeFilters( filterDefinition, viewsDefinition );
 
                assert.deepEqual(
                        model.sanitizeStringOptionGroup( 'group1', [ 'filter1', 'filter1', 'filter2' ] ),
        } );
 
        QUnit.test( 'Filter interaction: subsets', function ( assert ) {
-               var definition = [ {
-                               name: 'group1',
-                               title: 'Group 1',
-                               type: 'string_options',
-                               filters: [
-                                       {
-                                               name: 'filter1',
-                                               label: 'Show filter 1',
-                                               description: 'Description of Filter 1 in Group 1',
-                                               subset: [
-                                                       {
-                                                               group: 'group1',
-                                                               filter: 'filter2'
-                                                       },
-                                                       {
-                                                               group: 'group1',
-                                                               filter: 'filter3'
-                                                       }
-                                               ]
-                                       },
-                                       {
-                                               name: 'filter2',
-                                               label: 'Show filter 2',
-                                               description: 'Description of Filter 2 in Group 1',
-                                               subset: [
-                                                       {
-                                                               group: 'group1',
-                                                               filter: 'filter3'
-                                                       }
-                                               ]
-                                       },
-                                       {
-                                               name: 'filter3',
-                                               label: 'Show filter 3',
-                                               description: 'Description of Filter 3 in Group 1'
-                                       }
-                               ]
-                       } ],
-                       baseFullState = {
-                               group1__filter1: { selected: false, conflicted: false, included: false },
-                               group1__filter2: { selected: false, conflicted: false, included: false },
-                               group1__filter3: { selected: false, conflicted: false, included: false }
-                       },
-                       model = new mw.rcfilters.dm.FiltersViewModel();
+               var model = new mw.rcfilters.dm.FiltersViewModel();
+
+               model.initializeFilters( filterDefinition, viewsDefinition );
 
-               model.initializeFilters( definition );
                // Select a filter that has subset with another filter
                model.toggleFiltersSelected( {
                        group1__filter1: true
                model.reassessFilterInteractions( model.getItemByName( 'group1__filter1' ) );
                assert.deepEqual(
                        model.getFullState(),
-                       $.extend( true, {}, baseFullState, {
+                       $.extend( true, {}, baseFullFilterState, {
                                group1__filter1: { selected: true },
                                group1__filter2: { included: true },
-                               group1__filter3: { included: true }
+                               group1__filter3: { included: true },
+                               // Conflicts are affected
+                               group2__filter4: { conflicted: true },
+                               group2__filter5: { conflicted: true },
+                               group2__filter6: { conflicted: true }
                        } ),
                        'Filters with subsets are represented in the model.'
                );
                model.reassessFilterInteractions( model.getItemByName( 'filter2' ) );
                assert.deepEqual(
                        model.getFullState(),
-                       $.extend( true, {}, baseFullState, {
+                       $.extend( true, {}, baseFullFilterState, {
                                group1__filter1: { selected: true },
                                group1__filter2: { selected: true, included: true },
-                               group1__filter3: { included: true }
+                               group1__filter3: { included: true },
+                               // Conflicts are affected
+                               group2__filter6: { conflicted: true }
                        } ),
                        'Filters that have multiple subsets are represented.'
                );
                model.reassessFilterInteractions( model.getItemByName( 'group1__filter1' ) );
                assert.deepEqual(
                        model.getFullState(),
-                       $.extend( true, {}, baseFullState, {
+                       $.extend( true, {}, baseFullFilterState, {
                                group1__filter2: { selected: true, included: false },
-                               group1__filter3: { included: true }
+                               group1__filter3: { included: true },
+                               // Conflicts are affected
+                               group2__filter6: { conflicted: true }
                        } ),
                        'Removing a filter only un-includes its subset if there is no other filter affecting.'
                );
                model.reassessFilterInteractions( model.getItemByName( 'group1__filter2' ) );
                assert.deepEqual(
                        model.getFullState(),
-                       baseFullState,
+                       baseFullFilterState,
                        'Removing all supersets also un-includes the subsets.'
                );
        } );
 
        QUnit.test( 'Filter interaction: full coverage', function ( assert ) {
-               var definition = [ {
-                               name: 'group1',
-                               title: 'Group 1',
-                               type: 'string_options',
-                               fullCoverage: false,
-                               filters: [
-                                       { name: 'filter1', label: '1', description: '1' },
-                                       { name: 'filter2', label: '2', description: '2' },
-                                       { name: 'filter3', label: '3', description: '3' }
-                               ]
-                       }, {
-                               name: 'group2',
-                               title: 'Group 2',
-                               type: 'send_unselected_if_any',
-                               fullCoverage: true,
-                               filters: [
-                                       { name: 'filter4', label: '4', description: '4' },
-                                       { name: 'filter5', label: '5', description: '5' },
-                                       { name: 'filter6', label: '6', description: '6' }
-                               ]
-                       } ],
-                       model = new mw.rcfilters.dm.FiltersViewModel(),
+               var model = new mw.rcfilters.dm.FiltersViewModel(),
                        isCapsuleItemMuted = function ( filterName ) {
                                var itemModel = model.getItemByName( filterName ),
                                        groupModel = itemModel.getGroupModel();
                                group2__filter6: false
                        };
 
-               model.initializeFilters( definition );
+               model.initializeFilters( filterDefinition, viewsDefinition );
 
                // Starting state, no selection, all items are non-muted
                assert.deepEqual(
        } );
 
        QUnit.test( 'Filter interaction: conflicts', function ( assert ) {
-               var definition = [ {
-                               name: 'group1',
-                               title: 'Group 1',
-                               type: 'string_options',
-                               filters: [
-                                       {
-                                               name: 'filter1',
-                                               label: '1',
-                                               description: '1',
-                                               conflicts: [ { group: 'group2' } ]
-                                       },
-                                       {
-                                               name: 'filter2',
-                                               label: '2',
-                                               description: '2',
-                                               conflicts: [ { group: 'group2', filter: 'filter6' } ]
-                                       },
-                                       {
-                                               name: 'filter3',
-                                               label: '3',
-                                               description: '3'
-                                       }
-                               ]
-                       }, {
-                               name: 'group2',
-                               title: 'Group 2',
-                               type: 'send_unselected_if_any',
-                               conflicts: [ { group: 'group1', filter: 'filter1' } ],
-                               filters: [
-                                       {
-                                               name: 'filter4',
-                                               label: '1',
-                                               description: '1'
-                                       },
-                                       {
-                                               name: 'filter5',
-                                               label: '5',
-                                               description: '5'
-                                       },
-                                       {
-                                               name: 'filter6',
-                                               label: '6',
-                                               description: '6',
-                                               conflicts: [ { group: 'group1', filter: 'filter2' } ]
-                                       }
-                               ]
-                       } ],
-                       baseFullState = {
-                               group1__filter1: { selected: false, conflicted: false, included: false },
-                               group1__filter2: { selected: false, conflicted: false, included: false },
-                               group1__filter3: { selected: false, conflicted: false, included: false },
-                               group2__filter4: { selected: false, conflicted: false, included: false },
-                               group2__filter5: { selected: false, conflicted: false, included: false },
-                               group2__filter6: { selected: false, conflicted: false, included: false }
-                       },
-                       model = new mw.rcfilters.dm.FiltersViewModel();
+               var model = new mw.rcfilters.dm.FiltersViewModel();
 
-               model.initializeFilters( definition );
+               model.initializeFilters( filterDefinition, viewsDefinition );
 
                assert.deepEqual(
                        model.getFullState(),
-                       baseFullState,
+                       baseFullFilterState,
                        'Initial state: no conflicts because no selections.'
                );
 
 
                assert.deepEqual(
                        model.getFullState(),
-                       $.extend( true, {}, baseFullState, {
+                       $.extend( true, {}, baseFullFilterState, {
                                group1__filter1: { selected: true },
                                group2__filter4: { conflicted: true },
                                group2__filter5: { conflicted: true },
-                               group2__filter6: { conflicted: true }
+                               group2__filter6: { conflicted: true },
+                               // Subsets are affected by the selection
+                               group1__filter2: { included: true },
+                               group1__filter3: { included: true }
                        } ),
                        'Selecting a filter that conflicts with a group sets all the conflicted group items as "conflicted".'
                );
 
                assert.deepEqual(
                        model.getFullState(),
-                       $.extend( true, {}, baseFullState, {
+                       $.extend( true, {}, baseFullFilterState, {
                                group1__filter1: { selected: true, conflicted: true },
                                group2__filter4: { selected: true, conflicted: true },
                                group2__filter5: { conflicted: true },
-                               group2__filter6: { conflicted: true }
+                               group2__filter6: { conflicted: true },
+                               // Subsets are affected by the selection
+                               group1__filter2: { included: true },
+                               group1__filter3: { included: true }
                        } ),
                        'Selecting a conflicting filter inside a group, sets both sides to conflicted and selected.'
                );
 
                // Reset
                model = new mw.rcfilters.dm.FiltersViewModel();
-               model.initializeFilters( definition );
+               model.initializeFilters( filterDefinition, viewsDefinition );
 
                // Select a filter that has a conflict with a specific filter
                model.toggleFiltersSelected( {
 
                assert.deepEqual(
                        model.getFullState(),
-                       $.extend( true, {}, baseFullState, {
+                       $.extend( true, {}, baseFullFilterState, {
                                group1__filter2: { selected: true },
-                               group2__filter6: { conflicted: true }
+                               group2__filter6: { conflicted: true },
+                               // Subsets are affected by the selection
+                               group1__filter3: { included: true }
                        } ),
                        'Selecting a filter that conflicts with another filter sets the other as "conflicted".'
                );
 
                assert.deepEqual(
                        model.getFullState(),
-                       $.extend( true, {}, baseFullState, {
+                       $.extend( true, {}, baseFullFilterState, {
                                group1__filter2: { selected: true, conflicted: true },
                                group2__filter6: { selected: true, conflicted: true },
                                // This is added to the conflicts because filter6 is part of group2,
                                // with filter6 which means that filter1 conflicts with filter6 (because it's in group2)
                                // and also because its **own sibling** (filter2) is **also** in conflict with the
                                // selected items in group2 (filter6)
-                               group1__filter1: { conflicted: true }
+                               group1__filter1: { conflicted: true },
+
+                               // Subsets are affected by the selection
+                               group1__filter3: { included: true }
                        } ),
                        'Selecting a conflicting filter with an individual filter, sets both sides to conflicted and selected.'
                );
 
                assert.deepEqual(
                        model.getFullState(),
-                       $.extend( true, {}, baseFullState, {
+                       $.extend( true, {}, baseFullFilterState, {
                                group1__filter2: { selected: true },
                                group2__filter6: { selected: true },
-                               group2__filter5: { selected: true }
+                               group2__filter5: { selected: true },
                                // Filter6 and filter1 are no longer in conflict because
                                // filter5, while it is in conflict with filter1, it is
                                // not in conflict with filter2 - and since filter2 is
                                // selected, it removes the conflict bidirectionally
+
+                               // Subsets are affected by the selection
+                               group1__filter3: { included: true }
                        } ),
                        'Selecting a non-conflicting filter within the group of a conflicting filter removes the conflicts.'
                );
 
                assert.deepEqual(
                        model.getFullState(),
-                       $.extend( true, {}, baseFullState, {
+                       $.extend( true, {}, baseFullFilterState, {
                                group1__filter1: { conflicted: true },
                                group2__filter6: { selected: true },
                                group2__filter5: { selected: true }
 
                assert.deepEqual(
                        model.getFullState(),
-                       $.extend( true, {}, baseFullState, {
+                       $.extend( true, {}, baseFullFilterState, {
                                group1__filter1: { selected: true, conflicted: true },
                                group2__filter6: { selected: true, conflicted: true },
                                group2__filter5: { selected: true, conflicted: true },
-                               group2__filter4: { conflicted: true } // Not selected but conflicted because it's in group2
+                               group2__filter4: { conflicted: true }, // Not selected but conflicted because it's in group2
+                               // Subsets are affected by the selection
+                               group1__filter2: { included: true },
+                               group1__filter3: { included: true }
                        } ),
                        'Selecting an item that conflicts with a whole group makes all selections in that group conflicted.'
                );
                /* Simple case */
                // Reset
                model = new mw.rcfilters.dm.FiltersViewModel();
-               model.initializeFilters( definition );
+               model.initializeFilters( filterDefinition, viewsDefinition );
 
                // Select a filter that has a conflict with a specific filter
                model.toggleFiltersSelected( {
 
                assert.deepEqual(
                        model.getFullState(),
-                       $.extend( true, {}, baseFullState, {
+                       $.extend( true, {}, baseFullFilterState, {
                                group1__filter2: { selected: true },
-                               group2__filter6: { conflicted: true }
+                               group2__filter6: { conflicted: true },
+                               // Subsets are affected by the selection
+                               group1__filter3: { included: true }
                        } ),
                        'Simple case: Selecting a filter that conflicts with another filter sets the other as "conflicted".'
                );
 
                assert.deepEqual(
                        model.getFullState(),
-                       $.extend( true, {}, baseFullState, {
+                       $.extend( true, {}, baseFullFilterState, {
                                group1__filter2: { selected: true },
-                               group1__filter3: { selected: true }
+                               // Subsets are affected by the selection
+                               group1__filter3: { selected: true, included: true }
                        } ),
                        'Simple case: Selecting a filter that is not in conflict removes the conflict.'
                );
-
        } );
 
        QUnit.test( 'Filter highlights', function ( assert ) {
+               // We are using a different (smaller) definition here than the global one
                var definition = [ {
                                name: 'group1',
                                title: 'Group 1',