Merge "Use underscores in help links"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Thu, 12 Mar 2015 14:56:31 +0000 (14:56 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 12 Mar 2015 14:56:31 +0000 (14:56 +0000)
54 files changed:
RELEASE-NOTES-1.25
includes/Feed.php
includes/OutputPage.php
includes/api/ApiBase.php
includes/api/ApiMain.php
includes/api/ApiPageSet.php
includes/api/ApiQuery.php
includes/api/ApiQueryBase.php
includes/api/i18n/gl.json
includes/api/i18n/sv.json
includes/api/i18n/zh-hans.json
includes/context/IContextSource.php
includes/installer/MysqlInstaller.php
includes/installer/MysqlUpdater.php
includes/installer/SqliteUpdater.php
includes/installer/i18n/cv.json
includes/jobqueue/JobQueue.php
includes/jobqueue/JobQueueRedis.php
jsduck.json
languages/i18n/bgn.json
languages/i18n/cs.json
languages/i18n/cv.json
languages/i18n/es.json
languages/i18n/fi.json
languages/i18n/frr.json
languages/i18n/gd.json
languages/i18n/gl.json
languages/i18n/ml.json
languages/i18n/nds-nl.json
languages/i18n/nn.json
languages/i18n/pa.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/ru.json
languages/i18n/scn.json
languages/i18n/sk.json
languages/i18n/sr-ec.json
languages/i18n/sv.json
languages/i18n/tr.json
maintenance/archives/patch-editsummary-length.sql [new file with mode: 0644]
maintenance/jsduck/eg-iframe.html
maintenance/sqlite/archives/patch-editsummary-length.sql [new file with mode: 0644]
maintenance/tables.sql
resources/Resources.php
resources/lib/jquery.client/AUTHORS.txt [new file with mode: 0644]
resources/lib/jquery.client/LICENSE-MIT.txt [new file with mode: 0644]
resources/lib/jquery.client/README.md [new file with mode: 0644]
resources/lib/jquery.client/jquery.client.js [new file with mode: 0644]
resources/src/jquery/jquery.client.js [deleted file]
resources/src/mediawiki.less/mediawiki.ui/mixins.less
resources/src/mediawiki/mediawiki.js
tests/phpunit/includes/OutputPageTest.php
tests/qunit/QUnitTestResources.php
tests/qunit/suites/resources/jquery/jquery.client.test.js [deleted file]

index 9a2e33e..5e08efd 100644 (file)
@@ -113,6 +113,8 @@ production.
   links of a group of changes in EnhancedChangesList.
 * A full interface for StatsD metric reporting has been added to the context
   interface, reachable via IContextSource::getStats().
+* Move the jQuery Client library from being mastered in MediaWiki as v0.1.0 to a
+  proper, published library, which is now tagged as v1.0.0.
 
 ==== External libraries ====
 * MediaWiki now requires certain external libraries to be installed. In the past
@@ -272,6 +274,7 @@ production.
 * Added ApiBase::lacksSameOriginSecurity() to allow modules to easily check if
   the current request was sent with the 'callback' parameter (or any future
   method that breaks the same-origin policy).
+* Profiling methods in ApiBase are deprecated and no longer need to be called.
 * The following methods have been deprecated and may be removed in a future
   release:
   * ApiBase::getDescription
@@ -280,6 +283,14 @@ production.
   * ApiBase::makeHelpMsg
   * ApiBase::makeHelpArrayToString
   * ApiBase::makeHelpMsgParameters
+  * ApiBase::getModuleProfileName
+  * ApiBase::profileIn
+  * ApiBase::profileOut
+  * ApiBase::safeProfileOut
+  * ApiBase::getProfileTime
+  * ApiBase::profileDBIn
+  * ApiBase::profileDBOut
+  * ApiBase::getProfileDBTime
   * ApiFormatBase::setUnescapeAmps
   * ApiFormatBase::getWantsHelp
   * ApiFormatBase::setHelp
index 9be3f57..600b136 100644 (file)
@@ -92,7 +92,7 @@ class FeedItem {
         */
        public function getUniqueId() {
                if ( $this->uniqueId ) {
-                       return $this->xmlEncode( $this->uniqueId );
+                       return $this->xmlEncode( wfExpandUrl( $this->uniqueId, PROTO_CURRENT ) );
                }
        }
 
index 278b4d1..edeae0d 100644 (file)
@@ -2903,11 +2903,11 @@ class OutputPage extends ContextSource {
                                                );
                                        } else {
                                                $link = Html::linkedScript( $url );
-                                               if ( $context->getOnly() === 'scripts' && !$context->getRaw() && !$isRaw ) {
-                                                       // Wrap only=script requests in a conditional as browsers not supported
-                                                       // by the startup module would unconditionally execute this module.
-                                                       // Otherwise users will get "ReferenceError: mw is undefined" or
-                                                       // "jQuery is undefined" from e.g. a "site" module.
+                                               if ( !$context->getRaw() && !$isRaw ) {
+                                                       // Wrap only=script / only=combined requests in a conditional as
+                                                       // browsers not supported by the startup module would unconditionally
+                                                       // execute this module. Otherwise users will get "ReferenceError: mw is
+                                                       // undefined" or "jQuery is undefined" from e.g. a "site" module.
                                                        $link = Html::inlineScript(
                                                                ResourceLoader::makeLoaderConditionalScript(
                                                                        Xml::encodeJsCall( 'document.write', array( $link ) )
index b03782f..74e51c8 100644 (file)
@@ -32,9 +32,6 @@
  * Module parameters: Derived classes can define getAllowedParams() to specify
  *    which parameters to expect, how to parse and validate them.
  *
- * Profiling: various methods to allow keeping tabs on various tasks and their
- *    time costs
- *
  * Self-documentation: code to allow the API to document its own state
  *
  * @ingroup API
@@ -483,9 +480,7 @@ abstract class ApiBase extends ContextSource {
         */
        protected function getDB() {
                if ( !isset( $this->mSlaveDB ) ) {
-                       $this->profileDBIn();
                        $this->mSlaveDB = wfGetDB( DB_SLAVE, 'api' );
-                       $this->profileDBOut();
                }
 
                return $this->mSlaveDB;
@@ -1297,7 +1292,6 @@ abstract class ApiBase extends ContextSource {
         * @throws UsageException
         */
        public function dieUsage( $description, $errorCode, $httpRespCode = 0, $extradata = null ) {
-               Profiler::instance()->close();
                throw new UsageException(
                        $description,
                        $this->encodeParamName( $errorCode ),
@@ -1954,6 +1948,21 @@ abstract class ApiBase extends ContextSource {
                throw new MWException( "Internal error in $method: $message" );
        }
 
+       /**
+        * Write logging information for API features to a debug log, for usage
+        * analysis.
+        * @param string $feature Feature being used.
+        */
+       protected function logFeatureUsage( $feature ) {
+               $request = $this->getRequest();
+               $s = '"' . addslashes( $feature ) . '"' .
+                       ' "' . wfUrlencode( str_replace( ' ', '_', $this->getUser()->getName() ) ) . '"' .
+                       ' "' . $request->getIP() . '"' .
+                       ' "' . addslashes( $request->getHeader( 'Referer' ) ) . '"' .
+                       ' "' . addslashes( $this->getMain()->getUserAgent() ) . '"';
+               wfDebugLog( 'api-feature-usage', $s, 'private' );
+       }
+
        /**@}*/
 
        /************************************************************************//**
@@ -2189,162 +2198,6 @@ abstract class ApiBase extends ContextSource {
 
        /**@}*/
 
-       /************************************************************************//**
-        * @name   Profiling
-        * @{
-        */
-
-       /**
-        * Profiling: total module execution time
-        */
-       private $mTimeIn = 0, $mModuleTime = 0;
-       /** @var ScopedCallback */
-       private $profile;
-       /** @var ScopedCallback */
-       private $dbProfile;
-
-       /**
-        * Get the name of the module as shown in the profiler log
-        *
-        * @param DatabaseBase|bool $db
-        *
-        * @return string
-        */
-       public function getModuleProfileName( $db = false ) {
-               if ( $db ) {
-                       return 'API:' . $this->mModuleName . '-DB';
-               }
-
-               return 'API:' . $this->mModuleName;
-       }
-
-       /**
-        * Start module profiling
-        */
-       public function profileIn() {
-               if ( $this->mTimeIn !== 0 ) {
-                       ApiBase::dieDebug( __METHOD__, 'Called twice without calling profileOut()' );
-               }
-               $this->mTimeIn = microtime( true );
-               $this->profile = Profiler::instance()->scopedProfileIn( $this->getModuleProfileName() );
-       }
-
-       /**
-        * End module profiling
-        */
-       public function profileOut() {
-               if ( $this->mTimeIn === 0 ) {
-                       ApiBase::dieDebug( __METHOD__, 'Called without calling profileIn() first' );
-               }
-               if ( $this->mDBTimeIn !== 0 ) {
-                       ApiBase::dieDebug(
-                               __METHOD__,
-                               'Must be called after database profiling is done with profileDBOut()'
-                       );
-               }
-
-               $this->mModuleTime += microtime( true ) - $this->mTimeIn;
-               $this->mTimeIn = 0;
-               Profiler::instance()->scopedProfileOut( $this->profile );
-       }
-
-       /**
-        * When modules crash, sometimes it is needed to do a profileOut() regardless
-        * of the profiling state the module was in. This method does such cleanup.
-        */
-       public function safeProfileOut() {
-               if ( $this->mTimeIn !== 0 ) {
-                       if ( $this->mDBTimeIn !== 0 ) {
-                               $this->profileDBOut();
-                       }
-                       $this->profileOut();
-               }
-       }
-
-       /**
-        * Total time the module was executed
-        * @return float
-        */
-       public function getProfileTime() {
-               if ( $this->mTimeIn !== 0 ) {
-                       ApiBase::dieDebug( __METHOD__, 'Called without calling profileOut() first' );
-               }
-
-               return $this->mModuleTime;
-       }
-
-       /**
-        * Profiling: database execution time
-        */
-       private $mDBTimeIn = 0, $mDBTime = 0;
-
-       /**
-        * Start module profiling
-        */
-       public function profileDBIn() {
-               if ( $this->mTimeIn === 0 ) {
-                       ApiBase::dieDebug(
-                               __METHOD__,
-                               'Must be called while profiling the entire module with profileIn()'
-                       );
-               }
-               if ( $this->mDBTimeIn !== 0 ) {
-                       ApiBase::dieDebug( __METHOD__, 'Called twice without calling profileDBOut()' );
-               }
-               $this->mDBTimeIn = microtime( true );
-
-               $this->dbProfile = Profiler::instance()->scopedProfileIn( $this->getModuleProfileName( true ) );
-       }
-
-       /**
-        * End database profiling
-        */
-       public function profileDBOut() {
-               if ( $this->mTimeIn === 0 ) {
-                       ApiBase::dieDebug( __METHOD__, 'Must be called while profiling ' .
-                               'the entire module with profileIn()' );
-               }
-               if ( $this->mDBTimeIn === 0 ) {
-                       ApiBase::dieDebug( __METHOD__, 'Called without calling profileDBIn() first' );
-               }
-
-               $time = microtime( true ) - $this->mDBTimeIn;
-               $this->mDBTimeIn = 0;
-
-               $this->mDBTime += $time;
-               $this->getMain()->mDBTime += $time;
-               Profiler::instance()->scopedProfileOut( $this->dbProfile );
-       }
-
-       /**
-        * Total time the module used the database
-        * @return float
-        */
-       public function getProfileDBTime() {
-               if ( $this->mDBTimeIn !== 0 ) {
-                       ApiBase::dieDebug( __METHOD__, 'Called without calling profileDBOut() first' );
-               }
-
-               return $this->mDBTime;
-       }
-
-       /**
-        * Write logging information for API features to a debug log, for usage
-        * analysis.
-        * @param string $feature Feature being used.
-        */
-       protected function logFeatureUsage( $feature ) {
-               $request = $this->getRequest();
-               $s = '"' . addslashes( $feature ) . '"' .
-                       ' "' . wfUrlencode( str_replace( ' ', '_', $this->getUser()->getName() ) ) . '"' .
-                       ' "' . $request->getIP() . '"' .
-                       ' "' . addslashes( $request->getHeader( 'Referer' ) ) . '"' .
-                       ' "' . addslashes( $this->getMain()->getUserAgent() ) . '"';
-               wfDebugLog( 'api-feature-usage', $s, 'private' );
-       }
-
-       /**@}*/
-
        /************************************************************************//**
         * @name   Deprecated
         * @{
@@ -2795,6 +2648,71 @@ abstract class ApiBase extends ContextSource {
                return false;
        }
 
+       /**
+        * @deprecated since 1.25, always returns empty string
+        * @param DatabaseBase|bool $db
+        * @return string
+        */
+       public function getModuleProfileName( $db = false ) {
+               wfDeprecated( __METHOD__, '1.25' );
+               return '';
+       }
+
+       /**
+        * @deprecated since 1.25
+        */
+       public function profileIn() {
+               // No wfDeprecated() yet because extensions call this and might need to
+               // keep doing so for BC.
+       }
+
+       /**
+        * @deprecated since 1.25
+        */
+       public function profileOut() {
+               // No wfDeprecated() yet because extensions call this and might need to
+               // keep doing so for BC.
+       }
+
+       /**
+        * @deprecated since 1.25
+        */
+       public function safeProfileOut() {
+               wfDeprecated( __METHOD__, '1.25' );
+       }
+
+       /**
+        * @deprecated since 1.25, always returns 0
+        * @return float
+        */
+       public function getProfileTime() {
+               wfDeprecated( __METHOD__, '1.25' );
+               return 0;
+       }
+
+       /**
+        * @deprecated since 1.25
+        */
+       public function profileDBIn() {
+               wfDeprecated( __METHOD__, '1.25' );
+       }
+
+       /**
+        * @deprecated since 1.25
+        */
+       public function profileDBOut() {
+               wfDeprecated( __METHOD__, '1.25' );
+       }
+
+       /**
+        * @deprecated since 1.25, always returns 0
+        * @return float
+        */
+       public function getProfileDBTime() {
+               wfDeprecated( __METHOD__, '1.25' );
+               return 0;
+       }
+
        /**@}*/
 }
 
index 9dc2411..1feb485 100644 (file)
@@ -361,14 +361,11 @@ class ApiMain extends ApiBase {
         * Execute api request. Any errors will be handled if the API was called by the remote client.
         */
        public function execute() {
-               $this->profileIn();
                if ( $this->mInternalMode ) {
                        $this->executeAction();
                } else {
                        $this->executeActionWithErrorHandling();
                }
-
-               $this->profileOut();
        }
 
        /**
@@ -450,8 +447,6 @@ class ApiMain extends ApiBase {
                // Reset and print just the error message
                ob_clean();
 
-               // If the error occurred during printing, do a printer->profileOut()
-               $this->mPrinter->safeProfileOut();
                $this->printResult( true );
        }
 
@@ -771,7 +766,6 @@ class ApiMain extends ApiBase {
                // Printer may not be able to handle errors. This is particularly
                // likely if the module returns something for getCustomPrinter().
                if ( !$this->mPrinter->canPrintErrors() ) {
-                       $this->mPrinter->safeProfileOut();
                        $this->mPrinter = $this->createPrinterByName( self::API_DEFAULT_FORMAT );
                }
 
@@ -1040,10 +1034,8 @@ class ApiMain extends ApiBase {
                $this->checkAsserts( $params );
 
                // Execute
-               $module->profileIn();
                $module->execute();
                Hooks::run( 'APIAfterExecute', array( &$module ) );
-               $module->profileOut();
 
                $this->reportUnusedParams();
 
@@ -1194,13 +1186,10 @@ class ApiMain extends ApiBase {
 
                $this->getResult()->cleanUpUTF8();
                $printer = $this->mPrinter;
-               $printer->profileIn();
 
                $printer->initPrinter( false );
-
                $printer->execute();
                $printer->closePrinter();
-               $printer->profileOut();
        }
 
        /**
index e53e2b2..d462862 100644 (file)
@@ -115,11 +115,9 @@ class ApiPageSet extends ApiBase {
                $this->mAllowGenerator = ( $flags & ApiPageSet::DISABLE_GENERATORS ) == 0;
                $this->mDefaultNamespace = $defaultNamespace;
 
-               $this->profileIn();
                $this->mParams = $this->extractRequestParams();
                $this->mResolveRedirects = $this->mParams['redirects'];
                $this->mConvertTitles = $this->mParams['converttitles'];
-               $this->profileOut();
        }
 
        /**
@@ -143,17 +141,12 @@ class ApiPageSet extends ApiBase {
         *    relevant parameters as used
         */
        private function executeInternal( $isDryRun ) {
-               $this->profileIn();
-
                $generatorName = $this->mAllowGenerator ? $this->mParams['generator'] : null;
                if ( isset( $generatorName ) ) {
                        $dbSource = $this->mDbSource;
-                       $isQuery = $dbSource instanceof ApiQuery;
-                       if ( !$isQuery ) {
+                       if ( !$dbSource instanceof ApiQuery ) {
                                // If the parent container of this pageset is not ApiQuery, we must create it to run generator
                                $dbSource = $this->getMain()->getModuleManager()->getModule( 'query' );
-                               // Enable profiling for query module because it will be used for db sql profiling
-                               $dbSource->profileIn();
                        }
                        $generator = $dbSource->getModuleManager()->getModule( $generatorName, null, true );
                        if ( $generator === null ) {
@@ -174,9 +167,6 @@ class ApiPageSet extends ApiBase {
                        $tmpPageSet->executeInternal( $isDryRun );
 
                        // populate this pageset with the generator output
-                       $this->profileOut();
-                       $generator->profileIn();
-
                        if ( !$isDryRun ) {
                                $generator->executeGenerator( $this );
                                Hooks::run( 'APIQueryGeneratorAfterExecute', array( &$generator, &$this ) );
@@ -187,17 +177,10 @@ class ApiPageSet extends ApiBase {
                                        $main->getVal( $generator->encodeParamName( $paramName ) );
                                }
                        }
-                       $generator->profileOut();
-                       $this->profileIn();
 
                        if ( !$isDryRun ) {
                                $this->resolvePendingRedirects();
                        }
-
-                       if ( !$isQuery ) {
-                               // If this pageset is not part of the query, we called profileIn() above
-                               $dbSource->profileOut();
-                       }
                } else {
                        // Only one of the titles/pageids/revids is allowed at the same time
                        $dataSource = null;
@@ -241,7 +224,6 @@ class ApiPageSet extends ApiBase {
                                }
                        }
                }
-               $this->profileOut();
        }
 
        /**
@@ -678,9 +660,7 @@ class ApiPageSet extends ApiBase {
         * @param array $titles Array of Title objects
         */
        public function populateFromTitles( $titles ) {
-               $this->profileIn();
                $this->initFromTitles( $titles );
-               $this->profileOut();
        }
 
        /**
@@ -688,9 +668,7 @@ class ApiPageSet extends ApiBase {
         * @param array $pageIDs Array of page IDs
         */
        public function populateFromPageIDs( $pageIDs ) {
-               $this->profileIn();
                $this->initFromPageIds( $pageIDs );
-               $this->profileOut();
        }
 
        /**
@@ -703,9 +681,7 @@ class ApiPageSet extends ApiBase {
         * @param ResultWrapper $queryResult Query result object
         */
        public function populateFromQueryResult( $db, $queryResult ) {
-               $this->profileIn();
                $this->initFromQueryResult( $queryResult );
-               $this->profileOut();
        }
 
        /**
@@ -713,9 +689,7 @@ class ApiPageSet extends ApiBase {
         * @param array $revIDs Array of revision IDs
         */
        public function populateFromRevisionIDs( $revIDs ) {
-               $this->profileIn();
                $this->initFromRevIDs( $revIDs );
-               $this->profileOut();
        }
 
        /**
@@ -778,10 +752,8 @@ class ApiPageSet extends ApiBase {
                $set = $linkBatch->constructSet( 'page', $db );
 
                // Get pageIDs data from the `page` table
-               $this->profileDBIn();
                $res = $db->select( 'page', $this->getPageTableFields(), $set,
                        __METHOD__ );
-               $this->profileDBOut();
 
                // Hack: get the ns:titles stored in array(ns => array(titles)) format
                $this->initFromQueryResult( $res, $linkBatch->data, true ); // process Titles
@@ -812,10 +784,8 @@ class ApiPageSet extends ApiBase {
                        $db = $this->getDB();
 
                        // Get pageIDs data from the `page` table
-                       $this->profileDBIn();
                        $res = $db->select( 'page', $this->getPageTableFields(), $set,
                                __METHOD__ );
-                       $this->profileDBOut();
                }
 
                $this->initFromQueryResult( $res, $remaining, false ); // process PageIDs
@@ -921,7 +891,6 @@ class ApiPageSet extends ApiBase {
                        $where = array( 'rev_id' => $revids, 'rev_page = page_id' );
 
                        // Get pageIDs data from the `page` table
-                       $this->profileDBIn();
                        $res = $db->select( $tables, $fields, $where, __METHOD__ );
                        foreach ( $res as $row ) {
                                $revid = intval( $row->rev_id );
@@ -931,7 +900,6 @@ class ApiPageSet extends ApiBase {
                                $pageids[$pageid] = '';
                                unset( $remaining[$revid] );
                        }
-                       $this->profileDBOut();
                }
 
                $this->mMissingRevIDs = array_keys( $remaining );
@@ -948,7 +916,6 @@ class ApiPageSet extends ApiBase {
                        $fields = array( 'ar_rev_id', 'ar_namespace', 'ar_title' );
                        $where = array( 'ar_rev_id' => $this->mMissingRevIDs );
 
-                       $this->profileDBIn();
                        $res = $db->select( $tables, $fields, $where, __METHOD__ );
                        $titles = array();
                        foreach ( $res as $row ) {
@@ -956,7 +923,6 @@ class ApiPageSet extends ApiBase {
                                $titles[$revid] = Title::makeTitle( $row->ar_namespace, $row->ar_title );
                                unset( $remaining[$revid] );
                        }
-                       $this->profileDBOut();
 
                        $this->initFromTitles( $titles );
 
@@ -1012,9 +978,7 @@ class ApiPageSet extends ApiBase {
                                }
 
                                // Get pageIDs data from the `page` table
-                               $this->profileDBIn();
                                $res = $db->select( 'page', $pageFlds, $set, __METHOD__ );
-                               $this->profileDBOut();
 
                                // Hack: get the ns:titles stored in array(ns => array(titles)) format
                                $this->initFromQueryResult( $res, $linkBatch->data, true );
@@ -1033,7 +997,6 @@ class ApiPageSet extends ApiBase {
                $lb = new LinkBatch();
                $db = $this->getDB();
 
-               $this->profileDBIn();
                $res = $db->select(
                        'redirect',
                        array(
@@ -1045,7 +1008,6 @@ class ApiPageSet extends ApiBase {
                        ), array( 'rd_from' => array_keys( $this->mPendingRedirectIDs ) ),
                        __METHOD__
                );
-               $this->profileDBOut();
                foreach ( $res as $row ) {
                        $rdfrom = intval( $row->rd_from );
                        $from = $this->mPendingRedirectIDs[$rdfrom]->getPrefixedText();
index 9196dc7..f4b64a3 100644 (file)
@@ -169,9 +169,7 @@ class ApiQuery extends ApiBase {
         */
        public function getNamedDB( $name, $db, $groups ) {
                if ( !array_key_exists( $name, $this->mNamedDB ) ) {
-                       $this->profileDBIn();
                        $this->mNamedDB[$name] = wfGetDB( $db, $groups );
-                       $this->profileDBOut();
                }
 
                return $this->mNamedDB[$name];
@@ -295,10 +293,8 @@ class ApiQuery extends ApiBase {
                        $params = $module->extractRequestParams();
                        $cacheMode = $this->mergeCacheMode(
                                $cacheMode, $module->getCacheMode( $params ) );
-                       $module->profileIn();
                        $module->execute();
                        Hooks::run( 'APIQueryAfterExecute', array( &$module ) );
-                       $module->profileOut();
                }
 
                // Set the cache mode
index 7414913..1d4cff9 100644 (file)
@@ -372,12 +372,7 @@ abstract class ApiQueryBase extends ApiBase {
                        isset( $extraQuery['join_conds'] ) ? (array)$extraQuery['join_conds'] : array()
                );
 
-               // getDB has its own profileDBIn/Out calls
-               $db = $this->getDB();
-
-               $this->profileDBIn();
-               $res = $db->select( $tables, $fields, $where, $method, $options, $join_conds );
-               $this->profileDBOut();
+               $res = $this->getDB()->select( $tables, $fields, $where, $method, $options, $join_conds );
 
                return $res;
        }
@@ -590,7 +585,6 @@ abstract class ApiQueryBase extends ApiBase {
        protected function checkRowCount() {
                wfDeprecated( __METHOD__, '1.24' );
                $db = $this->getDB();
-               $this->profileDBIn();
                $rowcount = $db->estimateRowCount(
                        $this->tables,
                        $this->fields,
@@ -598,7 +592,6 @@ abstract class ApiQueryBase extends ApiBase {
                        __METHOD__,
                        $this->options
                );
-               $this->profileDBOut();
 
                if ( $rowcount > $this->getConfig()->get( 'APIMaxDBRows' ) ) {
                        return false;
index 528ca8a..8abfe9a 100644 (file)
@@ -13,6 +13,9 @@
        "apihelp-main-param-action": "Que acción se realizará.",
        "apihelp-main-param-format": "O formato de saída.",
        "apihelp-main-param-maxlag": "O retardo máximo pode usarse cando MediaWiki está instalada nun cluster de base de datos replicadas. Para gardar accións que causen calquera retardo máis de replicación do sitio, este parámetro pode facer que o cliente espere ata que o retardo de replicación sexa menor que o valor especificado. No caso de retardo excesivo, é devolto o código de erro <samp>maxlag</samp> cunha mensaxe como <samp>esperando por $host: $lag segundos de retardo</samp>.<br />Para máis información, ver [[mw:Manual:Maxlag_parameter|Manual: Maxlag parameter]].",
+       "apihelp-main-param-smaxage": "Fixar a cabeceira <code>s-maxage</code> a esos segundos. Os erros nunca se gardan na caché.",
+       "apihelp-main-param-maxage": "Fixar a cabeceira <code>max-age</code> a esos segundos. Os erros nunca se gardan na caché.",
+       "apihelp-main-param-assert": "Verificar se o usuario está conectado como <kbd>usuario</kbd> ou ten a marca de <kbd>bot</kbd>.",
        "apihelp-main-param-requestid": "Calquera valor dado aquí será incluído na resposta. Pode usarse para distingir peticións.",
        "apihelp-main-param-servedby": "Inclúa o nome do servidor que servía a solicitude nos resultados.",
        "apihelp-main-param-curtimestamp": "Incluir a marca de tempo actual no resultado.",
        "apihelp-block-param-anononly": "Bloquear só usuarios anónimos (é dicir, desactivar edicións anónimas desta dirección IP).",
        "apihelp-block-param-nocreate": "Previr a creación de contas.",
        "apihelp-block-param-autoblock": "Bloquear automaticamente o último enderezo IP utilizado, e calquera outro enderezo desde o que intente conectarse.",
+       "apihelp-block-param-noemail": "Impide que o usuario envíe correos electrónicos a través da wiki. (Require o permiso <code>blockemail</code>).",
+       "apihelp-block-param-hidename": "Ocultar o nome de usuario do rexistro de bloqueos. (Precisa do permiso <code>hideuser</code>).",
        "apihelp-block-param-allowusertalk": "Permitir que o usuario edite a súa propia páxina de conversa (depende de <var>[[mw:Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]]</var>).",
        "apihelp-block-param-reblock": "Se o usuario xa está bloqueado, sobreescribir o bloqueo existente.",
        "apihelp-block-param-watchuser": "Vixiar a páxina de usuario ou direccións IP e a de conversa deste usuario",
+       "apihelp-block-example-ip-simple": "Bloquear dirección IP <kbd>192.0.2.5</kbd> durante tres días coa razón <kbd>Primeiro aviso</kbd>.",
+       "apihelp-block-example-user-complex": "Bloquear indefinidamente ó usuario <kbd>Vándalo</kbd> coa razón <kbd>Vandalismo</kbd>, e impedir a creación de novas contas e envío de correos electrónicos.",
+       "apihelp-checktoken-description": "Verificar a validez dun identificador de <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
+       "apihelp-checktoken-param-type": "Tipo de identificador a probar.",
        "apihelp-checktoken-param-token": "Símbolo a testar",
+       "apihelp-checktoken-param-maxtokenage": "Tempo máximo autorizado para o identificador, en segundos.",
+       "apihelp-checktoken-example-simple": "Verificar a validez de un identificador   <kbd>csrf</kbd>.",
        "apihelp-clearhasmsg-description": "Limpar a bandeira <code>hasmsg</code> para o usuario actual",
        "apihelp-clearhasmsg-example-1": "Limpar a bandeira <code>hasmsg</code> para o usuario actual",
+       "apihelp-compare-description": "Obter as diferencias entre dúas páxinas.\n\nDebe indicar un número de revisión, un título de páxina, ou un ID de páxina tanto para \"from\" como para \"to\".",
        "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.",
@@ -43,6 +55,7 @@
        "apihelp-createaccount-param-email": "Enderezo de correo eletrónico do usuario (opcional).",
        "apihelp-createaccount-param-realname": "Nome real do usuario (opcional).",
        "apihelp-createaccount-param-mailpassword": "Se se establece calquera valor, enviarase un contrasinal aleatorio ao usuario.",
+       "apihelp-createaccount-param-reason": "Razón opcional de creación da conta para gardar nos rexistros.",
        "apihelp-createaccount-param-language": "Código de lingua para usar como defecto polo usuario (de xeito opcional, usarase a lingua por defecto)",
        "apihelp-createaccount-example-pass": "Crear usuario <kbd>testuser</kbd> con contrasinal <kbd>test123</kbd>.",
        "apihelp-createaccount-example-mail": "Crear usuario <kbd>testmailuser</kbd>\"testmailuser\" e enviar por correo electrónico un contrasinal xenerado de forma aleatoria.",
@@ -52,6 +65,7 @@
        "apihelp-delete-param-reason": "Razón para o borrado. Se non se indica, usarase unha razón xenerada automaticamente.",
        "apihelp-delete-param-watch": "Engadir esta páxina á lista de vixilancia do usuario actual.",
        "apihelp-delete-param-unwatch": "Eliminar esta páxina da lista de vixilancia do usuario actual.",
+       "apihelp-delete-param-oldimage": "Nome da imaxe antiga a borrar como se proporciona en [[Special:ApiHelp/query+imageinfo|action=query&prop=imageinfo&iiprop=archivename]].",
        "apihelp-delete-example-simple": "Borrar <kbd>Main Page</kbd>.",
        "apihelp-delete-example-reason": "Eliminar <kbd>Main Page</kbd>  coa razón <kbd>Preparing for move</kbd>.",
        "apihelp-disabled-description": "Este módulo foi desactivado.",
        "apihelp-edit-param-section": "Número de selección. O <kbd>0</kbd> é para a sección superior, <kbd>new</kbd> para unha sección nova.",
        "apihelp-edit-param-sectiontitle": "Título para unha nova sección.",
        "apihelp-edit-param-text": "Contido da páxina.",
+       "apihelp-edit-param-summary": "Resumo de edición. Tamén título de sección cando $1section=new e $1sectiontitle non está definido.",
        "apihelp-edit-param-minor": "Edición pequena.",
        "apihelp-edit-param-notminor": "Edición non pequena.",
        "apihelp-edit-param-bot": "Marcar esta edición como de bot.",
+       "apihelp-edit-param-basetimestamp": "Selo de tempo da revisión de base, usado para detectar conflitos de edición. Pode obterse con [[Special:ApiHelp/query+revisions|action=query&prop=revisions&rvprop=timestamp]].",
+       "apihelp-edit-param-starttimestamp": "Selo de tempo do comezo do proceso de edición, usado para detectar conflitos de edición. Pode obterse un valor axeitado usando <var>[[Special:ApiHelp/main|curtimestamp]]</var> cando se comeza o proceso de edición (p.ex. cando se carga o contido da páxina a editar).",
+       "apihelp-edit-param-recreate": "Ignorar todos os erros da páxina mentres está a ser borrada.",
        "apihelp-edit-param-createonly": "Non editar a páxina se xa existe.",
        "apihelp-edit-param-nocreate": "Amosar un mensaxe de erro se a páxina non existe",
        "apihelp-edit-param-watch": "Engadir esta páxina á lista de vixilancia do usuario actual.",
        "apihelp-edit-param-unwatch": "Eliminar esta páxina da lista de vixilancia do usuario actual.",
+       "apihelp-edit-param-watchlist": "Engadir ou eliminar sen condicións a páxina da lista de vixiancia do usuario actual, use as preferencias ou non cambie a vixiancia.",
        "apihelp-edit-param-prependtext": "Engadir este texto ao comezo da páxina. Sobreescribirase $1text.",
+       "apihelp-edit-param-appendtext": "Engadir este texto no final da páxina. Ignorar $1text.\n\nUse $1section=new para engadir unha nova sección, máis que este parámetro.",
+       "apihelp-edit-param-undo": "Desfacer esta revisión. Ignorar $1text, $1prependtext e $1appendtext.",
+       "apihelp-edit-param-undoafter": "Desfacer tódalas revisións dende $1undo ata esta. Se non está definido, só desfacer unha revisión.",
        "apihelp-edit-param-redirect": "Resolver redireccións automáticamente",
+       "apihelp-edit-param-contentformat": "Formato de serialización de contido utilizado para o texto de entrada.",
+       "apihelp-edit-param-contentmodel": "Modelo de contido para o novo contido.",
+       "apihelp-edit-param-token": "O identificador debería enviarse empre como o último parámetro, ou polo menos despois do parámetro $1text.",
        "apihelp-edit-example-edit": "Editar a páxina",
+       "apihelp-edit-example-prepend": "Antepor <kbd>_&#95;NOTOC_&#95;</kbd> a unha páxina.",
+       "apihelp-edit-example-undo": "Desfacer revisións 13579 a 13585 con resumo automático.",
        "apihelp-emailuser-description": "Enviar un correo electrónico a un usuario.",
        "apihelp-emailuser-param-target": "Usuario ó que lle mandar correo electrónico.",
        "apihelp-emailuser-param-subject": "Asunto.",
        "apihelp-emailuser-param-text": "Corpo do correo.",
        "apihelp-emailuser-param-ccme": "Enviarme unha copia deste correo.",
+       "apihelp-emailuser-example-email": "Enviar un correo electrónico ó usuario <kbd>Administrador da wiki</kbd> co texto <kbd>Contido</kbd>.",
        "apihelp-expandtemplates-description": "Expandir tódolos modelos en wikitexto.",
        "apihelp-expandtemplates-param-title": "Título da páxina.",
        "apihelp-expandtemplates-param-text": "Sintaxis wiki a converter.",
+       "apihelp-expandtemplates-param-revid": "ID de revisión, para <nowiki>{{REVISIONID}}</nowiki> e variables similares.",
        "apihelp-expandtemplates-param-includecomments": "Cando queria incluír comentarios HTML na saída.",
+       "apihelp-expandtemplates-param-generatexml": "Xenerar árbore de análise XML (reemprazado por $1prop=parsetree).",
+       "apihelp-expandtemplates-example-simple": "Expandir o wikitexto <kbd><nowiki>{{Project:Sandbox}}</nowiki></kbd>.",
        "apihelp-feedcontributions-description": "Devolve a lista de contribucións dun usuario.",
        "apihelp-feedcontributions-param-feedformat": "O formato de alimentación.",
+       "apihelp-feedcontributions-param-user": "Para que usuarios recuperar as contribucións.",
+       "apihelp-feedcontributions-param-namespace": "Que espazo de nomes filtrar polas contribucións.",
        "apihelp-feedcontributions-param-year": "Desde o ano (e anteriores).",
        "apihelp-feedcontributions-param-month": "Desde o mes de (e anteriores).",
        "apihelp-feedcontributions-param-tagfilter": "Filtrar as contribucións que teñan estas etiquetas.",
        "apihelp-feedcontributions-param-newonly": "Mostrar só as edicións que crearon páxinas.",
        "apihelp-feedcontributions-param-showsizediff": "Mostrar diferenza de tamaño entre edicións.",
        "apihelp-feedcontributions-example-simple": "Mostrar as contribucións do usuario <kbd>Example</kbd>.",
+       "apihelp-feedrecentchanges-description": "Devolve un ficheiro de cambios recentes.",
+       "apihelp-feedrecentchanges-param-feedformat": "O formato da saída.",
+       "apihelp-feedrecentchanges-param-namespace": "Espazo de nomes ó que limitar os resultados.",
        "apihelp-feedrecentchanges-param-invert": "Tódolos nomes de espazos agás o seleccionado",
+       "apihelp-feedrecentchanges-param-associated": "Incluir o espazo de nomes asociado (conversa ou principal).",
        "apihelp-feedrecentchanges-param-days": "Días a limitar os resultados",
        "apihelp-feedrecentchanges-param-limit": "Número máximo de resultados a visualizar.",
        "apihelp-feedrecentchanges-param-from": "Mostrar modificacións desde entón.",
        "apihelp-feedrecentchanges-param-showlinkedto": "Mostrar os cambios nas páxinas ligadas coa páxina seleccionada.",
        "apihelp-feedrecentchanges-example-simple": "Mostrar os cambios recentes",
        "apihelp-feedrecentchanges-example-30days": "Mostrar os cambios recentes limitados a 30 días",
+       "apihelp-feedwatchlist-description": "Devolve o fluxo dunha lista de vixiancia.",
+       "apihelp-feedwatchlist-param-feedformat": "O formato da saída.",
+       "apihelp-feedwatchlist-param-hours": "Lista as páxinas modificadas desde estas horas ata agora.",
+       "apihelp-feedwatchlist-param-linktosections": "Ligar directamente ás seccións modificadas se é posible.",
+       "apihelp-feedwatchlist-example-default": "Mostar o fluxo da lista de vixiancia.",
        "apihelp-feedwatchlist-example-all6hrs": "Amosar tódolos cambios feitos ás páxinas vixiadas nas últimas 6 horas.",
        "apihelp-filerevert-description": "Revertir o ficheiro a unha versión anterior.",
        "apihelp-filerevert-param-filename": "Nome de ficheiro final, sen o prefixo Ficheiro:",
        "apihelp-filerevert-param-comment": "Comentario de carga.",
        "apihelp-filerevert-param-archivename": "Nome de ficheiro da revisión á que reverter.",
+       "apihelp-filerevert-example-revert": "Reverter <kbd>Wiki.png</kbd> á versión do <kbd>2011-03-05T15:27:40Z</kbd>.",
        "apihelp-help-description": "Mostrar axuda para os módulos indicados.",
+       "apihelp-help-param-modules": "Módulos para mostar axuda (valores dos parámetros <var>acción</var> e <var>formato</var>, ou <kbd>principal</kbd>). Pode especificar submódulos con un <kbd>+</kbd>.",
        "apihelp-help-param-submodules": "Incluír axuda para os submódulos do módulo nomeado.",
        "apihelp-help-param-recursivesubmodules": "Incluír axuda para os submódulos de forma recursiva.",
        "apihelp-help-param-helpformat": "Formato de saída da axuda.",
+       "apihelp-help-param-wrap": "Incluír a saída nunha estrutura de resposta API estándar.",
        "apihelp-help-param-toc": "Incluír unha táboa de contidos na saída por HTML",
        "apihelp-help-example-main": "Axuda para o módulo principal",
        "apihelp-help-example-recursive": "Toda a axuda nunha páxina",
        "apihelp-help-example-help": "Axuda do módulo de axuda en si",
+       "apihelp-help-example-query": "Axuda para dous submódulos de consulta.",
        "apihelp-imagerotate-description": "Xirar unha ou máis imaxes.",
        "apihelp-imagerotate-param-rotation": "Graos a rotar a imaxe no sentido do reloxio.",
        "apihelp-imagerotate-example-simple": "Rotar <kbd>File:Example.png</kbd> <kbd>90</kbd> graos.",
        "apihelp-imagerotate-example-generator": "Rotar tódalas imaxes en <kbd>Category:Flip</kbd> <kbd>180</kbd> graos",
+       "apihelp-import-description": "Importar unha páxina doutra wiki, ou nun ficheiro XML.\n\nDecátese de que o POST HTTP debe facerse como unha carga de ficheiro (p. ex. usando multipart/form-data) cando se envíe un ficheiro para o parámetro <var>xml</var>.",
        "apihelp-import-param-summary": "Resume de importación.",
        "apihelp-import-param-xml": "Subido ficheiro XML.",
        "apihelp-import-param-interwikisource": "Para importacións interwiki: wiki da que importar.",
        "apihelp-import-param-templates": "Para importacións interwiki: importar tódolos modelos incluídos.",
        "apihelp-import-param-namespace": "Para importacións interwiki: importar a este espazo de nomes.",
        "apihelp-import-param-rootpage": "Importar como subpáxina desta páxina.",
+       "apihelp-import-example-import": "Importar [[meta:Help:Parserfunctions]] ó espazo de nomes 100 con todo o historial.",
        "apihelp-login-param-name": "Nome de usuario.",
        "apihelp-login-param-password": "Contrasinal",
        "apihelp-login-param-domain": "Dominio (opcional).",
+       "apihelp-login-param-token": "Identificador de conexión obtido na primeira petición.",
+       "apihelp-login-example-gettoken": "Recuperar un identificador de conexión.",
        "apihelp-login-example-login": "Identificarse",
        "apihelp-logout-description": "Terminar e limpar datos de sesión.",
+       "apihelp-logout-example-logout": "Cerrar a sesión do usuario actual",
        "apihelp-managetags-description": "Realizar tarefas de xestión relacionadas coa modificación de etiquetas.",
+       "apihelp-managetags-param-reason": "Un motivo opcional para crear, borrar, activar ou desactivar a etiqueta.",
+       "apihelp-managetags-param-ignorewarnings": "Ignorar calquera aviso que apareza durante a operación.",
+       "apihelp-managetags-example-create": "Crear unha etiqueta chamada <kbd>publicidade</kbd> coa razón <kbd>Para usar en vixiancia de edicións</kbd>",
+       "apihelp-managetags-example-delete": "Borrar a etiqueta <kbd>vandalismo</kbd> coa razón <kbd>Erros ortográficos</kbd>",
+       "apihelp-managetags-example-activate": "Activar a etiqueta chamada <kbd>publicidade</kbd> coa razón <kbd>Para usar en vixiancia de edicións</kbd>",
+       "apihelp-managetags-example-deactivate": "Desactivar a etiqueta chamada <kbd>publicidade</kbd> coa razón <kbd>Xa non é necesaria</kbd>",
        "apihelp-move-description": "Mover unha páxina.",
        "apihelp-move-param-from": "Título da páxina que quere renomear. Non pode usarse xunto con <var>$1fromid</var>.",
        "apihelp-move-param-fromid": "Identificador da páxina que quere renomear. Non pode usarse xunto con <var>$1from</var>.",
        "apihelp-move-param-noredirect": "Non crear unha redirección.",
        "apihelp-move-param-watch": "Engadir a páxina e a redirección á páxina de vixiancia do usuario actual.",
        "apihelp-move-param-unwatch": "Eliminar a páxina e a redirección da páxina de vixiancia do usuario actual.",
+       "apihelp-move-param-watchlist": "Engadir ou eliminar sen condicións a páxina da lista de vixiancia do usuario actual, use as preferencias ou non cambie a vixiancia.",
        "apihelp-move-param-ignorewarnings": "Ignorar as advertencias.",
        "apihelp-move-example-move": "Mover <kbd>Títulomalo</kbd> a <kbd>Títulobo</kbd> sen deixar unha redirección.",
        "apihelp-opensearch-description": "Buscar no wiki mediante o protocolo OpenSearch.",
        "apihelp-opensearch-param-search": "Buscar texto.",
        "apihelp-opensearch-param-limit": "Número máximo de resultados a visualizar.",
        "apihelp-opensearch-param-namespace": "Espazo de nomes no que buscar.",
+       "apihelp-opensearch-param-suggest": "Non facer nada se <var>[[mw:Manual:$wgEnableOpenSearchSuggest|$wgEnableOpenSearchSuggest]]</var> é falso.",
+       "apihelp-opensearch-param-redirects": "Como xestionar as redireccións:\n;return:Devolve a mesma redirección.\n;resolve:Devolve a páxina á que apunta. Pode devolver menos de $1limit resultados.\nPor razóns históricas, o valor por defecto para $1format=json é \"return\" e \"resolve\" para outros formatos.",
        "apihelp-opensearch-param-format": "O formato de saída.",
        "apihelp-opensearch-example-te": "Atopar páxinas que comezan por <kbd>Te</kbd>.",
+       "apihelp-options-description": "Cambiar as preferencias do usuario actual.\n\nSó se poden cambiar opcións que estean rexistradas no núcleo ou nunha das extensións instaladas, ou opcións con claves prefixadas con \"userjs-\" (previstas para ser usadas por scripts de usuario).",
        "apihelp-options-param-reset": "Reiniciar 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). O valor non pode ter caracteres de barra vertical. Se non se indica un valor (sen u signo igual), p. ex. nomeopcion|outraopcion|..., a opción será gardada co seu valor por defecto.",
+       "apihelp-options-param-optionname": "Nome dunha opción que debe ser fixado ó valor dado por <var>$1optionvalue</var>.",
+       "apihelp-options-param-optionvalue": "Valor da opción especificada por <var>$1optionname</var>, pode conter o caracter da barra vertical.",
        "apihelp-options-example-reset": "Restablecer tódaalas preferencias",
+       "apihelp-options-example-change": "Cambiar as preferencias <kbd>skin</kbd> and <kbd>hideminor</kbd>.",
+       "apihelp-options-example-complex": "Restaurar todas as preferencias, logo fixar <kbd>skin</kbd> e <kbd>nickname</kbd>.",
        "apihelp-paraminfo-description": "Obter información sobre módulos API.",
+       "apihelp-paraminfo-param-modules": "Lista de nomes de módulos (valores dos parámetros <var>acción</var e <var>formato</var>, ou <kbd>principal</kbd>). Pode especificar submódulos con <kbd>+</kbd>.",
+       "apihelp-paraminfo-param-helpformat": "Formato das cadeas de axuda.",
+       "apihelp-paraminfo-param-querymodules": "Lista dos nomes de módulos de consulta (valores dos parámetros <var>prop</var>, <var>meta</var> ou <var>list</var>). Use <kbd>$1modules=query+foo</kbd> no canto de <kbd>$1querymodules=foo</kbd>.",
+       "apihelp-paraminfo-param-mainmodule": "Obter información sobre o módulo principal (nivel superior). No canto use <kbd>$1modules=main</kbd>.",
+       "apihelp-paraminfo-param-pagesetmodule": "Obter información sobre o módulo pageset (proporcionando títulos= e amigos).",
+       "apihelp-paraminfo-param-formatmodules": "Lista dos nomes de módulo de formato (valores do parámetro <var>formato</var>). No canto use <var>$1modules</kbd>.",
+       "apihelp-parse-param-title": "Título da páxina á que pertence o texto. Se non se indica, debe especificarse <var>$1contentmodel</var>, e [[API]] usarase como o título.",
+       "apihelp-parse-param-text": "Texto a analizar. Use <var>$1title</var> ou <var>$1contentmodel</var> para controlar o modelo de contido.",
+       "apihelp-parse-param-summary": "Resumo a analizar.",
+       "apihelp-parse-param-page": "Analizar o contido desta páxina. Non pode usarse de forma conxunta con <var>$1text</var> e <var>$1title</var>.",
+       "apihelp-parse-param-pageid": "Analizar o contido desta páxina. Ignora <var>$1page</var>.",
+       "apihelp-parse-param-redirects": "Se <var>$1page</var> ou <var>$1pageid</var> apuntar a unha redirección, resólvea.",
+       "apihelp-parse-param-oldid": "Analizar o contido desta revisión. Ignora <var>$1page</var> e <var>$1pageid</var>.",
+       "apihelp-parse-param-pst": "Fai unha transformación antes de gardar a entrada antes de analizala. Válida unicamente para usar con texto.",
        "apihelp-patrol-description": "Patrullar unha páxina ou edición.",
        "apihelp-patrol-example-rcid": "Patrullar un cambio recente",
        "apihelp-patrol-example-revid": "Patrullar unha revisión",
index 963bd5c..aa88484 100644 (file)
@@ -10,7 +10,8 @@
                        "Stens51",
                        "Boom",
                        "Jenniesarina",
-                       "Marfuas"
+                       "Marfuas",
+                       "VickyC"
                ]
        },
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Dokumentation]]\n* [[mw:API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api E-postlista]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API-aviseringar]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R|Buggar & förslag]\n</div>\n<strong>Status:</strong> Alla funktioner som visas på denna sida borde fungera. API:et är dock fortfarande under aktiv utveckling och kan ändras när som helst. Prenumerera på [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/mediawiki-api-announce e-postlistan] för att få aviseringar om uppdateringar.\n\n<strong>Felaktiga förfrågningar:</strong> När felaktiga förfrågningar skickas till API:et skickas en HTTP-header med nyckeln \"MediaWiki-API-Error\" och sedan sätts både värdet på headern och den felkoden som returneras till samma värde. För mer information läs [[mw:API:Errors_and_warnings|API: Fel och varningar]].",
        "apihelp-options-example-complex": "Återställ alla inställningar, ställ sedan in <kbd>skin</kbd> och <kbd>nickname</kbd>.",
        "apihelp-paraminfo-description": "Få information om API moduler.",
        "apihelp-paraminfo-param-helpformat": "Format för hjälpsträngar.",
+       "apihelp-paraminfo-param-mainmodule": "Få information om huvud-modulen (top-level) också. Använd <kbd>$1modules=main</kbd> istället.",
        "apihelp-parse-param-summary": "Sammanfattning att tolka.",
        "apihelp-parse-param-page": "Tolka innehållet av denna sida. Kan inte användas tillsammans med <var>$1text</var> och <var>$1title</var>.",
        "apihelp-parse-param-pageid": "Tolka innehållet på denna sida. Åsidosätter <var>$1sidan</var>.",
index 1fb3039..9c292ba 100644 (file)
        "apihelp-options-param-reset": "重置偏好设置到网站默认设置。",
        "apihelp-options-param-resetkinds": "当<var>$1reset</var>选项被设置时,要重置的选项类型列表。",
        "apihelp-options-param-change": "更改列表,以name=value格式化(例如skin=vector)。值不能包含管道字符。如果没提供值(甚至没有等号),例如optionname|otheroption|...,选项将重置为默认值。",
+       "apihelp-options-param-optionname": "应设置为由<var>$1optionvalue</var>提供值的选项名称。",
        "apihelp-options-example-reset": "重置所有用户设置",
        "apihelp-options-example-change": "更改<kbd>skin</kbd>和<kbd>hideminor</kbd>设置。",
        "apihelp-options-example-complex": "重置所有设置,然后设置<kbd>皮肤</kbd>和<kbd>昵称</kbd>。",
        "apihelp-query+allimages-param-minsize": "限于至少这么多字节的图像。",
        "apihelp-query+allimages-param-maxsize": "限于顶多这么多字节的图像。",
        "apihelp-query+allimages-param-sha1": "图像的 SHA1 哈希。覆盖$1sha1base36。",
+       "apihelp-query+allimages-param-sha1base36": "基于base 36的图片的SHA1哈希值(用于MediaWiki)。",
        "apihelp-query+allimages-param-mime": "要搜索的MIME类型,例如<kbd>image/jpeg</kbd>。",
        "apihelp-query+allimages-param-limit": "共计要返回多少图像。",
        "apihelp-query+allimages-example-B": "显示以字母<kbd>B</kbd>开始的文件列表。",
        "apihelp-query+allredirects-example-generator": "获得包含重定向的页面",
        "apihelp-query+alltransclusions-description": "列出所有嵌入页面(使用&#123;&#123;x&#125;&#125;嵌入的页面),包括不存在的。",
        "apihelp-query+alltransclusions-param-namespace": "要列举的名字空间。",
+       "apihelp-query+alltransclusions-param-limit": "要返回的总计项目。",
        "apihelp-query+alltransclusions-param-dir": "罗列所采用的方向。",
        "apihelp-query+alltransclusions-example-unique": "列出孤立嵌入标题",
        "apihelp-query+alltransclusions-example-generator": "获得包含嵌入内容的页面。",
        "apihelp-query+embeddedin-example-generator": "获得有关显示嵌入<kbd>Template:Stub</kbd>的页面的信息。",
        "apihelp-query+extlinks-param-limit": "返回多少链接。",
        "apihelp-query+extlinks-example-simple": "获取<kbd>首页</kbd>的外部链接列表。",
+       "apihelp-query+exturlusage-param-protocol": "URL协议。如果为空并且<var>$1query</var>被设置,协议为<kbd>http</kbd>。将此和<var>$1query</var>都留空以列举所有外部链接。",
        "apihelp-query+exturlusage-param-query": "不包括协议的搜索字符串。参见[[Special:LinkSearch]]。留空以列出所有外部链接。",
        "apihelp-query+exturlusage-param-namespace": "要列举的页面名字空间。",
        "apihelp-query+exturlusage-param-limit": "返回多少页面。",
        "apihelp-query+pageswithprop-example-generator": "获取有关前10个使用<code>_&#95;NOTOC_&#95;</code>的页面的信息。",
        "apihelp-query+prefixsearch-param-search": "搜索字符串。",
        "apihelp-query+prefixsearch-param-namespace": "搜索的名字空间。",
+       "apihelp-query+prefixsearch-param-limit": "要返回的结果最大数。",
        "apihelp-query+prefixsearch-param-offset": "跳过的结果数。",
        "apihelp-query+prefixsearch-example-simple": "搜索以<kbd>meaning</kbd>开头的页面标题。",
        "apihelp-query+protectedtitles-param-namespace": "只列出这些名字空间的标题。",
index 66df7fc..713c5cb 100644 (file)
@@ -29,7 +29,8 @@
  * The contained objects include:
  *   a) Key objects that depend (for construction/loading) on the HTTP request
  *   b) Key objects used for response building and PHP session state control
- *   c) The site configuration object
+ *   c) Performance metric deltas accumulated from request execution
+ *   d) The site configuration object
  * All of the objects are useful for the vast majority of MediaWiki requests.
  * The site configuration object is included on grounds of extreme
  * utility, even though it should not actually depend on the web request.
@@ -40,7 +41,8 @@
  *   c) Primary MediaWiki output builder objects (OutputPage, user skin object)
  *   d) The language object for the user/request
  *   e) The title and wiki page objects requested via URL (if any)
- *   f) The site configuration object
+ *   f) Performance metric deltas accumulated from request execution
+ *   g) The site configuration object
  *
  * This class is not intended as a service-locator nor a service singleton.
  * Objects that only depend on site configuration do not belong here (aside
index 63e8611..3af08d6 100644 (file)
@@ -47,7 +47,7 @@ class MysqlInstaller extends DatabaseInstaller {
 
        public $supportedEngines = array( 'InnoDB', 'MyISAM' );
 
-       public $minimumVersion = '5.0.2';
+       public $minimumVersion = '5.0.3';
 
        public $webUserPrivs = array(
                'DELETE',
index ae1a1d4..36d2c1d 100644 (file)
@@ -271,6 +271,8 @@ class MysqlUpdater extends DatabaseUpdater {
                        array( 'dropField', 'site_stats', 'ss_total_views', 'patch-drop-ss_total_views.sql' ),
                        array( 'dropField', 'page', 'page_counter', 'patch-drop-page_counter.sql' ),
                        array( 'doUserNewTalkUseridUnsigned' ),
+                       // note this patch covers other _comment and _description fields too
+                       array( 'modifyField', 'recentchanges', 'rc_comment', 'patch-editsummary-length.sql' ),
                );
        }
 
index 81304c4..2693be0 100644 (file)
@@ -142,6 +142,7 @@ class SqliteUpdater extends DatabaseUpdater {
                        array( 'dropTable', 'hitcounter' ),
                        array( 'dropField', 'site_stats', 'ss_total_views', 'patch-drop-ss_total_views.sql' ),
                        array( 'dropField', 'page', 'page_counter', 'patch-drop-page_counter.sql' ),
+                       array( 'modifyField', 'filearchive', 'fa_deleted_reason', 'patch-editsummary-length.sql' ),
                );
        }
 
index be87f19..9959f29 100644 (file)
@@ -6,9 +6,12 @@
                ]
        },
        "config-information": "Информаци",
+       "config-your-language": "Сирĕн чĕлхӳ:",
+       "config-wiki-language": "Вики чĕлхе:",
        "config-back": "← Кутăн",
        "config-continue": "Малалла →",
        "config-page-language": "Чĕлхе",
+       "config-page-name": "Ят",
        "mainpagetext": "'''«MediaWiki» вики-движока лартасси ăнăçлă вĕçленчĕ.'''",
        "mainpagedocfooter": "Ку википе ĕçлеме пулăшакан информацине [//meta.wikimedia.org/wiki/Help:Contents/ru усăç руководствинче] тупма пултаратăр.\n\n== Пулăшма пултарĕç ==\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Ĕнерлевсен списокĕ];\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki тăрăх час-часах ыйтакан ыйтусемпе хуравсем];\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki çĕнĕ верси тухнине пĕлтерекен рассылка].\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]"
 }
index 1a730d3..f4fe913 100644 (file)
@@ -44,9 +44,6 @@ abstract class JobQueue {
        /** @var int Maximum number of times to try a job */
        protected $maxTries;
 
-       /** @var bool Allow delayed jobs */
-       protected $checkDelay;
-
        /** @var BagOStuff */
        protected $dupCache;
        /** @var JobQueueAggregator */
@@ -73,10 +70,6 @@ abstract class JobQueue {
                if ( !in_array( $this->order, $this->supportedOrders() ) ) {
                        throw new MWException( __CLASS__ . " does not support '{$this->order}' order." );
                }
-               $this->checkDelay = !empty( $params['checkDelay'] );
-               if ( $this->checkDelay && !$this->supportsDelayedJobs() ) {
-                       throw new MWException( __CLASS__ . " does not support delayed jobs." );
-               }
                $this->dupCache = wfGetCache( CACHE_ANYTHING );
                $this->aggr = isset( $params['aggregator'] )
                        ? $params['aggregator']
@@ -103,10 +96,6 @@ abstract class JobQueue {
         *                  but not acknowledged as completed after this many seconds. Recycling
         *                  of jobs simple means re-inserting them into the queue. Jobs can be
         *                  attempted up to three times before being discarded.
-        *   - checkDelay : If supported, respect Job::getReleaseTimestamp() in the push functions.
-        *                  This lets delayed jobs wait in a staging area until a given timestamp is
-        *                  reached, at which point they will enter the queue. If this is not enabled
-        *                  or not supported, an exception will be thrown on delayed job insertion.
         *
         * Queue classes should throw an exception if they do not support the options given.
         *
@@ -148,14 +137,6 @@ abstract class JobQueue {
                return $this->order;
        }
 
-       /**
-        * @return bool Whether delayed jobs are enabled
-        * @since 1.22
-        */
-       final public function delayedJobsEnabled() {
-               return $this->checkDelay;
-       }
-
        /**
         * Get the allowed queue orders for configuration validation
         *
@@ -179,6 +160,14 @@ abstract class JobQueue {
                return false; // not implemented
        }
 
+       /**
+        * @return bool Whether delayed jobs are enabled
+        * @since 1.22
+        */
+       final public function delayedJobsEnabled() {
+               return $this->supportsDelayedJobs();
+       }
+
        /**
         * Quickly check if the queue has no available (unacquired, non-delayed) jobs.
         * Queue classes should use caching if they are any slower without memcached.
@@ -326,7 +315,7 @@ abstract class JobQueue {
                        if ( $job->getType() !== $this->type ) {
                                throw new MWException(
                                        "Got '{$job->getType()}' job; expected a '{$this->type}' job." );
-                       } elseif ( $job->getReleaseTimestamp() && !$this->checkDelay ) {
+                       } elseif ( $job->getReleaseTimestamp() && !$this->supportsDelayedJobs() ) {
                                throw new MWException(
                                        "Got delayed '{$job->getType()}' job; delays are not supported." );
                        }
index 243fec9..d9fe30b 100644 (file)
@@ -93,7 +93,6 @@ class JobQueueRedis extends JobQueue {
                                "Non-daemonized mode is no longer supported. Please install the " .
                                "mediawiki/services/jobrunner service and update \$wgJobTypeConf as needed." );
                }
-               $this->checkDelay = true; // always enabled
        }
 
        protected function supportedOrders() {
index afd2bd8..67ab986 100644 (file)
@@ -25,7 +25,6 @@
                "resources/src/jquery/jquery.byteLength.js",
                "resources/src/jquery/jquery.byteLimit.js",
                "resources/src/jquery/jquery.checkboxShiftClick.js",
-               "resources/src/jquery/jquery.client.js",
                "resources/src/jquery/jquery.colorUtil.js",
                "resources/src/jquery/jquery.confirmable.js",
                "resources/src/jquery/jquery.footHovzer.js",
@@ -35,6 +34,7 @@
                "resources/src/jquery/jquery.makeCollapsible.js",
                "resources/src/jquery/jquery.spinner.js",
                "resources/src/jquery/jquery.tabIndex.js",
+               "resources/lib/jquery.client/jquery.client.js",
                "resources/lib/oojs",
                "resources/lib/oojs-ui"
        ]
index d114aee..a47994b 100644 (file)
@@ -1,7 +1,8 @@
 {
        "@metadata": {
                "authors": [
-                       "Baloch Afghanistan"
+                       "Baloch Afghanistan",
+                       "Ibrahim khashrowdi"
                ]
        },
        "tog-underline": "لینکانی جهلگا خط کشیتین",
        "sunday-at": "یک‌شنبی $1",
        "yesterday-at": "زئ  بی $1",
        "metadata": "فرادیتا",
+       "metadata-expand": "تپسیلی ئین مالوماتی نشان داتین",
+       "metadata-collapse": "تپسیلی ئین مالوماتی چیهرداتین",
        "metadata-fields": "ای پیامی تا اکس ئی میتادیتا نشان داته بوته و وختی که میتادیتا ئی لیست جم بیئت هم نشان داته ئه بیئت . دیگه موارید تانا وختی نشان داته ئه بیئنت که جدول پاچ بیئت.\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-bitspersample": "نقطه بئ هر جز ئی تا",
+       "exif-compression": "پرینچیتینوکین شیما",
        "exif-photometricinterpretation": "ٹیک ئانی ترکیب",
        "exif-orientation": "نیمگ ، جهت",
        "exif-samplesperpixel": "اجزائانی اندازه گ",
        "exif-yresolution": "عمودین تفکیک پذیری",
        "exif-stripoffsets": "اکس ئی دیتای جاگه",
        "exif-rowsperstrip": "ردیپ هانی اندازگ بئ هر نواری تا",
+       "exif-stripbytecounts": "بایت بئ هر پریننچیته بوته ئین نواری تا",
        "exif-jpeginterchangeformat": "جابه‌جایی نسبت بئ JPEG SOI",
        "exif-jpeginterchangeformatlength": "بایٹ  JPEG ئی دیتایی",
        "exif-whitepoint": "سپیتین ٹیکئ رنگینی",
        "exif-primarychromaticities": "اولویتانی رنگیری",
+       "exif-ycbcrcoefficients": "ماتریس ئی زرایب تبدیل رنگین په زایی",
+       "exif-referenceblackwhite": "سیاه و سپیتین مرجه ئانی اندازهگ",
        "exif-datetime": "فایلی تغیر ئی وخت و تاریخ",
        "exif-imagedescription": "اکسئ ئنوان",
        "exif-make": "کامره ئی جۆڑ کنۆکین شرکت",
        "exif-exifversion": "exif ئی نخسه",
        "exif-flashpixversion": "Flashpix ئی پُشتیوانی بوته ئین نخسه",
        "exif-colorspace": "رنگانئ فضا",
+       "exif-componentsconfiguration": "هریک شه مووله په ئانی مانا",
+       "exif-compressedbitsperpixel": "اکس ئی پشرده ئی هالت",
        "exif-pixelydimension": "اکسئ گۆر",
        "exif-pixelxdimension": "اکسئ بُرزی",
        "exif-usercomment": "کار زوروکئ توضیحات",
+       "exif-relatedsoundfile": "مربوتین توارین پایل",
        "exif-datetimeoriginal": "دیتائانی ودئ بوتین ئی تاریخ و وخت",
        "exif-datetimedigitized": "دیجیتالی بوتین ئی وخت و تاریخ",
+       "exif-subsectime": "تاریخ و وختی کسر سانیه",
+       "exif-subsectimeoriginal": "اسلی ین وختی کسر سانیه",
+       "exif-subsectimedigitized": "دیجیتالین وختی کسر سانیه",
+       "exif-exposuretime": "نوردهگی وخت",
        "exif-exposuretime-format": "$1 ثانیه ($2)",
        "exif-fnumber": "اف ئی نمبر",
        "exif-exposureprogram": "نوردهئ پروگرام",
        "exif-aperturevalue": "دیافراگم آپکس ئی اندازه گ",
        "exif-brightnessvalue": "آپکس روشنائی",
        "exif-exposurebiasvalue": "نوردهئ خطا",
+       "exif-maxaperturevalue": "ڈگاری پراخی هد اکسه ر",
        "exif-subjectdistance": "سوژه ئی فاصله",
+       "exif-meteringmode": "روشنایی سنجیش هالت",
        "exif-lightsource": "نور ئی منشا",
        "exif-flash": "پلاش",
+       "exif-focallength": "ئدسی ئی کانونین پاسیله",
        "exif-subjectarea": "جسم ئی مساحت",
        "exif-flashenergy": "پلاش ئی قدرت",
+       "exif-focalplanexresolution": "تفکیک‌پذیری X کانونی دیم",
+       "exif-focalplaneyresolution": "تفکیک‌پذیری Y کانونین دیم",
+       "exif-focalplaneresolutionunit": "کانونی دیمی تپکیک زورتین ئی واهید",
        "exif-subjectlocation": "سوژه ئی مکان",
        "exif-exposureindex": "نوردهگی شاخس",
        "exif-sensingmethod": "هسگری روش",
        "exif-exposuremode": "نوردهگی هالت",
        "exif-whitebalance": "سپیت ئین رنگی ته هادول (white balance)",
        "exif-digitalzoomratio": "دیجیتالین نه زیننکی ئی نیسبت",
+       "exif-focallengthin35mmfilm": "کانونین پاسیله په ۳۵ میلی میترین پیلم ئا",
+       "exif-scenecapturetype": "سکن ئی کاپی تور ئی ره قم",
        "exif-gaincontrol": "سه هنه ئی تنزیم",
        "exif-contrast": "کنتراست",
        "exif-saturation": "رنگئ بَزئ",
        "exif-sharpness": "وضوح",
        "exif-devicesettingdescription": "دستگاه ئی تنظیماتانی شرح",
+       "exif-subjectdistancerange": "سوژه پاسیله مهدوده",
+       "exif-imageuniqueid": "اکس ئی یونیک ئین آی ڈی",
+       "exif-gpsversionid": "جی‌پی‌اس ئی نخسه برچسپ",
+       "exif-gpslatituderef": "جوگراپیایین گۆور شمالی یا جنوبی",
        "exif-gpslatitude": "جوگرافیایی ئین گۆر",
+       "exif-gpslongituderef": "جوگراپیایین تچکی روچ درات یا روچ کپت",
        "exif-gpslongitude": "جوگرافیایی ئین تچکی",
+       "exif-gpsaltituderef": "ارتقائی مرجئهی ٹیک",
        "exif-gpsaltitude": "بُرزئ",
        "exif-gpstimestamp": "جی‌پی‌اس ئی وخت (اتمی ئین سائت)",
+       "exif-gpssatellites": "ایستیپاده بوته ئین ماهواره په اندازه گیری ئا",
+       "exif-gpsstatus": "گیرۆکی وزی ئت",
+       "exif-gpsmeasuremode": "اندازه گیری هالت",
+       "exif-gpsdop": "اندازه گیری ئی د قت",
+       "exif-gpsspeedref": "سورئت ئی یونی\tٹ",
        "exif-gpsspeed": "جی پی اس ئی گیروکی سور ئه ت",
+       "exif-gpstrackref": "مرجه په هه رکت ئی نیمگا",
+       "exif-gpstrack": "هه رکت ئی نیمگ",
+       "exif-gpsimgdirectionref": "مرجه په اکس ئی نیمگا",
        "exif-gpsimgdirection": "اکس ئی نیمه گ",
        "exif-gpsmapdatum": "جیودیستک ئی نخشه برداری ئی مه لومات",
+       "exif-gpsdestlatituderef": "مرجه ئی په جوگراپیایین گۆور مخسدا",
+       "exif-gpsdestlatitude": "جوگراپیایی مخسدی گۆور",
+       "exif-gpsdestlongituderef": "مرجه ئی په جوگراپیایین تچکی مخسدا",
        "exif-gpsdestlongitude": "مخسه د ئی جوغراپیائی تچکی",
+       "exif-gpsdestbearingref": "مرجه ئی په مخسدی نیمگا",
+       "exif-gpsdestbearing": "مخسدی نیمگ",
+       "exif-gpsdestdistanceref": "مرجه په پاسیله تا مخسدا",
        "exif-gpsdestdistance": "پاسیله تا مخسه د ئا",
        "exif-gpsprocessingmethod": "GPS ئی پروسیس ئی میتود ئی نام",
        "exif-gpsareainformation": "جی‌پی‌اس ئی ناحیه ئی نام",
        "exif-gpsdatestamp": "جی پی اس ئی تاریخ",
+       "exif-gpsdifferential": "جی‌پی‌اس کمی ئی تسهی کورتین",
        "exif-jpegfilecomment": "JPEG ئی فایل ئی توزی ئات",
        "exif-keywords": "کیبورد",
+       "exif-worldregioncreated": "منتیکه شه جهانا که اکس آدا گیپته بوته",
+       "exif-countrycreated": "ملکی نام که اکس آدا گیپته بوته",
+       "exif-countrycodecreated": "ملکی کود که اکس آدا گیپته بوته",
+       "exif-provinceorstatecreated": "ولایت یا ایالت که اکس آد گیپته بوته",
+       "exif-citycreated": "شاری که اکس آدا گیپته بوته",
+       "exif-sublocationcreated": "شاری یک بخش که اکس آدا گیپته بوته",
        "exif-worldregiondest": "جهانئ منطقه نشان داته بوته",
        "exif-countrydest": "مُلک نشان داته بوته",
        "exif-countrycodedest": "مُلکی کود نشان داته بوته",
        "exif-citydest": "شار نشان داته بوته",
        "exif-sublocationdest": "شاری یک بخش نشان داته بوته",
        "exif-objectname": "گۆنڈین ئینوان",
+       "exif-specialinstructions": "خاسین دستورئان",
        "exif-headline": "ئنوان",
+       "exif-credit": "امتیاز يی واوند/پیش داروک",
        "exif-source": "منشا",
+       "exif-editstatus": "اکسی تهریریه ئین وزی ئت",
+       "exif-urgency": "پوریت",
+       "exif-fixtureidentifier": "نشریه ئی ستون ئی نام",
+       "exif-locationdest": "اکس بوته ئین مئل",
+       "exif-locationdestcode": "اکس بوته ئین مئلی کود",
+       "exif-objectcycle": "ای روچی وخت که ای می\tڈیا په آیی بی نه زر گیپته بوته",
+       "exif-contact": "ته ماس ئی مه لومات",
        "exif-writer": "نویسوک",
        "exif-languagecode": "زبان",
        "exif-iimversion": "IIM ئی نخسه",
        "exif-iimcategory": "تهر",
        "exif-iimsupplementalcategory": "تکمیلین تهر ئان",
+       "exif-datetimeexpires": "ایستیپاده شه تاریخ ئا",
        "exif-datetimereleased": "منتشر بوته بی",
+       "exif-originaltransmissionref": "اسلی ئین مئل ئی جابجایی کود",
        "exif-identifier": "شناسگ",
        "exif-lens": "استفاده بوته ئین لینز",
        "exif-serialnumber": "کامره ئی سریال نمبر",
        "exif-cameraownername": "کامره ئی واوُند",
        "exif-label": "برچسب",
+       "exif-datetimemetadata": "دی\tٹائی آخیرئین تغیرات",
        "exif-nickname": "اکس ئی غیررسمی ئین نام",
        "exif-rating": "امتیاز (شه 5)",
+       "exif-rightscertificate": "هه قوق ئی مدیریت ئی سه ر تیپی کی\tٹ",
        "exif-copyrighted": "کاپی رایٹ ئی وزیئت",
        "exif-copyrightowner": "کاپی رایٹ ئی واوُند",
        "exif-usageterms": "استفاده ئی شرایط",
+       "exif-webstatement": "آنلاین کاپی رایت ئی جار",
+       "exif-originaldocumentid": "یونیک آی ڈی شه اسلین سندئان",
+       "exif-licenseurl": "انترنتی ادرس په کاپی رایٹی جواز ئا",
+       "exif-morepermissionsurl": "جایگزین ئین مالوماتانی جواز ئان",
+       "exif-attributionurl": "پدا ایستیپاده ئی وختا، مهربانی بکنیت لینک به دهیت په",
+       "exif-preferredattributionname": "پدا ایستیپاده ئی وختا، مهربانی بکنیت ائتیبار به دهیت په",
        "exif-pngfilecomment": "PNG ئی فایلی شرح",
        "exif-disclaimer": "تکذیب‌نامه",
        "exif-contentwarning": "محتوایی هشدار",
        "exif-giffilecomment": "GIF ئی فایلی شرح",
        "exif-intellectualgenre": "مورید ئی رقم",
        "exif-subjectnewscode": "موضو ئی کود",
+       "exif-scenecode": "IPTC سکن ئی کوڈ",
+       "exif-event": "هالت ئی که بئ اکس ئی تا نشان داته بوته",
+       "exif-organisationinimage": "نشان داته بوته ئین سازمان",
+       "exif-personinimage": "نشان داته بوته ئین شخس",
+       "exif-originalimageheight": "اکس ئی بُرزی دیم شه بوریتین ئا",
+       "exif-originalimagewidth": "اکس ئی گوور دیم شه بوریتین ئا",
+       "exif-compression-1": "غیرپشورده",
        "exif-compression-3": "سی‌سی‌آی‌تی‌تی ئی نمبرئانی ۳ گروپ کودگذاری کورتین",
        "exif-compression-4": "سی‌سی‌آی‌تی‌تی ئی نمبرئانی ۴ گروپ کودگذاری کورتین",
        "exif-copyrighted-true": "کاپی رایت بوت",
+       "exif-copyrighted-false": "کاپی رایٹ ئی وزی ئت ته ئین نه بوته",
        "exif-unknowndate": "نامئلومین تاریخ",
        "exif-orientation-1": "نورمال",
        "exif-orientation-2": "اوپۆکی ئین پۆشت و دیم بوته ئین",
        "exif-orientation-3": "۱۸۰ درجه چرخ وارته",
        "exif-orientation-4": "ئۆمودی ئین پۆشت و دیم بوته ئین",
+       "exif-orientation-8": "۹۰° سائتگرد چاوارته",
+       "exif-planarconfiguration-1": "په زورین قالب",
+       "exif-planarconfiguration-2": "دو دیمین پورمت",
+       "exif-colorspace-65535": "تنزیم نه بوته",
        "exif-componentsconfiguration-0": "وجود نداریت",
        "exif-exposureprogram-0": "تئریپ نه بوته",
        "exif-exposureprogram-1": "دستی",
        "exif-exposureprogram-2": "عادی ئین پروگرام",
+       "exif-exposureprogram-3": "دیاپراگم ئی اولویت",
        "exif-exposureprogram-4": "شاتر ئی اولویت",
        "exif-subjectdistance-value": "$1 متر",
        "exif-meteringmode-0": "نامئلوم",
        "exif-lightsource-0": "نامئلوم",
        "exif-lightsource-1": "روچی روشنائی",
        "exif-lightsource-2": "فلورسانت",
+       "exif-lightsource-3": "تنگستن (نور بی گرمی ئا)",
        "exif-lightsource-4": "پلاش",
        "exif-lightsource-9": "جوانین هوا",
        "exif-lightsource-10": "جمری ئین آسمان",
        "exif-lightsource-255": "نور ئی دیگه منشا ئان",
        "exif-flash-fired-0": "پلاش جته نه بوت",
        "exif-flash-fired-1": "گو پلاش جتینا",
+       "exif-flash-return-2": "انئی کاسین روشنایی ودی نه بوت",
+       "exif-flash-return-3": "انئی کاسین روشنایی ودی نه بوت",
+       "exif-flash-mode-1": "اجبارین پلاش جتین",
+       "exif-flash-mode-2": "دیمگیری شه اجبارین پلاش جتین ئا",
        "exif-flash-mode-3": "اوتوماتیکین هاله ت",
+       "exif-flash-function-1": "پلاش ئی ئملکرد نه داریت",
        "exif-flash-redeye-1": "چمانی سۆر ئی زیان کورتین",
        "exif-focalplaneresolutionunit-2": "اینچ",
        "exif-sensingmethod-1": "ته ریپ نه بوته",
+       "exif-sensingmethod-2": "نائیه ئی رنگین سنسور یک تراشه ئین",
+       "exif-sensingmethod-3": "نائیه ئی رنگین سنسور دو تراشه ئین",
+       "exif-sensingmethod-4": "نائیه ئی رنگین سنسور سه تراشه ئین",
+       "exif-sensingmethod-5": "نائیه ئی رنگین سنسور ترتیب",
+       "exif-filesource-3": "اکاسی دیجیتالین کامره",
+       "exif-scenetype-1": "اکس دیم په دیم اکاسی بوته",
        "exif-customrendered-0": "عادین ظهور",
        "exif-customrendered-1": "سفارشین ظهور",
        "exif-exposuremode-0": "اوتوماتیکین نوردهی",
        "exif-scenecapturetype-2": "پرتره",
        "exif-scenecapturetype-3": "شپئ چم گیند",
        "exif-gaincontrol-0": "هیچ‌گوجام",
+       "exif-gaincontrol-1": "دریاپتی هدی آقلین باز کورتین",
+       "exif-gaincontrol-2": "دریاپتی هدی آکسرین باز کورتین",
+       "exif-gaincontrol-3": "هه دی آقل گیپتی نوکی کم کورتین",
+       "exif-gaincontrol-4": "هه دی اکسر گیپتی نوکی کم کورتین",
        "exif-contrast-0": "نورمال",
        "exif-contrast-1": "نرم",
        "exif-contrast-2": "سک",
        "exif-subjectdistancerange-1": "ماکرو",
        "exif-subjectdistancerange-2": "نزینک گیند",
        "exif-subjectdistancerange-3": "دور گیند",
+       "exif-gpslatitude-n": "جوگراپیایی شمالی گ\tۆور",
+       "exif-gpslatitude-s": "جوگراپیایی جنوبی گ\tۆور",
+       "exif-gpslongitude-e": "جوگراپیایی روچ درات ئی تچکی",
+       "exif-gpslongitude-w": "جوگراپیایی روچ کپت ئی تچکی",
+       "exif-gpsaltitude-above-sealevel": "$1 {{PLURAL:$1|میتر|میتر}} بُرزتیر شه دریابی روگا",
+       "exif-gpsaltitude-below-sealevel": "$1 {{PLURAL:$1|میتر|میتر}} جهلتیر شه دریابی روگا",
+       "exif-gpsstatus-a": "بی اندازه گیری هالا",
+       "exif-gpsstatus-v": "اندازه گ ئی موقایسه گیری",
+       "exif-gpsmeasuremode-2": "دو بوئدین اندازه گیری",
+       "exif-gpsmeasuremode-3": "۳ بوئدین اندازه گیری",
+       "exif-gpsspeed-k": "کیلومیتر بئ سائت تا",
        "exif-gpsspeed-m": "مایل بئ سائت",
        "exif-gpsspeed-n": "گرین",
        "exif-gpsdestdistance-k": "کیلومتر",
        "exif-isospeedratings-overflow": "مزنتیر شه ۶۵۵۳۵",
        "exif-iimcategory-ace": "هنر، فرهنگ و سرگرمی",
        "exif-iimcategory-clj": "جنایت و قانون",
+       "exif-iimcategory-dis": "به لا و پیش آمدئان",
        "exif-iimcategory-fin": "اقتصاد و تجارت",
        "exif-iimcategory-edu": "یادگیپتین",
        "exif-iimcategory-evn": "محیط زیست",
        "exif-iimcategory-hth": "سلامت",
        "exif-iimcategory-hum": "بشر ئی علاقه",
        "exif-iimcategory-lab": "کار",
+       "exif-iimcategory-lif": "زنده گی ره قم و بیکاری وختان",
        "exif-iimcategory-pol": "سیاست",
        "exif-iimcategory-rel": "مذهب و باور",
        "exif-iimcategory-sci": "علم و تخنیک",
        "exif-urgency-normal": "ئادی ($1)",
        "exif-urgency-low": "کم ($1)",
        "exif-urgency-high": "باز ($1)",
+       "exif-urgency-other": "تاریپ بوته ئین اولویت شه ($1) کارزوروک ئی نیمه گا",
        "namespacesall": "موچ",
        "monthsall": "موچ",
        "confirmemail": "ایمیل ادرسی تائید کورتین",
+       "confirmemail_noemail": "شما بئ وتی [[Special:Preferences|کارزوروکی تنزیماتئ ]] دیمی تا موته برین ایمیل ادرس ئی وارد نه کورته ایت.",
+       "confirmemail_send": "پُست‌کورتینن یک تاییدی کود ئی",
+       "confirmemail_sent": "یک تاییدین ایمیل ئی دیم داته بوت.",
        "confirmemail_needlogin": "په وتي ایمیل ئی تائید بوتین ئا خاتیرا په $1 ئا زه رورت داریت.",
        "confirmemail_success": "شمی ایمیل ادرس تائید بوته.\n\nهمی انون توانیت که [[Special:UserLogin|سایٹ تا داخل به ئیت]] و شه ویکی ئا لیزت به ریت.",
        "confirmemail_loggedin": "شمی ایمیل ادرس انون تائید بوت.",
        "confirmemail_invalidated": "ایمیل ادرس ئی تاییدی لگ بوت",
        "invalidateemail": "ایمیل ادرس ئی لگ کورتین",
        "scarytranscludedisabled": "[ترانسکلۆدینگ میان ویکی ئی په ئال نه اینت]",
+       "scarytranscludetoolong": "[انترنتی ئین ادرس (URL) شه اندازه ئا تچکتیر ات]",
        "deletedwhileediting": "'''هشدار''': ای دیم پدا شه آیی که شما آیی ایڈیٹ ئا شرو کورته ئیت، پاک بوته!",
        "confirmrecreate": "کار زوروک [[User:$1|$1]] ([[User talk:$1|گپ و هبر]]) ای مه قاله ئا پد شه آیی که شوما بئ آیی ایڈی\tٹ کورتین ئا شورو کورتیت ای دلیل ئا پاک کورت :\n: ''$2''\nمهربانی بکنیت تائید بکنیت که شوما ئه لو\tٹیت ای مه قاله ئا پدا جۆڑ بکنیت .",
        "confirmrecreate-noreason": "کار زوروک [[User:$1|$1]] ([[User talk:$1|گپ و هبر]]) ای دیما پد شه شمئ ایڈی\tٹ ئی شرو ئا پاک کورت. مهربانی بکنیت تائید بکنیت که لو\tٹیت ای دیما پدا جۆڑ بکنیت.",
        "table_pager_prev": "دیمتیرین تاکدیم",
        "table_pager_first": "اولین تاکدیم",
        "table_pager_last": "آخرین تاکدیم",
+       "table_pager_limit": "$1 ئی نشان داتین بئ هر دیمئ تا",
        "table_pager_limit_label": "مواریدئانی اندازه گ بی هر دیمی تا :",
        "table_pager_limit_submit": "برا",
        "table_pager_empty": "هیچ نتیجه",
        "watchlistedit-clear-removed": "$1 ئی ئنوان پاک {{PLURAL:$1|بوت|بوتنت}}:",
        "watchlistedit-too-many": "بازین دیم ایدا په نمایش ئی خاتیرا موجود انت.",
        "watchlisttools-clear": "دیدارلیست ئی پاک کورتین",
+       "watchlisttools-view": "مربوتین تغیرانی دیستین",
        "watchlisttools-edit": "دیدارلیست ئی دیستین و ایڈیٹ کورتین",
        "watchlisttools-raw": "واچلیستئ آمگین لیستانی ایڈیٹ",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|گپ و حبر]])",
        "version": "نخسه",
+       "version-extensions": "لچیته گین اپزونه ئان",
        "version-skins": "نصب بوته ئین پوسته ئانی",
        "version-specialpages": "خاصین تاکدیمان",
        "version-parserhooks": "تجزیه گرین چنگک ئان",
+       "version-variables": "موته غیرئان",
        "version-antispam": "دیمگیری شه سپم ئان",
        "version-other": "دیگرین",
+       "version-mediahandlers": "می\tڈیایی بئ دست گیروک ئان",
        "version-hooks": "چنگک ئان",
+       "version-parser-extensiontags": "ایزاپه کنوکین تجزیه گر ئی برچسپ",
+       "version-parser-function-hooks": "ئه مل کنوکین تجزیه گرین چنگک",
        "version-hook-name": "چنگک ئی نام",
+       "version-hook-subscribedby": "داخل بوته گ\tۆ",
        "version-no-ext-name": "[بی نام]",
        "version-license": "میڈیاویکی ئی اجازه نامه",
        "version-ext-license": "اجازه نامه ئان",
        "version-ext-colheader-description": "توضیح",
        "version-ext-colheader-credits": "مؤلفان",
        "version-license-title": "مجوز په $1",
+       "version-license-not-found": "ای سند ئی شه جواز ئی مالومات ئا په ای پراخ کن\tۆک ئا ودی نه بوت.",
        "version-credits-title": "کریدیت په $1",
+       "version-credits-not-found": "ای کریدیت ئی شه جواز ئی مالومات ئا په ای پراخ کن\tۆک ئا ودی نه بوت.",
        "version-poweredby-credits": "ای ویکی شه '''[https://www.mediawiki.org/ میڈیا ویکی]''' ئی نیمگا پُشتیوانی ئه بیئت، موچین حقوق محفوظ انت © 2001-$1 $2.",
        "version-poweredby-others": "دیگران",
        "version-poweredby-translators": "translatewiki.net مترجم ئان",
+       "version-credits-summary": "جهلگین کس ئانه په خاتیرایڈی\tٹ بئ  [[Special:Version|میڈیاویکی]] تا ماریپی ئه کنن.",
        "version-software": "لچیته ئین نخسه هان",
        "version-software-product": "محصول",
        "version-software-version": "نخسه",
+       "version-entrypoints": "ورود ئی مئل ئی انترنتی ادرس",
        "version-entrypoints-header-entrypoint": "داخل بوتین ئی ٹیک",
        "version-entrypoints-header-url": "انترننئ ئین ادرس",
        "version-libraries": "نصب بوته ئین کتابخانه",
        "version-libraries-library": "کتابجاه",
        "version-libraries-version": "نخسه",
+       "redirect-legend": "جابجا په یک پایل یا دیم ئی",
        "redirect-submit": "برا",
        "redirect-lookup": "گشتین:",
        "redirect-value": "اندازه گ:",
        "redirect-file": "فایلئ نام",
        "redirect-not-exists": "اندازه گ ودی نه بوت",
        "fileduplicatesearch": "گشتین په تکرارین فایلان",
+       "fileduplicatesearch-summary": "گشتین په تکرارین پایلان بي اساس آوانی درهم بوته اندازه گ ئا سورت ئه گیت.",
        "fileduplicatesearch-legend": "گشتین په تکرارین موریدان",
        "fileduplicatesearch-filename": "فایلئ نام:",
        "fileduplicatesearch-submit": "گشتین",
        "specialpages-group-pages": "تاکدیمانی لڑ\t لیست",
        "specialpages-group-pagetools": "تاکدیمانئ وسایلان",
        "specialpages-group-wiki": "دتا و وسایلان",
+       "specialpages-group-redirects": "مسیر ئی تغیری خاسین تاکدیمان",
        "specialpages-group-spam": "سپم ئی وسایلان",
+       "specialpages-group-developer": "توسه ئه دهوکین وسایلان",
        "blankpage": "خالی ئین دیم",
        "intentionallyblankpage": "این دیم بئ قصدین رقما خالی ایشته بوته.",
        "tags": "مجازین تغیرانئ برچسپ",
        "tags-title": "برچسپ هان",
        "tags-tag": "برچسپئ نام",
        "tags-display-header": "نشان داتین بئ تعیراتانی لیست ئي تا",
+       "tags-description-header": "مانا ئی کامیلین ت\tۆزی",
        "tags-source-header": "بُن زهی",
        "tags-active-header": "پئال؟",
+       "tags-hitcount-header": "تغیرئانی برچسپ",
        "tags-actions-header": "عملکردهان",
        "tags-active-yes": "هان",
        "tags-active-no": "نه",
+       "tags-source-extension": "تاریپ بوته بئ ایزاپه کن\tۆکین پایه ئا",
+       "tags-source-manual": "شه ربات ئانی یا کارزوروکانی نیمه گا دستی آسمال بوته",
+       "tags-source-none": "دیگه ایستیپاده ئه به بیت",
        "tags-edit": "ایڈیٹ",
        "tags-delete": "پاک کورتین",
        "tags-activate": "پئال کورتین",
        "tags-deactivate": "غیرپئال کورتین",
        "tags-hitcount": "$1 {{PLURAL:$1|ٹگل|ٹگل}}",
+       "tags-manage-no-permission": "شما په مدیریت ئی تگ ئی تغیرا اجازه  نداریت.",
+       "tags-create-heading": "نوکین برچسپ ئی ج\tۆر کورتین",
        "tags-create-tag-name": "برچسپئ نام:",
        "tags-create-reason": "دلیل:",
        "tags-create-submit": "جوڑ\t کورتین",
+       "tags-create-no-name": "شما تگی نام باید مشخس بکنیت.",
+       "tags-create-invalid-chars": "تگ‌ئانی نام  نباید که کامه (<code>,</code>) یا مورب خت  (<code>/</code>) داشته بیئنت.",
+       "tags-create-already-exists": "\"$1\" ئی تگ همی انون موجود اینت.",
+       "tags-create-warnings-above": "\"$1\" ئی تگی جۆڑ کورتینی وختا جهگی {{PLURAL:$2|هشدار|هشدارئان}} آته انت:",
+       "tags-create-warnings-below": "آیا لوٹیت که تگ ئی جۆڑ کورتین ئا ایدامه دهیت؟",
+       "tags-delete-title": "تگ ئی پاک کورتین",
+       "tags-delete-explanation-initial": "شما بئ هالی پاک کورتینا «$1» ئی تگی شه مالوماتی بانکا هستیت.",
        "tags-delete-reason": "دلیل:",
        "tags-delete-submit": "ای تگ ئا غیرقابیل بیئرگشت پاک کن",
+       "tags-delete-not-found": "«$1» ئی تگ وجود نداریت.",
+       "tags-delete-too-many-uses": "\"$1\" ئی تگ گشتیر شه $2 {{PLURAL:$2|نخسه|نخسه ئانی}} سرا ایئمال بوته و نتوان که آیرا پاک کورت.",
+       "tags-delete-warnings-after-delete": "برچسب \"$1\" ئی تگ پاک بوت ، مه گه گۆ جهلگین  {{PLURAL:$2|خه تا|خه تا ئان}} گۆن ات:",
+       "tags-activate-title": "تگ ئی په ئال کورتین",
+       "tags-activate-question": "شما بئ هالی په هال کورتین  «$1» ئی تگ ویت.",
        "tags-activate-reason": "دلیل:",
+       "tags-activate-not-allowed": "«$1» ئی تگی په هال کورتین ممکن نه اینت.",
+       "tags-activate-not-found": "«$1» ئی تگ وجود نداریت.",
        "tags-activate-submit": "پئال کورتین",
+       "tags-deactivate-title": "تگ ئی غیر په ئال کورتین",
+       "tags-deactivate-question": "شما بئ هالی غیر په هال کورتین  «$1» ئی تگ ویت.",
        "tags-deactivate-reason": "دلیل:",
+       "tags-deactivate-not-allowed": "«$1» ئی تگی غیر په هال کورتین ممکن نه اینت.",
        "tags-deactivate-submit": "غیرپئال کورتین",
        "comparepages": "تاکدیمانئ مقایسه",
        "compare-page1": "تاکدیم ۱",
        "compare-rev1": "نخسه ۱",
        "compare-rev2": "نخسه ۲",
        "compare-submit": "مقایسه",
+       "compare-invalid-title": "ته ئین بوته ئین ئینوان ناموتبر اینت.",
+       "compare-title-not-exists": "مشخص بوته ئین ئینوان موجود نه اینت.",
+       "compare-revision-not-exists": "مشخس بوته پیلتر موجود نه اینت.",
+       "dberr-problems": "ئوزر لوٹن! ای سایٹ شه تخنیکی ئین مشکل ئان رنج ئه وارت.",
+       "dberr-again": "چینکه دقیقه سبر کنیت و پدا ای دیما بارگیری بکینت.",
        "htmlform-float-invalid": "اندازه ئی که داخل کورته یک ئدد ئی نه ئینت.",
        "htmlform-int-toolow": "اندازه ئی که داخل کورته ئیت کمتیر شه $1 ئا است.",
        "htmlform-int-toohigh": "اندازه ئی که داخل کورته ئیت گیشتیر شه $1 ئا اینت.",
        "logentry-upload-upload": "$1 $3 ئا {{GENDER:$2|بُرز کورت}}",
        "logentry-upload-overwrite": "$1 نوکین نخسه ئی شه $3 ئا {{GENDER:$2|بُرز کورت}}",
        "logentry-upload-revert": "$1 {{GENDER:$2|بُرز کورت}} $3 ئا",
+       "log-name-managetags": "تگ ئی تاریخچه ئی مدیریت",
+       "logentry-managetags-create": "$1 تگ «$4» ئا {{GENDER:$2|ج\tۆڑ کورت}}",
        "rightsnone": "(هیچ)",
        "revdelete-summary": "ایڈیتی خاصه",
        "feedback-back": "بیئرگشت",
+       "feedback-bugnew": "دیستونئ . نوکین مشکل ئی راپور دیئ",
        "feedback-cancel": "کنسیل",
        "feedback-close": "کار بوت",
+       "feedback-external-bug-report-button": "یک تخنیکی ئین کاری پایل",
+       "feedback-dialog-title": "یک پیڈبک ئی دیم داتین",
        "feedback-error-title": "خطا",
        "feedback-error2": "خطا: پروشت بئ ایڈیٹ ئی تا",
        "feedback-message": "پیام:",
        "feedback-submit": "ثبت کورتین",
        "feedback-thanks": "منتوارن! شمی فیدبک بئ «[$1 $2]» ئی دیمی تا ثبت بوت.",
        "feedback-thanks-title": "منتوارن!",
+       "feedback-useragent": "کارزوروکی آگینت:",
        "searchsuggest-search": "گشتین",
+       "searchsuggest-containing": "شامیلین دیمان...",
+       "api-error-badaccess-groups": "شما اجازه په پایلی ئی بُرز کورتین ئا بئ ای ویکی ای تا نداریت.",
+       "api-error-badtoken": "داخیلی ئین خه تا: امنیتی ئین کوڈ سه ئی نه اینت (Bad token).",
        "api-error-duplicate-popup-title": "تکرارین {{PLURAL:$1|فایل|فایلان}}",
        "api-error-empty-file": "فایلی که دیم داته بوت خالی ات.",
        "api-error-emptypage": "خالی ئین دیمانی جۆڑ کورتین جایز نه اینت.",
        "api-error-mustbeposted": "داخلین خطا: ریکویست باید شه POST HTTP ئی روش ئا دیم داته بیئت.",
        "api-error-unclassified": "یک نا زانتین خطائی رخ دات.",
        "api-error-unknown-code": "نازانتین خطای: \" $1 \"",
+       "api-error-unknown-warning": "نادروستئ ئین ایختار: $1",
+       "api-error-unknownerror": "نادروستئ ئین خه تا: «$1».",
+       "api-error-uploaddisabled": "پایلانی بُرز کورتین بئ ای ویکی تا غیر په هال اینت.",
        "duration-seconds": "$1 ثانیه",
        "duration-minutes": "$1 دقیقه",
        "duration-hours": "$1 سائت",
        "duration-decades": "$1 دههگ",
        "duration-centuries": "$1 قرن",
        "duration-millennia": "{{PLURAL:$1|هزار سال |$1 هزار سال}}",
+       "limitreport-title": "پروپایل ئی دیتا ئی تجزیه گر:",
+       "limitreport-cputime": "سی‌پی‌یو ئی مسرپ وخت",
+       "limitreport-cputime-value": "$1 {{PLURAL:$1|سانیه|سانیه ئان}}",
        "limitreport-walltime": "واقئین مصرفئ مدت",
        "limitreport-walltime-value": "$1 {{PLURAL:$1|ثانیه|ثانیه}}",
        "limitreport-postexpandincludesize-value": "$1/$2 {{PLURAL:$2|بایٹ|بایٹ}}",
        "pagelang-select-lang": "زبانی انتخاب",
        "right-pagelang": "زبانی تاکدیم ئی تغیر",
        "action-pagelang": "دیمی زبان ئی تغیر",
+       "log-name-pagelang": "لوگ ئی زبان تغیرداتین",
+       "log-description-pagelang": "ای سیاهه زبانانی تغیراتانی دیم اینت.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (په ئال)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''غیر په ئال''')",
        "mediastatistics": "میڈیایی سرجم",
        "mediastatistics-nbytes": "{{PLURAL:$1|$1 بایٹ}} ($2؛ $3٪)",
        "mediastatistics-table-mimetype": "مایم ئی رکم",
+       "mediastatistics-table-extensions": "موته ئمیلین اپزونه ئان",
        "mediastatistics-table-count": "فایلانی اندازگ",
        "mediastatistics-table-totalbytes": "ترکیبین حجم",
        "mediastatistics-header-unknown": "نامئلوم",
        "mediastatistics-header-office": "آفیس",
        "mediastatistics-header-text": "متنی",
        "mediastatistics-header-executable": "اجرایی",
+       "mediastatistics-header-archive": "پشورده ئین پورمت ئان",
        "json-warn-trailing-comma": "$1 ئی کاما بئ اخیرا شه جی‌سن ئا {{PLURAL:$1|پاک بوت}}.",
        "json-error-unknown": "مشکلی گو جی‌سن ات. خطا: $1",
        "json-error-state-mismatch": "جن سن جووان نه اینت یا ناقض اینت",
index 774072f..c3febd7 100644 (file)
        "october-date": "$1. října",
        "november-date": "$1. listopadu",
        "december-date": "$1. prosince",
-       "pagecategories": "{{PLURAL:$1|Kategorie|Kategorie|Kategorie}}",
+       "pagecategories": "{{PLURAL:$1|Kategorie}}",
        "category_header": "Stránky v kategorii „$1“",
        "subcategories": "Podkategorie",
        "category-media-header": "Soubory v kategorii „$1“",
        "disclaimers": "Vyloučení odpovědnosti",
        "disclaimerpage": "Project:Vyloučení odpovědnosti",
        "edithelp": "Pomoc při editování",
+       "helppage-top-gethelp": "Nápověda",
        "mainpage": "Hlavní strana",
        "mainpage-description": "Hlavní strana",
        "policy-url": "Project:Pravidla",
        "rightsnone": "(žádné)",
        "revdelete-summary": "shrnutí editace",
        "feedback-adding": "Komentář se přidává na stránku…",
+       "feedback-back": "Zpět",
        "feedback-bugcheck": "Skvělé! Jen zkontrolujte, zda se nejedná o jednu z [$1 už známých chyb].",
        "feedback-bugnew": "Zkontroloval(a) jsem to. Chci ohlásit novou chybu.",
        "feedback-bugornote": "Pokud dokážete podrobně popsat technický problém, můžete [$1 nahlásit chybu].\nJinak můžete využít jednoduchý formulář níže. Váš komentář bude přidán na stránku „[$3 $2]“ spolu s vaším uživatelským jménem a informací o tom, jaký prohlížeč používáte.",
        "feedback-cancel": "Storno",
        "feedback-close": "Hotovo",
+       "feedback-dialog-title": "Odeslat názor",
+       "feedback-dialog-intro": "Pomocí níže zobrazeného formuláře můžete odeslat svůj názor. Váš komentář se spolu s vaším uživatelským jménem přidá na stránku „$1“.",
+       "feedback-error-title": "Chyba",
        "feedback-error1": "Chyba: Nerozpoznaný výsledek z API",
        "feedback-error2": "Chyba: Editace se nezdařila",
        "feedback-error3": "Chyba: API nevrátilo žádnou odpověď",
        "feedback-subject": "Předmět:",
        "feedback-submit": "Odeslat",
        "feedback-thanks": "Děkujeme! Váš komentář byl přidán na stránku „[$2 $1]“.",
+       "feedback-thanks-title": "Děkujeme!",
        "searchsuggest-search": "Hledat",
        "searchsuggest-containing": "obsahující…",
        "api-error-badaccess-groups": "Nemáte povoleno nahrávat soubory na tuto wiki.",
index a06da41..34dcace 100644 (file)
        "underline-always": "Яланах",
        "underline-never": "Нихăçан та",
        "underline-default": "Браузер ĕнерлевĕсене усă курмалла",
-       "sunday": "вырсарникун",
+       "sunday": "Ð\92ырсарникун",
        "monday": "Тунтикун",
        "tuesday": "Ытларикун",
        "wednesday": "Юнкун",
        "thursday": "Кĕçнерникун",
        "friday": "Эрнекун",
-       "saturday": "шăматкун",
+       "saturday": "Шăматкун",
        "sun": "Вр",
        "mon": "Тн",
        "tue": "Ыт",
        "thu": "Кç",
        "fri": "Эрн",
        "sat": "Шм",
-       "january": "кăрлач",
-       "february": "нарăс",
-       "march": "пуш",
-       "april": "ака",
-       "may_long": "çу",
-       "june": "çĕртме",
-       "july": "утă",
-       "august": "çурла",
-       "september": "авăн",
-       "october": "юпа",
-       "november": "чӳк",
-       "december": "раштав",
+       "january": "Ð\9aăрлач",
+       "february": "Ð\9dарăс",
+       "march": "Ð\9fуш",
+       "april": "Ð\90ка",
+       "may_long": "Ã\87у",
+       "june": "Ã\87ĕртме",
+       "july": "Утă",
+       "august": "Ã\87урла",
+       "september": "Ð\90вăн",
+       "october": "Юпа",
+       "november": "Чӳк",
+       "december": "Раштав",
        "january-gen": "кăрлач уйăхĕн",
        "february-gen": "нарăс уйăхĕн",
        "march-gen": "пуш уйăхĕн",
        "october-gen": "юпа уйăхĕн",
        "november-gen": "чӳк уйăхĕн",
        "december-gen": "раштав уйăхĕн",
-       "jan": "кăр",
-       "feb": "нар",
-       "mar": "пуш",
-       "apr": "ака",
-       "may": "çу",
-       "jun": "çĕр",
-       "jul": "утă",
-       "aug": "çур",
-       "sep": "авн",
-       "oct": "юпа",
-       "nov": "чӳк",
-       "dec": "раш",
+       "jan": "Ð\9aăр",
+       "feb": "Ð\9dар",
+       "mar": "Ð\9fуш",
+       "apr": "Ð\90ка",
+       "may": "Ã\87у",
+       "jun": "Ã\87ĕр",
+       "jul": "Утă",
+       "aug": "Ã\87ур",
+       "sep": "Ð\90вн",
+       "oct": "Юпа",
+       "nov": "Чӳк",
+       "dec": "Раш",
        "pagecategories": "{{PLURAL:$1|1=Категори|Категорисем}}",
        "category_header": "«$1» категорири статьясем",
        "subcategories": "Подкатегорисем",
        "navigation": "Меню",
        "and": "&#32;тата",
        "qbfind": "Шырав",
-       "qbbrowse": "Ð\9aÑ\83Ñ\80Ä\83м",
+       "qbbrowse": "Ð\9fÄ\83Ñ\85",
        "qbedit": "Тӳрлет",
        "qbpageoptions": "Страница ĕнерлевĕсем",
        "qbmyoptions": "Сирĕн ĕнĕрлевсем",
        "printableversion": "Пичетлемелли верси",
        "permalink": "Яланхи вырăн",
        "print": "Пичетле",
+       "view": "Пăх",
        "edit": "Тӳрлет",
        "create": "Çĕннине ту",
        "editthispage": "Страницăна тӳрлетесси",
        "templatepage": "Шаблонăн страницине пăх",
        "viewhelppage": "Справка страницине пăх",
        "categorypage": "Категори страницине пăх",
-       "viewtalkpage": "Сӳтсе явнине тишкер",
+       "viewtalkpage": "Сӳтсе явнине пăх",
        "otherlanguages": "Урăх чĕлхесем",
        "redirectedfrom": "($1 çинчен куçарнă)",
        "redirectpagesub": "Куçаракан страница",
        "virus-scanfailed": "скенерланă чухнехи йăнăш (код $1)",
        "virus-unknownscanner": "паллă мар антивирус:",
        "logouttext": "Эсир палласа илмен хутшăнакан евĕр ĕçлетĕр.\nСайт сире ятпа мар, IP-адрес урлă пĕлет.\nЭсир анонимла, е малтанхи евĕрлĕ çĕнĕ сеанс уçса, е  урăх ятпа ĕçлеме пултаратăр.\nХăш-пĕр страницăсем эсир сайта кĕнĕ пек курăнма пултараççĕ, ăна тӳрлетмешкĕн браузер кэшне çĕнетĕр.",
-       "yourname": "СиÑ\80Ä\95н Ñ\8fÑ\82",
+       "yourname": "УÑ\81Ä\83кÑ\83Ñ\80акан Ñ\8fÑ\82:",
        "yourpassword": "Вăрттăн сăмах:",
        "yourpasswordagain": "Вăрттăн сăмах тепре çырăр:",
        "remembermypassword": "Ку компьютер çинче мана астуса хăвармалла (for a maximum of $1 {{PLURAL:$1|1=day|days}})",
        "nav-login-createaccount": "Сайта кĕр / регистрацилен",
        "userlogin": "Сайта кĕр",
        "userloginnocreate": "Кĕмелли",
-       "logout": "СайÑ\82Ñ\80ан Ñ\82Ñ\83Ñ\85аÑ\81",
+       "logout": "СеанÑ\81не Ð¿Ä\95Ñ\82еÑ\80ни",
        "userlogout": "Тухрăр",
        "notloggedin": "Эсир сайта кĕмен",
        "nologin": "Эсир халĕ те регистрациленмен-и? '''$1'''.",
        "gotaccount": "Эсир регистрациленсе-и? '''$1'''.",
        "gotaccountlink": "Кĕрĕр",
        "createaccountmail": "эл. почта тăрăх",
+       "createacct-submit": "Аккаунт тумалли",
        "badretype": "Эсир кăтартнă парольсем пĕр пек мар.",
        "userexists": "Эсир усă курас теекен ята йышăннă. Тархасшăн, урăх ят суйласа илĕр.",
        "loginerror": "Хутшăнакана палласа илеймерĕмĕр",
        "blockedtext": "'''Ку аккаунта е IP-адреса ĕçлеме чарнă.'''\n\n$1 администратор ĕçлеме чарнă. Сăлтавĕ çакă: ''«$2»''.\n\n* Чарнă вăхăт: $8\n* Çак вăхăтчен чарнă: $6\n* Çакна чарнă: $7\n\n$1 хутшăнакан патне, е ытти [[{{MediaWiki:Grouppage-sysop}}|администраторсем]] патне эсир çыру ярса меншĕн ĕçлеме чарнине сӳтсе явма пултаратăр.\n\nАсăрхар: [[Special:Preferences|хăвăрăн ĕнерлевсенче]] эл. почта адресне çирĕплетмен пулсан, е сайта кĕмен пулсан — администратор патне çыру яраймастăр. Администратор сире çыру яма чарнă пулсан — ку хутĕнче те çыру яраймăр.\n\nСирĕн IP-адрес — $3, чару идентификаторĕ — #$5. Çырусенче, тархасшăн, вĕсене пĕлтерĕр.",
        "blockednoreason": "сăлтавне пĕлтермен",
        "loginreqtitle": "Сайта кĕмелле",
-       "loginreqlink": "сайта кĕр",
+       "loginreqlink": "кĕр",
        "loginreqpagetext": "Ытти страницăсене курмашкăн сирĕн $1.",
        "accmailtitle": "Пароле леçрĕмĕр.",
        "accmailtext": "$1 вăрттăн сăмахне кунта леçрĕмĕр: $2.",
        "copyrightwarning": "Эсир кĕртнĕ, е улăштарнă пур статьясен тексчĕсем $2 ($1 пăхăр) лизензине пăхăнаççĕ. Енчен те эсир кĕртнĕ текста пурте усă курма, тӳрлетсе улăштарма пултарнипе килĕшместĕр пулсан кунта ăна ан кĕртĕр. <br /> Çавăн пекех эсир кĕртнĕ текстăн е авторĕ, е ăна ирĕклĕ усă курма юракан çăлкуçсенчен илнине çирĕплететĕр. <br /> '''АВТОР ПРАВИСЕМПЕ ХӲТĔЛЕНĔ МАТЕРИАЛСЕНЕ АН КĔРТĔР!'''",
        "protectedpagewarning": "'''АСĂРХАТТАРНИ: ку страницăна улшăнусем кĕртессинчен хӳтĕленĕ, ăна тӳрлетме администраторсем кăна пултараççĕ.'''",
        "titleprotectedwarning": "'''Асăрхаттару. Ку страницăпа ĕçлеме чарнă, ăна хăш-пĕр хутшăнакан кăна хатерлеме пултарать.'''",
-       "templatesused": "Ку страница çинче усă курнă шаблонсем:",
+       "templatesused": "Ку страницă çинче усă курнă {{PLURAL:$1|Шаблон|Шаблонсем}}:",
        "templatesusedpreview": "Пăхакан страница çинче усă курнă шаблонсем:",
        "templatesusedsection": "Ку пайра усă курнă шаблонсем:",
        "template-protected": "(сыхланă)",
        "editundo": "пăрахăçла",
        "searchresults": "Шыранă результачĕсем",
        "textmatches": "Статьясенчи текст пĕрпеклĕхĕ",
-       "prevn": "малтанхи {{PLURAL:$1|$1}}",
+       "prevn": "унчченхи {{PLURAL:$1|$1}}",
        "nextn": "малалли {{PLURAL:$1|$1}}",
        "searchprofile-articles-tooltip": "$1 -ре шырани",
        "searchprofile-images-tooltip": "Файăлсене шырани",
        "preferences": "Ĕнерлевсем",
        "mypreferences": "Ĕнерлев",
        "prefs-edits": "Тӳрлетӳсен шучĕ:",
-       "prefs-skin": "Ð\95Ñ\80еÑ\88ленӳ",
+       "prefs-skin": "ТиÑ\80",
        "skin-preview": "Малтанхи курăну",
        "datedefault": "Палăртман чухнехи",
        "prefs-rc": "Юлашки улшăнусен страници",
        "group-suppress": "Тĕрĕслекенсем",
        "group-all": "(пурте)",
        "group-autoconfirmed-member": "автоподтверждённый участник",
-       "group-bot-member": "бот",
-       "group-sysop-member": "администратор",
-       "group-bureaucrat-member": "бюрократ",
-       "group-suppress-member": "Ревизор",
+       "group-bot-member": "{{GENDER:$1|бот}}",
+       "group-sysop-member": "{{GENDER:$1|администратор}}",
+       "group-bureaucrat-member": "{{GENDER:$1|бюрократ}}",
+       "group-suppress-member": "{{GENDER:$1|ревизор}}",
        "grouppage-user": "{{ns:project}}:Хутшăнакансем",
        "grouppage-autoconfirmed": "{{ns:project}}:Автоподтверждённые участники",
        "grouppage-bot": "{{ns:project}}:Ботсем",
        "upload_source_file": " (сирĕн компьютер çинчи файл)",
        "listfiles-summary": "Ку ятарлă страницăра эсир пур кĕртнĕ файлсене куратăр.\nНумай пулмасть кĕртнисем çулте вырнаçнă.\nЮпа тăррине пуссан йĕркелӳ майĕ улшăнĕ.",
        "listfiles_search_for": "Ӳкерчĕк ячĕ тăрăх шырани:",
+       "imgfile": "файл",
        "listfiles": "Ӳкерчěксен списокě",
        "listfiles_name": "Файл ячĕ",
        "listfiles_user": "Хутшăнакан",
        "specialloguserlabel": "Хутшăнакан:",
        "log": "Логсем",
        "all-logs-page": "Журналсем",
-       "allpages": "Ð\9fÄ\9bÑ\82Ä\9bм страницăсем",
-       "nextpage": "ТепÄ\9bр страницă ($1)",
-       "prevpage": "Ð\9cалÑ\82анÑ\85и Ñ\81Ñ\82Ñ\80аниÑ\86а ($1)",
+       "allpages": "Ð\9fÄ\95Ñ\82Ä\95м страницăсем",
+       "nextpage": "ТепÄ\95р страницă ($1)",
+       "prevpage": "УнÑ\87Ñ\87енÑ\85и Ñ\81Ñ\82Ñ\80аниÑ\86Ä\83 ($1)",
        "allarticles": "Пĕтĕм статьясем",
        "allinnamespace": "Пĕтĕм статьясем («$1» ят уçлăхĕ)",
        "allpagessubmit": "Ту",
        "whatlinkshere": "Кунта килекен каçăсем",
        "linkshere": "Çак страницăсем '''[[:$1]]''' çине илсе килеççĕ:",
        "nolinkshere": "'''[[:$1]]''' страница çине ытти страницăсенчен килме пулмасть.",
+       "whatlinkshere-prev": "{{PLURAL:$1|унчченхи|унчченхи $1}}",
        "whatlinkshere-links": "← каçăсем",
        "whatlinkshere-filters": "Аласем",
        "blockip": "Хăтшăнакана ĕçлеме чар",
        "scarytranscludetoolong": "[Питĕ шел, URL ытла вăрăм]",
        "deletedwhileediting": "Асăрхăр: эсир тӳрлетнĕ вăхăтра ку страницăна кăларса парахнă!",
        "recreate": "Çĕнĕрен пуçла",
+       "confirm_purge_button": "OK",
+       "confirm-watch-button": "OK",
+       "confirm-unwatch-button": "OK",
+       "quotation-marks": "\"$1\"",
        "imgmultipageprev": "← малтанхи страница",
        "imgmultipagenext": "тепĕр страница →",
        "imgmultigo": "Куç!",
index 26b98a1..1d684ac 100644 (file)
        "prefs-editwatchlist-clear": "Limpiar tu lista de seguimiento",
        "prefs-watchlist-days": "Número de días a mostrar en la lista de seguimiento:",
        "prefs-watchlist-days-max": "Máximo $1 {{PLURAL:$1|día|días}}",
-       "prefs-watchlist-edits": "Número máximo de ediciones a mostrar en la lista expandida:",
+       "prefs-watchlist-edits": "Número máximo de ediciones que mostrar en la lista expandida:",
        "prefs-watchlist-edits-max": "Cantidad máxima: 1000",
        "prefs-watchlist-token": "Clave de lista de seguimiento:",
        "prefs-misc": "Miscelánea",
        "undelete-fieldset-title": "Restaurar revisiones",
        "undeleteextrahelp": "Para restaurar todo el historial de la página, deja todas las casillas sin seleccionar y pulsa en <strong><em>{{int:undeletebtn}}</em></strong>. Para realizar una restauración selectiva, marca las revisiones que deban restaurarse y pulsa en <strong><em>{{int:undeletebtn}}</em></strong>.",
        "undeleterevisions": "$1 {{PLURAL:$1|revisión|revisiones}} archivadas",
-       "undeletehistory": "Si restaura una página, todas sus revisiones serán restauradas en el historial.\nSi una nueva página con el mismo nombre ha sido creada desde que se borró la original, las versiones restauradas aparecerán en el historial previo.",
+       "undeletehistory": "Si restauras la página, todas sus revisiones se restaurarán en el historial.\nSi una nueva página con el mismo nombre se ha creado desde que se borró la original, las versiones restauradas aparecerán en el historial previo.",
        "undeleterevdel": "No se deshará el borrado si éste resulta en el borrado parcial de la última revisión de la página. En tal caso, desmarque o muestre las revisiones borradas más recientes. Las revisiones de archivos que no tiene permitido ver no se restaurarán.",
        "undeletehistorynoadmin": "El artículo ha sido borrado. La razón de su eliminación se indica abajo en el resumen, así como los detalles de las ediciones realizadas antes del borrado. El texto completo del artículo está disponible sólo para usuarios con permisos de administrador.",
        "undelete-revision": "Edición borrada de $1 (fechada $4, a $5) por $3:",
index d13ff60..39bdfe7 100644 (file)
        "log-name-managetags": "Merkkausten hallinnan loki",
        "log-description-managetags": "Tällä sivulla on luettelo tehtävistä, jotka koskevat [[Special:Tags|merkkauksia]]. Lokissa ovat vain ne toimenpiteet, jotka ylläpitäjä on suorittanut käsin. Merkkauksia voi syntyä ja poistua myös wikin ohjelmiston kautta eivätkä ne näy tässä lokissa.",
        "logentry-managetags-create": "$1 {{GENDER:$2|on luonut}} merkkauksen \"$4\"",
-       "logentry-managetags-delete": "$1 {{GENDER:$2|tuhosi}} merkkauksen \"$4\" (poistettu $5 {{PLURAL:$5|sivun versiosta tai lokimerkinnästä|sivun versiosta tai lokimerkinnästä}})",
+       "logentry-managetags-delete": "$1 {{GENDER:$2|tuhosi}} merkkauksen \"$4\" (poistettu $5 {{PLURAL:$5|sivuversiosta tai lokimerkinnästä}})",
        "logentry-managetags-activate": "$1 {{GENDER:$2|aktivoi}} merkkauksen \"$4\" käyttäjien ja bottien käytettäväksi",
        "logentry-managetags-deactivate": "$1 {{GENDER:$2|otti pois käytöstä}} merkkauksen \"$4\" käyttäjiltä ja boteilta",
        "rightsnone": "(ei oikeuksia)",
index e53f8ea..b7a935e 100644 (file)
        "redirectedfrom": "(Widjerfeerd faan $1)",
        "redirectpagesub": "Widjerfeerang",
        "redirectto": "Widjerfeer tu:",
-       "lastmodifiedat": "Detdiar sidj as tuleetst di $1, am a klook $2 anert wurden.",
+       "lastmodifiedat": "Detdiar sidj as tuleetst di $1, am a klook $2 feranert wurden.",
        "viewcount": "Aw jüdeer sid as  {{PLURAL:$1|iinjsen|$1 tunge}} tugram wörden.",
        "protectedpage": "Sääkerd sid",
        "jumpto": "Waksle tu:",
index 0dc55f8..baf7648 100644 (file)
@@ -36,7 +36,7 @@
        "tog-shownumberswatching": "Nochd àireamh nan cleachdaichean a tha a' cumail sùil air",
        "tog-oldsig": "An t-earr-sgrìobhadh làithreach:",
        "tog-fancysig": "Làimhsich an t-earr-sgrìobhadh mar wikitext (gun cheangal leis fhèin)",
-       "tog-uselivepreview": "Cleachd an ro-shealladh beò (deuchainneach)",
+       "tog-uselivepreview": "Cleachd an ro-shealladh beò",
        "tog-forceeditsummary": "Cuir ceist nuair a dh'fhàgas mi gearr-chunntas an deasachaidh bàn",
        "tog-watchlisthideown": "Falaich mo mhùthaidhean fhèin air mo chlàr-faire",
        "tog-watchlisthidebots": "Falaich mùthaidhean nam bot air mo chlàr-faire",
        "pool-queuefull": "Tha ciutha nam pròiseasan làn",
        "pool-errorunknown": "Mearachd neo-aithnichte",
        "pool-servererror": "Chan eil seirbheis cunntadh nan amar ri fhaighinn ($1).",
+       "poolcounter-usage-error": "Mearachd cleachdaidh: $1",
        "aboutsite": "Mu dhèidhinn {{SITENAME}}",
        "aboutpage": "Project:Mu dhèidhinn",
        "copyright": "Tha susbaint ri làimh fo $1 mur eil an caochladh 'ga innse.",
        "disclaimers": "Aithrisean-àichidh",
        "disclaimerpage": "Project:Aithris-àichidh choitcheann",
        "edithelp": "Cobhair deasachaidh",
+       "helppage-top-gethelp": "Cobhair",
        "mainpage": "Prìomh dhuilleag",
        "mainpage-description": "Prìomh dhuilleag",
        "policy-url": "Project:Poileasaidh",
        "readonly_lag": "Chaidh an stòr-dàta a ghlasadh leis fhèin fhad 's a tha frithealaichean nan stòr-dàta tràilleach air dheireadh a' mhaighstir",
        "internalerror": "Ion-mhearachd",
        "internalerror_info": "Ion-mhearachd: $1",
+       "internalerror-fatal-exception": "Eisgeachd mharbhtach dhen t-seòrsa \"$1\"",
        "filecopyerror": "Cha b' urrainn dhuinn lethbhreac dhen fhaidhle \"$1\" a chur gu \"$2\".",
        "filerenameerror": "Cha do ghabh ainm an fhaidhle \"$1\" atharrachadh gu \"$2\".",
        "filedeleteerror": "Cha do ghabh am faidhle \"$1\" a sguabadh às.",
        "directorycreateerror": "Cha do ghabh am pasgan \"$1\" a chruthachadh.",
+       "directoryreadonlyerror": "Tha am pasgan \"$1\" ri leughadh a-mhàin.",
+       "directorynotreadableerror": "Cha ghabh am pasgan \"$1\" leughadh.",
        "filenotfound": "Cha do ghabh am faidhle \"$1\" a lorg.",
        "unexpected": "Luach ris nach robh dùil: \"$1\"=\"$2\".",
        "formerror": "Mearachd: cha do ghabh am foirm a chur a-null",
        "viewsourcetext": "'S urrainn dhut coimhead air tùs na duilleige seo 's lethbhreac a dhèanamh dheth:",
        "viewyourtext": "'S urrainn dhut coimhead air <strong>na dheasaich thu</strong> 's lethbhreac a dhèanamh dheth air an duilleag seo:",
        "protectedinterface": "Bheir an duilleag seo dhut teacsa eadar-aghaidh airson a' bhathar-bhog air an uicidh seo 's chaidh a ghlasadh gus casg a chur air mì-chleachdadh. Gus eadar-theangachadh atharrachadh no a chur ris airson gach uicidh, cleachd [//translatewiki.net/ translatewiki.net], pròiseactan eadar-theangachadh MediaWiki.",
-       "editinginterface": "<strong>Rabhadh:</strong> Tha thu a' deasachadh duilleag a tha 'ga chleachdadh a chum teacsa eadar-aghaidh a sholar airson a' bhathar-bhog.\nMa dh'atharraicheas tu an duilleag seo, bidh buaidh ann air coltas na h-eadar-aghaidh mar a chì càch e air an uicidh seo.\nGus eadar-theangachadh atharrachadh no a chur ris airson gach uicidh, cleachd [//translatewiki.net/ translatewiki.net], pròiseactan eadar-theangachadh MediaWiki.",
+       "editinginterface": "<strong>Rabhadh:</strong> Tha thu a' deasachadh duilleag a tha 'ga chleachdadh a chum teacsa eadar-aghaidh a sholar airson a' bhathar-bhog.\nMa dh'atharraicheas tu an duilleag seo, bidh buaidh ann air coltas na h-eadar-aghaidh mar a chì càch e air an uicidh seo.",
+       "translateinterface": "Gus eadar-theangachadh atharrachadh no a chur ris airson gach uicidh, cleachd [//translatewiki.net/ translatewiki.net], am pròiseact eadar-theangachaidh aig MediaWiki.",
        "cascadeprotected": "Chaidh an duilleag seo a dhìon o dheasachadh a chionn 's gu bheil e am broinn {{PLURAL:$1|na duilleige|nan duilleagan}} a leanas a chaidh a dhìon 's an roghainn \"mar eas\" air:\n$2",
        "namespaceprotected": "Chan eil cead agad duilleagan san ainm-spàs <strong>$1</strong> a dheasachadh.",
        "customcssprotected": "Chan eil cead agad an duilleag CSS seo a dheasachadh a chionn 's gu bheil na roghainnean pearsanta aig cleachdaiche eile innte.",
        "anoneditwarning": "<strong>Rabhadh:</strong> Chan eil thu air logadh a-steach. Chithear an seòladh IP agad gu poblach ma nì thu deasachadh sam bith. Ma nì thu <strong>[$1 logadh a-steach]</strong> no ma <strong>[$2 chruthaicheas tu cunntas]</strong>, thèid d' ainm a chur ris na dheasaich thu 's gheibh thu buannachd a bharrachd às cuideachd.",
        "anonpreviewwarning": "<em>Chan eil thu air logadh a-steach. Ma nì thu sàbhaladh, thèid an seòladh IP agad a chlàradh ann an eachdraidh deasachadh na duilleige seo.</em>",
        "missingsummary": "<strong>Cuimhnich:</strong> Cha dug thu seachad gearr-chunntas air na dh'atharraich thu.\nMa bhriogas tu air \"{{int:savearticle}}\" a-rithist, thèid na dheasaich thu a shàbhaladh as aonais gearr-chunntais.",
+       "selfredirect": "<strong>Rabhadh:</strong> Tha thu ag ath-stiùireadh duilleag dha fhèin.\nDh'fhaoidte gun do shònraich thu an t-amas cearr airson an ath-stiùiridh no gu bheil thu a' deasachadh an duilleag cearr.\nMa nì thu briogadh air \"{{int:savearticle}}\" a-rithist,m thèid an ath-stiùireadh a chruthachadh co-dhiù.",
        "missingcommenttext": "Cuir a-steach beachd gu h-ìosal.",
        "missingcommentheader": "<strong>Cuimhnich:</strong> Cha dug thu seachad cuspair/ceann airson a' bheachd seo.\nMa bhriogas tu air \"{{int:savearticle}}\" a-rithist, thèid na dheasaich thu a shàbhaladh as aonais.",
        "summary-preview": "Ro-shealladh a' ghearr-chunntais:",
        "content-model-text": "teacsa lom",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
+       "content-model-json": "JSON",
+       "content-json-empty-object": "Oibseact falamh",
+       "content-json-empty-array": "Arraigh fhalamh",
+       "duplicate-args-category": "Duilleagan a chleachdas argamaidean dùblaichte ann an gairm teamplaid",
+       "duplicate-args-category-desc": "Tha gairmean teamplaid sa bheil argamaidean dùblaichte air an duilleag seo, can <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> no <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "expensive-parserfunction-warning": "<strong>Rabhadh:</strong> Tha cus gairmean a' pharsair cosgail san duilleag seo.\n\nBu chòir nas lugha na $2 {{PLURAL:$2|ghairm|ghairm|gairmean|gairm}} a bhith ann ach tha $1 {{PLURAL:$1|ghairm|ghairm|gairmean|gairm}} ann.",
        "expensive-parserfunction-category": "Duilleagan le cus expensive parser function calls",
        "post-expand-template-inclusion-warning": "<strong>Rabhadh:</strong> Tha meud na teamplaide ro mhòr.\nCha dèid cuid dhith a ghabhail a-steach.",
        "history-feed-empty": "Chan eil an duilleag a dh'iarr thu ann.\nDh'fhaoidte gun deach a sguabadh às an uicidh no gun deach ainm ùr a chur air.\nFeuch is [[Special:Search|lorg duilleagan ùra iomachaidh air an uicidh]]",
        "rev-deleted-comment": "(chaidh gearr-chunntas an deasachaidh a thoirt air falbh)",
        "rev-deleted-user": "(chaidh an t-ainm-cleachdaiche a thoirt air falbh)",
-       "rev-deleted-event": "(chaidh gnìomh an loga a thoirt air falbh)",
+       "rev-deleted-event": "(chaidh fiosrachadh an loga a thoirt air falbh)",
        "rev-deleted-user-contribs": "[chaidh an t-ainm-cleachdaiche no an seòladh IP a thoirt air falbh - chaidh an deasachadh fhalach o liosta na h-obrach]",
        "rev-deleted-text-permission": "Chaidh mùthadh na duilleige seo <strong>a sguabadh às</strong>.\nGheibh thu mion-fhiosrachadh air [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ann an loga nan rudan a chaidh a sguabadh às].",
        "rev-suppressed-text-permission": "Chaidh mùthadh na duilleige seo <strong>a mhùchadh</strong>.\nGheibh thu mion-fhiosrachadh air [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} ann an loga nan rudan a chaidh a mhùchadh].",
        "revdelete-legend": "Suidhich cuingeachaidhean na faicsinneachd",
        "revdelete-hide-text": "Teacsa a' mhùthaidh",
        "revdelete-hide-image": "Falaich susbaint an fhaidhle",
-       "revdelete-hide-name": "Falaich an gnìomh agus an targaid",
+       "revdelete-hide-name": "Falaich an targaid agus na paramadairean",
        "revdelete-hide-comment": "Gearr-chunntas an deasachaidh",
        "revdelete-hide-user": "Ainm-cleachdaiche/seòladh IP an deasaiche",
        "revdelete-hide-restricted": "Mùch dàta o rianairean agus càch",
        "search-result-category-size": "{{PLURAL:$1|$1 bhall|$1 bhall|$1 bhuill|$1 ball}} ({{PLURAL:$2|$2 fho-roinn-seòrsa|$2 fho-roinn-seòrsa|$2 fo-roinnean-seòrsa|$2 fo-roinn-seòrsa}}, {{PLURAL:$3|$3 fhaidhle|$3 fhaidhle|$3 faidhlichean|$3 faidhle}})",
        "search-redirect": "(ag ath-sheòladh $1)",
        "search-section": "(earrann $1)",
+       "search-category": "(roinn-seòrsa $1)",
        "search-file-match": "(a' freagairt ri susbaint an fhaidhle)",
        "search-suggest": "An e na leanas a bha fa-near dhut: $1",
        "search-interwiki-caption": "Pròiseactan co-cheangailte",
        "prefs-personal": "Pròifil",
        "prefs-rc": "Mùthaidhean ùra",
        "prefs-watchlist": "An clàr-faire",
+       "prefs-editwatchlist": "Deasaich an clàr-faire",
+       "prefs-editwatchlist-label": "Deasaich na tha air a' chlàr-fhaire agad:",
+       "prefs-editwatchlist-edit": "Seall agus thoir air falbh tiotalan air a' chlàr-fhaire agad",
+       "prefs-editwatchlist-raw": "Deasaich còd a' chlàir-fhaire",
+       "prefs-editwatchlist-clear": "Glan an clàr-faire agad",
        "prefs-watchlist-days": "Co mheud latha a sheallar air a' chlàr-fhaire:",
        "prefs-watchlist-days-max": "$1 {{PLURAL:$1|latha|latha|làithean|latha}} air a' char as motha",
        "prefs-watchlist-edits": "An àireamh as motha de mhùthaidhean a thèid a shealltainn air a' chlàr-fhaire leudaichte:",
        "gender-female": "Deasaichidh i duilleagan na h-Uicipeid",
        "prefs-help-gender": "Cha leig thu leas an roghainn seo a shuidheachadh.\nCleachdaidh am bathar-bog an luach aice gus bruidhinn riut le d' ainm 's iomradh a thoirt ort gu càch leis a' ghnè ghramataigeach iomchaidh.\nBidh am fiosrachadh seo poblach.",
        "email": "Post-d:",
-       "prefs-help-realname": "Cha leig thu leas innse dè am fìor-ainm a tha ort.\nMa bheir thu seachad e, thèid seo a chleachdadh gus urram a thoirt dhut airson do chuid obrach.",
+       "prefs-help-realname": "Cha leig thu leas innse dè am fìor-ainm a tha ort.\nMa bheir thu seachad e, thèid a chleachdadh gus urram a thoirt dhut airson do chuid obrach.",
        "prefs-help-email": "Chan leig thu leas post-dealain a chur ann ach bidh feum air ma dhìochuimhnicheas tu am facal-faire agad 's ma dh'iarras tu fear ùr.",
        "prefs-help-email-others": "'S urrainn dhut leigeil le daoine eile post-dealain a chur thugad tro cheangal air duilleag a' chleachdaiche no deasbaireachd agad.\nChan fhaicear an seòladh fhèin nuair a chuireas cuideigin post-dealain thugad.",
        "prefs-help-email-required": "Tha feum air seòladh puist-d.",
        "right-protect": "Cead leibheilean an dìona atharrachadh 's duilleagan le dìon o bhith mar eas a dheasachadh",
        "right-editprotected": "Cead gus duilleagan le dìon \"{{int:protect-level-sysop}}\" a dheasachadh",
        "right-editsemiprotected": "Cead gus duilleagan le dìon \"{{int:protect-level-autoconfirmed}}\" a dheasachadh",
+       "right-editcontentmodel": "Deasaich modail susbaint duilleige",
        "right-editinterface": "Cead gus eadar-aghaidh nan cleachdaichean a dheasachadh",
        "right-editusercssjs": "Cead gus faidhlichean CSS 's JavaScript càich a dheasachadh",
        "right-editusercss": "Cead gus faidhlichean CSS càich a dheasachadh",
        "right-override-export-depth": "Cead gus duilleagan às-phortadh, a' gabhail a-seach duilleagan ceangailte suas ri doimhneachd de 5",
        "right-sendemail": "Cead gus puist-d a chur gu cleachdaichean eile",
        "right-passwordreset": "Cead gus puist-d ath-shuidheachadh nam facal-faire a shealltainn",
+       "right-managechangetags": "Cruthaich is toir air falbh [[Special:Tags|tagaichean]] on stòr-dàta",
        "newuserlogpage": "Loga cruthachadh nan cleachdaichean",
        "newuserlogpagetext": "Seo loga nan cleachdaichean a chaidh a chruthachadh.",
        "rightslog": "Loga ceadan a' chleachdaiche",
        "action-viewmywatchlist": "seall an clàr-faire agad",
        "action-viewmyprivateinfo": "seall am fiosrachadh prìobhaideach agad",
        "action-editmyprivateinfo": "deasaich am fiosrachadh prìobhaideach agad",
+       "action-editcontentmodel": "deasaich modail susbaint duilleige",
+       "action-managechangetags": "cruthaich is thoir air falbh tagaichean on stòr-dàta",
        "nchanges": "$1 {{PLURAL:$1|mhùthadh|mhùthadh|mùthaidhean|mùthadh}}",
        "enhancedrc-since-last-visit": "$1 on tadhal mu dheireadh",
        "enhancedrc-history": "eachdraidh",
        "uploaderror": "Mearachd leis an luchdadh suas",
        "upload-recreate-warning": "<strong>Rabhadh: Chaidh faidhle air a bheil an t-ainm seo a sguabadh às no a ghluasad.</strong>\n\nSeo dhut loga an sguabaidh às 's nan gluasad airson na duilleige seo:",
        "uploadtext": "Cleachd am foirm gu h-ìosal gus faidhlichean a luchdadh suas.\nGus na faidhlichean a chaidh a luchdadh suas roimhe a shealltainn no a lorg annta, rach gu [[Special:FileList|liosta nam faidhlichean air an luchdadh suas]], thèid (ath-)luchdaidhean suas a chur ri [[Special:Log/upload|loga nan luchdaidhean suas]] cuideachd 's na chaidh a sguabadh às ri [[Special:Log/delete|loga nan sguabaidhean às]].\n\nCleachd ceangal ann an aon dhe na cruthan seo gus faidhle a chur am broinn duilleige:\n* <strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code></strong> gus an tionndadh slàn dhen fhaidhle a chleachdadh\n* <strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|teacsa alt]]</nowiki></code></strong> cus dreach a tha 200 piogsail a leud a chleachdadh a nochdas ann am bogsa air a' mharghan chlì le \"teacsa alt\" mar thuairisgeul\n* <strong><code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code></strong> gus ceangal a dhèanamh ris an fhaidhle gu dìreach gun a bhith a' sealltainn an fhaidhle",
-       "upload-permitted": "Seòrsaichean faidhle a tha ceadaichte: $1.",
-       "upload-preferred": "Seòrsaichean faidhle as docha leinn: $1.",
-       "upload-prohibited": "Seòrsaichean faidhle nach eil ceadaichte: $1.",
+       "upload-permitted": "{{PLURAL:$2|1=seòrsa|seòrsaichean}} faidhle a tha ceadaichte: $1.",
+       "upload-preferred": "{{PLURAL:$2|1=seòrsa|seòrsaichean}} faidhle as docha leinn: $1.",
+       "upload-prohibited": "{{PLURAL:$2|1=seòrsa|seòrsaichean}} faidhle nach eil ceadaichte: $1.",
        "uploadlogpage": "Loga an luchdaidh suas",
        "uploadlogpagetext": "Chì thu na faidhlichean a chaidh a luchdadh suas o chionn goirid gu h-ìosal.\nSeall [[Special:NewFiles|gailearaidh nam faidhlichean ùra]] airson foir-shealladh nas lèirsinniche.",
        "filename": "Ainm-faidhle",
        "logentry-upload-revert": "Luchdaich $1 $3 suas",
        "rightsnone": "(chan eil gin)",
        "revdelete-summary": "gearr-chunntas an deasachaidh",
+       "feedback-adding": "A' cur beachd ri duilleag...",
+       "feedback-bugcheck": "Taghta! Dearbhaich nach eil e air [$1 liosta nam bugaichean air a bheil sinn eòlach] mar-thà.",
+       "feedback-bugnew": "Dhearbh mi seo. Dèan aithris air buga ur",
        "feedback-bugornote": "Ma tha fiosrachadh mionaideach agad air duilgheadas teicnigeach, feuch an dèan thu [$1 aithris air buga].\nMur eil, 's urrainn dhut am foirm furasta a chleachdadh gu h-ìosal. Thèid do bheachd a chur ris an duilleag \"[$3 $2]\" is d' ainm-cleachdaiche a chur ris.",
-       "feedback-subject": "Cuspair:",
-       "feedback-message": "Teachdaireachd:",
        "feedback-cancel": "Sguir dheth",
-       "feedback-submit": "Cuir do bheachd a-null",
-       "feedback-adding": "A' cur beachd ri duilleag...",
+       "feedback-close": "Dèanta",
        "feedback-error1": "Mearachd: Chan aithnich sinn toradh an API",
        "feedback-error2": "Mearachd: Dh'fhàillig leis an deasachadh",
        "feedback-error3": "Mearachd: Cha d' fhuair sinn freagairt on API",
+       "feedback-message": "Teachdaireachd:",
+       "feedback-subject": "Cuspair:",
+       "feedback-submit": "Cuir do bheachd a-null",
        "feedback-thanks": "Mòran taing! Chaidh do bheachd a phostadh air an duilleag \"[$2 $1]\".",
-       "feedback-close": "Dèanta",
-       "feedback-bugcheck": "Taghta! Dearbhaich nach eil e air [$1 liosta nam bugaichean air a bheil sinn eòlach] mar-thà.",
-       "feedback-bugnew": "Dhearbh mi seo. Dèan aithris air buga ur",
        "searchsuggest-search": "Lorg",
        "searchsuggest-containing": "anns a bheil...",
        "api-error-badaccess-groups": "Chan eil cead agad gus faidhlichean a luchdadh suas dhan uicidh seo.",
index b2b8473..9967337 100644 (file)
        "feedback-bugornote": "Se está listo para describir un problema técnico en detalle, [$1 informe do erro].\nEn caso contrario, pode empregar o formulario sinxelo inferior. O seu comentario aparecerá na páxina \"[$3 $2]\" xunto ao seu nome de usuario e o navegador que está usando.",
        "feedback-cancel": "Cancelar",
        "feedback-close": "Feito",
+       "feedback-external-bug-report-button": "Gardar unha tarefa técnica",
+       "feedback-dialog-title": "Enviar opinión",
+       "feedback-dialog-intro": "Pode usar o formulario simple de abaixo para enviar a súa opinión. O seu comentario será engadido á páxina \"$1\", xunto co seu nome de usuario.",
        "feedback-error-title": "Erro",
        "feedback-error1": "Erro: Resultado da API non recoñecido",
        "feedback-error2": "Erro: Fallo de edición",
        "feedback-message": "Mensaxe:",
        "feedback-subject": "Asunto:",
        "feedback-submit": "Enviar",
+       "feedback-termsofuse": "Concordo en proporcionar as miñas opinións de acordo cos Termos de Uso.",
        "feedback-thanks": "Grazas! Os seus comentarios publicáronse na páxina \"[$2 $1]\".",
        "feedback-thanks-title": "Grazas!",
        "feedback-useragent": "Axente de usuario:",
index 67f06d9..e80f071 100644 (file)
        "tags-create-submit": "സൃഷ്ടിക്കുക",
        "tags-create-no-name": "റ്റാഗിന്റെ പേര് വ്യക്തമാക്കേണ്ടതുണ്ട്.",
        "tags-delete-reason": "കാരണം:",
+       "tags-activate-reason": "കാരണം:",
+       "tags-activate-submit": "സജ്ജമാക്കുക",
+       "tags-deactivate-reason": "കാരണം:",
+       "tags-deactivate-submit": "പ്രവർത്തനരഹിതമാക്കുക",
        "comparepages": "താളുകൾ താരതമ്യപ്പെടുത്തുക",
        "compare-page1": "താൾ 1",
        "compare-page2": "താൾ 2",
        "feedback-message": "സന്ദേശം:",
        "feedback-subject": "വിഷയം:",
        "feedback-submit": "സമർപ്പിക്കുക",
+       "feedback-terms": "എന്റെ ബ്രൗസറും ഓപ്പറേറ്റിങ് സിസ്റ്റവും ഏതാണെന്നും പതിപ്പെന്തെന്നും കൃത്യമായി ഉൾപ്പെട്ടതാണ് എന്റെ യൂസർ ഏജന്റ് വിവരം എന്നും അത് എന്റെ അഭിപ്രായത്തോടൊപ്പം സാർവ്വജനികമായി ലഭ്യമാകത്തക്കവിധത്തിൽ പങ്കുവെയ്ക്കപ്പെടുമെന്നും ഞാൻ മനസ്സിലാക്കുന്നു.",
+       "feedback-termsofuse": "ഉപയോഗനിബന്ധനകൾക്ക് അനുസൃതമായാണ് ഈ അഭിപ്രായം നൽകുന്നതെന്ന് ഞാൻ സമ്മതിക്കുന്നു.",
        "feedback-thanks": "നന്ദി! താങ്കളുടെ പ്രതികരണം \"[$2 $1]\" എന്ന താളിൽ പ്രസിദ്ധീകരിച്ചിട്ടുണ്ട്.",
        "feedback-thanks-title": "നന്ദി!",
+       "feedback-useragent": "യൂസർ ഏജന്റ്:",
        "searchsuggest-search": "തിരയുക",
        "searchsuggest-containing": "ഉൾപ്പെടുന്നവ...",
        "api-error-badaccess-groups": "ഈ വിക്കിയിൽ പ്രമാണങ്ങൾ അപ്‌ലോഡ് ചെയ്യാൻ താങ്കൾക്കനുവാദമില്ല.",
index 71f2c24..7217d1f 100644 (file)
        "createaccounterror": "Kon de gebrukersnaam niet anmaken: $1",
        "nocookiesnew": "De gebrukersnaam is an-emaakt, mer je bin niet an-emeld.\n{{SITENAME}} gebruuk scheumbestaanden (cookies) um gebrukers an te melden.\nJe hebben disse scheumbestaanden uutezet.\nZet ze an, en meld daornao an mit de nieje gegevens.",
        "nocookieslogin": "t Anmelden is mislokt umdat de webkieker gien scheumbestaanden (cookies) an hef staon. Probeer t aksepteren van scheumbestaanden an te zetten en daornao opniej an te melden.",
-       "nocookiesfornew": "De gebruker is niet an-emaakt, umdat de bron niet bevestigd kon wörden.\nZörg derveur da'j scheumbestaanden (cookies) an hebben staon, herlaoj disse zied en probeer t opniej.",
+       "nocookiesfornew": "De gebruker is niet an-emaakt, umdat de bron niet bevestigd kon wörden.\nZörg derveur da'j scheumbestaanden (cookies) an hebben staon, herlaoi disse zied en probeer t opniej.",
        "noname": "Je mutten n gebrukersnaam opgeven.",
        "loginsuccesstitle": "Suksesvol an-emeld",
        "loginsuccess": "Je bin noen an-emeld bie {{SITENAME}} as \"$1\".",
        "suppressionlog": "Verbargingslogboek",
        "suppressionlogtext": "In de onderstaande lieste staon de vortedaone ziejen en blokkeringen die veur beheerders verbörgen bin. \nIn de [[Special:BlockList|blokkeerlieste]] bin de blokkeringen, die noen van toepassige bin, te bekieken.",
        "mergehistory": "Geschiedenisse van ziejen bie mekaar doon",
-       "mergehistory-header": "Via disse zied ku'j versies uut de geschiedenisse van n bronzied mit n niejere zied samenvoegen. Zörg derveur dat disse versies uut de geschiedenisse histories juus bin.",
+       "mergehistory-header": "Via disse zied ku'j versies uut de geschiedenisse van n bronzied mit n niejere zied samenvoegen. Zörg derveur dat disse versies uut de geschiedenisse histories juust bin.",
        "mergehistory-box": "Geschiedenisse van twee ziejen bie mekaar doon:",
        "mergehistory-from": "Bronzied:",
        "mergehistory-into": "Bestemmingszied:",
index 4e96fc5..3cb8770 100644 (file)
        "mediastatistics-header-text": "Tekstformat",
        "mediastatistics-header-executable": "Kan køyrast",
        "mediastatistics-header-archive": "Komprimerte format",
-       "json-error-syntax": "Syntaksfeil"
+       "json-error-syntax": "Syntaksfeil",
+       "headline-anchor-title": "Lenk til denne bolken"
 }
index c75a11d..ab5f183 100644 (file)
        "deletereason-dropdown": "*ਮਿਟਾਉਣ ਦੇ ਆਮ ਕਾਰਨ\n**ਲੇਖਕ ਦੇ ਕਹਿਣ ’ਤੇ\n**ਕਾਪੀਰਾਈਟ ਦੀ ਉਲੰਘਣਾ\n**ਵੰਦਾਲਿਜ਼ਮ",
        "delete-edit-reasonlist": "ਮਿਟਾਉਣ ਦੇ ਕਾਰਨ ਸੋਧੋ",
        "rollback": "ਸੋਧਾਂ ਵਾਪਸ ਮੋੜੋ",
-       "rollback_short": "ਰੋਲਬੈਕ",
        "rollbacklink": "ਵਾਪਸ ਮੋੜੋ",
        "rollbacklinkcount": "$1 {{PLURAL:$1|ਸੋਧ|ਸੋਧਾਂ}} ਵਾਪਸ ਮੋੜੋ",
        "rollbacklinkcount-morethan": "$1 ਤੋਂ ਜ਼ਿਆਦਾ {{PLURAL:$1|ਸੋਧ|ਸੋਧਾਂ}} ਵਾਪਸ ਮੋੜੋ",
        "watchlisttools-view": "ਸਬੰਧਤ ਤਬਦੀਲੀਆਂ ਵੇਖੋ",
        "watchlisttools-edit": "ਨਿਗਰਾਨੀ-ਸੂਚੀ ਵੇਖੋ ’ਤੇ ਸੋਧੋ",
        "watchlisttools-raw": "ਕੱਚੀ ਨਿਗਰਾਨ-ਸੂਚੀ ਸੋਧੋ",
+       "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|ਗੱਲ-ਬਾਤ]])",
        "duplicate-defaultsort": "ਪੁਰਾਣੀ ਮੂਲ ਕਰਮਾਂਕਨ ਕੁੰਜੀ $1 ਦੇ ਬਜਾਏ ਹੁਣ ਮੂਲ ਕਰਮਾਂਕਨ ਕੁੰਜੀ $2 ਹੋਵੇਗੀ।",
        "version": "ਵਰਜਨ",
        "version-skins": "ਥਾਪੀਆਂ ਖੱਲਾਂ",
        "logentry-newusers-create2": "ਵਰਤੋਂਕਾਰ ਖਾਤਾ $3, $1 ਦੁਆਰਾ ਬਣਾਇਆ ਗਿਆ ਸੀ",
        "rightsnone": "(ਕੋਈ ਨਹੀਂ)",
        "revdelete-summary": "ਸੰਖੇਪ ਸੋਧ",
-       "feedback-subject": "ਵਿਸ਼ਾ:",
-       "feedback-message": "ਸੁਨੇਹਾ:",
-       "feedback-cancel": "ਰੱਦ ਕਰੋ",
-       "feedback-submit": "ਵਿਚਾਰ ਦਿਓ",
        "feedback-adding": "ਸਫ਼ੇ ਨਾਲ਼ ਵਿਚਾਰ ਜੁੜ ਰਹੇ ਹਨ...",
+       "feedback-bugnew": "ਮੈਂ ਚੈੱਕ ਕੀਤਾ। ਇੱਕ ਨਵੇਂ ਦੋਸ਼ ਦੀ ਰਿਪੋਰਟ ਕਰੋ",
+       "feedback-cancel": "ਰੱਦ ਕਰੋ",
+       "feedback-close": "ਹੋ ਗਿਆ",
        "feedback-error2": "ਦੋਸ਼:ਸੋਧ ਫੇਲ੍ਹ ਹੋਈ",
        "feedback-error3": "ਦੋਸ਼:API ਵੱਲੋਂ ਕੋਈ ਜੁਆਬ ਨਹੀਂ",
-       "feedback-close": "ਹੋ ਗਿਆ",
-       "feedback-bugnew": "ਮੈਂ ਚੈੱਕ ਕੀਤਾ। ਇੱਕ ਨਵੇਂ ਦੋਸ਼ ਦੀ ਰਿਪੋਰਟ ਕਰੋ",
+       "feedback-message": "ਸੁਨੇਹਾ:",
+       "feedback-subject": "ਵਿਸ਼ਾ:",
+       "feedback-submit": "ਵਿਚਾਰ ਦਿਓ",
        "searchsuggest-search": "ਖੋਜ",
        "api-error-badaccess-groups": "ਤੁਹਾਨੂੰ ਇਸ ਵਿਕੀ ਉੱਤੇ ਫ਼ਾਈਲਾਂ ਅੱਪਲੋਡ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ।",
        "api-error-badtoken": "ਅੰਦਰੂਨੀ ਦੋਸ਼: ਗ਼ਲਤ ਟੋਕਨ",
index 3708544..5d4106b 100644 (file)
@@ -77,7 +77,8 @@
                        "He7d3r",
                        "PauloEduardo",
                        "Webysther",
-                       "Fasouzafreitas"
+                       "Fasouzafreitas",
+                       "RosaMafalda17"
                ]
        },
        "tog-underline": "Sublinhar links:",
        "disclaimers": "Exoneração de responsabilidade",
        "disclaimerpage": "Project:Aviso_geral",
        "edithelp": "Ajuda de edição",
+       "helppage-top-gethelp": "Ajuda",
        "mainpage": "Página principal",
        "mainpage-description": "Página principal",
        "policy-url": "Project:Políticas",
        "readonly_lag": "O banco de dados foi automaticamente bloqueado enquanto os servidores secundários se sincronizam com o principal",
        "internalerror": "Erro interno",
        "internalerror_info": "Erro interno: $1",
+       "internalerror-fatal-exception": "Excepção fatal do tipo \"$1\"",
        "filecopyerror": "Não foi possível copiar o arquivo \"$1\" para \"$2\".",
        "filerenameerror": "Não foi possível renomear o arquivo \"$1\" para \"$2\".",
        "filedeleteerror": "Não foi possível eliminar o arquivo \"$1\".",
        "movepagetalktext": "A página de \"discussão\" associada, se existir, será automaticamente movida, '''a não ser que:'''\n*Uma página de discussão com conteúdo já exista sob o novo título, ou\n*Você não marque a caixa abaixo.\n\nNestes casos, você terá que mover ou mesclar a página manualmente, se assim desejar.",
        "movearticle": "Mover página",
        "moveuserpage-warning": "'''Aviso:''' Você irá mover uma página de usuário. Note que apenas a página será movida, ''sem'' alterar o nome do usuário.",
+       "movecategorypage-warning": "<strong>Aviso:</strong> Você está prestes a mover uma página de categoria. Por favor, note que apenas a página será transferida e quaisquer páginas da categoria antiga <em>não</em> serão recategorizadas para o novo.",
        "movenologintext": "Você precisa ser um usuário registrado e [[Special:UserLogin|autenticado]] para poder mover uma página.",
        "movenotallowed": "Você não possui permissão para mover páginas.",
        "movenotallowedfile": "Você não possui permissão para mover arquivos.",
        "thumbnail-temp-create": "Não foi possível criar o arquivo temporário de miniatura",
        "thumbnail-dest-create": "Não foi possível salvar a miniatura no destino",
        "thumbnail_invalid_params": "Parâmetros de miniatura inválidos",
+       "thumbnail_toobigimagearea": "Arquivo com dimensões maiores que $1",
        "thumbnail_dest_directory": "Não foi possível criar o diretório de destino",
        "thumbnail_image-type": "Tipo de imagem não suportado",
        "thumbnail_gd-library": "Configuração da biblioteca GD incompleta: função $1 não encontrada",
        "thumbnail_image-missing": "Arquivo aparentemente inexistente: $1",
        "thumbnail_image-failure-limit": "Houveram muitas tentativas falhas recentemente ($1 ou mais) de criação desta miniatura. Por favor, tente novamente mais tarde.",
        "import": "Importar páginas",
-       "importinterwiki": "Importação transwiki",
+       "importinterwiki": "importar páginas a partir de outra wiki",
        "import-interwiki-text": "Selecione um wiki e um título de página para importar.\nAs datas das edições e os seus editores serão mantidos.\nTodas as ações de importação transwiki são registradas no [[Special:Log/import|Registro de importações]].",
        "import-interwiki-sourcewiki": "Fonte wiki:",
        "import-interwiki-sourcepage": "Página de origem:",
        "javascripttest": "Teste de JavaScript",
        "javascripttest-pagetext-noframework": "Esta página é exclusiva para testes de JavaScript.",
        "javascripttest-pagetext-unknownframework": "A estrutura de testes \"$1\" é desconhecida.",
+       "javascripttest-pagetext-unknownaction": "Ação desconhecida de $1",
        "javascripttest-pagetext-frameworks": "Escolha uma das seguintes estruturas de teste: $1",
        "javascripttest-pagetext-skins": "Escolha o tema para executar os testes:",
        "javascripttest-qunit-intro": "Veja a [$1 documentação de testes] no mediawiki.org.",
index 8e7f705..bb61551 100644 (file)
        "feedback-cancel": "Cancelar",
        "feedback-close": "Feito",
        "feedback-dialog-title": "Enviar opinião",
+       "feedback-dialog-intro": "Pode usar o fácil formulário abaixo para enviar os seus comentários. A sua opinião será adicionada à página \"$1\", juntamente com o seu nome de utilizador(a).",
        "feedback-error-title": "Erro",
        "feedback-error1": "Erro: O resultado da API não foi reconhecido",
        "feedback-error2": "Erro: A edição falhou",
        "feedback-message": "Mensagem:",
        "feedback-subject": "Assunto:",
        "feedback-submit": "Enviar",
+       "feedback-termsofuse": "Concordo em fornecer comentários de acordo com as Condições de Uso.",
        "feedback-thanks": "Obrigado! O seu comentário foi adicionado à página \"[$2 $1]\".",
        "feedback-thanks-title": "Obrigado!",
        "searchsuggest-search": "Pesquisa",
index 47664ed..1630b95 100644 (file)
        "editundo": "отменить",
        "diff-empty": "(нет различий)",
        "diff-multi-sameuser": "(не {{PLURAL:$1|показана одна промежуточная версия|показаны $1 промежуточные версии|показано $1 промежуточных версий}} этого же участника)",
-       "diff-multi-otherusers": "(не {{PLURAL:$1|показана одна промежуточная версия|показаны $1 промежуточные версии|показано $1 промежуточных версий}} {{PLURAL:$2|$2 участника|$2 участников}})",
+       "diff-multi-otherusers": "(не {{PLURAL:$1|показана $1 промежуточная версия|показаны $1 промежуточные версии|показано $1 промежуточных версий}} {{PLURAL:$2|$2 участника|$2 участников}})",
        "diff-multi-manyusers": "({{PLURAL:$1|не показана $1 промежуточная версия, сделанная|не показаны $1 промежуточных версий, сделанных|не показаны $1 промежуточные версии, сделанные}} более чем {{PLURAL:$2|$2 участником|$2 участниками}})",
        "difference-missing-revision": "Не {{PLURAL:$2|1=найдена|найдены}} {{PLURAL:$2|$2 версия|$2 версий|$2 версии|1=одна из версий}} для этого сравнения ($1).\n\nТакое обычно случается при переходе по устаревшей ссылке сравнения версий для страницы, которая была удалена.\nПодробности могут быть в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале удалений].",
        "searchresults": "Результаты поиска",
index bb06953..d97a8d8 100644 (file)
        "tog-hideminor": "Ammuccia li canciamenti nichi nta l'ùrtimi canciamenti",
        "tog-hidepatrolled": "Ammuccia li mudìfichi battugghiati nta l'ùrtimi canciamenti",
        "tog-newpageshidepatrolled": "Ammuccia li pàggini battugghiati di l'alencu dî pàggini cchiu' novi",
-       "tog-extendwatchlist": "Ammustra tutti i canciamenti ntâ lista talïata, nun sulu u cchiu' ricenti",
-       "tog-usenewrc": "Raggruppa li canciamenti pi' pàggina ntâ lista dî canciamenti ricenti e ntâ lista talïata",
+       "tog-extendwatchlist": "Ammustra tutti i canciamenti ntâ lista taliata, nun sulu u cchiu' ricenti",
+       "tog-usenewrc": "Raggruppa li canciamenti pi' pàggina ntâ lista dî canciamenti ricenti e ntâ lista taliata",
        "tog-numberheadings": "Nummirazzioni autumàtica dî tìtuli di paràgrafu",
        "tog-showtoolbar": "Ammustra la barra dî strumenta pû canciamentu",
        "tog-editondblclick": "Duppiu click pi canciari l'artìculu",
        "tog-editsectiononrightclick": "Attiva lu canciamentu di na sizzioni quannu si clicca cu' buttuni drittu supra a lu so tìtulu",
-       "tog-watchcreations": "Agghiunci li pàggini chi' creu e li file chi' càrricu â me lista talïata",
-       "tog-watchdefault": "Agghiunci li pàggini e li file chi' canciu â me lista talïata",
-       "tog-watchmoves": "Agghiunci li pàggini e li file chi' spostu â me lista talïata",
-       "tog-watchdeletion": "Agghiunci li pàggini e li file chi' cancellu â me lista talïata",
-       "tog-watchrollback": "Agghiunci li pàggini unni fici nu canciu n'arreri â me lista talïata",
+       "tog-watchcreations": "Agghiunci li pàggini chi' creu e li file chi' càrricu â me lista taliata",
+       "tog-watchdefault": "Agghiunci li pàggini e li file chi' canciu â me lista taliata",
+       "tog-watchmoves": "Agghiunci li pàggini e li file chi' spostu â me lista taliata",
+       "tog-watchdeletion": "Agghiunci li pàggini e li file chi' cancellu â me lista taliata",
+       "tog-watchrollback": "Agghiunci li pàggini unni fici nu canciu n'arreri â me lista taliata",
        "tog-minordefault": "Marca ogni' canciamentu comu nicu pi' mpustazzioni pridifinuta",
        "tog-previewontop": "Ammustra l'antiprima avanti dâ casedda di canciamentu",
        "tog-previewonfirst": "Ammustra l'antiprima ô primu canciamentu",
-       "tog-enotifwatchlistpages": "Mànnami nu missàggiu di posta elittrònica quannu na pàggina o nu file dâ me lista talïata subbìsciunu canciamenti",
+       "tog-enotifwatchlistpages": "Mànnami nu missàggiu di posta elittrònica quannu na pàggina o nu file dâ me lista taliata subbìsciunu canciamenti",
        "tog-enotifusertalkpages": "Mànnami nu missaggiu di posta elettrònica quannu la me pàggina di discussioni veni canciata",
        "tog-enotifminoredits": "Mànnami nu missaggiu di posta elittrònica macari pi li canciamenti nichi di pàggini e file",
        "tog-enotifrevealaddr": "Ammustra lu me nnirizzu di posta elittrònica ntê missaggi di nutifica",
        "tog-fancysig": "Intèrpitra la firma comu wikitestu (senza liami automaticu)",
        "tog-uselivepreview": "Attiva l'antiprima in diretta",
        "tog-forceeditsummary": "Dumanna cunfirma siddu lu riassuntu dûn canciamentu è vacanti",
-       "tog-watchlisthideown": "Ammuccia li me canciamenti ntâ lista talïata",
-       "tog-watchlisthidebots": "Ammuccia li canciamenti dî bot ntâ lista talïata",
-       "tog-watchlisthideminor": "Ammuccia li canciamenti nichi ntâ lista talïata",
-       "tog-watchlisthideliu": "Ammuccia li canciamenti di l'utilizzatura riggistrati ntâ lista talïata",
-       "tog-watchlisthideanons": "Ammuccia li canciamenti di l'utilizzatura anònimi ntâ lista talïata",
-       "tog-watchlisthidepatrolled": "Ammuccia li mudìfichi battugghiati ntâ lista talïata",
+       "tog-watchlisthideown": "Ammuccia li me canciamenti ntâ lista taliata",
+       "tog-watchlisthidebots": "Ammuccia li canciamenti dî bot ntâ lista taliata",
+       "tog-watchlisthideminor": "Ammuccia li canciamenti nichi ntâ lista taliata",
+       "tog-watchlisthideliu": "Ammuccia li canciamenti di l'utilizzatura riggistrati ntâ lista taliata",
+       "tog-watchlisthideanons": "Ammuccia li canciamenti di l'utilizzatura anònimi ntâ lista taliata",
+       "tog-watchlisthidepatrolled": "Ammuccia li mudìfichi battugghiati ntâ lista taliata",
        "tog-ccmeonemails": "Mànnami na copia dî missaggi spiduti a l'àutri utenti",
        "tog-diffonly": "Nun ammustrari lu cuntinutu dî pàggini sutta dî cunfrunti tra virsioni",
        "tog-showhiddencats": "Ammustra li catigurìi ammucciati",
        "jumpto": "Vai a':",
        "jumptonavigation": "navigazzioni",
        "jumptosearch": "cerca",
-       "view-pool-error": "Nni dispiaci, ma li server nta stu mumentu sunnu troppu carrichi.\nTroppi utenti stannu circannu di talïari sta pàggina.\nPi' favuri spetta n'anticchia prima di pruvari n'autra vota a talïari sta pàggina.\n\n$1",
-       "generic-pool-error": "Nni dispiaci, ma li server nta stu mumentu sunnu troppu càrrichi.\nTroppi utenti stannu circannu di talïari sta risorsa.\nPi' favuri spetta n'anticchia prima di pruvari n'autra vota a talïari sta risorsa.",
+       "view-pool-error": "Nni dispiaci, ma li server nta stu mumentu sunnu troppu carrichi.\nTroppi utenti stannu circannu di taliari sta pàggina.\nPi' favuri spetta n'anticchia prima di pruvari n'autra vota a taliari sta pàggina.\n\n$1",
+       "generic-pool-error": "Nni dispiaci, ma li server nta stu mumentu sunnu troppu càrrichi.\nTroppi utenti stannu circannu di taliari sta risorsa.\nPi' favuri spetta n'anticchia prima di pruvari n'autra vota a taliari sta risorsa.",
        "pool-timeout": "Tempu scadutu aspittannu lu sbloccu",
        "pool-queuefull": "La cuda dû pool è china",
        "pool-errorunknown": "Erruri scanusciutu",
        "cannotdelete": "Nun fu' pussìbbili cancillari la pàggina o lu file \"$1\".\nPutissi aviri statu già cancillatu di quarchidun'autru.",
        "cannotdelete-title": "Nun è pussìbbili cancillari la pàggina \"$1\"",
        "delete-hook-aborted": "Cancillazzioni annullata di n'hook.\nNun desi nudda spiegazzioni.",
-       "no-null-revision": "Non fu' pussibbili crïari na virsioni nulla pâ paggina \"$1\"",
+       "no-null-revision": "Non fu' pussibbili criari na virsioni nulla pâ paggina \"$1\"",
        "badtitle": "Tìtulu nun bonu",
        "badtitletext": "Lu tìtulu di pàggina addumannatu nun era vàlidu, era vacanti, o vinìa dûn culligamentu intir-linguìsticu o intir-wiki malu fattu.\nPutissi cuntèniri unu o cchiu' ssai caràttiri chi' nun su' cunsintuti ntê tìtula.",
        "perfcached": "Li dati ca sèquinu sunnu stratti di na ''cache'' e putissiru nun èssiri aggiurnati. Ntâ ''cache'' {{PLURAL:$1|capi un risultatu|càpunu $1 risultati}} massimu.",
        "userlogin-joinproject": "Scrìviti a' {{SITENAME}}",
        "nologin": "Nun hai nu cuntu? $1.",
        "nologinlink": "Crea nu cuntu",
-       "createaccount": "Crïazzioni dûn cuntu",
+       "createaccount": "Criazzioni dûn cuntu",
        "gotaccount": "Già hai nu cuntu? $1.",
        "gotaccountlink": "Trasi",
        "userlogin-resetlink": "Ti scurdasti li dittagghî pâ trasuta?",
        "createacct-realname": "Nomu veru (facurtativu)",
        "createaccountreason": "Mutivu:",
        "createacct-reason": "Mutivu",
-       "createacct-reason-ph": "Pirchì stai crïannu n'àutru cuntu",
+       "createacct-reason-ph": "Pirchì stai criannu n'àutru cuntu",
        "createacct-captcha": "Cuntrollu di sicurizza",
        "createacct-imgcaptcha-ph": "Nzirìsci lu testu ca vidi ccassupra",
        "createacct-submit": "Crea lu to cuntu",
        "badretype": "Li password chi' mittisti nun currispùnnunu tra d'iddi.",
        "userexists": "Lu nomu utenti nziritu è già usatu.\nTi prijamu pirciò di vuliri scègghîri nu nomu utenti diffirenti.",
        "loginerror": "Erruri ntâ trasuta",
-       "createacct-error": "Erruri ntâ crïazzioni dû cuntu",
-       "createaccounterror": "Nun fu pussìbbili crïari u cuntu: $1",
+       "createacct-error": "Erruri ntâ criazzioni dû cuntu",
+       "createaccounterror": "Nun fu pussìbbili criari u cuntu: $1",
        "nocookiesnew": "Lu cuntu utenti fu' criatu, ma nun si' trasutu.\n{{SITENAME}} adòpira li cookie pi' gistiri li trasuti.\nTu hai i cookie disattivati.\nPi' favuri attìvili, e appoi trasi chî to nomu utenti e password novi.",
        "nocookieslogin": "{{SITENAME}} adòpira li cookie pi' gistiri li trasuti.\nTu hai i cookie disattivati.\nPi' favuri attìvili e prova n'autra vota.",
        "nocookiesfornew": "Lu cuntu utenti nun fu' criatu, picchì nun pòttimu cunfirmari la so orìggini.\nAssicuriti chi' hai i ''cookie'' attivati, ricarrica sta pàggina e prova n'autra vota.",
        "eauthentsent": "Nu missaggiu e-mail di cunfirma fu' spidutu a lu nnirizzu nnicatu.\nPrima chi' ponnu èssiri mannati autri missaggi e-mail a' stu cuntu, è nicissariu sèquiri li struzzioni ca vi sunnu scritti, 'n modu di cunfirmari di èssiri li liggìttimi prupietarî di lu cuntu.",
        "throttled-mailpassword": "Nu missaggiu e-mail di azziramentu dâ password già havi statu mannatu nta {{PLURAL:$1|l'ultima ura|l'ultimi $1 uri}}. Pi' privèniri abbusi, si po' mannari nu missaggiu e-mail di azziramentu dâ password na vota sula ogni {{PLURAL:$1|ura|$1 uri}}.",
        "mailerror": "Erruri nta lu mannu dû missaggiu: $1",
-       "acct_creation_throttle_hit": "Visitaturi di sta wiki cû to stissu nnirizzu IP già hannu crïatu {{PLURAL:$1|un cuntu|$1 cunti}} nta sta jurnata, chi' è lu massimu pirmissu pi' stu pirìudu di tempu.\nPi' ciò, com'ad ora li visitaturi ca usunu stu nnirizzu IP nun ponnu crïari autri cunti.",
+       "acct_creation_throttle_hit": "Visitaturi di sta wiki cû to stissu nnirizzu IP già hannu criatu {{PLURAL:$1|un cuntu|$1 cunti}} nta sta jurnata, chi' è lu massimu pirmissu pi' stu pirìudu di tempu.\nPi' ciò, com'ad ora li visitaturi ca usunu stu nnirizzu IP nun ponnu criari autri cunti.",
        "emailauthenticated": "Lu to nnirizzu di posta elittrònica fu' cunfirmatu lu $2 ê $3.",
        "emailnotauthenticated": "Lu to nnirizzu di posta elittrònica ancora nun havi statu cunfirmatu.\nNun ti sarrannu mannati missaggi di posta elittrònica pi' sti funzioni.",
        "noemailprefs": "Innicari nu nnirizzu di posta elittrònica p'attivari sti funzioni.",
        "emaildisabled": "Stu situ nun po' mannari missaggi di posta elittrònica.",
        "accountcreated": "Cuntu criatu",
        "accountcreatedtext": "Fu' criatu un cuntu novu pi' l'utenti [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|msg]]).",
-       "createaccount-title": "Crïazzioni di nu cuntu pi' {{SITENAME}}",
+       "createaccount-title": "Criazzioni di nu cuntu pi' {{SITENAME}}",
        "createaccount-text": "Qualcuno criau n'accessu a {{SITENAME}} ($4) a nomu di $2, associatu cu stu ndirizzu di posta elettronica. La password pi l'utenti \"$2\" è mpustata a \"$3\". È opportunu trasiri quantu prima e canciari la password subbutu.\n\nSi l'accessu fu criatu pi sbagghiu, si può gnurari stu missaggiu.",
        "login-throttled": "Hai fattu troppi tintativi di trasuta.\nPi' favuri spetta $1 prima di pruvari n'autra vota.",
        "login-abort-generic": "La trasuta nun arriniscìu - Annullata",
        "passwordreset-emailtext-user": "L'utenti $1 supra a' {{SITENAME}} fici dumanna pi' l'azziramentu dâ to password pi' {{SITENAME}} ($4). {{PLURAL:$3|U siguenti cuntu utenti è assuciatu|I siguenti cunti utenti su' assuciati}} cu' stu nnirizzu di posta elittrònica:\n\n$2\n\n{{PLURAL:$3|Sta password timpurania|Sti password timpuranii}} scàdunu tra {{PLURAL:$5|un jornu|$5 jorna}}.\nOra tu avissi a' tràsiri e scègghîri na password nova. Si' fu' quarchidun'autru a' fari sta richiesta e nun tu, o si' ti ricurdasti a to password origginali e nâ voi canciari cchiu', poi gnurari stu missaggiu e cuntinuari a' adupirari a to password vecchia.",
        "passwordreset-emailelement": "Nomu utenti: $1\nPassword timpurania: $2",
        "passwordreset-emailsent": "Nu missaggiu di posta elittrònica d'azziramentu dâ password fu' mannatu.",
-       "passwordreset-emailsent-capture": "Nu missaggiu di posta elittrònica d'azziramentu dâ password fu' mannatu, cû cuntinutu chi' si po' talïari ccassutta.",
-       "passwordreset-emailerror-capture": "Nu missaggiu di posta elittrònica d'azziramentu dâ password fu' cumpilatu, cû cuntinutu chi' si po' talïari ccassutta, però a so spidizzioni a' l'utenti {{GENDER:$2|user}} nun riniscìu: $1",
+       "passwordreset-emailsent-capture": "Nu missaggiu di posta elittrònica d'azziramentu dâ password fu' mannatu, cû cuntinutu chi' si po' taliari ccassutta.",
+       "passwordreset-emailerror-capture": "Nu missaggiu di posta elittrònica d'azziramentu dâ password fu' cumpilatu, cû cuntinutu chi' si po' taliari ccassutta, però a so spidizzioni a' l'utenti {{GENDER:$2|user}} nun riniscìu: $1",
        "changeemail": "Canciu dû nnirizzu di posta elittrònica",
        "changeemail-text": "Jinchi stu mòdulu pi' canciari u to nnirizzu di posta elittrònica. Hâ' nziriri a to password pi' cunfirmari stu canciamentu.",
        "changeemail-no-info": "Hâ' jèssiri trasutu p'aviri accessu direttu a' sta pàggina.",
        "resettokens-legend": "Azziramentu dî token",
        "resettokens-tokens": "Token:",
        "resettokens-token-label": "$1 (valuri attuali: $2)",
-       "resettokens-watchlist-token": "Token pû feed web (Atom/RSS) dî [[Special:Watchlist|canciamenti ê pàggini ntâ to lista talïata]]",
+       "resettokens-watchlist-token": "Token pû feed web (Atom/RSS) dî [[Special:Watchlist|canciamenti ê pàggini ntâ to lista taliata]]",
        "resettokens-done": "I token furu azzirati.",
        "resettokens-resetbutton": "Azzera i token scigghiuti",
        "bold_sample": "Grassettu",
        "preview": "Antiprima",
        "showpreview": "Ammustra l'antiprima",
        "showdiff": "Ammustra li canciamenti",
-       "blankarticle": "<strong>Accura:</strong> La pàggina chi' stai criannu è vacanti.\nSi' clicchi \"{{int:savearticle}}\" n'autra vota, la pàggina veni crïata senza nuddu cuntinutu.",
+       "blankarticle": "<strong>Accura:</strong> La pàggina chi' stai criannu è vacanti.\nSi' clicchi \"{{int:savearticle}}\" n'autra vota, la pàggina veni criata senza nuddu cuntinutu.",
        "anoneditwarning": "<strong>Accura:</strong> Nun si' trasutu. Lu to nnirizzu IP diventa visìbbili pubblicamenti quannu fai nu canciamentu. Si' <strong>[$1 trasi]</strong> o puru <strong>[$2 crei nu cuntu]</strong>, li canciamenti chi' fai vènunu attribbuiti ô to nomu utenti, sparti di autri vantaggi.",
        "anonpreviewwarning": "''Nun trasisti comu utiliggaturi loggatu. Sarbannu, lu tò nnirizzu IP veni arriggistratu ntâ storia dî canciamenti.''",
        "missingsummary": "'''Accura:''' Nun hà statu spicificatu l'uggettu di stu canciamentu. Primennu di novu '''Sarva''' lu canciamentu veni sarvatu cu l'uggettu vacanti.",
        "whitelistedittext": "Pi' favuri $1 pi' canciari li pàggini.",
        "confirmedittext": "Hâ' cunvalidari lu to nnirizzu di posta elittrònica avanti di putiri canciari li pàggini.\nPi' favuri mposta e cunvàlida lu nnirizzu passannu dî [[Special:Preferences|to prifirenzi]].",
        "nosuchsectiontitle": "La sizzioni nun fu truvata",
-       "nosuchsectiontext": "Pruvasti a canciari na sizzioni chi' nun esisti.\nForsi ca fu' spustata o cancillata na mentri ca stàvutu talïannu la pàggina.",
+       "nosuchsectiontext": "Pruvasti a canciari na sizzioni chi' nun esisti.\nForsi ca fu' spustata o cancillata na mentri ca stàvutu taliannu la pàggina.",
        "loginreqtitle": "S'havi a' tràsiri",
        "loginreqlink": "trasi",
-       "loginreqpagetext": "Pi' favuri $1 pi' talïari autri pàggini.",
+       "loginreqpagetext": "Pi' favuri $1 pi' taliari autri pàggini.",
        "accmailtitle": "Password mannata",
        "accmailtext": "Na password ginirata casualmenti pi' [[User talk:$1|$1]] fu' spiduta a $2. Si po' canciari di la pàggina di <em>[[Special:ChangePassword|canciamentu dâ password]]</em> comu unu trasi.",
        "newarticle": "(Novu)",
-       "newarticletext": "Siguisti nu culligamentu a' na pàggina ch'ancora nun esisti.\nPi' crïari sta pàggina, accumenza a' scrìviri ccassutta (talìa la [$1 pàggina d'ajutu] p'aviri majuri nfurmazzioni).\nSi' agghicasti cca pi' sbagghiu, calca lu buttuni <strong>n' arreri</strong> dû to browser.",
+       "newarticletext": "Siguisti nu culligamentu a' na pàggina ch'ancora nun esisti.\nPi' criari sta pàggina, accumenza a' scrìviri ccassutta (talìa la [$1 pàggina d'ajutu] p'aviri majuri nfurmazzioni).\nSi' agghicasti cca pi' sbagghiu, calca lu buttuni <strong>n' arreri</strong> dû to browser.",
        "anontalkpagetext": "----''Chista è la pàggina di discussioni di n’utenti anònimu, ca nun criau ancora n’accessu o ca nun l’usa.\nP’idintificàrilu è pirciò nicissariu usari lu nùmmiru di lu sò nnirizzu IP.\nLi nnirizzi IP ponnu pirò èssiri spartuti di cchiù utenti.\nSiddu sî n’utenti anònimu e riteni ca li cummenti prisenti nta sta pàggina nun si rifirìscinu a tia, [[Special:UserLogin/signup|crea n’accessu novu]] o [[Special:UserLogin|trasi]] cu chiddu ca già hai p’evitari d’èssiri cunfusu cu àutri utenti anònimi ‘n futuru.''",
        "noarticletext": "Nta stu mumentu la pàggina addumannata è vacanti. È pussìbbili [[Special:Search/{{PAGENAME}}|circari stu tìtulu]] nta l'àutri pàggini dû situ oppuru <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|action=edit}} circari ntê riggistra culligati] oppuru [{{fullurl:{{FULLPAGENAME}}|action=edit}} canciari la pàggina ora]</span>.",
        "noarticletext-nopermission": "Nta stu mumentu la pàggina addumannata è vacanti. È pussibbili [[Special:Search/{{PAGENAME}}|circari stu titulu]] nti àutri pàggini dû situ o <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} circari ntê riggistra culligati]</span>, ma nun hai li pirmissa pi criari sta pàggina.",
        "token_suffix_mismatch": "'''Lu canciamentu nun fu sarvatu pirchì lu client ammustrau di gèstiri 'n modu sbagghiatu li caràttiri di puntiggiatura nta lu token assuciatu a iddu. P'evitari na curruzzioni pussìbbili dô testu dâ pàggina, fu rifiutatu tuttu lu canciamentu. Sta situazzioni pò virificàrisi, certi voti, quannu s'adòpiranu arcuni sirvizza di proxy anònimi via web chi prisèntanu bug.'''",
        "edit_form_incomplete": "<strong>Quarchi' parti dû mòdulu pâ mudìfica nun arrivau ô ''server''; cuntrolla bonu chi' tutti i to canciamenti su' ntatti e prova n'autra vota.</strong>",
        "editing": "Canciamentu di $1",
-       "creating": "Crïazzioni di $1",
+       "creating": "Criazzioni di $1",
        "editingsection": "Canciamentu di $1 (sizzioni)",
        "editingcomment": "Canciamentu di $1 (nova sizzioni)",
        "editconflict": "Cunflittu d'edizzioni: $1",
        "protectedpagewarning": "<strong>Accura: Sta pàggina fu' prutetta a' manera chi' sulu l'utenti cu' privileggi d'amministraturi a ponnu canciari.</strong>\nPi' rifirimentu, ccassutta è ripurtata l'ultima vuci dû riggistru:",
        "semiprotectedpagewarning": "<strong>Nota:</strong> Sta pàggina fu' prutetta a' manera chi' sulu l'utenti riggistrati la ponnu canciari.\nPi' rifirimentu, ccassutta è ripurtata l'ultima vuci dû riggistru:",
        "cascadeprotectedwarning": "<strong>Accura:</strong> Sta pàggina havi statu bluccata di manera ca sulu l'utenti cu' privileggi di amministraturi la ponnu canciari, pirchì veni nclusa {{PLURAL:$1|nta siquente pàggina ca havi statu prutiggiuta|ntê siquenti pàggini ca hannu statu prutiggiuti}} a' cascata:",
-       "titleprotectedwarning": "<strong>Accura: Sta pàggina fu' prutetta a' manera chi' giuvunu [[Special:ListGroupRights|privileggi spicìfici]] pi' crïàrila.</strong>\nPi' rifirimentu, ccassutta è ripurtata l'ultima vuci dû riggistru:",
+       "titleprotectedwarning": "<strong>Accura: Sta pàggina fu' prutetta a' manera chi' giuvunu [[Special:ListGroupRights|privileggi spicìfici]] pi' criàrila.</strong>\nPi' rifirimentu, ccassutta è ripurtata l'ultima vuci dû riggistru:",
        "templatesused": "{{PLURAL:$1|Template adupiratu|Template adupirati}} nta sta pàggina:",
        "templatesusedpreview": "{{PLURAL:$1|Template adupiratu|Template adupirati}} nta st'antiprima:",
        "templatesusedsection": "{{PLURAL:$1|Template adupiratu|Template adupirati}} nta sta sizzioni:",
        "template-semiprotected": "(semiprutettu)",
        "hiddencategories": "Sta pàggina apparteni a' {{PLURAL:$1|na catigurìa ammucciata|$1 catigurìi ammucciati}}:",
        "edittools": "<!-- Chistu testu cumpari sutta li moduli di canciu e carricamentu. -->",
-       "nocreatetext": "{{SITENAME}} limitau la pussibbilitati di crïari pàggini novi.\nPoi turnari 'n arreri e canciari na pàggina già esistenti, o puru [[Special:UserLogin|tràsiri o crïari nu cuntu novu]].",
-       "nocreate-loggedin": "Nun hai lu pirmissu pi' crïari pàggini novi.",
+       "nocreatetext": "{{SITENAME}} limitau la pussibbilitati di criari pàggini novi.\nPoi turnari 'n arreri e canciari na pàggina già esistenti, o puru [[Special:UserLogin|tràsiri o criari nu cuntu novu]].",
+       "nocreate-loggedin": "Nun hai lu pirmissu pi' criari pàggini novi.",
        "sectioneditnotsupported-title": "Nun è suppurtatu lu canciamentu pi' sizzioni",
        "sectioneditnotsupported-text": "Nta sta pàggina nun è suppurtatu lu canciamentu pi' sizzioni.",
        "permissionserrors": "Erruri di pirmissu",
        "postedit-confirmation-created": "La pàggina fu criata.",
        "postedit-confirmation-restored": "La pàggina fu ripristinata.",
        "postedit-confirmation-saved": "Lu to canciamentu fu sarvatu.",
-       "edit-already-exists": "Nun fu' pussìbbili crïari na pàggina nova.\nGià esisti.",
+       "edit-already-exists": "Nun fu' pussìbbili criari na pàggina nova.\nGià esisti.",
        "defaultmessagetext": "Testu dû missaggiu pridifinutu",
        "content-failed-to-parse": "Anàlisi sintàttica dû cuntinutu $2 pû mudellu $1 nun rinisciuta: $3",
        "invalid-content-data": "Dati nun vàlidi ntô cuntinutu",
        "undo-nochange": "Pari chi' lu canciamentu già fu annullatu.",
        "undo-summary": "Annullatu lu canciamentu $1 di [[Special:Contributions/$2|$2]] ([[User talk:$2|discussioni]])",
        "undo-summary-username-hidden": "Annullata a virsioni $1 fatta di n'utenti ammucciatu",
-       "cantcreateaccounttitle": "Mpussìbbili crïari un cuntu",
-       "cantcreateaccount-text": "La crïazzioni di cunti a' pàrtiri di stu nnirizzu IP (<strong>$1</strong>), fu' bluccata di [[User:$3|$3]].\n\nLa spiegazzioni data di $3 è <em>$2</em>",
-       "cantcreateaccount-range-text": "La crïazzioni di cunti a' pàrtiri dî nnirizzi IP nta l'intirvallu '''$1''', chi' cumprenni u to nnirizzu IP ('''$4'''), fu' bluccata di [[User:$3|$3]].\n\nLa spiegazzioni data di $3 è ''$2''",
+       "cantcreateaccounttitle": "Mpussìbbili criari un cuntu",
+       "cantcreateaccount-text": "La criazzioni di cunti a' pàrtiri di stu nnirizzu IP (<strong>$1</strong>), fu' bluccata di [[User:$3|$3]].\n\nLa spiegazzioni data di $3 è <em>$2</em>",
+       "cantcreateaccount-range-text": "La criazzioni di cunti a' pàrtiri dî nnirizzi IP nta l'intirvallu '''$1''', chi' cumprenni u to nnirizzu IP ('''$4'''), fu' bluccata di [[User:$3|$3]].\n\nLa spiegazzioni data di $3 è ''$2''",
        "viewpagelogs": "Talìa li riggìstra di sta pàggina",
        "nohistory": "Nun cc'è crunuluggìa dî canciamenti pi' sta pàggina.",
        "currentrev": "Virsioni currenti",
        "rev-deleted-user-contribs": "[nomu utenti o nnirizzu IP rimossi - canciamentu ammucciatu ntê cuntribbuti]",
        "rev-deleted-text-permission": "Sta virsioni dâ pàggina hà statu '''cancillata'''.\nCunzurtari lu [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log di cancillazzioni] pi ultiriuri dittagghi.",
        "rev-suppressed-text-permission": "Sta virsioni dâ pàggina fu' <strong>supprimuta</strong>.\nSi ponnu a' vìdiri i dittagghî ntô [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} riggistru dî supprissioni].",
-       "rev-deleted-text-unhide": "Sta virsioni dâ pàggina fu' <strong>cancillata</strong>.\nSi ponnu a' vìdiri i dittagghî ntô [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} riggistru dî cancillazzioni].\nAncora poi [$1 talïari sta virsioni] si' voi prucèdiri.",
-       "rev-suppressed-text-unhide": "Sta virsioni dâ pàggina fu' <strong>supprimuta</strong>.\nSi ponnu a' vìdiri i dittagghî ntô [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} riggistru dî supprissioni].\nAncora poi [$1 talïari sta virsioni] si' voi prucèdiri.",
-       "rev-deleted-text-view": "Sta virsioni dâ pàggina fu' <strong>cancillata</strong>.\nTu ancora a poi talïari; si ponnu a' vìdiri i dittagghî ntô [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} riggistru dî cancillazzioni].",
-       "rev-suppressed-text-view": "Sta virsioni dâ pàggina fu' <strong>supprimuta</strong>.\nTu ancora a poi talïari; si ponnu a' vìdiri i dittagghî ntô [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} riggistru dî supprissioni].",
-       "rev-deleted-no-diff": "Nun si po' talïari stu cunfruntu tra virsioni pirchì na revisioni fu <strong>cancillata</strong>.\nSi ponnu a' vìdiri li dittagghî ntô [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} riggistru dî cancillazzioni].",
-       "rev-suppressed-no-diff": "Non poi talïari sta diffirenza picchì una dî virsioni fu' <strong>cancillata</strong>.",
-       "rev-deleted-unhide-diff": "Una dî virsioni di sta diffirenza fu' <strong>cancillata</strong>.\nSi ponnu a' vìdiri i dittagghî ntô [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} riggistru dî cancillazzioni].\nAncora poi [$1 talïari sta diffirenza] si' voi prucèdiri.",
-       "rev-suppressed-unhide-diff": "Una dî virsioni di sta diffirenza fu' <strong>supprimuta</strong>.\nSi ponnu a' vìdiri i dittagghî ntô [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} riggistru dî supprissioni].\nAncora poi [$1 talïari sta diffirenza] si' voi prucèdiri.",
-       "rev-deleted-diff-view": "Una dî virsioni di sta diffirenza fu' <strong>cancillata</strong>.\nTu sta diffirenza ancora a poi talïari; si ponnu a' vìdiri i dittagghî ntô [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} riggistru dî cancillazzioni].",
-       "rev-suppressed-diff-view": "Una dî virsioni di sta diffirenza fu' <strong>supprimuta</strong>.\nTu sta diffirenza ancora a poi talïari; si ponnu a' vìdiri i dittagghî ntô [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} riggistru dî supprissioni].",
+       "rev-deleted-text-unhide": "Sta virsioni dâ pàggina fu' <strong>cancillata</strong>.\nSi ponnu a' vìdiri i dittagghî ntô [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} riggistru dî cancillazzioni].\nAncora poi [$1 taliari sta virsioni] si' voi prucèdiri.",
+       "rev-suppressed-text-unhide": "Sta virsioni dâ pàggina fu' <strong>supprimuta</strong>.\nSi ponnu a' vìdiri i dittagghî ntô [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} riggistru dî supprissioni].\nAncora poi [$1 taliari sta virsioni] si' voi prucèdiri.",
+       "rev-deleted-text-view": "Sta virsioni dâ pàggina fu' <strong>cancillata</strong>.\nTu ancora a poi taliari; si ponnu a' vìdiri i dittagghî ntô [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} riggistru dî cancillazzioni].",
+       "rev-suppressed-text-view": "Sta virsioni dâ pàggina fu' <strong>supprimuta</strong>.\nTu ancora a poi taliari; si ponnu a' vìdiri i dittagghî ntô [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} riggistru dî supprissioni].",
+       "rev-deleted-no-diff": "Nun si po' taliari stu cunfruntu tra virsioni pirchì na revisioni fu <strong>cancillata</strong>.\nSi ponnu a' vìdiri li dittagghî ntô [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} riggistru dî cancillazzioni].",
+       "rev-suppressed-no-diff": "Non poi taliari sta diffirenza picchì una dî virsioni fu' <strong>cancillata</strong>.",
+       "rev-deleted-unhide-diff": "Una dî virsioni di sta diffirenza fu' <strong>cancillata</strong>.\nSi ponnu a' vìdiri i dittagghî ntô [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} riggistru dî cancillazzioni].\nAncora poi [$1 taliari sta diffirenza] si' voi prucèdiri.",
+       "rev-suppressed-unhide-diff": "Una dî virsioni di sta diffirenza fu' <strong>supprimuta</strong>.\nSi ponnu a' vìdiri i dittagghî ntô [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} riggistru dî supprissioni].\nAncora poi [$1 taliari sta diffirenza] si' voi prucèdiri.",
+       "rev-deleted-diff-view": "Una dî virsioni di sta diffirenza fu' <strong>cancillata</strong>.\nTu sta diffirenza ancora a poi taliari; si ponnu a' vìdiri i dittagghî ntô [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} riggistru dî cancillazzioni].",
+       "rev-suppressed-diff-view": "Una dî virsioni di sta diffirenza fu' <strong>supprimuta</strong>.\nTu sta diffirenza ancora la poi taliari; si ponnu a' vìdiri i dittagghî ntô [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} riggistru dî supprissioni].",
        "rev-delundel": "cancia la visibbilità",
        "rev-showdeleted": "ammustra",
        "revisiondelete": "Cancella o annulla la cancillazzioni di virsioni",
        "prefs-user-pages": "Pàggini di l'utenti",
        "prefs-personal": "Prufilu di l'utenti",
        "prefs-rc": "Ùrtimi canciamenti",
-       "prefs-watchlist": "Lista talïata",
-       "prefs-watchlist-days": "Nùmmiru di jorna a' ammustrari ntâ lista talïata:",
+       "prefs-watchlist": "Lista taliata",
+       "prefs-watchlist-days": "Nùmmiru di jorna a' ammustrari ntâ lista taliata:",
        "prefs-watchlist-days-max": "Màssimu $1 {{PLURAL:$1|jornu|jorna}}",
-       "prefs-watchlist-edits": "Nùmmiru di canciamenti a' ammustrari ntâ lista talïata estinnuta:",
+       "prefs-watchlist-edits": "Nùmmiru di canciamenti a' ammustrari ntâ lista taliata estinnuta:",
        "prefs-watchlist-edits-max": "Nùmmiru màssimu: 1000",
-       "prefs-watchlist-token": "Token dâ me lista talïata:",
+       "prefs-watchlist-token": "Token dâ me lista taliata:",
        "prefs-misc": "Varî",
        "prefs-resetpass": "Cancia password",
        "prefs-changeemail": "Cancia nnirizzu di posta elittrònica",
        "recentchangesdays-max": "(màssimu $1 {{PLURAL:$1|jornu|jorna}})",
        "recentchangescount": "Nùmmiru di canciamenti a' ammustrari comu mpustazzioni pridifinuta:",
        "prefs-help-recentchangescount": "Si rifirisci a' l'ùrtimi canciamenti, li crunuluggìi e li riggistra.",
-       "prefs-help-watchlist-token2": "Chista è la chiavi sigreta pû feed web dâ to lista talïata.\nCu è jè ch'a canusci po' lèggiri la to lista talïata, dunca nâ diffunniri.\nSi' ti giuva, [[Special:ResetTokens|la poi azzirari]].",
+       "prefs-help-watchlist-token2": "Chista è la chiavi sigreta pû feed web dâ to lista taliata.\nCu è jè ch'a canusci po' lèggiri la to lista taliata, dunca nâ diffunniri.\nSi' ti giuva, [[Special:ResetTokens|la poi azzirari]].",
        "savedprefs": "Li to prifirenzi foru sarvati.",
        "timezonelegend": "Fusu urariu:",
        "localtime": "Ura lucali:",
        "grouppage-suppress": "{{ns:project}}:Supravisura",
        "right-read": "Lèggiri pàggini",
        "right-edit": "Canciari pàggini",
-       "right-createpage": "Crïari pàggini (chi' nun sunnu di discussioni)",
-       "right-createtalk": "Crïari pàggini di discussioni",
-       "right-createaccount": "Crïari cunti novi di l'utenti",
+       "right-createpage": "Criari pàggini (chi' nun sunnu di discussioni)",
+       "right-createtalk": "Criari pàggini di discussioni",
+       "right-createaccount": "Criari cunti novi di l'utenti",
        "right-minoredit": "Marcari canciamenti comu nichi",
        "right-move": "Spustari pàggini",
        "right-move-subpages": "Spustari pàggini chî so suttapàggini",
        "right-move-rootuserpages": "Spustari pàggini ràdica di l'utenti",
        "right-move-categorypages": "Spustari pàggini di catigurìa",
        "right-movefile": "Spustari file",
-       "right-suppressredirect": "Nun crïari rimanni ô postu dâ pàggina origginali quannu si spostunu pàggini",
+       "right-suppressredirect": "Nun criari rimanni ô postu dâ pàggina origginali quannu si spostunu pàggini",
        "right-upload": "Carricari file",
        "right-reupload": "Suprascrìviri file esistenti",
        "right-reupload-own": "Suprascrìviri file esistenti carricati dû stissu utenti",
        "right-undelete": "Annullari la cancillazzioni di pàggini",
        "right-suppressrevision": "Vìdiri, ammucciari e ammustrari virsioni spicìfichi di pàggini di quali utenti è jè",
        "right-viewsuppressed": "Vìdiri virsioni ammucciati a' quali utenti è jè",
-       "right-suppressionlog": "Talïari li riggistra privati",
+       "right-suppressionlog": "Taliari li riggistra privati",
        "right-block": "Bluccari autri utenti pi' nun fàricci fari canciamenti",
        "right-blockemail": "Bluccari n'utenti pi' nun fàricci mannari posta elittrònica",
        "right-hideuser": "Bluccari nu nomu utenti, ammucciannulu ô pùbblicu",
        "right-edituserjs": "Canciari li file JavaScript di l'àutri utenti",
        "right-editmyusercss": "Canciari li file CSS dû propiu utenti",
        "right-editmyuserjs": "Canciari li file JavaScript dû propiu utenti",
-       "right-viewmywatchlist": "Talïari la propia lista talïata",
-       "right-editmywatchlist": "Canciari la propia lista talïata. Nota chi' certi azzioni cci ponnu agghiùnciri pàggini macari senza di stu drittu.",
-       "right-viewmyprivateinfo": "Talïari li propî dati risirvati (ad esempiu lu nnirizzu di posta elittrònica e lu nomu veru)",
+       "right-viewmywatchlist": "Taliari la propia lista taliata",
+       "right-editmywatchlist": "Canciari la propia lista taliata. Nota chi' certi azzioni cci ponnu agghiùnciri pàggini macari senza di stu drittu.",
+       "right-viewmyprivateinfo": "Taliari li propî dati risirvati (ad esempiu lu nnirizzu di posta elittrònica e lu nomu veru)",
        "right-editmyprivateinfo": "Canciari li propî dati risirvati (ad esempiu lu nnirizzu di posta elittrònica e lu nomu veru)",
        "right-editmyoptions": "Canciari li propî prifirenzi",
        "right-rollback": "Canciari lestu n'arreri li mudìfichi di l'ùltimu utenti chi' canciau na certa pàggina",
        "right-siteadmin": "Bluccari e sbluccari la basi di dati",
        "right-override-export-depth": "Espurtari pàggini cu li pàggini culligati nfina ô quintu liveddu",
        "right-sendemail": "Mannari missaggi di posta elittrònica a' l'autri utenti",
-       "right-passwordreset": "Talïari li missaggi di posta elittrònica d'azziramentu dî password",
+       "right-passwordreset": "Taliari li missaggi di posta elittrònica d'azziramentu dî password",
        "newuserlogpage": "Riggistru di l'utenti novi",
-       "newuserlogpagetext": "Chistu è nu riggistru di li crïazzioni di utenti novi.",
+       "newuserlogpagetext": "Chistu è nu riggistru di li criazzioni di utenti novi.",
        "rightslog": "Riggistru dî dritti di l'utenti",
        "rightslogtext": "Chistu è nu riggistru dî canciamenti ê dritti di l'utenti.",
        "action-read": "lèggiri sta pàggina",
        "action-edit": "canciari sta pàggina",
-       "action-createpage": "crïari pàggini",
-       "action-createtalk": "crïari pàggini di discussioni",
-       "action-createaccount": "crïari stu cuntu di l'utenti",
-       "action-history": "talïari la crunuluggìa di sta pàggina",
+       "action-createpage": "criari pàggini",
+       "action-createtalk": "criari pàggini di discussioni",
+       "action-createaccount": "criari stu cuntu di l'utenti",
+       "action-history": "taliari la crunuluggìa di sta pàggina",
        "action-minoredit": "marcari stu canciamentu comu nicu",
        "action-move": "spustari sta pàggina",
        "action-move-subpages": "spustari sta pàggina e li so suttapàggini",
        "action-writeapi": "adupirari l'API pi' scrìviri",
        "action-delete": "cancillari sta pàggina",
        "action-deleterevision": "cancillari sta virsioni",
-       "action-deletedhistory": "talïari la crunuluggìa cancillata di sta pàggina",
+       "action-deletedhistory": "taliari la crunuluggìa cancillata di sta pàggina",
        "action-browsearchive": "circari pàggini cancillati",
        "action-undelete": "annullari la cancillazzioni di sta pàggina",
        "action-suppressrevision": "rivìdiri e ripristinari sta virsioni ammucciata",
        "action-userrights-interwiki": "canciari li dritti di l'utenti supra a autri wiki",
        "action-siteadmin": "bluccari e sbluccari la basi di dati",
        "action-sendemail": "mannari missaggi di posta elittrònica",
-       "action-editmywatchlist": "canciari la to lista talïata",
-       "action-viewmywatchlist": "talïari la to lista talïata",
-       "action-viewmyprivateinfo": "talïari li to nfurmazzioni risirvati",
+       "action-editmywatchlist": "canciari la to lista taliata",
+       "action-viewmywatchlist": "taliari la to lista taliata",
+       "action-viewmyprivateinfo": "taliari li to nfurmazzioni risirvati",
        "action-editmyprivateinfo": "canciari li to nfurmazzioni risirvati",
        "action-editcontentmodel": "canciari lu mudellu di cuntinutu di na pàggina",
        "nchanges": "$1 {{PLURAL:$1|canciamentu|canciamenti}}",
        "recentchanges-summary": "Sta pàggina prisenta li canciamenti cchiu' ricenti ê cuntinuti dâ wiki.",
        "recentchanges-noresult": "Nuddu canciamentu ntô pirìudu spicificatu currispunni a' sti criteria.",
        "recentchanges-feed-description": "Stu feed prisenta li canciamenti cchiu' ricenti ê cuntinuti dâ wiki.",
-       "recentchanges-label-newpage": "Stu canciamentu crïau na pàggina nova",
+       "recentchanges-label-newpage": "Stu canciamentu criau na pàggina nova",
        "recentchanges-label-minor": "Chistu è nu canciamentu nicu",
        "recentchanges-label-bot": "Stu canciamentu fu fattu di nu bot",
        "recentchanges-label-unpatrolled": "Stu canciamentu ancora nun havi statu battugghiatu",
        "minoreditletter": "n",
        "newpageletter": "N",
        "boteditletter": "b",
-       "number_of_watching_users_pageview": "[talïata di {{PLURAL:$1|nu utenti|$1 utenti}}]",
+       "number_of_watching_users_pageview": "[taliata di {{PLURAL:$1|nu utenti|$1 utenti}}]",
        "rc_categories": "Lìmita a li catigurìi (siparati di \"|\")",
        "rc_categories_any": "Quali è jè",
        "rc-change-size-new": "$1 {{PLURAL:$1|byte|byte}} appressu dû canciamentu",
        "newsectionsummary": "/* $1 */ sizzioni nova",
        "rc-enhanced-expand": "Ammustra li dittagghî",
        "rc-enhanced-hide": "Ammuccia li dittagghî",
-       "rc-old-title": "crïata ô principiu comu \"$1\"",
+       "rc-old-title": "criata ô principiu comu \"$1\"",
        "recentchangeslinked": "Canciamenti culligati",
        "recentchangeslinked-feed": "Canciamenti culligati",
        "recentchangeslinked-toolbox": "Canciamenti culligati",
        "upload-tryagain": "Manna la discrizzioni canciata dû file",
        "uploadnologin": "Nun trasutu",
        "uploadnologintext": "Hâ' $1 pi' putiri carricari file.",
-       "upload_directory_missing": "La cartella dî carricamenti ($1) nun esisti lu server web nun riniscìu a' crïàrila.",
+       "upload_directory_missing": "La cartella dî carricamenti ($1) nun esisti lu server web nun riniscìu a' criàrila.",
        "upload_directory_read_only": "La cartella dî carricamenti ($1) nun è scrivìbbili dû server web.",
        "uploaderror": "Erruri ntô carricamentu",
        "upload-recreate-warning": "<strong>Accura: Nu file cu' ddu nomu fu' cancillatu o spustatu.</strong>\n\nPi' cummudità ccassutta cci su' li riggistra dî cancillazzioni e dî spustamenti di sta pàggina:",
        "uploadtext": "Usa lu mòdulu ccà sutta pi carricari file novi. Pi vìdiri o circari li file già carricati, talìa lu [[Special:FileList|log dî file carricati]]. Carricamenti di file e di virsioni novi di file sunnu riggistrati ntô [[Special:Log/upload|log di l'upload]], li cancillazzioni di file sunnu\nriggistrati [[Special:Log/delete|ccà]].\n\nPi nziriri nu file nta na pàggina, fai nu lijami accussì:\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>''' p'usari la virsioni ntera dû file\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|testu altirnativu]]</nowiki></code>''' p'usari na virsioni làrica 200 pixel nziruta nta nu box, alliniata a manu manca e cu 'testu altirnativu' comu didascalìa\n* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>''' pi culligari direttamenti a lu file senza vidìrilu.",
        "upload-permitted": "{{PLURAL:$2|Tipu|tipi}} di file {{PLURAL:$2|cunsintutu|cunsintuti}}: $1.",
        "upload-preferred": "{{PLURAL:$2|Tipu|tipi}} di file {{PLURAL:$2|cunsigghiatu|cunsigghiati}}: $1.",
-       "upload-prohibited": "{{PLURAL:$2|Tipu|tipi}} di file {{PLURAL:$2|prüibbutu|prüibbuti}}: $1.",
+       "upload-prohibited": "{{PLURAL:$2|Tipu|tipi}} di file {{PLURAL:$2|pruibbutu|pruibbuti}}: $1.",
        "uploadlogpage": "Riggistru dî file carricati",
        "uploadlogpagetext": "Ccà sutta cc'è la lista di l'ùrtimi file carricati.\nTalìa la [[Special:NewFiles|gallarìa dî file novi]] pûn risucuntu cchiu' visuali.",
        "filename": "Nomu dû file",
        "emptyfile": "Lu file chi' carricasti pari vacanti.\nChistu putissi èssiri pruvucatu di nu sbagghiu ntô nomu dû file.\nCuntrolla ca pi' davera voi carricari stu file.",
        "windows-nonascii-filename": "Sta wiki nun supporta i nomi di file cu' caràttiri spiciali.",
        "fileexists": "Nu file cu' stu nomu già esisti, pi' favuri cuntrolla <strong>[[:$1]]</strong> si' nun si' {{GENDER:|sicuru|sicura}} ch'u voi canciari.\n[[$1|thumb]]",
-       "filepageexists": "La pàggina dâ discrizzioni di stu file fu' ggià crïata ô nnirizzu <strong>[[:$1]]</strong>, ma pi' com'ora nun c'è nuddu file cu' stu nomu.\nU riassuntu chi' immetti nun cumpariravi ntâ pàggina dâ discrizzioni.\nPi' fàrilu cumpàriri, avirrai a' mudificari a' manu dda pàggina.\n[[$1|thumb]]",
+       "filepageexists": "La pàggina dâ discrizzioni di stu file fu' ggià criata ô nnirizzu <strong>[[:$1]]</strong>, ma pi' com'ora nun c'è nuddu file cu' stu nomu.\nLu riassuntu chi' immetti nun cumpariravi ntâ pàggina dâ discrizzioni.\nPi' fàrilu cumpàriri, avirrai a' mudificari a' manu dda pàggina.\n[[$1|thumb]]",
        "fileexists-extension": "Nu file cûn nomu simili già esisti: [[$2|thumb]]\n* Nomu dû file carricannu: <strong>[[:$1]]</strong>\n* Nomu dû file esistenti: <strong>[[:$2]]</strong>\nForsi voi scègghîri un nomu cchiù' distintivu?",
        "fileexists-thumbnail-yes": "Lu file carricato sembra èssiri lu risurtatu di n'antiprima ''(thumbnail)''. [[$1|thumb]]\nVirificari, pi cunfruntu, lu file <strong>[[:$1]]</strong>.\nSiduu si tratta dâ stissa mmagini, nte dimenzioni urigginali, nun è nicissariu carricara àutri antiprimi.",
        "file-thumbnail-no": "Lu nomu dô file accumenza cu <strong>$1</strong>.\nPari quinni èssiri lu risurtatu di n'antiprima ''(thumbnail)''.\nSiddu si disponi dâ mmàggini ntâ risuluzzioni urigginali, si prega di carricàrila. 'N casu cuntrariu, si prega di canciari lu nomu dô file.",
        "upload-proto-error": "Protucollu erratu",
        "upload-proto-error-text": "Pi l'upload rimotu è nicissariu spicificari URL ca nìzzianu cu <code>http://</code> oppuru <code>ftp://</code>.",
        "upload-file-error": "Erruri nternu",
-       "upload-file-error-text": "S'hâ' virificatu n'erruri nternu duranti la crïazzioni dûn file timpuraniu supra ô server.\nPi' favuri cuntatta n'[[Special:ListUsers/sysop|amministraturi di sistema]].",
+       "upload-file-error-text": "S'hâ' virificatu n'erruri nternu duranti la criazzioni dûn file timpuraniu supra ô server.\nPi' favuri cuntatta n'[[Special:ListUsers/sysop|amministraturi di sistema]].",
        "upload-misc-error": "Erruri nun idintificatu pi l'upload",
        "upload-misc-error-text": "S'hà virificatu un erruri nun idintificatu duranti lu carricamentu dû file. Virificari ca la URL è curretta e accissìbbili e pruvari di novu. Siddu lu prubbrema pirsisti, cuntattari un amministraturi di sistema.",
        "upload-too-many-redirects": "L'URL cuntineva troppi redirect",
        "lockmanager-fail-svr-release": "Nun fu' pussìbbili arrènniri li blocchi dû server $1.",
        "zip-file-open-error": "Mmattìu n'erruri nta l'apirtura dû file pî cuntrolli di ZIP.",
        "zip-wrong-format": "Lu file spicificatu nun era nu file ZIP.",
-       "zip-bad": "Lu file è nu file ZIP chi' è ruïnatu o è illiggìbbili pi' quarchi' n'autru mutivu.\nNun si po' cuntrullari bona la so sicurizza.",
+       "zip-bad": "Lu file è nu file ZIP chi' è ruinatu o è illiggìbbili pi' quarchi' n'autru mutivu.\nNun si po' cuntrullari bona la so sicurizza.",
        "zip-unsupported": "Lu file è nu file ZIP chi' cunteni carattirìstichi ZIP chi' nun su' suppurtati dâ MediaWiki.\nNun si po' cuntrullari bona la so sicurizza.",
        "uploadstash": "Ammucciàgghia dî carricamenti",
        "uploadstash-summary": "Sta pàggina duna accessu ê file chi' furu carricati, o si stannu carricannu, però ancora nun hannu statu pubblicati ntâ wiki. Sti file nun su' visìbbili a' nuddu sparti di cu li carricau.",
        "img-auth-accessdenied": "Accessu nigatu",
        "img-auth-nopathinfo": "Variàbbili PATH_INFO mancanti.\nLu to server nun è mpustatu pi' passari sta nfurmazzioni.\nPurrìa èssiri basatu supra a' CGI e nun po' suppurtari img_auth.\nTalìa https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
        "img-auth-notindir": "Lu caminu dumannatu nun è ntâ cartella cunfigurata pî carricamenti.",
-       "img-auth-badtitle": "Nun fu' pussìbbili custrüiri nu tìtulu vàlidu a' pàrtiri di \"$1\".",
+       "img-auth-badtitle": "Nun fu' pussìbbili custruiri nu tìtulu vàlidu a' pàrtiri di \"$1\".",
        "img-auth-nologinnWL": "Nun si' trasutu e \"$1\" nun è ntâ lista janca.",
        "img-auth-nofile": "Lu file \"$1\" nun esisti.",
        "img-auth-isdir": "Stai pruvannu a' accèdiri a' na cartella, \"$1\".\nE' cunsintutu l'accessu sulu ê file.",
        "mimesearch-summary": "Sta pàggina cunzenti di filtrari li file 'n basi a lu tipu MIME. Nziriri la stringa di ricerca ntâ forma tipu/suttatipu o tipu/*, p'asempiu <code>image/jpeg</code>.",
        "mimetype": "Tipu MIME:",
        "download": "scàrrica",
-       "unwatchedpages": "Pàggini nun talïati",
+       "unwatchedpages": "Pàggini nun taliati",
        "listredirects": "Alencu di tutti li rimanni",
        "listduplicatedfiles": "Lista dî file cu' duppiuni",
        "listduplicatedfiles-summary": "Chista è na lista dî file unni la virsioni cchiu' nova è nu duppiuni dâ virsioni cchiu' nova di quarchi' autru file. Sulu li file lucali su' pigghiati a' cunsiddirazzioni.",
        "deadendpagestext": "Li pàggini siguenti sunnu privi di culligamenti versu autri pàggini di {{SITENAME}}.",
        "protectedpages": "Pàggini prutetti",
        "protectedpages-indef": "Sulu prutizzioni a' tempu innitirminatu",
-       "protectedpages-summary": "Sta pàggina elenca li pàggini già esistenti chi' comu ad ora su' prutetti. Pi' na lista dî tìtuli prutetti, chî quali vèni prüibbutu crïari pàggini novi, talìa [[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]].",
+       "protectedpages-summary": "Sta pàggina elenca li pàggini già esistenti chi' comu ad ora su' prutetti. Pi' na lista dî tìtuli prutetti, chî quali vèni pruibbutu criari pàggini novi, talìa [[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]].",
        "protectedpages-cascade": "Sulu prutizzioni a' cascata",
        "protectedpages-noredirect": "Ammuccia li rimanni",
        "protectedpagesempty": "Pi' com'ora nun cc'è nudda pàggina prutetta cu' sti paràmitri.",
        "protectedpages-unknown-timestamp": "Scanusciuti",
        "protectedpages-unknown-performer": "Utenti scanusciutu",
        "protectedtitles": "Tìtuli prutetti",
-       "protectedtitles-summary": "Sta pàggina elenca li tìtuli prutetti, chî quali vèni prüibbutu crïari pàggini novi. Pi' na lista dî pàggini già esistenti chi' su' prutetti, talìa [[{{#special:ProtectedPages}}|{{int:protectedpages}}]].",
+       "protectedtitles-summary": "Sta pàggina elenca li tìtuli prutetti, chî quali vèni pruibbutu criari pàggini novi. Pi' na lista dî pàggini già esistenti chi' su' prutetti, talìa [[{{#special:ProtectedPages}}|{{int:protectedpages}}]].",
        "protectedtitlesempty": "Pi' com'ora nun cc'è nuddu tìtulu prutettu cu' sti paràmitri.",
        "listusers": "Lista di l'utenti",
        "listusers-editsonly": "Ammustra sulu l'utenti ca hannu cuntribbuti",
-       "listusers-creationsort": "Òrdina pi' data di crïazzioni",
+       "listusers-creationsort": "Òrdina pi' data di criazzioni",
        "listusers-desc": "Òrdina a' scìnniri",
        "usereditcount": "$1 {{PLURAL:$1|cuntribbutu|cuntribbuta}}",
        "usercreated": "{{GENDER:$3|Criatu}} lu $1 ê $2",
        "allpagesbadtitle": "Lu tìtulu di pàggina spicificatu nun era vàlidu o avìa nu prifissu intir-linguìsticu o intir-wiki.\nPutissi cuntèniri unu o cchiu' ssai caràttiri chi' nun su' cunsintuti ntê tìtula.",
        "allpages-bad-ns": "Lu namespace \"$1\" nun asisti supra a' {{SITENAME}}.",
        "allpages-hide-redirects": "Ammuccia li rimanni",
-       "cachedspecial-viewing-cached-ttl": "Stai talïannu na virsioni ntâ ''cache'' di sta pàggina, chi' po' èssiri vecchia nfinu a' $1.",
-       "cachedspecial-viewing-cached-ts": "Stai talïannu na virsioni ntâ ''cache'' di sta pàggina, chi' purrìa nun èssiri pirfittamenti aggiurnata.",
+       "cachedspecial-viewing-cached-ttl": "Stai taliannu na virsioni ntâ ''cache'' di sta pàggina, chi' po' èssiri vecchia nfinu a' $1.",
+       "cachedspecial-viewing-cached-ts": "Stai taliannu na virsioni ntâ ''cache'' di sta pàggina, chi' purrìa nun èssiri pirfittamenti aggiurnata.",
        "cachedspecial-refresh-now": "Va talìa la cchiu' nova.",
        "categories": "Catigurìi",
        "categoriespagetext": "{{PLURAL:$1|La catigurìa ccassutta cunteni|Li catigurìi ccassutta cuntèninu}} pàggini o file multimidiali.\nLi [[Special:UnusedCategories|catigurìi vacanti]] nun sunnu ammustrati ccà.\nTalìa macari li [[Special:WantedCategories|catigurìi addumannati]].",
        "emailuserfooter": "Stu missaggiu fu' mannatu di $1 a' $2 attraversu dâ funzioni \"Manna nu missàggiu di posta elittrònica a' l'utenti\" supra a' {{SITENAME}}.",
        "usermessage-summary": "Lassatu nu missaggiu di sistema.",
        "usermessage-editor": "Missaggeri di sistema",
-       "watchlist": "Lista talïata",
-       "mywatchlist": "La me lista talïata",
+       "watchlist": "Lista taliata",
+       "mywatchlist": "La me lista taliata",
        "watchlistfor2": "Di $1, $2",
-       "nowatchlist": "Nun hai nudda vuci ntâ to lista talïata.",
-       "watchlistanontext": "Pi' vìdiri e canciari li vuci dâ to lista talïata hâ' tràsiri.",
+       "nowatchlist": "Nun hai nudda vuci ntâ to lista taliata.",
+       "watchlistanontext": "Pi' vìdiri e canciari li vuci dâ to lista taliata hâ' tràsiri.",
        "watchnologin": "Nun hai trasutu",
-       "addwatch": "Agghiunci â lista talïata",
-       "addedwatchtext": "La pàggina \"[[:$1]]\" fu' agghiunciuta â to [[Special:Watchlist|lista talïata]].\nI canciamenti futuri a' sta pàggina e â so pàggina di discussioni venirannu elincati cca.",
-       "addedwatchtext-short": "La pàggina \"$1\" fu' agghiunciuta â to lista talïata.",
-       "removewatch": "Leva dâ lista talïata",
-       "removedwatchtext": "La pàggina \"[[:$1]]\" fu' livata dâ [[Special:Watchlist|to lista talïata]].",
-       "removedwatchtext-short": "La pàggina \"$1\" fu' livata dâ to lista talïata.",
+       "addwatch": "Agghiunci â lista taliata",
+       "addedwatchtext": "La pàggina \"[[:$1]]\" fu' agghiunciuta â to [[Special:Watchlist|lista taliata]].\nI canciamenti futuri a' sta pàggina e â so pàggina di discussioni venirannu elincati cca.",
+       "addedwatchtext-short": "La pàggina \"$1\" fu' agghiunciuta â to lista taliata.",
+       "removewatch": "Leva dâ lista taliata",
+       "removedwatchtext": "La pàggina \"[[:$1]]\" fu' livata dâ [[Special:Watchlist|to lista taliata]].",
+       "removedwatchtext-short": "La pàggina \"$1\" fu' livata dâ to lista taliata.",
        "watch": "Talìa",
        "watchthispage": "Talìa sta pàggina",
-       "unwatch": "Nun talïari cchiu'",
-       "unwatchthispage": "Finisci di talïari",
+       "unwatch": "Nun taliari cchiu'",
+       "unwatchthispage": "Finisci di taliari",
        "notanarticle": "Nun è na pàggina di cuntinutu",
        "notvisiblerev": "L'ùltima virsioni fatta di n'utenti diffirenti fu' cancillata",
-       "watchlist-details": "{{PLURAL:$1|Cc'è na pàggina|Cci su' $1 pàggini}} ntâ to lista talïata, senza cuntari sparti li pàggini di discussioni.",
+       "watchlist-details": "{{PLURAL:$1|Cc'è na pàggina|Cci su' $1 pàggini}} ntâ to lista taliata, senza cuntari sparti li pàggini di discussioni.",
        "wlheader-enotif": "La nutìfica via posta elittrònica è attivata.",
        "wlheader-showupdated": "Li pàggini ca hannu statu canciati dâ tò ùrtima vìsita sunnu evidinziati 'n <strong>grassettu</strong>.",
        "wlnote": "Sutta attrovi l'ùrtim{{PLURAL:$1|u canciamentu|i <strong>$1</strong> canciamenti}} fatti nta l'ùrtim{{PLURAL:$1|a ura|i <strong>$2</strong> uri}}, aggiurnati ê $4 dû $3.",
        "wlshowlast": "Ammustra l'ùrtimi $1 uri $2 jorna",
-       "watchlist-options": "Opzioni dâ lista talïata",
-       "watching": "Agghiunciuta â lista talïata...",
-       "unwatching": "Cancillata dâ lista talïata...",
-       "watcherrortext": "Mmattìu n'erruri ntô canciari i to mpustazzioni dâ lista talïata di \"$1\".",
+       "watchlist-options": "Opzioni dâ lista taliata",
+       "watching": "Agghiunciuta â lista taliata...",
+       "unwatching": "Cancillata dâ lista taliata...",
+       "watcherrortext": "Mmattìu n'erruri ntô canciari i to mpustazzioni dâ lista taliata di \"$1\".",
        "enotif_reset": "Segna tutti li pàggini comu già visitati",
        "enotif_impersonal_salutation": "Utenti di {{SITENAME}}",
        "enotif_subject_deleted": "La pàggina $1 supra a {{SITENAME}} fu cancillata di $2",
-       "enotif_subject_created": "La pàggina $1 supra a' {{SITENAME}} fu' crïata di $2",
+       "enotif_subject_created": "La pàggina $1 supra a' {{SITENAME}} fu' criata di $2",
        "enotif_subject_moved": "La pàggina $1 supra a' {{SITENAME}} fu' spustata di $2",
        "enotif_subject_restored": "La pàggina $1 supra a' {{SITENAME}} fu' ripristinata di $2",
        "enotif_subject_changed": "La pàggina $1 supra a' {{SITENAME}} fu' canciata di $2",
        "enotif_body_intro_deleted": "La pàggina $1 supra a' {{SITENAME}} fu' cancillata lu $PAGEEDITDATE di $2, talìa $3.",
-       "enotif_body_intro_created": "La pàggina $1 supra a' {{SITENAME}} fu' crïata lu $PAGEEDITDATE di $2, talìa la virsioni attuali nta $3.",
+       "enotif_body_intro_created": "La pàggina $1 supra a' {{SITENAME}} fu' criata lu $PAGEEDITDATE di $2, talìa la virsioni attuali nta $3.",
        "enotif_body_intro_moved": "La pàggina $1 supra a' {{SITENAME}} fu' spustata lu $PAGEEDITDATE di $2, talìa la virsioni attuali nta $3.",
        "enotif_body_intro_restored": "La pàggina $1 supra a' {{SITENAME}} fu' ripristinata lu $PAGEEDITDATE di $2, talìa la virsioni attuali nta $3.",
        "enotif_body_intro_changed": "La pàggina $1 supra a' {{SITENAME}} fu' canciata lu $PAGEEDITDATE di $2, talìa la virsioni attuali nta $3.",
        "enotif_lastvisited": "Cunzurta $1 pi vìdiri tutti li canciamenti dâ tò ùrtima vìsita.",
-       "enotif_lastdiff": "Vidi $1 pi' talïari lu canciamentu.",
+       "enotif_lastdiff": "Vidi $1 pi' taliari lu canciamentu.",
        "enotif_anon_editor": "utenti anonimu $1",
-       "enotif_body": "Gintili $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nRiassuntu fattu di l'auturi: $PAGESUMMARY $PAGEMINOREDIT\n\nPi' cuntattari l'auturi:\nmail: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nNun ti mannamu autri nutìfichi 'n casu di ultiriuri attività a' menu ca nun vìsiti dda pàggina mentri chi' si' trasutu. Poi puru mpustari dâ to lista talïata l'avvisu di nutìfica pi' tutti li pàggini chi' cunteni.\n\nLu sistema di nutìfica di {{SITENAME}}, ô to sirvizziu\n\n--\nPi' canciari li to mpustazzioni di nutìfica via e-mail, vìsita\n{{canonicalurl:{{#special:Preferences}}}}\n\nPi' canciari li mpustazzioni dâ to lista talïata, vìsita\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nPi' livari sta pàggina dâ to lista talïata, vìsita\n$UNWATCHURL\n\nPi' lassari cummenti e arricèviri ultiriuri assistenza:\n$HELPPAGE",
+       "enotif_body": "Gintili $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nRiassuntu fattu di l'auturi: $PAGESUMMARY $PAGEMINOREDIT\n\nPi' cuntattari l'auturi:\nmail: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nNun ti mannamu autri nutìfichi 'n casu di ultiriuri attività a' menu ca nun vìsiti dda pàggina mentri chi' si' trasutu. Poi puru mpustari dâ to lista taliata l'avvisu di nutìfica pi' tutti li pàggini chi' cunteni.\n\nLu sistema di nutìfica di {{SITENAME}}, ô to sirvizziu\n\n--\nPi' canciari li to mpustazzioni di nutìfica via posta elittrònica, vìsita\n{{canonicalurl:{{#special:Preferences}}}}\n\nPi' canciari li mpustazzioni dâ to lista taliata, vìsita\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nPi' livari sta pàggina dâ to lista taliata, vìsita\n$UNWATCHURL\n\nPi' lassari cummenti e arricèviri ultiriuri assistenza:\n$HELPPAGE",
        "created": "criatu",
        "changed": "canciatu",
        "deletepage": "Cancella la pàggina",
        "pagesize": "(byte)",
        "restriction-edit": "Canciamentu",
        "restriction-move": "Spustamentu",
-       "restriction-create": "Crïazzioni",
+       "restriction-create": "Criazzioni",
        "restriction-upload": "Carricamentu",
        "restriction-level-sysop": "prutetta",
        "restriction-level-autoconfirmed": "semi-prutetta",
        "undelete-fieldset-title": "Ricùpira virsioni",
        "undeleteextrahelp": "Pi' ricupirari la storia sana dâ pàggina, cliccari <strong><em>{{int:undeletebtn}}</em></strong> senza scegghîri nudda casedda.\nPi' fari nu ricùpiru silittivu, scegghîri li caseddi currispunnenti ê virsioni di ripigghiari, e cliccari <strong><em>{{int:undeletebtn}}</em></strong>.",
        "undeleterevisions": "$1 {{PLURAL:$1|virsioni|virsioni}} nta l'archiviu",
-       "undeletehistory": "Siddu ricùpiri sta pàggina, tutti li so virsioni vèninu ricupirati ntâ crunuluggìa.\nSiddu na pàggina nova havi statu crïata cû stissu tìtulu di chidda di ricupirari doppu dâ so cancillazzioni, li virsioni ricupirati vannu a' finiri ntâ crunuluggìa passata.",
+       "undeletehistory": "Siddu ricùpiri sta pàggina, tutti li so virsioni vèninu ricupirati ntâ crunuluggìa.\nSiddu na pàggina nova havi statu criata cû stissu tìtulu di chidda di ricupirari doppu dâ so cancillazzioni, li virsioni ricupirati vannu a' finiri ntâ crunuluggìa passata.",
        "undeleterevdel": "Lu ricùpiru nun veni fattu siddu pròvuca la cancillazzioni parziali dâ virsioni currenti dâ pàggina o dû file.\nNta stu casu, hai a' livari lu signu di spunta o l'ammucciamentu dâ virsioni cancillata cchiu' ricenti.",
        "undeletehistorynoadmin": "Sta pàggina fu' cancillata.\nLu mutivu dâ cancillazzioni è ammustratu ccà sutta, nzèmmula ê dittagghî di l'utenti ca canciaru sta pàggina prima dâ so cancillazzioni.\nLu testu cuntinutu ntê virsioni cancillati è dispunìbbili sulu a' l'amministratura.",
        "undelete-revision": "Virsioni cancillata di $1 (dû $4 ê $5) di $3:",
        "sp-contributions-search": "Ricerca cuntribbuti",
        "sp-contributions-username": "Nnirizzu IP o nomu utenti:",
        "sp-contributions-toponly": "Ammustra sulu li canciamenti ca sunnu l'ùrtimi virsioni pâ pàggina",
-       "sp-contributions-newonly": "Ammustra sulu li canciamenti ca sunnu crïazzioni di pàggini novi",
+       "sp-contributions-newonly": "Ammustra sulu li canciamenti ca sunnu criazzioni di pàggini novi",
        "sp-contributions-submit": "Risciduta",
        "whatlinkshere": "Chi' punta cca",
        "whatlinkshere-title": "Pàggini ca pùntanu a \"$1\"",
        "ipbreason": "Mutivu:",
        "ipbreason-dropdown": "*Mutivi cchiù cumuni pî blocchi\n** Nzerimentu di nformazziuni falsi\n** Cancillazzioni di cuntinuti dê pàggini\n** Liami prumozziunalu a siti sterni\n** Nzserimentu di cuntinuti privi di sensu\n** Cumportamenti ntimidatori o molestie\n** Usu ndebitu di cchiù cunti\n** Nomu utenti nun accittabbili",
        "ipb-hardblock": "Mpidisci a' l'utenti trasuti di fari canciamenti di stu nnirizzu IP",
-       "ipbcreateaccount": "Mpidisci la crïazzioni di cunti",
+       "ipbcreateaccount": "Mpidisci la criazzioni di cunti",
        "ipbemailban": "Mpidisci a' l'utenti di mannari posta elittrònica",
        "ipbenableautoblock": "Blocca autumaticamenti l'ùltimu nnirizzu IP adupiratu di st'utenti, e li succissivi d'unni prova a' fari canciamenti",
        "ipbsubmit": "Blocca a' st'utenti",
        "ipb-blocklist": "Talìa li blocchi in viguri",
        "ipb-blocklist-contribs": "Cuntribbuta di {{GENDER:$1|$1}}",
        "unblockip": "Sblocca a' l'utenti",
-       "unblockiptext": "Adupirari lu mòdulu suttastanti pi' ristitüiri l'accessu in scrittura a' nu nnirizzu IP o nomu utenti ca hâ statu bluccatu.",
+       "unblockiptext": "Adupirari lu mòdulu suttastanti pi' ristituiri l'accessu in scrittura a' nu nnirizzu IP o nomu utenti ca hâ statu bluccatu.",
        "ipusubmit": "Leva stu bloccu",
        "unblocked": "L'utenti [[User:$1|$1]] fu sbluccatu.",
        "unblocked-range": "$1 fu sbluccatu.",
        "expiringblock": "scadi lu $1 ê $2",
        "anononlyblock": "sulu anònimi",
        "noautoblockblock": "bloccu autumàticu disattivatu",
-       "createaccountblock": "crïazzioni di cunti bluccata",
+       "createaccountblock": "criazzioni di cunti bluccata",
        "emailblock": "posta elittrònica bluccata",
        "blocklist-nousertalk": "nun po' canciari la so stissa pàggina di discussioni",
        "ipblocklist-empty": "L'alencu dî blocchi è vacanti.",
        "ipbnounblockself": "Nun hai u pirmissu di sbluccari a' tia stissu.",
        "lockdb": "Blocca lu database",
        "unlockdb": "Sblocca lu database",
-       "lockdbtext": "Lu bloccu dû database cumporta la suspinsioni pi' tutti l'utenti dâ pussibbilitati di canciari li pàggini, mpustari li so prifirenzi, mudificari li so listi talïati, e 'n ginirali di cùmpiri tutti l'upirazzioni ca richièdinu canciamenti a lu database.\nPi' favuri cunfirma ca chistu è chiddu chi' hai ntinzioni di fari, e ca a lu tèrmini dâ manutinzzioni pruvidi a lu sbloccu dû database.",
-       "unlockdbtext": "Lu sbloccu dû database cunzenti di novu a tutti l'utenti di canciari li pàggini, mpustari li so prifirenzi, mudificari li so listi talïati, e 'n ginirali di cùmpiri tutti l'upirazzioni ca richièdinu canciamenti a lu database.\nPi' favuri cunfirma ca chistu è chiddu chi' hai ntinzioni di fari.",
+       "lockdbtext": "Lu bloccu dû database cumporta la suspinsioni pi' tutti l'utenti dâ pussibbilitati di canciari li pàggini, mpustari li so prifirenzi, mudificari li so listi taliati, e 'n ginirali di cùmpiri tutti l'upirazzioni ca richièdinu canciamenti a lu database.\nPi' favuri cunfirma ca chistu è chiddu chi' hai ntinzioni di fari, e ca a lu tèrmini dâ manutinzzioni pruvidi a lu sbloccu dû database.",
+       "unlockdbtext": "Lu sbloccu dû database cunzenti di novu a tutti l'utenti di canciari li pàggini, mpustari li so prifirenzi, mudificari li so listi taliati, e 'n ginirali di cùmpiri tutti l'upirazzioni ca richièdinu canciamenti a lu database.\nPi' favuri cunfirma ca chistu è chiddu chi' hai ntinzioni di fari.",
        "lockconfirm": "Sì, ntennu effittivamenti bluccari lu database.",
        "unlockconfirm": "Sì, effittivamenti ntennu, sutta la mè rispunzabbilitati, sbluccari lu database.",
        "lockbtn": "Blocca lu database",
        "lockedbyandtime": "(di {{GENDER:$1|$1}} u $2 ê $3)",
        "move-page": "Spustamentu di $1",
        "move-page-legend": "Sposta la pàggina",
-       "movepagetext": "Adupirannu lu mòdulu ccassutta si cancia lu nomu dâ pàggina, spustannu tutta la sò crunuluggìa nta la pàggina nova.\nLu tìtulu vecchiu addiventa nu rimannu versu lu tìtulu novu.\nSi pònnu aggiurnari autumaticamenti i rimanni chi' puntàvunu ô tìtulu origginali.\nMa si' scegghî di nun fàrilu, t'hai a' assicurari ca lu spustamentu nun crea [[Special:DoubleRedirects|rimanni duppî]] o puru [[Special:BrokenRedirects|rimanni rutti]].\nE' to rispunsabbilità ch'i lïami cuntinuunu a' puntari â pàggina bona.\n\nVidi chi' la pàggina <strong>nun veni spustata</strong> siddu cc'è già na pàggina chi havi lu tìtulu novu, tranni siddu la pàggina 'n quistioni è nu rimannu e nun havi crunuluggìa di canciamenti passati.\nChistu voli diri chi' si po' canciari n'autra vota u nomu di la pàggina a' chiddu ch'avìa prima siddu si fa' nu sbagghiu, e chi nun si po' suprascrìviri na pàggina chi già esisti.\n\n<strong>Accura!</strong>\nChistu po' èssiri nu canciamentu dràsticu pi na pàggina friquintata; aviti a' èssiri sicuri di capiri li cunziquenzi prima di cuntinuari.",
+       "movepagetext": "Adupirannu lu mòdulu ccassutta si cancia lu nomu dâ pàggina, spustannu tutta la sò crunuluggìa nta la pàggina nova.\nLu tìtulu vecchiu addiventa nu rimannu versu lu tìtulu novu.\nSi pònnu aggiurnari autumaticamenti i rimanni chi' puntàvunu ô tìtulu origginali.\nMa si' scegghî di nun fàrilu, t'hai a' assicurari ca lu spustamentu nun crea [[Special:DoubleRedirects|rimanni duppî]] o puru [[Special:BrokenRedirects|rimanni rutti]].\nE' to rispunsabbilità ch'i liami cuntìnuunu a' puntari â pàggina bona.\n\nVidi chi' la pàggina <strong>nun veni spustata</strong> siddu cc'è già na pàggina chi havi lu tìtulu novu, tranni siddu la pàggina 'n quistioni è nu rimannu e nun havi crunuluggìa di canciamenti passati.\nChistu voli diri chi' si po' canciari n'autra vota u nomu di la pàggina a' chiddu ch'avìa prima siddu si fa' nu sbagghiu, e chi nun si po' suprascrìviri na pàggina chi già esisti.\n\n<strong>Accura!</strong>\nChistu po' èssiri nu canciamentu dràsticu pi na pàggina friquintata; aviti a' èssiri sicuri di capiri li cunziquenzi prima di cuntinuari.",
        "movepagetext-noredirectfixer": "Usannu lu mòdulu ccà sutta vui canciati lu nomu dâ pàggina, e spustati tutta la sò storia versu la pàggina nova. Lu tìtulu vecchiu addiventa na pàggina di rinnirizzamentu versu lu tìtulu novu. \nAssicuràtivi ca lu spustamentu nun criau [[Special:DoubleRedirects|redirect duppi]] o [[Special:BrokenRedirects|redirect rumputi]]. Vui siti rispunzàbbili dî liami chi avìssiru a puntari â pàggina giusta.\n\nLa pàggina '''nun''' è spustata siddu cc'è già na pàggina cu lu tìtulu novu, tranni chi la pàggina 'n chistioni è vacanti o è na pàggina di ''redirect'' e nun havi n'archiviu di canciamenti.\nChistu signìfica chi vui putiti rinuminari la pàggina cu lu nomu vecchiu si aviti sbagghiatu, e chi nun putiti suprascrìviri nta na pàggina chi esisti già.\n\n'''Accura!'''\nChistu pò èssiri nu canciamentu dràsticu pi na pàggina pupulari; aviti a èssiri sicuri di capiri li cunziquenzi prima di cuntinuari.",
        "movepagetalktext": "La pàggina di discussioni sarravi autumaticamenti spustata cud idda <strong>a' menu chi':</strong>\n*Na pàggina di discussioni nun vacanti già esisti cu lu nomu novu, o puru\n*Nun scegghî la casedda ccassutta.\n\nNta sti casi, si' voi, hâ' spustari o jùnciri la pàggina di discussioni a' manu.",
        "movearticle": "Sposta la pàggina",
        "thumbnail_error_remote": "Messaggiu d'erruri di $1:\n$2",
        "djvu_page_error": "Nùmmuru di pàggina DjVu erratu",
        "djvu_no_xml": "Mpussibbili òtteniri lu XML pô file DjVu",
-       "thumbnail-temp-create": "Nun fu' pussìbbili crïari nu file timpuraniu pâ miniatura",
+       "thumbnail-temp-create": "Nun fu' pussìbbili criari nu file timpuraniu pâ miniatura",
        "thumbnail-dest-create": "Nun fu' pussìbbili sarvari a miniatura ntâ distinazzioni",
        "thumbnail_invalid_params": "Parametri antiprima nun validi",
        "thumbnail_toobigimagearea": "U file è cchiu' granni di $1",
        "import-token-mismatch": "Si pèrsiru li dati rilativi a la sissioni. Pi piaciri, prova n'àutra vota.",
        "import-invalid-interwiki": "E' mpussìbbili mpurtari dû pruggettu wiki nnicatu.",
        "import-error-edit": "A pàggina \"$1\" nun fu' mpurtata picchì nun hai u pirmissu di canciàrila.",
-       "import-error-create": "A pàggina \"$1\" nun fu' mpurtata picchì nun hai u pirmissu di crïàrila.",
+       "import-error-create": "La pàggina \"$1\" nun fu' mpurtata picchì nun hai u pirmissu di criàrila.",
        "import-error-interwiki": "A pàggina \"$1\" nun fu' mpurtata picchì u so nomu è risirvatu pû culligamentu esternu (interwiki).",
        "import-error-special": "A pàggina \"$1\" nun fu' mpurtata picchì apparteni a' nu namespace spiciali chi' nun cunsenti pàggini.",
        "import-error-invalid": "A pàggina \"$1\" nun fu' mpurtata picchì u nomu unni sarrìa mpurtata nun è vàlidu supra a' sta wiki.",
        "tooltip-pt-mycontris": "La lista dî to cuntribbuti",
        "tooltip-pt-login": "La riggistrazzioni è cunzigghiata, puru siddu nun obbrigatoria.",
        "tooltip-pt-logout": "Nisciuta",
-       "tooltip-pt-createaccount": "Si' nvitatu a crïari nu cuntu e tràsiri; però nun è obbligatoriu",
+       "tooltip-pt-createaccount": "Si' nvitatu a criari nu cuntu e tràsiri; però nun è obbligatoriu",
        "tooltip-ca-talk": "Vidi li discussioni rilativi a sta pàggina",
        "tooltip-ca-edit": "Poi canciari sta pàggina. Pi favuri usa lu pulsanti d'antiprima prima di sarvari.",
        "tooltip-ca-addsection": "Agghiunci un cummentu a sta discussioni.",
        "tooltip-ca-delete": "Cancella sta pàggina",
        "tooltip-ca-undelete": "Riprìstina la pàggina com'era prima dâ cancillazzioni",
        "tooltip-ca-move": "Sposta sta pàggina (cancia tìtulu)",
-       "tooltip-ca-watch": "Agghiunci sta pàggina â to lista talïata",
-       "tooltip-ca-unwatch": "Leva sta pàggina dâ to lista talïata",
+       "tooltip-ca-watch": "Agghiunci sta pàggina â to lista taliata",
+       "tooltip-ca-unwatch": "Leva sta pàggina dâ to lista taliata",
        "tooltip-search": "Cerca 'n {{SITENAME}}",
        "tooltip-search-go": "Vai a na pàggina cu chistu nomu esattu siddu asisti",
        "tooltip-search-fulltext": "Arriscedi pàggini pi chistu testu",
        "tooltip-preview": "Antiprima dî canciamenti, ùsala prima di sarvari!",
        "tooltip-diff": "Talìa (mudalitati diff) li canciamenti c'hai fattu.",
        "tooltip-compareselectedversions": "Talìa li diffirenzi tra li dui virsioni silizziunati di sta pàggina.",
-       "tooltip-watch": "Agghiunci sta pàggina â to lista talïata",
+       "tooltip-watch": "Agghiunci sta pàggina â to lista taliata",
        "tooltip-watchlistedit-normal-submit": "Leva i tìtuli",
-       "tooltip-watchlistedit-raw-submit": "Aggiorna a lista talïata",
+       "tooltip-watchlistedit-raw-submit": "Aggiorna la lista taliata",
        "tooltip-recreate": "Ricrea la pàggina puru siddu hà statu cancillata",
        "tooltip-upload": "Ncigna carricamentu",
        "tooltip-rollback": "\"Rollback\" annulla li canci di l'ùrtinu cuntribbuturi â sta pâggina cu nu sulu clic.",
        "pageinfo-content-model": "Mudellu dû cuntinutu dâ pàggina",
        "pageinfo-robot-policy": "Innicizzazzioni pi' menzu di robot",
        "pageinfo-robot-index": "Cunsintuta",
-       "pageinfo-robot-noindex": "Prüibbuta",
+       "pageinfo-robot-noindex": "Pruibbuta",
        "pageinfo-watchers": "Quanti talìunu sta pàggina",
-       "pageinfo-few-watchers": "Cchiu' picca di $1 talïaturi",
+       "pageinfo-few-watchers": "Cchiu' picca di $1 {{PLURAL:$1|taliaturi|taliatura}}",
        "pageinfo-redirects-name": "Nùmmiru di rimanni a' sta pàggina",
        "pageinfo-subpages-name": "Nùmmiru di suttapàggini di sta pàggina",
        "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|chi' è un rimannu|chi' su' rimanni}}; $3 {{PLURAL:$3|chi' nun è un rimannu|chi' nun su' rimanni}})",
-       "pageinfo-firstuser": "Crïaturi dâ pàggina",
-       "pageinfo-firsttime": "Data dâ crïazzioni dâ pàggina",
+       "pageinfo-firstuser": "Criaturi dâ pàggina",
+       "pageinfo-firsttime": "Data dâ criazzioni dâ pàggina",
        "pageinfo-lastuser": "Ùltimu cuntribbuturi",
        "pageinfo-lasttime": "Data di l'ùltimu canciamentu",
        "pageinfo-edits": "Nùmmiru tutali di canciamenti",
        "yesterday-at": "Ajeri ê $1",
        "bad_image_list": "Lu furmatu è lu siguenti:\n\nSu' pigghiati a' cunsiddirazzioni sulu li vuci d'elenchi puntati (li righi ca accumènzanu cû sìmmulu *).\nLu primu culligamentu nta ogni' riga havi a' puntari ôn file nun addisiatu.\nSi' cci su' autri culligamenti nta stissa riga, su' cunsiddirati comu eccizzioni, vali a' diri pàggini unni lu file po' èssiri ncurpuratu.",
        "metadata": "Metadati",
-       "metadata-help": "Stu file cunteni autri nfurmazzioni, prubbabbirmenti agghiunti dâ màchina futugràfica o dû scanner adupirati pi' crïàrilu o diggitalizzàrilu.\nSiddu lu file hâ statu canciatu dâ so cunnizzioni origginali, certi dittagghî putìssiru nun currispùnniri ô statu novu dû file.",
+       "metadata-help": "Stu file cunteni autri nfurmazzioni, prubbabbirmenti agghiunciuti dâ màchina futugràfica o dû scanner adupirati pi' criàrilu o diggitalizzàrilu.\nSiddu lu file hâ statu canciatu dâ so cunnizzioni origginali, certi dittagghî putìssiru nun currispùnniri ô statu novu dû file.",
        "metadata-expand": "Ammustra li nfurmazzioni dittagghiati",
        "metadata-collapse": "Ammuccia li nfurmazzioni dittagghiati",
        "metadata-fields": "Li campi dî metadati dâ mmàggini elincati nta stu missaggiu sarrannu ammustrati ntâ pàggina dâ mmàggini quannu la tavula dî metadati è strinciuta.\nL'àutri campi comu mpustazzioni pridifinuta sarrannu ammucciati.\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-gpsdirection-t": "Direzzioni riali",
        "exif-gpsdirection-m": "Direzzioni magnètica",
        "exif-ycbcrpositioning-1": "Cintrati",
-       "exif-ycbcrpositioning-2": "Co-sitüati",
+       "exif-ycbcrpositioning-2": "Co-situati",
        "exif-dc-contributor": "Cuntribbuturi",
        "exif-dc-coverage": "Àmmitu spazziali o timpurali",
        "exif-dc-date": "Data/i",
        "confirmemail": "Cunfirma dû nnirizzu di posta elittrònica",
        "confirmemail_noemail": "Nun hà statu ndicatu un ndirizzu e-mail vàlidu ntê propi [[Special:Preferences|prifirenzi]].",
        "confirmemail_text": "{{SITENAME}} dumanna la cunvàlida dû to nnirizzu di posta elittrònica pi' putìri adupirari li funziunalità assuciati.\nCalca lu buttuni ccassutta pi' mannari nu missaggiu e-mail di cunfirma a lu to nnirizzu.\nNtô missaggiu cci sarravi nu culligamentu cuntinenti un còdici;\ncàrrica ddu culligamentu cu lu to browser pi' cunfirmari ca lu to nnirizzu di posta elittrònica è vàlidu.",
-       "confirmemail_pending": "Già nu còdici di cunfirma t'havi statu mannatu via e-mail;\nsiddu hai crïatu u to cuntu di picca tempu, è mègghiu ch'aspètti l'arrivu dû còdici pi' quarchi minutu prima di pruvari a' addumannàrinni unu novu.",
+       "confirmemail_pending": "Già nu còdici di cunfirma t'havi statu mannatu via posta elittrònica;\nsiddu hai criatu lu to cuntu di picca tempu, è mègghiu ch'aspètti l'arrivu dû còdici pi' quarchi minutu prima di pruvari a' addumannàrinni unu novu.",
        "confirmemail_send": "Manna un còdici di cunfirma via e-mail",
        "confirmemail_sent": "Missaggiu e-mail di cunfirma mannatu.",
        "confirmemail_oncreate": "Un còdici di cunfirma fu' spidutu a lu to nnirizzu di posta elittrònica.\nLu còdici nun servi pi' tràsiri nta lu situ, ma ll'hâ' prisintari pi' putiri attivari tutti li funzioni dâ wiki ca fannu usu dâ posta elittrònica.",
        "scarytranscludefailed-httpstatus": "[Carricamentu dû template nun rinisciutu di $1: HTTP $2]",
        "scarytranscludetoolong": "[URL troppu longu]",
        "deletedwhileediting": "'''Accura''': Sta pàggina vinni scancillata doppu c'hai accuminzatu a scanciàrila!",
-       "confirmrecreate": "L'utenti [[User:$1|$1]] ([[User talk:$1|discussioni]]) cancillau sta pàggina appressu chi' tu avìi accuminciatu a' canciàrila, dannu sta spiegazzioni:\n: <em>$2</em>\nPi' favuri cunfirma chi' voi crïari n'autra vota sta pàggina pi' davera.",
-       "confirmrecreate-noreason": "L'utenti [[User:$1|$1]] ([[User talk:$1|discussioni]]) cancillau sta pàggina appressu chi' tu avìi accuminciatu a' canciàrila. Pi' favuri cunfirma chi' voi crïari n'autra vota sta pàggina pi' davera.",
+       "confirmrecreate": "L'utenti [[User:$1|$1]] ([[User talk:$1|discussioni]]) cancillau sta pàggina appressu chi' tu avìi accuminciatu a' canciàrila, dannu sta spiegazzioni:\n: <em>$2</em>\nPi' favuri cunfirma chi' voi criari n'autra vota sta pàggina pi' davera.",
+       "confirmrecreate-noreason": "L'utenti [[User:$1|$1]] ([[User talk:$1|discussioni]]) cancillau sta pàggina appressu chi' tu avìi accuminciatu a' canciàrila. Pi' favuri cunfirma chi' voi criari n'autra vota sta pàggina pi' davera.",
        "recreate": "Ricrìa",
        "unit-pixel": "px",
        "confirm_purge_button": "Cunfirma",
        "confirm-purge-top": "S'addisìa puliri la cache di sta pàggina?",
        "confirm-purge-bottom": "Pulizziari la cache di na pàggina pirmetti d'ammustrari la sô virsioni cchiù nova.",
        "confirm-watch-button": "Cunfirma",
-       "confirm-watch-top": "Agghiùnciri sta pàggina â to lista talïata?",
+       "confirm-watch-top": "Agghiùnciri sta pàggina â to lista taliata?",
        "confirm-unwatch-button": "Cunfirma",
-       "confirm-unwatch-top": "Livari sta pàggina dâ to lista talïata?",
+       "confirm-unwatch-top": "Livari sta pàggina dâ to lista taliata?",
        "quotation-marks": "«$1»",
        "imgmultipageprev": "← pàggina pricidenti",
        "imgmultipagenext": "pàggina siquenti →",
        "autosumm-replace": "Pàggina sustituita cu '$1'",
        "autoredircomment": "Rinnirizzamentu â pàggina [[$1]]",
        "autosumm-new": "Criata pàggina cu '$1'",
-       "autosumm-newblank": "Crïata na pàggina vacanti",
+       "autosumm-newblank": "Criata na pàggina vacanti",
        "lag-warn-normal": "Li canciamenti appurtati {{PLURAL:$1|nta l'ùrtimu secundu|nta l'ùrtimi $1 secundi}} ponnu nun èssiri nta sta lista.",
        "lag-warn-high": "A càusa di nu ritardu eccissivu nta l'aggiurnamentu dô server di databbasi, li canciamenti appurtati {{PLURAL:$1|nta l'ùrtimu secundu|nta l'ùrtimi $1 secundi}} ponnu nun èssiri nta sta lista.",
        "watchlistedit-normal-title": "Cancia pàggini taliati",
        "watchlistedit-normal-legend": "Eliminazzioni di pàggini dâ lista dê pàggini taliati",
-       "watchlistedit-normal-explain": "Ccassutta cci su' li tìtuli ntâ to lista talïata.\nPi' livàrinni unu, scegghî la casedda a' latu d'iddu, e clicca \"{{int:Watchlistedit-normal-submit}}\".\nPoi puru [[Special:EditWatchlist/raw|canciari la lista 'n forma testuali]].",
+       "watchlistedit-normal-explain": "Ccassutta cci su' li tìtuli ntâ to lista taliata.\nPi' livàrinni unu, scegghî la casedda a' latu d'iddu, e clicca \"{{int:Watchlistedit-normal-submit}}\".\nPoi puru [[Special:EditWatchlist/raw|canciari la lista 'n forma testuali]].",
        "watchlistedit-normal-submit": "Elìmina pàggini",
        "watchlistedit-normal-done": "Dâ lista dê pàggini taliati hà{{PLURAL:$1|&nbsp;stata eliminata na pàggina|nnu stati eliminati $1 pàggini}}:",
        "watchlistedit-raw-title": "Cancia li pàggini taliati 'n forma testuali",
        "watchlistedit-raw-legend": "Canciamentu testuali pàggini taliati",
-       "watchlistedit-raw-explain": "Ccassutta cci su' li tìtuli ntâ to lista talïata, chi' si po' canciari agghiuncennu e livannu tituli, unu pi' riga.\nQuannu hai finutu, clicca \"{{int:Watchlistedit-raw-submit}}\".\nPoi puru [[Special:EditWatchlist|canciari a lista dâ pàggina tradizziunali]].",
+       "watchlistedit-raw-explain": "Ccassutta cci su' li tìtuli ntâ to lista taliata, chi' si po' canciari agghiuncennu e livannu tituli, unu pi' riga.\nQuannu hai finutu, clicca \"{{int:Watchlistedit-raw-submit}}\".\nPoi puru [[Special:EditWatchlist|canciari a lista dâ pàggina tradizziunali]].",
        "watchlistedit-raw-titles": "Pàggini:",
        "watchlistedit-raw-submit": "Aggiorna la lista",
        "watchlistedit-raw-done": "La tò lista dê pàggini taliati vinni aggiurnata.",
        "watchlistedit-raw-added": "{{PLURAL:$1|Fu junciuta na pàggina|Foru junciuti $1 pàggini}}:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|&nbsp;Vinni scancillata na pàggina|Foru scancillati $1 pàggini}}:",
-       "watchlistedit-clear-title": "Lista talïata svacantata",
-       "watchlistedit-clear-legend": "Svacanta a lista talïata",
-       "watchlistedit-clear-explain": "Tutti i tìtuli sarannu livati da to lista talïata",
+       "watchlistedit-clear-title": "Lista taliata svacantata",
+       "watchlistedit-clear-legend": "Svacanta la lista taliata",
+       "watchlistedit-clear-explain": "Tutti li tìtuli sarrannu livati da to lista taliata",
        "watchlistedit-clear-titles": "Tìtuli:",
-       "watchlistedit-clear-submit": "Svacanta a lista talïata (Sta cosa è difinitiva!)",
+       "watchlistedit-clear-submit": "Svacanta la lista taliata (Sta cosa è difinitiva!)",
        "watchlistedit-clear-done": "La tò lista taliata fu svacantata.",
        "watchlistedit-clear-removed": "{{PLURAL:$1|Un tìtulu fu'|$1 tìtuli furu}} livati:",
        "watchlistedit-too-many": "Cci su' troppu pàggini p'ammustràrili cca.",
-       "watchlisttools-clear": "Svacanta a lista talïata",
+       "watchlisttools-clear": "Svacanta la lista taliata",
        "watchlisttools-view": "Talìa li canciamenti rilivanti",
        "watchlisttools-edit": "Talìa e cancia la lista",
        "watchlisttools-raw": "Cancia la lista 'n forma testuali",
        "version-poweredby-others": "autri",
        "version-poweredby-translators": "i tradutturi di translatewiki.net",
        "version-credits-summary": "Vulemu ricanusciri u cuntribbutu di sti pirsuni a' [[Special:Version|MediaWiki]].",
-       "version-license-info": "MediaWiki è software lìbbiru; si po' ri-distribbüiri e/o mudificari sutta ê tèrmini dâ GNU General Public License comu pubblicata dâ Free Software Foundation; o la virsioni 2 dâ Licenza, o (a' propia scelta) na virsioni succissiva quali è jè.\n\nMediaWiki veni distribuùtu ntâ spiranza chi' sia ùtili, però SENZA NUDDA GARANZÌA; mancu chidda implìcita di NIGUZZIABBILITÀ o di APPLICABBILITÀ PI' NU SCOPU PARTICULARI. Si talïassi la GNU General Public License pi' maggiuri dittagghî.\n\nS'avissi a' avìri ricivutu [{{SERVER}}{{SCRIPTPATH}}/COPYING na copia dâ GNU General Public License] nsèmmula a' stu prugramma; si' no, si po' scrìviri â Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA o [//www.gnu.org/licenses/old-licenses/gpl-2.0.html la si po' lèggiri in linia].",
+       "version-license-info": "MediaWiki è software lìbbiru; si po' ri-distribbuiri e/o mudificari sutta ê tèrmini dâ GNU General Public License comu pubblicata dâ Free Software Foundation; o la virsioni 2 dâ Licenza, o (a' propia scelta) na virsioni succissiva quali è jè.\n\nMediaWiki veni distribuùtu ntâ spiranza chi' sia ùtili, però SENZA NUDDA GARANZÌA; mancu chidda implìcita di NIGUZZIABBILITÀ o di APPLICABBILITÀ PI' NU SCOPU PARTICULARI. Si taliassi la GNU General Public License pi' maggiuri dittagghî.\n\nS'avissi a' avìri ricivutu [{{SERVER}}{{SCRIPTPATH}}/COPYING na copia dâ GNU General Public License] nsèmmula a' stu prugramma; si' no, si po' scrìviri â Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA o [//www.gnu.org/licenses/old-licenses/gpl-2.0.html la si po' lèggiri in linia].",
        "version-software": "Software nstallatu",
        "version-software-product": "Prodottu",
        "version-software-version": "Virsioni",
        "specialpages-note": "* Pàggini spiciali nurmali.\n* <span class=\"mw-specialpagerestricted\">Pàggini spiciali risirvati.</strong>",
        "specialpages-group-maintenance": "Resocunti di manutinzioni",
        "specialpages-group-other": "Autri pàggini spiciali",
-       "specialpages-group-login": "Trasuta / crïazzioni di cunti",
+       "specialpages-group-login": "Trasuta / criazzioni di cunti",
        "specialpages-group-changes": "Ùrtimi canciamenti e riggistra",
        "specialpages-group-media": "File multimidiali - caricamentu e rennicunti",
        "specialpages-group-users": "Utenti e diritti",
        "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|File duppiuni|File duppiuni}} chi' già {{PLURAL:$1|havi statu cancillatu|hannu statu cancillati}}.",
        "api-error-duplicate-popup-title": "File {{PLURAL:$1|duppiuni}}.",
        "api-error-empty-file": "U file chi' mannasti era vacanti.",
-       "api-error-emptypage": "Crïari pàggini novi e vacanti nun è cunsintutu.",
+       "api-error-emptypage": "Criari pàggini novi e vacanti nun è cunsintutu.",
        "api-error-fetchfileerror": "Erruri nternu: Quarchi' cosa nun funziunau mentri chi' si carricava u file.",
        "api-error-fileexists-forbidden": "Nu file chi' si chiama \"$1\" già esisti, e nun si po' suprascrìviri.",
        "api-error-fileexists-shared-forbidden": "Nu file chi' si chiama \"$1\" già esisti ntô dipòsitu cunnivisu, e nun si po' suprascrìviri.",
        "api-error-unknown-warning": "Avvirtimentu scanusciutu: \"$1\".",
        "api-error-unknownerror": "Erruri scanusciutu: \"$1\".",
        "api-error-uploaddisabled": "U carricamentu è disattivatu nta sta wiki.",
-       "api-error-verification-error": "U file purrìa èssiri rüinatu, o puru aviri l'estinsioni sbagghiata.",
+       "api-error-verification-error": "Lu file purrìa èssiri ruinatu, o puru aviri l'estinsioni sbagghiata.",
        "duration-seconds": "$1 {{PLURAL:$1|sicunnu|sicunni}}",
        "duration-minutes": "$1 {{PLURAL:$1|minutu|minuti}}",
        "duration-hours": "$1 {{PLURAL:$1|ura|uri}}",
        "limitreport-title": "Dati di prufilazzioni di l'analizzaturi sintatticu:",
        "limitreport-cputime": "Usu di tempu dâ CPU",
        "limitreport-cputime-value": "$1 {{PLURAL:$1|sicunnu|sicunni}}",
-       "limitreport-walltime": "Usu di tempu rïàli",
+       "limitreport-walltime": "Usu di tempu riàli",
        "limitreport-walltime-value": "$1 {{PLURAL:$1|sicunnu|sicunni}}",
        "limitreport-ppvisitednodes": "Cuntiggiu dî gruppi visitati dû priprucissuri",
        "limitreport-ppgeneratednodes": "Cuntiggiu dî gruppi ginirati dû priprucissuri",
        "log-name-pagelang": "Riggistru dî canci di lingua",
        "log-description-pagelang": "Chistu è nu riggistru dî canciamenti â lingua dî pàggini.",
        "logentry-pagelang-pagelang": "$1 {{GENDER:$2|canciau}} a lingua dâ pàggina $3 di $4 a' $5.",
-       "default-skin-not-found": "Whoops! A peddi pridifinuta dâ to wiki, mpustata nta <code dir=\"ltr\">$wgDefaultSkin</code> comu <code>$1</code>, nun è dispunìbbili.\n\nA' quantu pari la to installazzioni ncludi i peddi ccasutta. Talìa [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manüali: Cunfigurazzioni dî peddi] p'istruzzioni supra a' comu s'attìvunu e comu si scegghî chidda pridifinuta.\n\n$2\n\n; Si' hai installatu MediaWiki ora ora:\n: E' prubbàbbili chi' l'installasti dû git, o direttamenti dû còdici surgenti nta quarchi' autra manera. Allura sta cosa è privista. Prova e installa quarchi' peddi di [https://www.mediawiki.org/wiki/Category:All_skins l'archìviu dî peddi di mediawiki.org], a na manera di chisti:\n:* Scàrrica [https://www.mediawiki.org/wiki/Download u prugramma d'installazzioni in furmatu tar], chi' cunteni tanti peddi ed estinsioni. Poi cupiari e ncuddari a cartella <code>skins/</code> di ddadintra.\n:* Scàrrica a' una a' una quarchi' peddi in furmatu tar di [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* Clona via git unu dî dipòsiti <code>mediawiki/skins/*</code> ntâ cartella <code dir=\"ltr\">skins/</code> dâ to installazzioni di MediaWiki.\n: Fari accussì' nun avissi a' ntirfirìri cû to dipòsitu git si' si' nu sviluppaturi di MediaWiki.\n\n; Si' hai aggiurnatu MediaWiki ora ora:\n: MediaWiki virsioni 1.24 e succissivi nun attìvunu cchiu' di manera autumàtica i peddi installati (talìa [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manüali: Scuperta autumatica dî peddi]). Poi cupiari e ncuddari sti righi nta <code>LocalSettings.php</code> p'attivari tutti i peddi chi' sunnu pi' com'ora installati:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Si' hai mudificatu <code>LocalSettings.php</code> ora ora:\n: Cuntrolla chi' nun sbagghiasti a' scriviri i nomi dî peddi.",
+       "default-skin-not-found": "Whoops! La peddi pridifinuta dâ to wiki, mpustata nta <code dir=\"ltr\">$wgDefaultSkin</code> comu <code>$1</code>, nun è dispunìbbili.\n\nA' quantu pari la to installazzioni ncludi li peddi ccasutta. Talìa [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manuali: Cunfigurazzioni dî peddi] p'istruzzioni supra a' comu s'attìvunu e comu si scegghî chidda pridifinuta.\n\n$2\n\n; Si' hai installatu MediaWiki ora ora:\n: E' prubbàbbili chi' l'installasti dû git, o direttamenti dû còdici surgenti nta quarchi' autra manera. Allura sta cosa è privista. Prova e installa quarchi' peddi di [https://www.mediawiki.org/wiki/Category:All_skins l'archìviu dî peddi di mediawiki.org], a na manera di chisti:\n:* Scàrrica [https://www.mediawiki.org/wiki/Download lu prugramma d'installazzioni in furmatu tar], chi' cunteni tanti peddi ed estinsioni. Poi cupiari e ncuddari la cartella <code>skins/</code> di ddadintra.\n:* Scàrrica a' una a' una quarchi' peddi in furmatu tar di [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* Clona via git unu dî dipòsiti <code>mediawiki/skins/*</code> ntâ cartella <code dir=\"ltr\">skins/</code> dâ to installazzioni di MediaWiki.\n: Fari accussì' nun avissi a' ntirfirìri cû to dipòsitu git si' si' nu sviluppaturi di MediaWiki.\n\n; Si' hai aggiurnatu MediaWiki ora ora:\n: MediaWiki virsioni 1.24 e succissivi nun attìvunu cchiu' di manera autumàtica i peddi installati (talìa [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manüali: Scuperta autumatica dî peddi]). Poi cupiari e ncuddari sti righi nta <code>LocalSettings.php</code> p'attivari tutti li peddi chi' sunnu pi' com'ora installati:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Si' hai mudificatu <code>LocalSettings.php</code> ora ora:\n: Cuntrolla chi' nun sbagghiasti a' scriviri li nomi dî peddi.",
        "default-skin-not-found-no-skins": "Whoops! La peddi pridifinuta dâ to wiki, mpustata nta <code dir=\"ltr\">$wgDefaultSkin</code> comu <code>$1</code>, nun è dispunìbbili.\n\nNun hai nudda peddi installata.\n\n; Si' hai installatu o puru aggiurnatu MediaWiki ora ora:\n: E' prubbàbbili chi' l'installasti dû git, o direttamenti dû còdici surgenti nta quarchi' autra manera. Allura sta cosa è privista. MediaWiki virsioni 1.24 e succissivi nun cuntènunu nudda peddi ntô dipòsitu principali. Prova e installa quarchi' peddi di [https://www.mediawiki.org/wiki/Category:All_skins l'archìviu dî peddi di mediawiki.org], a na manera di chisti:\n:* Scàrrica [https://www.mediawiki.org/wiki/Download u prugramma d'installazzioni in furmatu tar], chi' cunteni tanti peddi ed estinsioni. Poi cupiari e ncuddari a cartella <code>skins/</code> di ddadintra.\n:* Scàrrica a' una a' una quarchi' peddi in furmatu tar di [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* Clona via git unu dî dipòsiti <code>mediawiki/skins/*</code> ntâ cartella <code dir=\"ltr\">skins/</code> dâ to installazzioni di MediaWiki.\n: Fari accussì' nun avissi a' ntirfirìri cû to dipòsitu git si' si' nu sviluppaturi di MediaWiki. Talìa [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manüali: Cunfigurazzioni dî peddi] p'istruzzioni supra a' comu s'attìvunu i peddi e comu si scegghî chidda pridifinuta.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (attivata)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''disattivata''')",
index 38984ee..339c571 100644 (file)
        "mediastatistics-header-office": "Kancelárske súbory",
        "mediastatistics-header-text": "Text",
        "mediastatistics-header-executable": "Spustiteľné súbory",
-       "mediastatistics-header-archive": "Komprimované formáty"
+       "mediastatistics-header-archive": "Komprimované formáty",
+       "headline-anchor-title": "Odkaz na túto sekciu"
 }
index a520ba6..aa3bfc4 100644 (file)
        "createaccount-text": "Неко је отворио налог с вашом е-адресом на {{SITENAME}} ($4) под именом $2 и лозинком $3.\nПријавите се и промените своју лозинку.\n\nАко је ово грешка, занемарите ову поруку.",
        "login-throttled": "Превише пута сте покушали да се пријавите.\nМолимо вас да сачекате $1 пре него што покушате поново.",
        "login-abort-generic": "Неуспешна пријава – прекинуто",
+       "login-migrated-generic": "Ваш налог је мигриран и ваше корисничко више не постоји на овом викију.",
        "loginlanguagelabel": "Језик: $1",
        "suspicious-userlogout": "Ваш захтев за одјаву је одбијен јер је послат од стране неисправног прегледача или посредника.",
        "createacct-another-realname-tip": "Право име није обавезно.\nАко изаберете да га унесете, оно ће бити коришћено за приписивање вашег рада.",
        "tags-deactivate": "деактивирај",
        "tags-hitcount": "$1 {{PLURAL:$1|измена|измене|измена}}",
        "tags-create-heading": "Нова ознака",
+       "tags-create-tag-name": "Назив ознаке:",
        "tags-create-reason": "Разлог:",
+       "tags-create-submit": "Направи",
+       "tags-create-no-name": "Морате навести назив ознаке.",
        "tags-create-already-exists": "Ознака „$1“ већ постоји.",
        "tags-create-warnings-below": "Правите нову ознаку, желите ли да наставите?",
        "tags-delete-title": "Брисање ознака",
        "tags-delete-explanation-initial": "Бришете ознаку „$1“ из базе података.",
        "tags-delete-reason": "Разлог:",
+       "tags-delete-not-found": "Ознака „$1“ не постоји.",
        "tags-activate-title": "Активирање ознака",
        "tags-activate-question": "Активирате ознаку „$1“.",
+       "tags-activate-reason": "Разлог:",
        "tags-activate-not-allowed": "Није могуће активирати ознаку „$1“.",
        "tags-activate-not-found": "Ознака „$1“ не постоји.",
        "tags-activate-submit": "Активирај",
index 6c1042f..0af7b40 100644 (file)
        "feedback-cancel": "Avbryt",
        "feedback-close": "Färdig",
        "feedback-dialog-title": "Skicka återkoppling",
+       "feedback-dialog-intro": "Du kan använda det enkla formuläret nedan för att skicka in din återkoppling. Din kommentar kommer att läggas till på sidan \"$1\" tillsammans med ditt användarnamn.",
        "feedback-error-title": "Fel",
        "feedback-error1": "Fel: Okänt resultat från API",
        "feedback-error2": "Fel: Redigeringen misslyckades",
        "feedback-message": "Meddelande:",
        "feedback-subject": "Ämne:",
        "feedback-submit": "Skicka",
+       "feedback-terms": "Jag förstår att min användaragentsinformation innehåller information om min webbläsare och operativsystemets version samt kommer att delas offentligt tillsammans med min återkoppling.",
+       "feedback-termsofuse": "Jag samtycker med att ge återkoppling enligt användarvillkoren.",
        "feedback-thanks": "Tack! Din feedback har skickats till sidan \"[$2 $1]\".",
        "feedback-thanks-title": "Tack!",
+       "feedback-useragent": "Användaragent:",
        "searchsuggest-search": "Sök",
        "searchsuggest-containing": "innehåller...",
        "api-error-badaccess-groups": "Du får inte ladda upp filer till denna wiki.",
index 82a809f..620ee85 100644 (file)
@@ -67,7 +67,8 @@
                        "Trockya",
                        "Aşilleus",
                        "BatuhanBensoy",
-                       "Mavrikant"
+                       "Mavrikant",
+                       "Ayrıntılı Bilgi"
                ]
        },
        "tog-underline": "Bağlantıların altını çiz:",
        "disclaimers": "Sorumluluk reddi",
        "disclaimerpage": "Project:Genel sorumluluk reddi",
        "edithelp": "Nasıl değiştirilir?",
+       "helppage-top-gethelp": "Yardım",
        "mainpage": "Ana Sayfa",
        "mainpage-description": "Ana sayfa",
        "policy-url": "Project:İlkeler",
        "readonly_lag": "Yedek sunucular ana sunucu ile güncellenmeye çalışılırken veritabanı otomatik olarak kilitlendi.",
        "internalerror": "Yazılım hatası",
        "internalerror_info": "İç hata: $1",
+       "internalerror-fatal-exception": "Tip \"$1\" hayati hata",
        "filecopyerror": "\"$1\"  \"$2\" dosyasına kopyalanamıyor.",
        "filerenameerror": "\"$1\" dosyasının ismi \"$2\" olarak değiştirilemedi.",
        "filedeleteerror": "\"$1\" dosyası silinemedi.",
        "rev-deleted-event": "(kayıt ayrıntıları silindi)",
        "rev-deleted-user-contribs": "[kullanıcı adı veya IP adresi çıkarıldı - değişiklik katkılardan gizlendi]",
        "rev-deleted-text-permission": "Bu sayfa revizyonu '''silinmiş'''.\n[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Silme kayıtlarında] ayrıntıları bulunabilir.",
+       "rev-suppressed-text-permission": "Sayfanın bu sürümü <strong>gizlenmiştir</strong>.\nAyrıntılar: [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log].",
        "rev-deleted-text-unhide": "Bu sayfa revizyonu '''silinmiş'''.\n[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Silme kayıtlarında] ayrıntıları bulunabilir.\nBir hizmetli olarak eğer devam ederseniz [$1 bu revizyonu hala görebilirsiniz].",
        "rev-suppressed-text-unhide": "Bu sayfa revizyonu '''bastırılmış'''.\n[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Durdurma kayıtlarında] ayrıntıları bulunabilir.\nBir hizmetli olarak eğer devam ederseniz [$1 bu revizyonu hala görebilirsiniz].",
        "rev-deleted-text-view": "Bu sayfa revizyonu '''silinmiş'''.\nBir hizmetli olarak sayfayı görebilirsiniz; [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} silme kayıtlarında] ayrıntılar bulunabilir.",
diff --git a/maintenance/archives/patch-editsummary-length.sql b/maintenance/archives/patch-editsummary-length.sql
new file mode 100644 (file)
index 0000000..c8ac1ad
--- /dev/null
@@ -0,0 +1,11 @@
+ALTER TABLE /*_*/revision MODIFY rev_comment varbinary(767) NOT NULL;
+ALTER TABLE /*_*/archive MODIFY ar_comment varbinary(767) NOT NULL;
+ALTER TABLE /*_*/image MODIFY img_description varbinary(767) NOT NULL;
+ALTER TABLE /*_*/oldimage MODIFY oi_description varbinary(767) NOT NULL;
+ALTER TABLE /*_*/filearchive MODIFY fa_description varbinary(767);
+ALTER TABLE /*_*/filearchive MODIFY fa_deleted_reason varbinary(767) default '';
+ALTER TABLE /*_*/recentchanges MODIFY rc_comment varbinary(767) NOT NULL default '';
+ALTER TABLE /*_*/logging MODIFY log_comment varbinary(767) NOT NULL default '';
+ALTER TABLE /*_*/ipblocks MODIFY ipb_reason varbinary(767) NOT NULL;
+ALTER TABLE /*_*/protected_titles MODIFY pt_reason varbinary(767);
+
index 0792c24..4e61140 100644 (file)
@@ -3,6 +3,36 @@
 <head>
        <meta charset="utf-8">
        <title>MediaWiki Code Example</title>
+       <script>
+               /**
+                * Basic log console for the example iframe in documentation pages.
+                */
+               var log = ( function () {
+                       var pre;
+                       return function () {
+                               var str, i, len, line;
+                               if ( !pre ) {
+                                       pre = document.createElement( 'pre' );
+                                       pre.className = 'mw-jsduck-log';
+                                       ( document.body || document.documentElement ).appendChild( pre );
+                               }
+                               str = [];
+                               for ( i = 0, len = arguments.length; i < len; i++ ) {
+                                       str.push( String( arguments[ i ] ) );
+                               }
+                               line = document.createElement( 'div' );
+                               line.className = 'mw-jsduck-log-line';
+                               line.appendChild(
+                                               document.createTextNode( str.join( ' , ' ) + '\n' )
+                               );
+                               pre.appendChild( line );
+                       };
+               }() );
+
+               window.onerror = function ( error, filePath, linerNr ) {
+                       log( error + '\n' + filePath + ':' + linerNr  );
+               };
+       </script>
        <script src="modules/src/startup.js"></script>
        <script>
                function startUp() {
@@ -11,6 +41,7 @@
        </script>
        <script src="modules/lib/jquery/jquery.js"></script>
        <script src="modules/src/mediawiki/mediawiki.js"></script>
+       <script src="modules/src/mediawiki/mediawiki.startUp.js"></script>
        <style>
                .mw-jsduck-log {
                        position: relative;
 </head>
 <body>
 <script>
-       /**
-        * Basic log console for the example iframe in documentation pages.
-        */
-       ( function () {
-               var pre;
-               mw.log = function () {
-                       var str, i, len, line;
-                       if ( !pre ) {
-                               pre = document.createElement( 'pre' );
-                               pre.className = 'mw-jsduck-log';
-                               document.body.appendChild( pre );
-                       }
-                       str = [];
-                       for ( i = 0, len = arguments.length; i < len; i++ ) {
-                               str.push( String( arguments[ i ] ) );
-                       }
-                       line = document.createElement( 'div' );
-                       line.className = 'mw-jsduck-log-line';
-                       line.appendChild(
-                                       document.createTextNode( str.join( ' , ' ) + '\n' )
-                       );
-                       pre.appendChild( line );
-               };
-       }() );
+       if ( window.mw ) {
+               mw.log = log;
+       }
+
+       window.onerror = function ( error, filePath, linerNr ) {
+               log( filePath + ':' + linerNr  );
+       };
 
        /**
         * Method called by jsduck to execute the example code.
@@ -78,7 +92,7 @@
                        eval( code );
                        callback && callback( true );
                } catch ( e ) {
-                       mw.log( 'Uncaught ' + e );
+                       log( 'Uncaught ' + e );
                        callback && callback( false, e );
                        throw e;
                }
diff --git a/maintenance/sqlite/archives/patch-editsummary-length.sql b/maintenance/sqlite/archives/patch-editsummary-length.sql
new file mode 100644 (file)
index 0000000..f86b2ad
--- /dev/null
@@ -0,0 +1,65 @@
+CREATE TABLE /*_*/filearchive_tmp (
+  -- Unique row id
+  fa_id int NOT NULL PRIMARY KEY AUTO_INCREMENT,
+
+  -- Original base filename; key to image.img_name, page.page_title, etc
+  fa_name varchar(255) binary NOT NULL default '',
+
+  -- Filename of archived file, if an old revision
+  fa_archive_name varchar(255) binary default '',
+
+  -- Which storage bin (directory tree or object store) the file data
+  -- is stored in. Should be 'deleted' for files that have been deleted;
+  -- any other bin is not yet in use.
+  fa_storage_group varbinary(16),
+
+  -- SHA-1 of the file contents plus extension, used as a key for storage.
+  -- eg 8f8a562add37052a1848ff7771a2c515db94baa9.jpg
+  --
+  -- If NULL, the file was missing at deletion time or has been purged
+  -- from the archival storage.
+  fa_storage_key varbinary(64) default '',
+
+  -- Deletion information, if this file is deleted.
+  fa_deleted_user int,
+  fa_deleted_timestamp binary(14) default '',
+  fa_deleted_reason varbinary(767) default '',
+  -- Duped fields from image
+  fa_size int unsigned default 0,
+  fa_width int default 0,
+  fa_height int default 0,
+  fa_metadata mediumblob,
+  fa_bits int default 0,
+  fa_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL,
+  fa_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart", "chemical") default "unknown",
+  fa_minor_mime varbinary(100) default "unknown",
+  fa_description varbinary(767),
+  fa_user int unsigned default 0,
+  fa_user_text varchar(255) binary,
+  fa_timestamp binary(14) default '',
+
+  -- Visibility of deleted revisions, bitfield
+  fa_deleted tinyint unsigned NOT NULL default 0,
+
+  -- sha1 hash of file content
+  fa_sha1 varbinary(32) NOT NULL default ''
+) /*$wgDBTableOptions*/;
+
+
+INSERT INTO /*_*/filearchive_tmp
+       SELECT fa_id, fa_name, fa_archive_name, fa_storage_group, fa_storage_key, fa_deleted_user, fa_deleted_timestamp,
+       fa_deleted_reason, fa_size, fa_width, fa_height, fa_metadata, fa_bits, fa_media_type, fa_major_mime,
+       fa_minor_mime, fa_description, fa_user, fa_user_text, fa_timestamp, fa_deleted, fa_sha1
+               FROM /*_*/filearchive;
+
+DROP TABLE /*_*/filearchive;
+
+ALTER TABLE /*_*/filearchive_tmp RENAME TO /*_*/filearchive;
+
+
+CREATE INDEX /*i*/fa_name ON /*_*/filearchive (fa_name, fa_timestamp);
+CREATE INDEX /*i*/fa_storage_group ON /*_*/filearchive (fa_storage_group, fa_storage_key);
+CREATE INDEX /*i*/fa_deleted_timestamp ON /*_*/filearchive (fa_deleted_timestamp);
+CREATE INDEX /*i*/fa_user_timestamp ON /*_*/filearchive (fa_user_text,fa_timestamp);
+CREATE INDEX /*i*/fa_sha1 ON /*_*/filearchive (fa_sha1(10));
+
index 4433502..bf93a23 100644 (file)
@@ -304,7 +304,7 @@ CREATE TABLE /*_*/revision (
   -- Text comment summarizing the change.
   -- This text is shown in the history and other changes lists,
   -- rendered in a subset of wiki markup by Linker::formatComment()
-  rev_comment tinyblob NOT NULL,
+  rev_comment varbinary(767) NOT NULL,
 
   -- Key to user.user_id of the user who made this edit.
   -- Stores 0 for anonymous edits and for some mass imports.
@@ -411,7 +411,7 @@ CREATE TABLE /*_*/archive (
   ar_text mediumblob NOT NULL,
 
   -- Basic revision stuff...
-  ar_comment tinyblob NOT NULL,
+  ar_comment varbinary(767) NOT NULL,
   ar_user int unsigned NOT NULL default 0,
   ar_user_text varchar(255) binary NOT NULL,
   ar_timestamp binary(14) NOT NULL default '',
@@ -748,7 +748,7 @@ CREATE TABLE /*_*/ipblocks (
   ipb_by_text varchar(255) binary NOT NULL default '',
 
   -- Text comment made by blocker.
-  ipb_reason tinyblob NOT NULL,
+  ipb_reason varbinary(767) NOT NULL,
 
   -- Creation (or refresh) date in standard YMDHMS form.
   -- IP blocks expire automatically.
@@ -846,7 +846,7 @@ CREATE TABLE /*_*/image (
 
   -- Description field as entered by the uploader.
   -- This is displayed in image upload history and logs.
-  img_description tinyblob NOT NULL,
+  img_description varbinary(767) NOT NULL,
 
   -- user_id and user_name of uploader.
   img_user int unsigned NOT NULL default 0,
@@ -888,7 +888,7 @@ CREATE TABLE /*_*/oldimage (
   oi_width int NOT NULL default 0,
   oi_height int NOT NULL default 0,
   oi_bits int NOT NULL default 0,
-  oi_description tinyblob NOT NULL,
+  oi_description varbinary(767) NOT NULL,
   oi_user int unsigned NOT NULL default 0,
   oi_user_text varchar(255) binary NOT NULL,
   oi_timestamp binary(14) NOT NULL default '',
@@ -936,7 +936,7 @@ CREATE TABLE /*_*/filearchive (
   -- Deletion information, if this file is deleted.
   fa_deleted_user int,
   fa_deleted_timestamp binary(14) default '',
-  fa_deleted_reason text,
+  fa_deleted_reason varbinary(767) default '',
 
   -- Duped fields from image
   fa_size int unsigned default 0,
@@ -947,7 +947,7 @@ CREATE TABLE /*_*/filearchive (
   fa_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL,
   fa_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart", "chemical") default "unknown",
   fa_minor_mime varbinary(100) default "unknown",
-  fa_description tinyblob,
+  fa_description varbinary(767),
   fa_user int unsigned default 0,
   fa_user_text varchar(255) binary,
   fa_timestamp binary(14) default '',
@@ -1045,7 +1045,7 @@ CREATE TABLE /*_*/recentchanges (
   rc_title varchar(255) binary NOT NULL default '',
 
   -- as in revision...
-  rc_comment varchar(255) binary NOT NULL default '',
+  rc_comment varbinary(767) NOT NULL default '',
   rc_minor tinyint unsigned NOT NULL default 0,
 
   -- Edits by user accounts with the 'bot' rights key are
@@ -1253,7 +1253,7 @@ CREATE TABLE /*_*/logging (
   log_page int unsigned NULL,
 
   -- Freeform text. Interpreted as edit history comments.
-  log_comment varchar(255) NOT NULL default '',
+  log_comment varbinary(767) NOT NULL default '',
 
   -- miscellaneous parameters:
   -- LF separated list (old system) or serialized PHP array (new system)
@@ -1412,7 +1412,7 @@ CREATE TABLE /*_*/protected_titles (
   pt_namespace int NOT NULL,
   pt_title varchar(255) binary NOT NULL,
   pt_user int unsigned NOT NULL,
-  pt_reason tinyblob,
+  pt_reason varbinary(767),
   pt_timestamp binary(14) NOT NULL,
   pt_expiry varbinary(14) NOT NULL default '',
   pt_create_perm varbinary(60) NOT NULL
index faaf852..005b9c2 100644 (file)
@@ -185,7 +185,7 @@ return array(
                'styles' => 'resources/lib/jquery.chosen/chosen.css',
        ),
        'jquery.client' => array(
-               'scripts' => 'resources/src/jquery/jquery.client.js',
+               'scripts' => 'resources/lib/jquery.client/jquery.client.js',
                'targets' => array( 'desktop', 'mobile' ),
        ),
        'jquery.color' => array(
@@ -772,6 +772,7 @@ return array(
        /* MediaWiki */
 
        'mediawiki' => array(
+               // Keep maintenance/jsduck/eg-iframe.html in sync
                'scripts' => array(
                        'resources/src/mediawiki/mediawiki.js',
                        'resources/src/mediawiki/mediawiki.startUp.js',
diff --git a/resources/lib/jquery.client/AUTHORS.txt b/resources/lib/jquery.client/AUTHORS.txt
new file mode 100644 (file)
index 0000000..9f186ca
--- /dev/null
@@ -0,0 +1,9 @@
+Trevor Parscal <trevorparscal@gmail.com>
+Timo Tijhof <krinklemail@gmail.com>
+Roan Kattouw <roan.kattouw@gmail.com>
+Derk-Jan Hartman <hartman.wiki@gmail.com>
+Bartosz Dziewoński <matma.rex@gmail.com>
+Rob Moen <rmoen@wikimedia.org>
+Ed Sanders <esanders@wikimedia.org>
+Alex Monk <krenair@gmail.com>
+James D. Forrester <jforrester@wikimedia.org>
diff --git a/resources/lib/jquery.client/LICENSE-MIT.txt b/resources/lib/jquery.client/LICENSE-MIT.txt
new file mode 100644 (file)
index 0000000..f149289
--- /dev/null
@@ -0,0 +1,20 @@
+Copyright 2010-2015 jquery-client maintainers and other contributors.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/resources/lib/jquery.client/README.md b/resources/lib/jquery.client/README.md
new file mode 100644 (file)
index 0000000..02b5dd4
--- /dev/null
@@ -0,0 +1,6 @@
+[![Build Status](https://travis-ci.org/wikimedia/jquery-client.svg?branch=master)](https://travis-ci.org/wikimedia/jquery-client) [![npm](https://img.shields.io/npm/v/jquery-client.svg?style=flat)](https://www.npmjs.com/package/jquery-client)
+
+jQuery Client
+=================
+
+jQuery Client is a jQuery plugin for user-agent detection.
diff --git a/resources/lib/jquery.client/jquery.client.js b/resources/lib/jquery.client/jquery.client.js
new file mode 100644 (file)
index 0000000..1560c7d
--- /dev/null
@@ -0,0 +1,317 @@
+/*!
+ * jQuery Client v1.0.0
+ * https://www.mediawiki.org/wiki/JQuery_Client
+ *
+ * Copyright 2010-2015 jquery-client maintainers and other contributors.
+ * Released under the MIT license
+ * http://jquery-client.mit-license.org
+ */
+
+/**
+ * User-agent detection
+ *
+ * @class jQuery.client
+ * @singleton
+ */
+( function ( $ ) {
+
+       /**
+        * @private
+        * @property {Object} profileCache Keyed by userAgent string,
+        * value is the parsed $.client.profile object for that user agent.
+        */
+       var profileCache = {};
+
+       $.client = {
+
+               /**
+                * Get an object containing information about the client.
+                *
+                * @param {Object} [nav] An object with a 'userAgent' and 'platform' property.
+                *  Defaults to the global `navigator` object.
+                * @return {Object} The resulting client object will be in the following format:
+                *
+                *     {
+                *         'name': 'firefox',
+                *         'layout': 'gecko',
+                *         'layoutVersion': 20101026,
+                *         'platform': 'linux'
+                *         'version': '3.5.1',
+                *         'versionBase': '3',
+                *         'versionNumber': 3.5,
+                *     }
+                */
+               profile: function ( nav ) {
+                       /*jshint boss:true */
+
+                       if ( nav === undefined ) {
+                               nav = window.navigator;
+                       }
+
+                       // Use the cached version if possible
+                       if ( profileCache[ nav.userAgent + '|' + nav.platform ] !== undefined ) {
+                               return profileCache[ nav.userAgent + '|' + nav.platform ];
+                       }
+
+                       var
+                               versionNumber,
+                               key = nav.userAgent + '|' + nav.platform,
+
+                               // Configuration
+
+                               // Name of browsers or layout engines we don't recognize
+                               uk = 'unknown',
+                               // Generic version digit
+                               x = 'x',
+                               // Strings found in user agent strings that need to be conformed
+                               wildUserAgents = ['Opera', 'Navigator', 'Minefield', 'KHTML', 'Chrome', 'PLAYSTATION 3', 'Iceweasel'],
+                               // Translations for conforming user agent strings
+                               userAgentTranslations = [
+                                       // Tons of browsers lie about being something they are not
+                                       [/(Firefox|MSIE|KHTML,?\slike\sGecko|Konqueror)/, ''],
+                                       // Chrome lives in the shadow of Safari still
+                                       ['Chrome Safari', 'Chrome'],
+                                       // KHTML is the layout engine not the browser - LIES!
+                                       ['KHTML', 'Konqueror'],
+                                       // Firefox nightly builds
+                                       ['Minefield', 'Firefox'],
+                                       // This helps keep different versions consistent
+                                       ['Navigator', 'Netscape'],
+                                       // This prevents version extraction issues, otherwise translation would happen later
+                                       ['PLAYSTATION 3', 'PS3']
+                               ],
+                               // Strings which precede a version number in a user agent string - combined and used as
+                               // match 1 in version detection
+                               versionPrefixes = [
+                                       'camino', 'chrome', 'firefox', 'iceweasel', 'netscape', 'netscape6', 'opera', 'version', 'konqueror',
+                                       'lynx', 'msie', 'safari', 'ps3', 'android'
+                               ],
+                               // Used as matches 2, 3 and 4 in version extraction - 3 is used as actual version number
+                               versionSuffix = '(\\/|\\;?\\s|)([a-z0-9\\.\\+]*?)(\\;|dev|rel|\\)|\\s|$)',
+                               // Names of known browsers
+                               names = [
+                                       'camino', 'chrome', 'firefox', 'iceweasel', 'netscape', 'konqueror', 'lynx', 'msie', 'opera',
+                                       'safari', 'ipod', 'iphone', 'blackberry', 'ps3', 'rekonq', 'android'
+                               ],
+                               // Tanslations for conforming browser names
+                               nameTranslations = [],
+                               // Names of known layout engines
+                               layouts = ['gecko', 'konqueror', 'msie', 'trident', 'edge', 'opera', 'webkit'],
+                               // Translations for conforming layout names
+                               layoutTranslations = [ ['konqueror', 'khtml'], ['msie', 'trident'], ['opera', 'presto'] ],
+                               // Names of supported layout engines for version number
+                               layoutVersions = ['applewebkit', 'gecko', 'trident', 'edge'],
+                               // Names of known operating systems
+                               platforms = ['win', 'wow64', 'mac', 'linux', 'sunos', 'solaris', 'iphone'],
+                               // Translations for conforming operating system names
+                               platformTranslations = [ ['sunos', 'solaris'], ['wow64', 'win'] ],
+
+                               /**
+                                * Performs multiple replacements on a string
+                                * @ignore
+                                */
+                               translate = function ( source, translations ) {
+                                       var i;
+                                       for ( i = 0; i < translations.length; i++ ) {
+                                               source = source.replace( translations[i][0], translations[i][1] );
+                                       }
+                                       return source;
+                               },
+
+                               // Pre-processing
+
+                               ua = nav.userAgent,
+                               match,
+                               name = uk,
+                               layout = uk,
+                               layoutversion = uk,
+                               platform = uk,
+                               version = x;
+
+                       if ( match = new RegExp( '(' + wildUserAgents.join( '|' ) + ')' ).exec( ua ) ) {
+                               // Takes a userAgent string and translates given text into something we can more easily work with
+                               ua = translate( ua, userAgentTranslations );
+                       }
+                       // Everything will be in lowercase from now on
+                       ua = ua.toLowerCase();
+
+                       // Extraction
+
+                       if ( match = new RegExp( '(' + names.join( '|' ) + ')' ).exec( ua ) ) {
+                               name = translate( match[1], nameTranslations );
+                       }
+                       if ( match = new RegExp( '(' + layouts.join( '|' ) + ')' ).exec( ua ) ) {
+                               layout = translate( match[1], layoutTranslations );
+                       }
+                       if ( match = new RegExp( '(' + layoutVersions.join( '|' ) + ')\\\/(\\d+)').exec( ua ) ) {
+                               layoutversion = parseInt( match[2], 10 );
+                       }
+                       if ( match = new RegExp( '(' + platforms.join( '|' ) + ')' ).exec( nav.platform.toLowerCase() ) ) {
+                               platform = translate( match[1], platformTranslations );
+                       }
+                       if ( match = new RegExp( '(' + versionPrefixes.join( '|' ) + ')' + versionSuffix ).exec( ua ) ) {
+                               version = match[3];
+                       }
+
+                       // Edge Cases -- did I mention about how user agent string lie?
+
+                       // Decode Safari's crazy 400+ version numbers
+                       if ( name === 'safari' && version > 400 ) {
+                               version = '2.0';
+                       }
+                       // Expose Opera 10's lies about being Opera 9.8
+                       if ( name === 'opera' && version >= 9.8 ) {
+                               match = ua.match( /\bversion\/([0-9\.]*)/ );
+                               if ( match && match[1] ) {
+                                       version = match[1];
+                               } else {
+                                       version = '10';
+                               }
+                       }
+                       // And Opera 15's lies about being Chrome
+                       if ( name === 'chrome' && ( match = ua.match( /\bopr\/([0-9\.]*)/ ) ) ) {
+                               if ( match[1] ) {
+                                       name = 'opera';
+                                       version = match[1];
+                               }
+                       }
+                       // And IE 11's lies about being not being IE
+                       if ( layout === 'trident' && layoutversion >= 7 && ( match = ua.match( /\brv[ :\/]([0-9\.]*)/ ) ) ) {
+                               if ( match[1] ) {
+                                       name = 'msie';
+                                       version = match[1];
+                               }
+                       }
+                       // And IE 12's different lies about not being IE
+                       if ( name === 'chrome' && ( match = ua.match( /\bedge\/([0-9\.]*)/ ) ) ) {
+                               name = 'msie';
+                               version = match[1];
+                               layout = 'edge';
+                               layoutversion = parseInt( match[1], 10 );
+                       }
+                       // And Amazon Silk's lies about being Android on mobile or Safari on desktop
+                       if ( match = ua.match( /\bsilk\/([0-9.\-_]*)/ ) ) {
+                               if ( match[1] ) {
+                                       name = 'silk';
+                                       version = match[1];
+                               }
+                       }
+
+                       versionNumber = parseFloat( version, 10 ) || 0.0;
+
+                       // Caching
+
+                       return profileCache[ key  ] = {
+                               name: name,
+                               layout: layout,
+                               layoutVersion: layoutversion,
+                               platform: platform,
+                               version: version,
+                               versionBase: ( version !== x ? Math.floor( versionNumber ).toString() : x ),
+                               versionNumber: versionNumber
+                       };
+               },
+
+               /**
+                * Checks the current browser against a support map object.
+                *
+                * Version numbers passed as numeric values will be compared like numbers (1.2 > 1.11).
+                * Version numbers passed as string values will be compared using a simple component-wise
+                * algorithm, similar to PHP's version_compare ('1.2' < '1.11').
+                *
+                * A browser map is in the following format:
+                *
+                *     {
+                *         // Multiple rules with configurable operators
+                *         'msie': [['>=', 7], ['!=', 9]],
+                *         // Match no versions
+                *         'iphone': false,
+                *         // Match any version
+                *         'android': null
+                *     }
+                *
+                * It can optionally be split into ltr/rtl sections:
+                *
+                *     {
+                *         'ltr': {
+                *             'android': null,
+                *             'iphone': false
+                *         },
+                *         'rtl': {
+                *             'android': false,
+                *             // rules are not inherited from ltr
+                *             'iphone': false
+                *         }
+                *     }
+                *
+                * @param {Object} map Browser support map
+                * @param {Object} [profile] A client-profile object
+                * @param {boolean} [exactMatchOnly=false] Only return true if the browser is matched, otherwise
+                * returns true if the browser is not found.
+                *
+                * @return {boolean} The current browser is in the support map
+                */
+               test: function ( map, profile, exactMatchOnly ) {
+                       /*jshint evil:true */
+
+                       var conditions, dir, i, op, val, j, pieceVersion, pieceVal, compare;
+                       profile = $.isPlainObject( profile ) ? profile : $.client.profile();
+                       if ( map.ltr && map.rtl ) {
+                               dir = $( 'body' ).is( '.rtl' ) ? 'rtl' : 'ltr';
+                               map = map[dir];
+                       }
+                       // Check over each browser condition to determine if we are running in a compatible client
+                       if ( typeof map !== 'object' || map[profile.name] === undefined ) {
+                               // Not found, return true if exactMatchOnly not set, false otherwise
+                               return !exactMatchOnly;
+                       }
+                       conditions = map[profile.name];
+                       if ( conditions === false ) {
+                               // Match no versions
+                               return false;
+                       }
+                       if ( conditions === null ) {
+                               // Match all versions
+                               return true;
+                       }
+                       for ( i = 0; i < conditions.length; i++ ) {
+                               op = conditions[i][0];
+                               val = conditions[i][1];
+                               if ( typeof val === 'string' ) {
+                                       // Perform a component-wise comparison of versions, similar to PHP's version_compare
+                                       // but simpler. '1.11' is larger than '1.2'.
+                                       pieceVersion = profile.version.toString().split( '.' );
+                                       pieceVal = val.split( '.' );
+                                       // Extend with zeroes to equal length
+                                       while ( pieceVersion.length < pieceVal.length ) {
+                                               pieceVersion.push( '0' );
+                                       }
+                                       while ( pieceVal.length < pieceVersion.length ) {
+                                               pieceVal.push( '0' );
+                                       }
+                                       // Compare components
+                                       compare = 0;
+                                       for ( j = 0; j < pieceVersion.length; j++ ) {
+                                               if ( Number( pieceVersion[j] ) < Number( pieceVal[j] ) ) {
+                                                       compare = -1;
+                                                       break;
+                                               } else if ( Number( pieceVersion[j] ) > Number( pieceVal[j] ) ) {
+                                                       compare = 1;
+                                                       break;
+                                               }
+                                       }
+                                       // compare will be -1, 0 or 1, depending on comparison result
+                                       if ( !( eval( String( compare + op + '0' ) ) ) ) {
+                                               return false;
+                                       }
+                               } else if ( typeof val === 'number' ) {
+                                       if ( !( eval( 'profile.versionNumber' + op + val ) ) ) {
+                                               return false;
+                                       }
+                               }
+                       }
+
+                       return true;
+               }
+       };
+}( jQuery ) );
diff --git a/resources/src/jquery/jquery.client.js b/resources/src/jquery/jquery.client.js
deleted file mode 100644 (file)
index df0696f..0000000
+++ /dev/null
@@ -1,308 +0,0 @@
-/**
- * User-agent detection
- *
- * @class jQuery.client
- * @singleton
- */
-( function ( $ ) {
-
-       /**
-        * @private
-        * @property {Object} profileCache Keyed by userAgent string,
-        * value is the parsed $.client.profile object for that user agent.
-        */
-       var profileCache = {};
-
-       $.client = {
-
-               /**
-                * Get an object containing information about the client.
-                *
-                * @param {Object} [nav] An object with a 'userAgent' and 'platform' property.
-                *  Defaults to the global `navigator` object.
-                * @return {Object} The resulting client object will be in the following format:
-                *
-                *     {
-                *         'name': 'firefox',
-                *         'layout': 'gecko',
-                *         'layoutVersion': 20101026,
-                *         'platform': 'linux'
-                *         'version': '3.5.1',
-                *         'versionBase': '3',
-                *         'versionNumber': 3.5,
-                *     }
-                */
-               profile: function ( nav ) {
-                       /*jshint boss: true */
-
-                       if ( nav === undefined ) {
-                               nav = window.navigator;
-                       }
-
-                       // Use the cached version if possible
-                       if ( profileCache[ nav.userAgent + '|' + nav.platform ] !== undefined ) {
-                               return profileCache[ nav.userAgent + '|' + nav.platform ];
-                       }
-
-                       var
-                               versionNumber,
-                               key = nav.userAgent + '|' + nav.platform,
-
-                               // Configuration
-
-                               // Name of browsers or layout engines we don't recognize
-                               uk = 'unknown',
-                               // Generic version digit
-                               x = 'x',
-                               // Strings found in user agent strings that need to be conformed
-                               wildUserAgents = ['Opera', 'Navigator', 'Minefield', 'KHTML', 'Chrome', 'PLAYSTATION 3', 'Iceweasel'],
-                               // Translations for conforming user agent strings
-                               userAgentTranslations = [
-                                       // Tons of browsers lie about being something they are not
-                                       [/(Firefox|MSIE|KHTML,?\slike\sGecko|Konqueror)/, ''],
-                                       // Chrome lives in the shadow of Safari still
-                                       ['Chrome Safari', 'Chrome'],
-                                       // KHTML is the layout engine not the browser - LIES!
-                                       ['KHTML', 'Konqueror'],
-                                       // Firefox nightly builds
-                                       ['Minefield', 'Firefox'],
-                                       // This helps keep different versions consistent
-                                       ['Navigator', 'Netscape'],
-                                       // This prevents version extraction issues, otherwise translation would happen later
-                                       ['PLAYSTATION 3', 'PS3']
-                               ],
-                               // Strings which precede a version number in a user agent string - combined and used as
-                               // match 1 in version detection
-                               versionPrefixes = [
-                                       'camino', 'chrome', 'firefox', 'iceweasel', 'netscape', 'netscape6', 'opera', 'version', 'konqueror',
-                                       'lynx', 'msie', 'safari', 'ps3', 'android'
-                               ],
-                               // Used as matches 2, 3 and 4 in version extraction - 3 is used as actual version number
-                               versionSuffix = '(\\/|\\;?\\s|)([a-z0-9\\.\\+]*?)(\\;|dev|rel|\\)|\\s|$)',
-                               // Names of known browsers
-                               names = [
-                                       'camino', 'chrome', 'firefox', 'iceweasel', 'netscape', 'konqueror', 'lynx', 'msie', 'opera',
-                                       'safari', 'ipod', 'iphone', 'blackberry', 'ps3', 'rekonq', 'android'
-                               ],
-                               // Tanslations for conforming browser names
-                               nameTranslations = [],
-                               // Names of known layout engines
-                               layouts = ['gecko', 'konqueror', 'msie', 'trident', 'edge', 'opera', 'webkit'],
-                               // Translations for conforming layout names
-                               layoutTranslations = [ ['konqueror', 'khtml'], ['msie', 'trident'], ['opera', 'presto'] ],
-                               // Names of supported layout engines for version number
-                               layoutVersions = ['applewebkit', 'gecko', 'trident', 'edge'],
-                               // Names of known operating systems
-                               platforms = ['win', 'wow64', 'mac', 'linux', 'sunos', 'solaris', 'iphone'],
-                               // Translations for conforming operating system names
-                               platformTranslations = [ ['sunos', 'solaris'], ['wow64', 'win'] ],
-
-                               /**
-                                * Performs multiple replacements on a string
-                                * @ignore
-                                */
-                               translate = function ( source, translations ) {
-                                       var i;
-                                       for ( i = 0; i < translations.length; i++ ) {
-                                               source = source.replace( translations[i][0], translations[i][1] );
-                                       }
-                                       return source;
-                               },
-
-                               // Pre-processing
-
-                               ua = nav.userAgent,
-                               match,
-                               name = uk,
-                               layout = uk,
-                               layoutversion = uk,
-                               platform = uk,
-                               version = x;
-
-                       if ( match = new RegExp( '(' + wildUserAgents.join( '|' ) + ')' ).exec( ua ) ) {
-                               // Takes a userAgent string and translates given text into something we can more easily work with
-                               ua = translate( ua, userAgentTranslations );
-                       }
-                       // Everything will be in lowercase from now on
-                       ua = ua.toLowerCase();
-
-                       // Extraction
-
-                       if ( match = new RegExp( '(' + names.join( '|' ) + ')' ).exec( ua ) ) {
-                               name = translate( match[1], nameTranslations );
-                       }
-                       if ( match = new RegExp( '(' + layouts.join( '|' ) + ')' ).exec( ua ) ) {
-                               layout = translate( match[1], layoutTranslations );
-                       }
-                       if ( match = new RegExp( '(' + layoutVersions.join( '|' ) + ')\\\/(\\d+)').exec( ua ) ) {
-                               layoutversion = parseInt( match[2], 10 );
-                       }
-                       if ( match = new RegExp( '(' + platforms.join( '|' ) + ')' ).exec( nav.platform.toLowerCase() ) ) {
-                               platform = translate( match[1], platformTranslations );
-                       }
-                       if ( match = new RegExp( '(' + versionPrefixes.join( '|' ) + ')' + versionSuffix ).exec( ua ) ) {
-                               version = match[3];
-                       }
-
-                       // Edge Cases -- did I mention about how user agent string lie?
-
-                       // Decode Safari's crazy 400+ version numbers
-                       if ( name === 'safari' && version > 400 ) {
-                               version = '2.0';
-                       }
-                       // Expose Opera 10's lies about being Opera 9.8
-                       if ( name === 'opera' && version >= 9.8 ) {
-                               match = ua.match( /\bversion\/([0-9\.]*)/ );
-                               if ( match && match[1] ) {
-                                       version = match[1];
-                               } else {
-                                       version = '10';
-                               }
-                       }
-                       // And Opera 15's lies about being Chrome
-                       if ( name === 'chrome' && ( match = ua.match( /\bopr\/([0-9\.]*)/ ) ) ) {
-                               if ( match[1] ) {
-                                       name = 'opera';
-                                       version = match[1];
-                               }
-                       }
-                       // And IE 11's lies about being not being IE
-                       if ( layout === 'trident' && layoutversion >= 7 && ( match = ua.match( /\brv[ :\/]([0-9\.]*)/ ) ) ) {
-                               if ( match[1] ) {
-                                       name = 'msie';
-                                       version = match[1];
-                               }
-                       }
-                       // And IE 12's different lies about not being IE
-                       if ( name === 'chrome' && ( match = ua.match( /\bedge\/([0-9\.]*)/ ) ) ) {
-                               name = 'msie';
-                               version = match[1];
-                               layout = 'edge';
-                               layoutversion = parseInt( match[1], 10 );
-                       }
-                       // And Amazon Silk's lies about being Android on mobile or Safari on desktop
-                       if ( match = ua.match( /\bsilk\/([0-9.\-_]*)/ ) ) {
-                               if ( match[1] ) {
-                                       name = 'silk';
-                                       version = match[1];
-                               }
-                       }
-
-                       versionNumber = parseFloat( version, 10 ) || 0.0;
-
-                       // Caching
-
-                       return profileCache[ key  ] = {
-                               name: name,
-                               layout: layout,
-                               layoutVersion: layoutversion,
-                               platform: platform,
-                               version: version,
-                               versionBase: ( version !== x ? Math.floor( versionNumber ).toString() : x ),
-                               versionNumber: versionNumber
-                       };
-               },
-
-               /**
-                * Checks the current browser against a support map object.
-                *
-                * Version numbers passed as numeric values will be compared like numbers (1.2 > 1.11).
-                * Version numbers passed as string values will be compared using a simple component-wise
-                * algorithm, similar to PHP's version_compare ('1.2' < '1.11').
-                *
-                * A browser map is in the following format:
-                *
-                *     {
-                *         // Multiple rules with configurable operators
-                *         'msie': [['>=', 7], ['!=', 9]],
-                *         // Match no versions
-                *         'iphone': false,
-                *         // Match any version
-                *         'android': null
-                *     }
-                *
-                * It can optionally be split into ltr/rtl sections:
-                *
-                *     {
-                *         'ltr': {
-                *             'android': null,
-                *             'iphone': false
-                *         },
-                *         'rtl': {
-                *             'android': false,
-                *             // rules are not inherited from ltr
-                *             'iphone': false
-                *         }
-                *     }
-                *
-                * @param {Object} map Browser support map
-                * @param {Object} [profile] A client-profile object
-                * @param {boolean} [exactMatchOnly=false] Only return true if the browser is matched, otherwise
-                * returns true if the browser is not found.
-                *
-                * @return {boolean} The current browser is in the support map
-                */
-               test: function ( map, profile, exactMatchOnly ) {
-                       /*jshint evil: true */
-
-                       var conditions, dir, i, op, val, j, pieceVersion, pieceVal, compare;
-                       profile = $.isPlainObject( profile ) ? profile : $.client.profile();
-                       if ( map.ltr && map.rtl ) {
-                               dir = $( 'body' ).is( '.rtl' ) ? 'rtl' : 'ltr';
-                               map = map[dir];
-                       }
-                       // Check over each browser condition to determine if we are running in a compatible client
-                       if ( typeof map !== 'object' || map[profile.name] === undefined ) {
-                               // Not found, return true if exactMatchOnly not set, false otherwise
-                               return !exactMatchOnly;
-                       }
-                       conditions = map[profile.name];
-                       if ( conditions === false ) {
-                               // Match no versions
-                               return false;
-                       }
-                       if ( conditions === null ) {
-                               // Match all versions
-                               return true;
-                       }
-                       for ( i = 0; i < conditions.length; i++ ) {
-                               op = conditions[i][0];
-                               val = conditions[i][1];
-                               if ( typeof val === 'string' ) {
-                                       // Perform a component-wise comparison of versions, similar to PHP's version_compare
-                                       // but simpler. '1.11' is larger than '1.2'.
-                                       pieceVersion = profile.version.toString().split( '.' );
-                                       pieceVal = val.split( '.' );
-                                       // Extend with zeroes to equal length
-                                       while ( pieceVersion.length < pieceVal.length ) {
-                                               pieceVersion.push( '0' );
-                                       }
-                                       while ( pieceVal.length < pieceVersion.length ) {
-                                               pieceVal.push( '0' );
-                                       }
-                                       // Compare components
-                                       compare = 0;
-                                       for ( j = 0; j < pieceVersion.length; j++ ) {
-                                               if ( Number( pieceVersion[j] ) < Number( pieceVal[j] ) ) {
-                                                       compare = -1;
-                                                       break;
-                                               } else if ( Number( pieceVersion[j] ) > Number( pieceVal[j] ) ) {
-                                                       compare = 1;
-                                                       break;
-                                               }
-                                       }
-                                       // compare will be -1, 0 or 1, depending on comparison result
-                                       if ( !( eval( String( compare + op + '0' ) ) ) ) {
-                                               return false;
-                                       }
-                               } else if ( typeof val === 'number' ) {
-                                       if ( !( eval( 'profile.versionNumber' + op + val ) ) ) {
-                                               return false;
-                                       }
-                               }
-                       }
-
-                       return true;
-               }
-       };
-}( jQuery ) );
index 92d0a76..2d68457 100644 (file)
 .button-colors(@bgColor) {
        background: @bgColor;
 
-       &:hover,
-       &:focus {
+       &:hover {
                // The inner bottom bevel should match the active background color.
                box-shadow: 0 1px rgba(0, 0, 0, 10%), inset 0 -3px rgba(0, 0, 0, 20%);
                border-bottom-color: mix(#000, @bgColor, 20%);
+       }
+
+       &:focus {
+               border-color: rgba(0,0,0,0.2);
+               box-shadow: inset 0 0 0 1px rgba(0,0,0,0.2);
+
                outline: none;
                // remove outline in Firefox
                &::-moz-focus-inner {
index 2e78c1c..2b48c85 100644 (file)
                trackCallbacks = $.Callbacks( 'memory' ),
                trackQueue = [];
 
-       /**
-        * Log a message to window.console, if possible.
-        *
-        * Useful to force logging of some  errors that are otherwise hard to detect (i.e., this logs
-        * also in production mode). Gets console references in each invocation instead of caching the
-        * reference, so that debugging tools loaded later are supported (e.g. Firebug Lite in IE).
-        *
-        * @private
-        * @method log_
-        * @param {string} msg Text for the log entry.
-        * @param {Error} [e]
-        */
-       function log( msg, e ) {
-               var console = window.console;
-               if ( console && console.log ) {
-                       console.log( msg );
-                       // If we have an exception object, log it to the error channel to trigger a
-                       // proper stacktraces in browsers that support it. No fallback as we have no browsers
-                       // that don't support error(), but do support log().
-                       if ( e && console.error ) {
-                               console.error( String( e ), e );
-                       }
-               }
-       }
-
        /**
         * Create an object that can be read from or written to from methods that allow
         * interaction both with single and multiple properties at once.
                         *   error is not module-related or the module cannot be easily identified due to
                         *   batched handling.
                         * @param {string} source Source of the error. Possible values:
+                        *
                         *   - style: stylesheet error (only affects old IE where a special style loading method
                         *     is used)
                         *   - load-callback: exception thrown by user callback
                         *   - module-execute: exception thrown by module code
+                        *   - store-eval: could not evaluate module code cached in localStorage
+                        *   - store-localstorage-init: localStorage or JSON parse error in mw.loader.store.init
+                        *   - store-localstorage-json: JSON conversion error in mw.loader.store.set
+                        *   - store-localstorage-update: localStorage or JSON conversion error in mw.loader.store.update
+                        */
+
+                       /**
+                        * Fired via mw.track on resource loading error conditions.
+                        *
+                        * @event resourceloader_assert
+                        * @param {string} source Source of the error. Possible values:
+                        *
+                        *   - bug-T59567: failed to cache script due to an Opera function -> string conversion
+                        *     bug; see <https://phabricator.wikimedia.org/T59567> for details
                         */
 
                        /**
                                return s;
                        }
 
-                       /**
-                        * Check whether given styles are safe to to a stylesheet.
-                        *
-                        * @private
-                        * @param {string} cssText
-                        * @return {boolean} False if a new one must be created.
-                        */
-                       function canExpandStylesheetWith( cssText ) {
-                               // Makes sure that cssText containing `@import`
-                               // rules will end up in a new stylesheet (as those only work when
-                               // placed at the start of a stylesheet; bug 35562).
-                               return cssText.slice( 0, '@import'.length ) !== '@import';
-                       }
-
                        /**
                         * Add a bit of CSS text to the current browser page.
                         *
                                // Appending a stylesheet and waiting for the browser to repaint
                                // is fairly expensive, this reduces that (bug 45810)
                                if ( cssText ) {
-                                       // Be careful not to extend the buffer with css that needs a new stylesheet
-                                       if ( !cssBuffer || canExpandStylesheetWith( cssText ) ) {
+                                       // Be careful not to extend the buffer with css that needs a new stylesheet.
+                                       // cssText containing `@import` rules needs to go at the start of a buffer,
+                                       // since those only work when placed at the start of a stylesheet; bug 35562.
+                                       if ( !cssBuffer || cssText.slice( 0, '@import'.length ) !== '@import' ) {
                                                // Linebreak for somewhat distinguishable sections
                                                // (the rl-cachekey comment separating each)
                                                cssBuffer += '\n' + cssText;
                                        // (not some other style tag or even a `<meta>` or `<script>`).
                                        if ( $style.data( 'ResourceLoaderDynamicStyleTag' ) === true ) {
                                                // There's already a dynamic <style> tag present and
-                                               // canExpandStylesheetWith() gave a green light to append more to it.
+                                               // we are able to append more to it.
                                                styleEl = $style.get( 0 );
                                                // Support: IE6-10
                                                if ( styleEl.styleSheet ) {
                                                        try {
                                                                styleEl.styleSheet.cssText += cssText;
                                                        } catch ( e ) {
-                                                               log( 'Stylesheet error', e );
                                                                mw.track( 'resourceloader.exception', { exception: e, source: 'stylesheet' } );
                                                        }
                                                } else {
                         * @return {string}
                         */
                        function pad( a, b, c ) {
-                               return [
-                                       a < 10 ? '0' + a : a,
-                                       b < 10 ? '0' + b : b,
-                                       c < 10 ? '0' + c : c
-                               ].join( '' );
+                               return (
+                                       ( a < 10 ? '0' : '' ) + a +
+                                       ( b < 10 ? '0' : '' ) + b +
+                                       ( c < 10 ? '0' : '' ) + c
+                               );
                        }
 
                        /**
                         * order.
                         *
                         * @private
-                        * @param {string} module Module name or array of string module names
+                        * @param {string[]} module Array of string module names
                         * @return {Array} List of dependencies, including 'module'.
-                        * @throws {Error} If circular reference is detected
                         */
-                       function resolve( module ) {
-                               var m, resolved;
-
-                               // Allow calling with an array of module names
-                               if ( $.isArray( module ) ) {
-                                       resolved = [];
-                                       for ( m = 0; m < module.length; m += 1 ) {
-                                               sortDependencies( module[m], resolved );
-                                       }
-                                       return resolved;
-                               }
-
-                               if ( typeof module === 'string' ) {
-                                       resolved = [];
+                       function resolve( modules ) {
+                               var resolved = [];
+                               $.each( modules, function ( idx, module ) {
                                        sortDependencies( module, resolved );
-                                       return resolved;
-                               }
-
-                               throw new Error( 'Invalid module argument: ' + module );
+                               } );
+                               return resolved;
                        }
 
                        /**
-                        * Narrow down a list of module names to those matching a specific
-                        * state (see #registry for a list of valid states).
-                        *
-                        * One can also filter for 'unregistered', which will return the
-                        * modules names that don't have a registry entry.
+                        * Determine whether all dependencies are in state 'ready', which means we may
+                        * execute the module or job now.
                         *
                         * @private
-                        * @param {string|string[]} states Module states to filter by
-                        * @param {Array} [modules] List of module names to filter (optional, by default the
-                        * entire registry is used)
-                        * @return {Array} List of filtered module names
+                        * @param {Array} module Names of modules to be checked
+                        * @return {boolean} True if all modules are in state 'ready', false otherwise
                         */
-                       function filter( states, modules ) {
-                               var list, module, s, m;
-
-                               // Allow states to be given as a string
-                               if ( typeof states === 'string' ) {
-                                       states = [states];
-                               }
-                               // If called without a list of modules, build and use a list of all modules
-                               list = [];
-                               if ( modules === undefined ) {
-                                       modules = [];
-                                       for ( module in registry ) {
-                                               modules[modules.length] = module;
-                                       }
-                               }
-                               // Build a list of modules which are in one of the specified states
-                               for ( s = 0; s < states.length; s += 1 ) {
-                                       for ( m = 0; m < modules.length; m += 1 ) {
-                                               if ( !hasOwn.call( registry, modules[m] ) ) {
-                                                       // Module does not exist
-                                                       if ( states[s] === 'unregistered' ) {
-                                                               // OK, undefined
-                                                               list[list.length] = modules[m];
-                                                       }
-                                               } else {
-                                                       // Module exists, check state
-                                                       if ( registry[modules[m]].state === states[s] ) {
-                                                               // OK, correct state
-                                                               list[list.length] = modules[m];
-                                                       }
-                                               }
+                       function allReady( modules ) {
+                               var i;
+                               for ( i = 0; i < modules.length; i++ ) {
+                                       if ( mw.loader.getState( modules[i] ) !== 'ready' ) {
+                                               return false;
                                        }
                                }
-                               return list;
+                               return true;
                        }
 
                        /**
                         * execute the module or job now.
                         *
                         * @private
-                        * @param {Array} dependencies Dependencies (module names) to be checked.
-                        * @return {boolean} True if all dependencies are in state 'ready', false otherwise
+                        * @param {Array} modules Names of modules to be checked
+                        * @return {boolean} True if no modules are in state 'error' or 'missing', false otherwise
                         */
-                       function allReady( dependencies ) {
-                               return filter( 'ready', dependencies ).length === dependencies.length;
+                       function anyFailed( modules ) {
+                               var i, state;
+                               for ( i = 0; i < modules.length; i++ ) {
+                                       state = mw.loader.getState( modules[i] );
+                                       if ( state === 'error' || state === 'missing' ) {
+                                               return true;
+                                       }
+                               }
+                               return false;
                        }
 
                        /**
                        function handlePending( module ) {
                                var j, job, hasErrors, m, stateChange;
 
-                               if ( $.inArray( registry[module].state, ['error', 'missing'] ) !== -1 ) {
+                               if ( registry[module].state === 'error' || registry[module].state === 'missing' ) {
                                        // If the current module failed, mark all dependent modules also as failed.
                                        // Iterate until steady-state to propagate the error state upwards in the
                                        // dependency tree.
                                        do {
                                                stateChange = false;
                                                for ( m in registry ) {
-                                                       if ( $.inArray( registry[m].state, ['error', 'missing'] ) === -1 ) {
-                                                               if ( filter( ['error', 'missing'], registry[m].dependencies ).length ) {
+                                                       if ( registry[m].state !== 'error' && registry[m].state !== 'missing' ) {
+                                                               if ( anyFailed( registry[m].dependencies ) ) {
                                                                        registry[m].state = 'error';
                                                                        stateChange = true;
                                                                }
 
                                // Execute all jobs whose dependencies are either all satisfied or contain at least one failed module.
                                for ( j = 0; j < jobs.length; j += 1 ) {
-                                       hasErrors = filter( ['error', 'missing'], jobs[j].dependencies ).length > 0;
+                                       hasErrors = anyFailed( jobs[j].dependencies );
                                        if ( hasErrors || allReady( jobs[j].dependencies ) ) {
                                                // All dependencies satisfied, or some have errors
                                                job = jobs[j];
                                                } catch ( e ) {
                                                        // A user-defined callback raised an exception.
                                                        // Swallow it to protect our state machine!
-                                                       log( 'Exception thrown by user callback', e );
-                                                       mw.track( 'resourceloader.exception',
-                                                               { exception: e, module: module, source: 'load-callback' } );
+                                                       mw.track( 'resourceloader.exception', { exception: e, module: module, source: 'load-callback' } );
                                                }
                                        }
                                }
                                        } catch ( e ) {
                                                // This needs to NOT use mw.log because these errors are common in production mode
                                                // and not in debug mode, such as when a symbol that should be global isn't exported
-                                               log( 'Exception thrown by ' + module, e );
                                                registry[module].state = 'error';
                                                mw.track( 'resourceloader.exception', { exception: e, module: module, source: 'module-execute' } );
                                                handlePending( module );
                         *  Ignored (and defaulted to `true`) if the document-ready event has already occurred.
                         */
                        function request( dependencies, ready, error, async ) {
-                               var n;
-
                                // Allow calling by single module name
                                if ( typeof dependencies === 'string' ) {
                                        dependencies = [dependencies];
                                // Add ready and error callbacks if they were given
                                if ( ready !== undefined || error !== undefined ) {
                                        jobs[jobs.length] = {
-                                               'dependencies': filter(
-                                                       ['registered', 'loading', 'loaded'],
-                                                       dependencies
-                                               ),
-                                               'ready': ready,
-                                               'error': error
+                                               dependencies: $.grep( dependencies, function ( module ) {
+                                                       var state = mw.loader.getState( module );
+                                                       return state === 'registered' || state === 'loaded' || state === 'loading';
+                                               ),
+                                               ready: ready,
+                                               error: error
                                        };
                                }
 
-                               // Queue up any dependencies that are registered
-                               dependencies = filter( ['registered'], dependencies );
-                               for ( n = 0; n < dependencies.length; n += 1 ) {
-                                       if ( $.inArray( dependencies[n], queue ) === -1 ) {
-                                               queue[queue.length] = dependencies[n];
+                               $.each( dependencies, function ( idx, module ) {
+                                       var state = mw.loader.getState( module );
+                                       if ( state === 'registered' && $.inArray( module, queue ) === -1 ) {
+                                               queue.push( module );
                                                if ( async ) {
-                                                       // Mark this module as async in the registry
-                                                       registry[dependencies[n]].async = true;
+                                                       registry[module].async = true;
                                                }
                                        }
-                               }
+                               } );
 
-                               // Work the queue
                                mw.loader.work();
                        }
 
                         * @param {Array} modules Modules array
                         */
                        function resolveIndexedDependencies( modules ) {
-                               var i, iLen, j, jLen, module, dependency;
-
-                               // Expand indexed dependency names
-                               for ( i = 0, iLen = modules.length; i < iLen; i++ ) {
-                                       module = modules[i];
+                               $.each( modules, function ( idx, module ) {
                                        if ( module[2] ) {
-                                               for ( j = 0, jLen = module[2].length; j < jLen; j++ ) {
-                                                       dependency = module[2][j];
-                                                       if ( typeof dependency === 'number' ) {
-                                                               module[2][j] = modules[dependency][0];
-                                                       }
-                                               }
+                                               module[2] = $.map( module[2], function ( dep ) {
+                                                       return typeof dep === 'number' ? modules[dep][0] : dep;
+                                               } );
                                        }
-                               }
+                               } );
                        }
 
                        /* Public Members */
                                                        // repopulate these modules to the cache.
                                                        // This means that at most one module will be useless (the one that had
                                                        // the error) instead of all of them.
-                                                       log( 'Error while evaluating data from mw.loader.store', err );
+                                                       mw.track( 'resourceloader.exception', { exception: err, source: 'store-eval' } );
                                                        origBatch = $.grep( origBatch, function ( module ) {
                                                                return registry[module].state === 'loading';
                                                        } );
                                 *     { <media>: [url, ..] }
                                 *
                                 * The reason css strings are not concatenated anymore is bug 31676. We now check
-                                * whether it's safe to extend the stylesheet (see #canExpandStylesheetWith).
+                                * whether it's safe to extend the stylesheet.
                                 *
                                 * @param {Object} [msgs] List of key/value pairs to be added to mw#messages.
                                 * @param {Object} [templates] List of key/value pairs to be added to mw#templates.
                                        if ( allReady( dependencies ) ) {
                                                // Run ready immediately
                                                deferred.resolve();
-                                       } else if ( filter( ['error', 'missing'], dependencies ).length ) {
+                                       } else if ( anyFailed( dependencies ) ) {
                                                // Execute error immediately if any dependencies have errors
                                                deferred.reject(
                                                        new Error( 'One or more dependencies failed to load' ),
                                 *  Defaults to `true` if loading a URL, `false` otherwise.
                                 */
                                load: function ( modules, type, async ) {
-                                       var filtered, m, module, l;
+                                       var filtered, l;
 
                                        // Validate input
                                        if ( typeof modules !== 'object' && typeof modules !== 'string' ) {
                                        // Undefined modules are acceptable here in load(), because load() takes
                                        // an array of unrelated modules, whereas the modules passed to
                                        // using() are related and must all be loaded.
-                                       for ( filtered = [], m = 0; m < modules.length; m += 1 ) {
-                                               if ( hasOwn.call( registry, modules[m] ) ) {
-                                                       module = registry[modules[m]];
-                                                       if ( $.inArray( module.state, ['error', 'missing'] ) === -1 ) {
-                                                               filtered[filtered.length] = modules[m];
-                                                       }
-                                               }
-                                       }
+                                       filtered = $.grep( modules, function ( module ) {
+                                               var state = mw.loader.getState( module );
+                                               return state !== null && state !== 'error' && state !== 'missing';
+                                       } );
 
                                        if ( filtered.length === 0 ) {
                                                return;
                                        }
                                        // Resolve entire dependency map
                                        filtered = resolve( filtered );
-                                       // If all modules are ready, nothing to be done
-                                       if ( allReady( filtered ) ) {
-                                               return;
-                                       }
-                                       // If any modules have errors: also quit.
-                                       if ( filter( ['error', 'missing'], filtered ).length ) {
+                                       // If all modules are ready, or if any modules have errors, nothing to be done.
+                                       if ( allReady( filtered ) || anyFailed( filtered ) ) {
                                                return;
                                        }
                                        // Since some modules are not yet ready, queue up a request.
                                                                return;
                                                        }
                                                } catch ( e ) {
-                                                       log( 'Storage error', e );
+                                                       mw.track( 'resourceloader.exception', { exception: e, source: 'store-localstorage-init' } );
                                                }
 
                                                if ( raw === undefined ) {
                                                                JSON.stringify( descriptor.messages ),
                                                                JSON.stringify( descriptor.templates )
                                                        ];
-                                                       // Attempted workaround for a possible Opera bug (bug 57567).
+                                                       // Attempted workaround for a possible Opera bug (bug T59567).
                                                        // This regex should never match under sane conditions.
                                                        if ( /^\s*\(/.test( args[1] ) ) {
                                                                args[1] = 'function' + args[1];
-                                                               log( 'Detected malformed function stringification (bug 57567)' );
+                                                               mw.track( 'resourceloader.assert', { source: 'bug-T59567' } );
                                                        }
                                                } catch ( e ) {
-                                                       log( 'Storage error', e );
+                                                       mw.track( 'resourceloader.exception', { exception: e, source: 'store-localstorage-json' } );
                                                        return;
                                                }
 
                                                                data = JSON.stringify( mw.loader.store );
                                                                localStorage.setItem( key, data );
                                                        } catch ( e ) {
-                                                               log( 'Storage error', e );
+                                                               mw.track( 'resourceloader.exception', { exception: e, source: 'store-localstorage-update' } );
                                                        }
                                                }
 
        // @deprecated since 1.23 Use $ or jQuery instead
        mw.log.deprecate( window, '$j', $, 'Use $ or jQuery instead.' );
 
+       /**
+        * Log a message to window.console, if possible.
+        *
+        * Useful to force logging of some  errors that are otherwise hard to detect (i.e., this logs
+        * also in production mode). Gets console references in each invocation instead of caching the
+        * reference, so that debugging tools loaded later are supported (e.g. Firebug Lite in IE).
+        *
+        * @private
+        * @method log_
+        * @param {string} topic Stream name passed by mw.track
+        * @param {Object} data Data passed by mw.track
+        * @param {Error} [data.exception]
+        * @param {string} data.source Error source
+        * @param {string} [data.module] Name of module which caused the error
+        */
+       function log( topic, data ) {
+               var msg,
+                       e = data.exception,
+                       source = data.source,
+                       module = data.module,
+                       console = window.console;
+
+               if ( console && console.log ) {
+                       msg = ( e ? 'Exception' : 'Error' ) + ' in ' + source;
+                       if ( module ) {
+                               msg += ' in module ' + module;
+                       }
+                       msg += ( e ? ':' : '.' );
+                       console.log( msg );
+
+                       // If we have an exception object, log it to the error channel to trigger a
+                       // proper stacktraces in browsers that support it. No fallback as we have no browsers
+                       // that don't support error(), but do support log().
+                       if ( e && console.error ) {
+                               console.error( String( e ), e );
+                       }
+               }
+       }
+
+       // subscribe to error streams
+       mw.trackSubscribe( 'resourceloader.exception', log );
+       mw.trackSubscribe( 'resourceloader.assert', log );
+
        // Attach to window and globally alias
        window.mw = window.mediaWiki = mw;
 }( jQuery ) );
index 4d63ea6..77a572d 100644 (file)
@@ -203,9 +203,13 @@ mw.loader.implement("test.quux",function($,jQuery){mw.test.baz({token:123});},{"
                        // Load two modules in separate groups
                        array(
                                array( array( 'test.group.foo', 'test.group.bar' ), ResourceLoaderModule::TYPE_COMBINED ),
-                               '<script src="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;modules=test.group.bar&amp;skin=fallback&amp;*"></script>
-<script src="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;modules=test.group.foo&amp;skin=fallback&amp;*"></script>
-',
+                               '<script>if(window.mw){
+document.write("\u003Cscript src=\"http://127.0.0.1:8080/w/load.php?debug=false\u0026amp;lang=en\u0026amp;modules=test.group.bar\u0026amp;skin=fallback\u0026amp;*\"\u003E\u003C/script\u003E");
+}</script>
+<script>if(window.mw){
+document.write("\u003Cscript src=\"http://127.0.0.1:8080/w/load.php?debug=false\u0026amp;lang=en\u0026amp;modules=test.group.foo\u0026amp;skin=fallback\u0026amp;*\"\u003E\u003C/script\u003E");
+}</script>
+'
                        ),
                );
        }
index 4bcd814..494727a 100644 (file)
@@ -48,7 +48,6 @@ return array(
                        'tests/qunit/suites/resources/jquery/jquery.autoEllipsis.test.js',
                        'tests/qunit/suites/resources/jquery/jquery.byteLength.test.js',
                        'tests/qunit/suites/resources/jquery/jquery.byteLimit.test.js',
-                       'tests/qunit/suites/resources/jquery/jquery.client.test.js',
                        'tests/qunit/suites/resources/jquery/jquery.color.test.js',
                        'tests/qunit/suites/resources/jquery/jquery.colorUtil.test.js',
                        'tests/qunit/suites/resources/jquery/jquery.getAttrs.test.js',
@@ -86,7 +85,6 @@ return array(
                        'jquery.autoEllipsis',
                        'jquery.byteLength',
                        'jquery.byteLimit',
-                       'jquery.client',
                        'jquery.color',
                        'jquery.colorUtil',
                        'jquery.getAttrs',
diff --git a/tests/qunit/suites/resources/jquery/jquery.client.test.js b/tests/qunit/suites/resources/jquery/jquery.client.test.js
deleted file mode 100644 (file)
index ee0f060..0000000
+++ /dev/null
@@ -1,656 +0,0 @@
-( function ( $ ) {
-
-       QUnit.module( 'jquery.client', QUnit.newMwEnvironment() );
-
-       var uacount = 0,
-               // Object keyed by userAgent. Value is an array (human-readable name, client-profile object, navigator.platform value)
-               uas = {
-                       // Internet Explorer 6
-                       // Internet Explorer 7
-                       'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)': {
-                               title: 'Internet Explorer 7',
-                               platform: 'Win32',
-                               profile: {
-                                       name: 'msie',
-                                       layout: 'trident',
-                                       layoutVersion: 'unknown',
-                                       platform: 'win',
-                                       version: '7.0',
-                                       versionBase: '7',
-                                       versionNumber: 7
-                               },
-                               wikiEditor: {
-                                       ltr: true,
-                                       rtl: false
-                               }
-                       },
-                       // Internet Explorer 8
-                       // Internet Explorer 9
-                       // Internet Explorer 10
-                       'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)': {
-                               title: 'Internet Explorer 10',
-                               platform: 'Win32',
-                               profile: {
-                                       name: 'msie',
-                                       layout: 'trident',
-                                       layoutVersion: 6,
-                                       platform: 'win',
-                                       version: '10.0',
-                                       versionBase: '10',
-                                       versionNumber: 10
-                               },
-                               wikiEditor: {
-                                       ltr: true,
-                                       rtl: true
-                               }
-                       },
-                       // Internet Explorer 11
-                       'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko': {
-                               title: 'Internet Explorer 11',
-                               platform: 'Win32',
-                               profile: {
-                                       name: 'msie',
-                                       layout: 'trident',
-                                       layoutVersion: 7,
-                                       platform: 'win',
-                                       version: '11.0',
-                                       versionBase: '11',
-                                       versionNumber: 11
-                               },
-                               wikiEditor: {
-                                       ltr: true,
-                                       rtl: true
-                               }
-                       },
-                       // Internet Explorer 11 - Windows 8.1 x64 Modern UI
-                       'Mozilla/5.0 (Windows NT 6.3; Win64; x64; Trident/7.0; rv:11.0) like Gecko': {
-                               title: 'Internet Explorer 11',
-                               platform: 'Win64',
-                               profile: {
-                                       name: 'msie',
-                                       layout: 'trident',
-                                       layoutVersion: 7,
-                                       platform: 'win',
-                                       version: '11.0',
-                                       versionBase: '11',
-                                       versionNumber: 11
-                               },
-                               wikiEditor: {
-                                       ltr: true,
-                                       rtl: true
-                               }
-                       },
-                       // Internet Explorer 11 - Windows 8.1 x64 desktop UI
-                       'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko': {
-                               title: 'Internet Explorer 11',
-                               platform: 'WOW64',
-                               profile: {
-                                       name: 'msie',
-                                       layout: 'trident',
-                                       layoutVersion: 7,
-                                       platform: 'win',
-                                       version: '11.0',
-                                       versionBase: '11',
-                                       versionNumber: 11
-                               },
-                               wikiEditor: {
-                                       ltr: true,
-                                       rtl: true
-                               }
-                       },
-                       // Internet Explorer 12
-                       'Mozilla/5.0 (Windows NT 6.4; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36 Edge/12.0': {
-                               title: 'Internet Explorer 12',
-                               platform: 'WOW64',
-                               profile: {
-                                       name: 'msie',
-                                       layout: 'edge',
-                                       layoutVersion: 12,
-                                       platform: 'win',
-                                       version: '12.0',
-                                       versionBase: '12',
-                                       versionNumber: 12
-                               },
-                               wikiEditor: {
-                                       ltr: true,
-                                       rtl: true
-                               }
-                       },
-                       // Firefox 2
-                       // Firefox 3.5
-                       'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.19) Gecko/20110420 Firefox/3.5.19': {
-                               title: 'Firefox 3.5',
-                               platform: 'MacIntel',
-                               profile: {
-                                       name: 'firefox',
-                                       layout: 'gecko',
-                                       layoutVersion: 20110420,
-                                       platform: 'mac',
-                                       version: '3.5.19',
-                                       versionBase: '3',
-                                       versionNumber: 3.5
-                               },
-                               wikiEditor: {
-                                       ltr: true,
-                                       rtl: true
-                               }
-                       },
-                       // Firefox 3.6
-                       'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110422 Ubuntu/10.10 (maverick) Firefox/3.6.17': {
-                               title: 'Firefox 3.6',
-                               platform: 'Linux i686',
-                               profile: {
-                                       name: 'firefox',
-                                       layout: 'gecko',
-                                       layoutVersion: 20110422,
-                                       platform: 'linux',
-                                       version: '3.6.17',
-                                       versionBase: '3',
-                                       versionNumber: 3.6
-                               },
-                               wikiEditor: {
-                                       ltr: true,
-                                       rtl: true
-                               }
-                       },
-                       // Firefox 4
-                       'Mozilla/5.0 (Windows NT 6.0; rv:2.0.1) Gecko/20100101 Firefox/4.0.1': {
-                               title: 'Firefox 4',
-                               platform: 'Win32',
-                               profile: {
-                                       name: 'firefox',
-                                       layout: 'gecko',
-                                       layoutVersion: 20100101,
-                                       platform: 'win',
-                                       version: '4.0.1',
-                                       versionBase: '4',
-                                       versionNumber: 4
-                               },
-                               wikiEditor: {
-                                       ltr: true,
-                                       rtl: true
-                               }
-                       },
-                       // Firefox 10 nightly build
-                       'Mozilla/5.0 (X11; Linux x86_64; rv:10.0a1) Gecko/20111103 Firefox/10.0a1': {
-                               title: 'Firefox 10 nightly',
-                               platform: 'Linux',
-                               profile: {
-                                       name: 'firefox',
-                                       layout: 'gecko',
-                                       layoutVersion: 20111103,
-                                       platform: 'linux',
-                                       version: '10.0a1',
-                                       versionBase: '10',
-                                       versionNumber: 10
-                               },
-                               wikiEditor: {
-                                       ltr: true,
-                                       rtl: true
-                               }
-                       },
-                       // Iceweasel 10.0.6
-                       'Mozilla/5.0 (X11; Linux i686; rv:10.0.6) Gecko/20100101 Iceweasel/10.0.6': {
-                               title: 'Iceweasel 10.0.6',
-                               platform: 'Linux',
-                               profile: {
-                                       name: 'iceweasel',
-                                       layout: 'gecko',
-                                       layoutVersion: 20100101,
-                                       platform: 'linux',
-                                       version: '10.0.6',
-                                       versionBase: '10',
-                                       versionNumber: 10
-                               },
-                               wikiEditor: {
-                                       ltr: true,
-                                       rtl: true
-                               }
-                       },
-                       // Iceweasel 15.0.1
-                       'Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0.1 Iceweasel/15.0.1': {
-                               title: 'Iceweasel 15.0.1',
-                               platform: 'Linux',
-                               profile: {
-                                       name: 'iceweasel',
-                                       layout: 'gecko',
-                                       layoutVersion: 20100101,
-                                       platform: 'linux',
-                                       version: '15.0.1',
-                                       versionBase: '15',
-                                       versionNumber: 15
-                               },
-                               wikiEditor: {
-                                       ltr: true,
-                                       rtl: true
-                               }
-                       },
-                       // Firefox 5
-                       // Safari 3
-                       // Safari 4
-                       'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; nl-nl) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7': {
-                               title: 'Safari 4',
-                               platform: 'MacIntel',
-                               profile: {
-                                       name: 'safari',
-                                       layout: 'webkit',
-                                       layoutVersion: 531,
-                                       platform: 'mac',
-                                       version: '4.0.5',
-                                       versionBase: '4',
-                                       versionNumber: 4
-                               },
-                               wikiEditor: {
-                                       ltr: true,
-                                       rtl: true
-                               }
-                       },
-                       'Mozilla/5.0 (Windows; U; Windows NT 6.0; cs-CZ) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7': {
-                               title: 'Safari 4',
-                               platform: 'Win32',
-                               profile: {
-                                       name: 'safari',
-                                       layout: 'webkit',
-                                       layoutVersion: 533,
-                                       platform: 'win',
-                                       version: '4.0.5',
-                                       versionBase: '4',
-                                       versionNumber: 4
-                               },
-                               wikiEditor: {
-                                       ltr: true,
-                                       rtl: true
-                               }
-                       },
-                       // Safari 5
-                       // Safari 6
-                       'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/536.29.13 (KHTML, like Gecko) Version/6.0.4 Safari/536.29.13': {
-                               title: 'Safari 6',
-                               platform: 'MacIntel',
-                               profile: {
-                                       name: 'safari',
-                                       layout: 'webkit',
-                                       layoutVersion: 536,
-                                       platform: 'mac',
-                                       version: '6.0.4',
-                                       versionBase: '6',
-                                       versionNumber: 6
-                               },
-                               wikiEditor: {
-                                       ltr: true,
-                                       rtl: true
-                               }
-                       },
-                       // Safari 6.0.5+ (doesn't have the comma in "KHTML, like Gecko")
-                       'Mozilla/5.0 (Macintosh; Intel Mac OS X 1084) AppleWebKit/536.30.1 (KHTML like Gecko) Version/6.0.5 Safari/536.30.1': {
-                               title: 'Safari 6',
-                               platform: 'MacIntel',
-                               profile: {
-                                       name: 'safari',
-                                       layout: 'webkit',
-                                       layoutVersion: 536,
-                                       platform: 'mac',
-                                       version: '6.0.5',
-                                       versionBase: '6',
-                                       versionNumber: 6
-                               },
-                               wikiEditor: {
-                                       ltr: true,
-                                       rtl: true
-                               }
-                       },
-                       // Opera 10+
-                       'Opera/9.80 (Windows NT 5.1)': {
-                               title: 'Opera 10+ (exact version unspecified)',
-                               platform: 'Win32',
-                               profile: {
-                                       name: 'opera',
-                                       layout: 'presto',
-                                       layoutVersion: 'unknown',
-                                       platform: 'win',
-                                       version: '10',
-                                       versionBase: '10',
-                                       versionNumber: 10
-                               },
-                               wikiEditor: {
-                                       ltr: true,
-                                       rtl: true
-                               }
-                       },
-                       // Opera 12
-                       'Opera/9.80 (Windows NT 5.1) Presto/2.12.388 Version/12.11': {
-                               title: 'Opera 12',
-                               platform: 'Win32',
-                               profile: {
-                                       name: 'opera',
-                                       layout: 'presto',
-                                       layoutVersion: 'unknown',
-                                       platform: 'win',
-                                       version: '12.11',
-                                       versionBase: '12',
-                                       versionNumber: 12.11
-                               },
-                               wikiEditor: {
-                                       ltr: true,
-                                       rtl: true
-                               }
-                       },
-                       // Opera 15 (WebKit-based)
-                       'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.52 Safari/537.36 OPR/15.0.1147.130': {
-                               title: 'Opera 15',
-                               platform: 'Win32',
-                               profile: {
-                                       name: 'opera',
-                                       layout: 'webkit',
-                                       layoutVersion: 537,
-                                       platform: 'win',
-                                       version: '15.0.1147.130',
-                                       versionBase: '15',
-                                       versionNumber: 15
-                               },
-                               wikiEditor: {
-                                       ltr: true,
-                                       rtl: true
-                               }
-                       },
-                       // Chrome 5
-                       // Chrome 6
-                       // Chrome 7
-                       // Chrome 8
-                       // Chrome 9
-                       // Chrome 10
-                       // Chrome 11
-                       // Chrome 12
-                       'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_5_8) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.112 Safari/534.30': {
-                               title: 'Chrome 12',
-                               platform: 'MacIntel',
-                               profile: {
-                                       name: 'chrome',
-                                       layout: 'webkit',
-                                       layoutVersion: 534,
-                                       platform: 'mac',
-                                       version: '12.0.742.112',
-                                       versionBase: '12',
-                                       versionNumber: 12
-                               },
-                               wikiEditor: {
-                                       ltr: true,
-                                       rtl: true
-                               }
-                       },
-                       'Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.68 Safari/534.30': {
-                               title: 'Chrome 12',
-                               platform: 'Linux i686',
-                               profile: {
-                                       name: 'chrome',
-                                       layout: 'webkit',
-                                       layoutVersion: 534,
-                                       platform: 'linux',
-                                       version: '12.0.742.68',
-                                       versionBase: '12',
-                                       versionNumber: 12
-                               },
-                               wikiEditor: {
-                                       ltr: true,
-                                       rtl: true
-                               }
-                       },
-                       // Android WebKit Browser 2.3
-                       'Mozilla/5.0 (Linux; U; Android 2.3.5; en-us; HTC Vision Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1': {
-                               title: 'Android WebKit Browser 2.3',
-                               platform: 'Linux armv7l',
-                               profile: {
-                                       name: 'android',
-                                       layout: 'webkit',
-                                       layoutVersion: 533,
-                                       platform: 'linux',
-                                       version: '2.3.5',
-                                       versionBase: '2',
-                                       versionNumber: 2.3
-                               },
-                               wikiEditor: {
-                                       ltr: true,
-                                       rtl: true
-                               }
-                       },
-                       // Rekonq (bug 34924)
-                       'Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.34 (KHTML, like Gecko) rekonq Safari/534.34': {
-                               title: 'Rekonq',
-                               platform: 'Linux i686',
-                               profile: {
-                                       name: 'rekonq',
-                                       layout: 'webkit',
-                                       layoutVersion: 534,
-                                       platform: 'linux',
-                                       version: '534.34',
-                                       versionBase: '534',
-                                       versionNumber: 534.34
-                               },
-                               wikiEditor: {
-                                       ltr: true,
-                                       rtl: true
-                               }
-                       },
-                       // Konqueror
-                       'Mozilla/5.0 (X11; Linux i686) KHTML/4.9.1 (like Gecko) Konqueror/4.9': {
-                               title: 'Konqueror',
-                               platform: 'Linux i686',
-                               profile: {
-                                       name: 'konqueror',
-                                       layout: 'khtml',
-                                       layoutVersion: 'unknown',
-                                       platform: 'linux',
-                                       version: '4.9.1',
-                                       versionBase: '4',
-                                       versionNumber: 4.9
-                               },
-                               wikiEditor: {
-                                       // '4.9' is less than '4.11'.
-                                       ltr: false,
-                                       rtl: false
-                               },
-                               wikiEditorLegacy: {
-                                       // The check is missing in legacyTestMap
-                                       ltr: true,
-                                       rtl: true
-                               }
-                       },
-                       // Amazon Silk
-                       'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.0.13.81_10003810) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=true': {
-                               title: 'Silk',
-                               platform: 'Desktop',
-                               profile: {
-                                       name: 'silk',
-                                       layout: 'webkit',
-                                       layoutVersion: 533,
-                                       platform: 'unknown',
-                                       version: '1.0.13.81_10003810',
-                                       versionBase: '1',
-                                       versionNumber: 1
-                               },
-                               wikiEditor: {
-                                       ltr: true,
-                                       rtl: true
-                               }
-                       },
-                       'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/2.1 Mobile Safari/535.19 Silk-Accelerated=true': {
-                               title: 'Silk',
-                               platform: 'Mobile',
-                               profile: {
-                                       name: 'silk',
-                                       layout: 'webkit',
-                                       layoutVersion: 535,
-                                       platform: 'unknown',
-                                       version: '2.1',
-                                       versionBase: '2',
-                                       versionNumber: 2.1
-                               },
-                               wikiEditor: {
-                                       ltr: true,
-                                       rtl: true
-                               }
-                       }
-               },
-               testMap = {
-                       // Example from WikiEditor, modified to provide version identifiers as strings and with
-                       // Konqueror 4.11 check added.
-                       'ltr': {
-                               'msie': [['>=', '7.0']],
-                               'firefox': [['>=', '2']],
-                               'opera': [['>=', '9.6']],
-                               'safari': [['>=', '3']],
-                               'chrome': [['>=', '3']],
-                               'netscape': [['>=', '9']],
-                               'konqueror': [['>=', '4.11']],
-                               'blackberry': false,
-                               'ipod': false,
-                               'iphone': false
-                       },
-                       'rtl': {
-                               'msie': [['>=', '8']],
-                               'firefox': [['>=', '2']],
-                               'opera': [['>=', '9.6']],
-                               'safari': [['>=', '3']],
-                               'chrome': [['>=', '3']],
-                               'netscape': [['>=', '9']],
-                               'konqueror': [['>=', '4.11']],
-                               'blackberry': false,
-                               'ipod': false,
-                               'iphone': false
-                       }
-               },
-               legacyTestMap = {
-                       // Original example from WikiEditor.
-                       // This is using the old, but still supported way of providing version identifiers as numbers
-                       // instead of strings; with this method, 4.9 would be considered larger than 4.11.
-                       'ltr': {
-                               'msie': [['>=', 7.0]],
-                               'firefox': [['>=', 2]],
-                               'opera': [['>=', 9.6]],
-                               'safari': [['>=', 3]],
-                               'chrome': [['>=', 3]],
-                               'netscape': [['>=', 9]],
-                               'blackberry': false,
-                               'ipod': false,
-                               'iphone': false
-                       },
-                       'rtl': {
-                               'msie': [['>=', 8]],
-                               'firefox': [['>=', 2]],
-                               'opera': [['>=', 9.6]],
-                               'safari': [['>=', 3]],
-                               'chrome': [['>=', 3]],
-                               'netscape': [['>=', 9]],
-                               'blackberry': false,
-                               'ipod': false,
-                               'iphone': false
-                       }
-               }
-       ;
-
-       // Count test cases
-       $.each( uas, function () {
-               uacount++;
-       } );
-
-       QUnit.test( 'profile( navObject )', 7, function ( assert ) {
-               var p = $.client.profile();
-
-               function unknownOrType( val, type, summary ) {
-                       assert.ok( typeof val === type || val === 'unknown', summary );
-               }
-
-               assert.equal( typeof p, 'object', 'profile returns an object' );
-               unknownOrType( p.layout, 'string', 'p.layout is a string (or "unknown")' );
-               unknownOrType( p.layoutVersion, 'number', 'p.layoutVersion is a number (or "unknown")' );
-               unknownOrType( p.platform, 'string', 'p.platform is a string (or "unknown")' );
-               unknownOrType( p.version, 'string', 'p.version is a string (or "unknown")' );
-               unknownOrType( p.versionBase, 'string', 'p.versionBase is a string (or "unknown")' );
-               assert.equal( typeof p.versionNumber, 'number', 'p.versionNumber is a number' );
-       } );
-
-       QUnit.test( 'profile( navObject ) - samples', uacount, function ( assert ) {
-               // Loop through and run tests
-               $.each( uas, function ( rawUserAgent, data ) {
-                       // Generate a client profile object and compare recursively
-                       var ret = $.client.profile( {
-                               userAgent: rawUserAgent,
-                               platform: data.platform
-                       } );
-                       assert.deepEqual( ret, data.profile, 'Client profile support check for ' + data.title + ' (' + data.platform + '): ' + rawUserAgent );
-               } );
-       } );
-
-       QUnit.test( 'test( testMap )', 4, function ( assert ) {
-               // .test() uses eval, make sure no exceptions are thrown
-               // then do a basic return value type check
-               var testMatch = $.client.test( testMap ),
-                       ie7Profile = $.client.profile( {
-                               'userAgent': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)',
-                               'platform': ''
-                       } );
-
-               assert.equal( typeof testMatch, 'boolean', 'map with ltr/rtl split returns a boolean value' );
-
-               testMatch = $.client.test( testMap.ltr );
-
-               assert.equal( typeof testMatch, 'boolean', 'simple map (without ltr/rtl split) returns a boolean value' );
-
-               assert.equal( $.client.test( {
-                       'msie': null
-               }, ie7Profile ), true, 'returns true if any version of a browser are allowed (null)' );
-
-               assert.equal( $.client.test( {
-                       'msie': false
-               }, ie7Profile ), false, 'returns false if all versions of a browser are not allowed (false)' );
-       } );
-
-       QUnit.test( 'test( testMap, exactMatchOnly )', 2, function ( assert ) {
-               var ie7Profile = $.client.profile( {
-                       'userAgent': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)',
-                       'platform': ''
-               } );
-
-               assert.equal( $.client.test( {
-                       'firefox': [['>=', 2]]
-               }, ie7Profile, false ), true, 'returns true if browser not found and exactMatchOnly not set' );
-
-               assert.equal( $.client.test( {
-                       'firefox': [['>=', 2]]
-               }, ie7Profile, true ), false, 'returns false if browser not found and exactMatchOnly is set' );
-       } );
-
-       QUnit.test( 'test( testMap ), test( legacyTestMap ) - WikiEditor sample', uacount * 2 * 2, function ( assert ) {
-               var $body = $( 'body' ),
-                       bodyClasses = $body.attr( 'class' );
-
-               // Loop through and run tests
-               $.each( uas, function ( agent, data ) {
-                       $.each( ['ltr', 'rtl'], function ( i, dir ) {
-                               var profile, testMatch, legacyTestMatch;
-                               $body.removeClass( 'ltr rtl' ).addClass( dir );
-                               profile = $.client.profile( {
-                                       userAgent: agent,
-                                       platform: data.platform
-                               } );
-                               testMatch = $.client.test( testMap, profile );
-                               legacyTestMatch = $.client.test( legacyTestMap, profile );
-                               $body.removeClass( dir );
-
-                               assert.equal(
-                                       testMatch,
-                                       data.wikiEditor[dir],
-                                       'testing comparison based on ' + dir + ', ' + agent
-                               );
-                               assert.equal(
-                                       legacyTestMatch,
-                                       data.wikiEditorLegacy ? data.wikiEditorLegacy[dir] : data.wikiEditor[dir],
-                                       'testing comparison based on ' + dir + ', ' + agent + ' (legacyTestMap)'
-                               );
-                       } );
-               } );
-
-               // Restore body classes
-               $body.attr( 'class', bodyClasses );
-       } );
-}( jQuery ) );