Merge "mw.Title: Use $wgIllegalFileChars for file title checking"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Sun, 31 Jul 2016 05:03:13 +0000 (05:03 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Sun, 31 Jul 2016 05:03:13 +0000 (05:03 +0000)
184 files changed:
RELEASE-NOTES-1.28
autoload.php
composer.json
docs/extension.schema.json
docs/extension.schema.v1.json
docs/hooks.txt
includes/AutoLoader.php
includes/CategoryViewer.php
includes/EditPage.php
includes/GlobalFunctions.php
includes/Linker.php
includes/MovePage.php
includes/OutputPage.php
includes/RevisionList.php
includes/SiteConfiguration.php
includes/Title.php
includes/WatchedItem.php
includes/WebRequest.php
includes/WikiMap.php
includes/api/ApiBase.php
includes/api/ApiContinuationManager.php
includes/api/ApiLogin.php
includes/api/ApiMain.php
includes/api/ApiModuleManager.php
includes/api/ApiOpenSearch.php
includes/api/ApiPageSet.php
includes/api/ApiParse.php
includes/api/ApiQueryBase.php
includes/api/ApiQueryDuplicateFiles.php
includes/api/ApiQueryInfo.php
includes/api/ApiQueryPrefixSearch.php
includes/api/ApiQueryRecentChanges.php
includes/api/ApiQuerySearch.php
includes/api/ApiQuerySiteinfo.php
includes/api/ApiQueryUserContributions.php
includes/api/ApiResult.php
includes/api/SearchApi.php
includes/api/i18n/cs.json
includes/api/i18n/de.json
includes/api/i18n/en.json
includes/api/i18n/fr.json
includes/api/i18n/gl.json
includes/api/i18n/he.json
includes/api/i18n/it.json
includes/api/i18n/ksh.json
includes/api/i18n/oc.json
includes/api/i18n/pl.json
includes/api/i18n/pt.json
includes/api/i18n/ru.json
includes/api/i18n/zh-hans.json
includes/cache/HTMLFileCache.php
includes/changes/ChangesList.php
includes/collation/Collation.php
includes/collation/IcuCollation.php
includes/db/DBConnRef.php
includes/db/Database.php
includes/db/DatabaseMysqlBase.php
includes/db/IDatabase.php
includes/db/loadbalancer/LBFactory.php
includes/db/loadbalancer/LoadBalancer.php
includes/deferred/CallableUpdate.php [deleted file]
includes/deferred/MWCallableUpdate.php [new file with mode: 0644]
includes/diff/DifferenceEngine.php
includes/filerepo/file/LocalFile.php
includes/htmlform/HTMLForm.php
includes/htmlform/HTMLFormField.php
includes/import/WikiImporter.php
includes/import/WikiRevision.php
includes/installer/i18n/ba.json
includes/installer/i18n/be-tarask.json
includes/installer/i18n/cs.json
includes/installer/i18n/de.json
includes/installer/i18n/fa.json
includes/installer/i18n/fr.json
includes/installer/i18n/it.json
includes/installer/i18n/ko.json
includes/installer/i18n/lb.json
includes/installer/i18n/mk.json
includes/installer/i18n/ru.json
includes/installer/i18n/sv.json
includes/installer/i18n/zh-hans.json
includes/libs/objectcache/WANObjectCache.php
includes/linker/LinkRenderer.php
includes/media/MediaHandler.php
includes/page/WikiPage.php
includes/parser/MWTidy.php
includes/parser/Parser.php
includes/parser/ParserOutput.php
includes/profiler/SectionProfiler.php
includes/registration/ExtensionProcessor.php
includes/resourceloader/ResourceLoader.php
includes/revisiondelete/RevDelArchivedFileItem.php
includes/revisiondelete/RevDelFileItem.php
includes/revisiondelete/RevDelItem.php
includes/revisiondelete/RevDelList.php
includes/session/Session.php
includes/specials/SpecialNewimages.php
includes/specials/SpecialPreferences.php
includes/specials/SpecialSearch.php
includes/specials/SpecialUserrights.php
includes/specials/pagers/NewFilesPager.php
includes/user/User.php
includes/widget/ComplexTitleInputWidget.php
includes/widget/SearchInputWidget.php
includes/widget/TitleInputWidget.php
includes/widget/UserInputWidget.php
languages/i18n/ar.json
languages/i18n/ast.json
languages/i18n/azb.json
languages/i18n/ba.json
languages/i18n/be-tarask.json
languages/i18n/be.json
languages/i18n/bg.json
languages/i18n/bn.json
languages/i18n/bs.json
languages/i18n/ca.json
languages/i18n/ce.json
languages/i18n/de.json
languages/i18n/diq.json
languages/i18n/el.json
languages/i18n/en.json
languages/i18n/es.json
languages/i18n/eu.json
languages/i18n/fa.json
languages/i18n/fr.json
languages/i18n/got.json
languages/i18n/he.json
languages/i18n/hr.json
languages/i18n/hsb.json
languages/i18n/ja.json
languages/i18n/ko.json
languages/i18n/ksh.json
languages/i18n/lb.json
languages/i18n/lij.json
languages/i18n/lki.json
languages/i18n/lt.json
languages/i18n/lv.json
languages/i18n/mk.json
languages/i18n/mr.json
languages/i18n/nap.json
languages/i18n/nn.json
languages/i18n/oc.json
languages/i18n/pa.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/ru.json
languages/i18n/sat.json
languages/i18n/sd.json
languages/i18n/sgs.json
languages/i18n/sk.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/tcy.json
languages/i18n/uk.json
languages/i18n/ur.json
languages/i18n/yi.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
maintenance/Maintenance.php
maintenance/convertExtensionToRegistration.php
maintenance/doMaintenance.php
maintenance/importTextFiles.php
maintenance/interwiki.list
maintenance/interwiki.sql
maintenance/syncFileBackend.php
resources/Resources.php
resources/src/mediawiki.special/mediawiki.special.preferences.js
resources/src/mediawiki.special/mediawiki.special.preferences.styles.css
resources/src/mediawiki.special/mediawiki.special.search.styles.css
resources/src/mediawiki.special/mediawiki.special.userrights.js [new file with mode: 0644]
resources/src/mediawiki/mediawiki.htmlform.js
resources/src/mediawiki/mediawiki.js
resources/src/mediawiki/mediawiki.notification.convertmessagebox.js [new file with mode: 0644]
resources/src/mediawiki/mediawiki.notification.convertmessagebox.styles.less [new file with mode: 0644]
tests/parser/parserTest.inc
tests/phpunit/includes/WatchedItemIntegrationTest.php
tests/phpunit/includes/WatchedItemUnitTest.php
tests/phpunit/includes/WikiMapTest.php
tests/phpunit/includes/api/ApiLoginTest.php
tests/phpunit/includes/api/ApiOpenSearchTest.php [new file with mode: 0644]
tests/phpunit/includes/objectcache/RedisBagOStuffTest.php
tests/phpunit/includes/registration/ExtensionProcessorTest.php
tests/phpunit/includes/user/UserTest.php

index a20bec0..41e94be 100644 (file)
@@ -36,6 +36,8 @@ production.
 * Added a new hook, 'UploadVerifyUpload', which can be used to reject a file
   upload. Unlike 'UploadVerifyFile' it provides information about upload comment
   and the file description page, but does not run for uploads to stash.
+* (T141604) Extensions can now provide a better error message when their
+  maintenance scripts are run without the extension being installed.
 
 === External library changes in 1.28 ===
 
@@ -49,6 +51,13 @@ production.
 === Bug fixes in 1.28 ===
 
 === Action API changes in 1.28 ===
+* Added 'maxarticlesize' property to action=query&meta=siteinfo which contains
+  the value of $wgMaxArticleSize.
+* Property 'modulemessages' from action=parse&prop=modules was removed
+  (deprecated since 1.26).
+* The following response properties from action=login, deprecated in 1.27, are
+  now removed: lgtoken, cookieprefix, sessionid. Clients should handle cookies
+  to properly manage session state.
 
 === Action API internal changes in 1.28 ===
 * Added a new hook, 'ApiMakeParserOptions', to allow extensions to better
@@ -75,6 +84,14 @@ changes to languages because of Phabricator reports.
 * The 'UserLoginComplete' hook has a new parameter to differentiate between actual
   login and visiting the login page while already logged in.
 * ResourceLoader::makeLoaderURL() was removed (deprecated since 1.24).
+* $.fn.liveAndTestAtStart was removed (deprecated since 1.24).
+* Linker::link() and Linker::linkKnown() were deprecated; please instead use
+  MediaWiki\Linker\LinkRenderer. In addition, the LinkBegin and LinkEnd hooks
+  were replaced by HtmlPageLinkRendererBegin and HtmlPageLinkRendererEnd
+  respectively. See docs/hooks.txt for the specific changes needed for those hooks.
+* The 'ParserLimitReportFormat' hook was removed.
+* Disabled "bug 2702" HTML tidying of parsed UI messages on wikis where Tidy is
+  disabled.
 
 == Compatibility ==
 
index 8c16adf..5808040 100644 (file)
@@ -755,7 +755,7 @@ $wgAutoloadLocalClasses = [
        'LonelyPagesPage' => __DIR__ . '/includes/specials/SpecialLonelypages.php',
        'LongPagesPage' => __DIR__ . '/includes/specials/SpecialLongpages.php',
        'MIMEsearchPage' => __DIR__ . '/includes/specials/SpecialMIMEsearch.php',
-       'MWCallableUpdate' => __DIR__ . '/includes/deferred/CallableUpdate.php',
+       'MWCallableUpdate' => __DIR__ . '/includes/deferred/MWCallableUpdate.php',
        'MWContentSerializationException' => __DIR__ . '/includes/content/ContentHandler.php',
        'MWCryptHKDF' => __DIR__ . '/includes/utils/MWCryptHKDF.php',
        'MWCryptHash' => __DIR__ . '/includes/utils/MWCryptHash.php',
index 54eb3c0..1bd3d4c 100644 (file)
@@ -45,7 +45,7 @@
        },
        "require-dev": {
                "jakub-onderka/php-parallel-lint": "0.9.2",
-               "justinrainbow/json-schema": "~1.3",
+               "justinrainbow/json-schema": "~1.6",
                "mediawiki/mediawiki-codesniffer": "0.7.2",
                "monolog/monolog": "~1.18.2",
                "nikic/php-parser": "1.4.1",
index 14a9731..110e99d 100644 (file)
                                        "capitallinkoverride": {
                                                "type": "boolean",
                                                "description": "Set $wgCapitalLinks on a per-namespace basis"
+                                       },
+                                       "conditional": {
+                                               "type": "boolean",
+                                               "description": "Whether the namespace is conditional upon configuration and should not be registered (requires separate registration via a hook)",
+                                               "default": false
                                        }
                                },
                                "required": ["id", "constant", "name"]
                        "description": "Configuration options for this extension",
                        "patternProperties": {
                                "^[a-zA-Z_\u007f-\u00ff][a-zA-Z0-9_\u007f-\u00ff]*$": {
+                                       "type": "object",
                                        "properties": {
                                                "value": {
                                                        "required": true
                                                        ],
                                                        "default": "array_merge"
                                                },
+                                               "path": {
+                                                       "description": "Whether this should be interpreted as a filesystem path, relative to extension directory root",
+                                                       "type": "boolean",
+                                                       "default": false
+                                               },
                                                "description": {
                                                        "type": ["string", "array"],
                                                        "description": "A description of the config setting, mostly for documentation/developers"
index 893facf..37235e9 100644 (file)
                                        "capitallinkoverride": {
                                                "type": "boolean",
                                                "description": "Set $wgCapitalLinks on a per-namespace basis"
+                                       },
+                                       "conditional": {
+                                               "type": "boolean",
+                                               "description": "Whether the namespace is conditional upon configuration and should not be registered (requires separate registration via a hook)",
+                                               "default": false
                                        }
                                },
                                "required": ["id", "constant", "name"]
index e1b3974..57240c9 100644 (file)
@@ -2360,24 +2360,12 @@ cache or return false to not use it.
 &$parser: Parser object
 &$varCache: variable cache (array)
 
-'ParserLimitReport': DEPRECATED! Use ParserLimitReportPrepare and
-ParserLimitReportFormat instead.
+'ParserLimitReport': DEPRECATED! Use ParserLimitReportPrepare instead.
 Called at the end of Parser:parse() when the parser will
 include comments about size of the text parsed.
 $parser: Parser object
 &$limitReport: text that will be included (without comment tags)
 
-'ParserLimitReportFormat': Called for each row in the parser limit report that
-needs formatting. If nothing handles this hook, the default is to use "$key" to
-get the label, and "$key-value" or "$key-value-text"/"$key-value-html" to
-format the value.
-$key: Key for the limit report item (string)
-&$value: Value of the limit report item
-&$report: String onto which to append the data
-$isHTML: If true, $report is an HTML table with two columns; if false, it's
-  text intended for display in a monospaced font.
-$localize: If false, $report should be output in English.
-
 'ParserLimitReportPrepare': Called at the end of Parser:parse() when the parser
 will include comments about size of the text parsed. Hooks should use
 $output->setLimitReportData() to populate data. Functions for this hook should
index 883b8a3..8dc7d40 100644 (file)
@@ -81,18 +81,6 @@ class AutoLoader {
                require $filename;
        }
 
-       /**
-        * Force a class to be run through the autoloader, helpful for things like
-        * Sanitizer that have define()s outside of their class definition. Of course
-        * this wouldn't be necessary if everything in MediaWiki was class-based. Sigh.
-        *
-        * @param string $class
-        * @return bool Return the results of class_exists() so we know if we were successful
-        */
-       static function loadClass( $class ) {
-               return class_exists( $class );
-       }
-
        /**
         * Method to clear the protected class property $autoloadLocalClassesLower.
         * Used in tests.
index 8dd3f5c..490f548 100644 (file)
@@ -407,11 +407,26 @@ class CategoryViewer extends ContextSource {
                return $r;
        }
 
+       /**
+        * Return pretty name which is display name if given and different from prefix text or
+        * the unprefixed page name.
+        *
+        * @return string HTML safe name.
+        */
+       function getPrettyPageNameHtml() {
+               $displayTitle = $this->getOutput()->getPageTitle();
+               if ( $displayTitle === $this->getTitle()->getPrefixedText() ) {
+                       return htmlspecialchars( $this->getTitle()->getText() );
+               } else {
+                       return $displayTitle;
+               }
+       }
+
        /**
         * @return string
         */
        function getPagesSection() {
-               $ti = wfEscapeWikiText( $this->title->getText() );
+               $name = $this->getPrettyPageNameHtml();
                # Don't show articles section if there are none.
                $r = '';
 
@@ -427,7 +442,7 @@ class CategoryViewer extends ContextSource {
 
                if ( $rescnt > 0 ) {
                        $r = "<div id=\"mw-pages\">\n";
-                       $r .= '<h2>' . $this->msg( 'category_header', $ti )->parse() . "</h2>\n";
+                       $r .= '<h2>' . $this->msg( 'category_header' )->rawParams( $name )->parse() . "</h2>\n";
                        $r .= $countmsg;
                        $r .= $this->getSectionPagingLinks( 'page' );
                        $r .= $this->formatList( $this->articles, $this->articles_start_char );
@@ -441,6 +456,7 @@ class CategoryViewer extends ContextSource {
         * @return string
         */
        function getImageSection() {
+               $name = $this->getPrettyPageNameHtml();
                $r = '';
                $rescnt = $this->showGallery ? $this->gallery->count() : count( $this->imgsNoGallery );
                $dbcnt = $this->cat->getFileCount();
@@ -450,10 +466,7 @@ class CategoryViewer extends ContextSource {
                if ( $rescnt > 0 ) {
                        $r .= "<div id=\"mw-category-media\">\n";
                        $r .= '<h2>' .
-                               $this->msg(
-                                       'category-media-header',
-                                       wfEscapeWikiText( $this->title->getText() )
-                               )->text() .
+                               $this->msg( 'category-media-header' )->rawParams( $name )->parse() .
                                "</h2>\n";
                        $r .= $countmsg;
                        $r .= $this->getSectionPagingLinks( 'file' );
index 362f905..674cf28 100644 (file)
@@ -260,9 +260,6 @@ class EditPage {
        /** @var bool */
        public $tooBig = false;
 
-       /** @var bool */
-       public $kblength = false;
-
        /** @var bool */
        public $missingComment = false;
 
@@ -396,6 +393,9 @@ class EditPage {
        /** @var bool */
        protected $edit;
 
+       /** @var bool|int */
+       protected $contentLength = false;
+
        /**
         * @var bool Set in ApiEditPage, based on ContentHandler::allowsDirectApiEditing
         */
@@ -1774,8 +1774,8 @@ class EditPage {
                        return $status;
                }
 
-               $this->kblength = (int)( strlen( $this->textbox1 ) / 1024 );
-               if ( $this->kblength > $wgMaxArticleSize ) {
+               $this->contentLength = strlen( $this->textbox1 );
+               if ( $this->contentLength > $wgMaxArticleSize * 1024 ) {
                        // Error will be displayed by showEditForm()
                        $this->tooBig = true;
                        $status->setResult( false, self::AS_CONTENT_TOO_BIG );
@@ -2062,8 +2062,8 @@ class EditPage {
                }
 
                // Check for length errors again now that the section is merged in
-               $this->kblength = (int)( strlen( $this->toEditText( $content ) ) / 1024 );
-               if ( $this->kblength > $wgMaxArticleSize ) {
+               $this->contentLength = strlen( $this->toEditText( $content ) );
+               if ( $this->contentLength > $wgMaxArticleSize * 1024 ) {
                        $this->tooBig = true;
                        $status->setResult( false, self::AS_MAX_ARTICLE_SIZE_EXCEEDED );
                        return $status;
@@ -2968,15 +2968,15 @@ class EditPage {
                                        'wrap' => "<div class=\"mw-titleprotectedwarning\">\n$1</div>" ] );
                }
 
-               if ( $this->kblength === false ) {
-                       $this->kblength = (int)( strlen( $this->textbox1 ) / 1024 );
+               if ( $this->contentLength === false ) {
+                       $this->contentLength = strlen( $this->textbox1 );
                }
 
-               if ( $this->tooBig || $this->kblength > $wgMaxArticleSize ) {
+               if ( $this->tooBig || $this->contentLength > $wgMaxArticleSize * 1024 ) {
                        $wgOut->wrapWikiMsg( "<div class='error' id='mw-edit-longpageerror'>\n$1\n</div>",
                                [
                                        'longpageerror',
-                                       $wgLang->formatNum( $this->kblength ),
+                                       $wgLang->formatNum( round( $this->contentLength / 1024, 3 ) ),
                                        $wgLang->formatNum( $wgMaxArticleSize )
                                ]
                        );
@@ -3536,13 +3536,12 @@ HTML
                if ( Hooks::run( 'EditPageBeforeConflictDiff', [ &$this, &$wgOut ] ) ) {
                        $stats = $wgOut->getContext()->getStats();
                        $stats->increment( 'edit.failures.conflict' );
-                       if ( $this->mTitle->isTalkPage() ) {
-                               $stats->increment( 'edit.failures.conflict.byType.talk' );
-                       } else {
-                               $stats->increment( 'edit.failures.conflict.byType.subject' );
-                       }
-                       if ( $this->mTitle->getNamespace() === NS_PROJECT ) {
-                               $stats->increment( 'edit.failures.conflict.byNamespace.project' );
+                       // Only include 'standard' namespaces to avoid creating unknown numbers of statsd metrics
+                       if (
+                               $this->mTitle->getNamespace() >= NS_MAIN &&
+                               $this->mTitle->getNamespace() <= NS_CATEGORY_TALK
+                       ) {
+                               $stats->increment( 'edit.failures.conflict.byNamespaceId.' . $this->mTitle->getNamespace() );
                        }
 
                        $wgOut->wrapWikiMsg( '<h2>$1</h2>', "yourdiff" );
index e262c81..e19c36c 100644 (file)
@@ -222,17 +222,17 @@ function wfAppendToArrayIfNotDefault( $key, $value, $default, &$changed ) {
  * Merge arrays in the style of getUserPermissionsErrors, with duplicate removal
  * e.g.
  *     wfMergeErrorArrays(
- *             array( array( 'x' ) ),
- *             array( array( 'x', '2' ) ),
- *             array( array( 'x' ) ),
- *             array( array( 'y' ) )
+ *             [ [ 'x' ] ],
+ *             [ [ 'x', '2' ] ],
+ *             [ [ 'x' ] ],
+ *             [ [ 'y' ] ]
  *     );
  * returns:
- *             array(
- *             array( 'x', '2' ),
- *             array( 'x' ),
- *             array( 'y' )
- *     )
+ *             [
+ *             [ 'x', '2' ],
+ *             [ 'x' ],
+ *             [ 'y' ]
+ *     ]
  *
  * @param array $array1,...
  * @return array
@@ -827,7 +827,7 @@ function wfParseUrl( $url ) {
        $bits = parse_url( $url );
        MediaWiki\restoreWarnings();
        // parse_url() returns an array without scheme for some invalid URLs, e.g.
-       // parse_url("%0Ahttp://example.com") == array( 'host' => '%0Ahttp', 'path' => 'example.com' )
+       // parse_url("%0Ahttp://example.com") == [ 'host' => '%0Ahttp', 'path' => 'example.com' ]
        if ( !$bits || !isset( $bits['scheme'] ) ) {
                return false;
        }
index 1979e44..5e540b9 100644 (file)
@@ -170,6 +170,7 @@ class Linker {
         * link() replaces the old functions in the makeLink() family.
         *
         * @since 1.18 Method exists since 1.16 as non-static, made static in 1.18.
+        * @deprecated since 1.28, use MediaWiki\Linker\LinkRenderer instead
         *
         * @param Title $target Can currently only be a Title, but this may
         *   change to support Images, literal URLs, etc.
@@ -245,7 +246,9 @@ class Linker {
 
        /**
         * Identical to link(), except $options defaults to 'known'.
+        *
         * @since 1.16.3
+        * @deprecated since 1.28, use MediaWiki\Linker\LinkRenderer instead
         * @see Linker::link
         * @return string
         */
index 708dea1..70b6738 100644 (file)
@@ -392,11 +392,16 @@ class MovePage {
                        $reason,
                        $nullRevision
                ];
-               $dbw->onTransactionIdle( function () use ( $params, $dbw ) {
-                       // Keep each single hook handler atomic
-                       $dbw->setFlag( DBO_TRX ); // flag is automatically reset by DB layer
-                       Hooks::run( 'TitleMoveComplete', $params );
-               } );
+               // Keep each single hook handler atomic
+               DeferredUpdates::addUpdate(
+                       new AtomicSectionUpdate(
+                               $dbw,
+                               __METHOD__,
+                               function () use ( $params ) {
+                                       Hooks::run( 'TitleMoveComplete', $params );
+                               }
+                       )
+               );
 
                return Status::newGood();
        }
index ecc719a..d34ace8 100644 (file)
@@ -290,6 +290,9 @@ class OutputPage extends ContextSource {
         */
        private $copyrightUrl;
 
+       /** @var array Profiling data */
+       private $limitReportData = [];
+
        /**
         * Constructor for OutputPage. This should not be called directly.
         * Instead a new RequestContext should be created and it will implicitly create
@@ -604,29 +607,6 @@ class OutputPage extends ContextSource {
                $this->mModuleStyles = array_merge( $this->mModuleStyles, (array)$modules );
        }
 
-       /**
-        * Get the list of module messages to include on this page
-        *
-        * @deprecated since 1.26 Obsolete
-        * @param bool $filter
-        * @param string|null $position
-        * @return array Array of module names
-        */
-       public function getModuleMessages( $filter = false, $position = null ) {
-               wfDeprecated( __METHOD__, '1.26' );
-               return [];
-       }
-
-       /**
-        * Load messages of one or more ResourceLoader modules.
-        *
-        * @deprecated since 1.26 Use addModules() instead
-        * @param string|array $modules Module name (string) or array of module names
-        */
-       public function addModuleMessages( $modules ) {
-               wfDeprecated( __METHOD__, '1.26' );
-       }
-
        /**
         * @return null|string ResourceLoader target
         */
@@ -1777,11 +1757,14 @@ class OutputPage extends ContextSource {
                        }
                }
 
-               // enable OOUI if requested via ParserOutput
+               // Enable OOUI if requested via ParserOutput
                if ( $parserOutput->getEnableOOUI() ) {
                        $this->enableOOUI();
                }
 
+               // Include profiling data
+               $this->limitReportData = $parserOutput->getLimitReportData();
+
                // Link flags are ignored for now, but may in the future be
                // used to mark individual language links.
                $linkFlags = [];
@@ -3098,7 +3081,13 @@ class OutputPage extends ContextSource {
         * @return string
         */
        function getBottomScripts() {
-               return $this->getScriptsForBottomQueue();
+               return $this->getScriptsForBottomQueue() .
+                       ResourceLoader::makeInlineScript(
+                               ResourceLoader::makeConfigSetScript(
+                                       [ 'wgPageParseReport' => $this->limitReportData ],
+                                       true
+                               )
+                       );
        }
 
        /**
index 731d1b3..811870c 100644 (file)
@@ -23,7 +23,7 @@
 /**
  * List for revision table items for a single page
  */
-abstract class RevisionListBase extends ContextSource {
+abstract class RevisionListBase extends ContextSource implements Iterator {
        /** @var Title */
        public $title;
 
@@ -89,6 +89,10 @@ abstract class RevisionListBase extends ContextSource {
                return $this->current;
        }
 
+       public function rewind() {
+               $this->reset();
+       }
+
        /**
         * Get the current list item, or false if we are at the end
         * @return Revision
@@ -107,6 +111,14 @@ abstract class RevisionListBase extends ContextSource {
                return $this->current;
        }
 
+       public function key() {
+               return $this->res ? $this->res->key(): 0;
+       }
+
+       public function valid() {
+               return $this->res ? $this->res->valid() : false;
+       }
+
        /**
         * Get the number of items in the list.
         * @return int
index 5b9bdfa..885f926 100644 (file)
  *
  * @code
  * $conf = new SiteConfiguration;
- * $conf->wikis = array( 'de', 'en', 'beta' );
+ * $conf->wikis = [ 'de', 'en', 'beta' ];
  * @endcode
  *
  * When configuring the MediaWiki global settings (the $wg variables),
  * the identifiers will be available to specify settings on a per wiki basis.
  *
  * @code
- * $conf->settings = array(
- *     'wgSomeSetting' => array(
+ * $conf->settings = [
+ *     'wgSomeSetting' => [
  *
  *             # production:
  *             'de'     => false,
@@ -52,8 +52,8 @@
  *
  *             # test:
  *             'beta    => true,
- *     ),
- * );
+ *     ],
+ * ];
  * @endcode
  *
  * With three wikis, that is easy to manage. But what about a farm with
  * the above code could be written:
  *
  * @code
- * $conf->settings = array(
- *     'wgSomeSetting' => array(
+ * $conf->settings = [
+ *     'wgSomeSetting' => [
  *
  *             'default' => false,
  *
  *             # Enable feature on test
  *             'beta'    => true,
- *     ),
- * );
+ *     ],
+ * ];
  * @endcode
  *
  *
  * on a per wiki basis.
  *
  * @code
- * $conf->settings = array(
- *     'wgMergeSetting' = array(
+ * $conf->settings = [
+ *     'wgMergeSetting' = [
  *             # Value that will be shared among all wikis:
- *             'default' => array( NS_USER => true ),
+ *             'default' => [ NS_USER => true ],
  *
  *             # Leading '+' means merging the array of value with the defaults
- *             '+beta' => array( NS_HELP => true ),
- *     ),
- * );
+ *             '+beta' => [ NS_HELP => true ],
+ *     ],
+ * ];
  *
  * # Get configuration for the German site:
  * $conf->get( 'wgMergeSetting', 'de' );
- * // --> array( NS_USER => true );
+ * // --> [ NS_USER => true ];
  *
  * # Get configuration for the testing site:
  * $conf->get( 'wgMergeSetting', 'beta' );
- * // --> array( NS_USER => true, NS_HELP => true );
+ * // --> [ NS_USER => true, NS_HELP => true ];
  * @endcode
  *
  * Finally, to load all configuration settings, extract them in global context:
  * extract( $globals );
  * @endcode
  *
+ * @note For WikiMap to function, the configuration must define string values for
+ *  $wgServer (or $wgCanonicalServer) and $wgArticlePath, even if these are the
+ *  same for all wikis or can be correctly determined by the logic in
+ *  Setup.php.
+ *
  * @todo Give examples for,
  * suffixes:
- * $conf->suffixes = array( 'wiki' );
+ * $conf->suffixes = [ 'wiki' ];
  * localVHosts
  * callbacks!
  */
index 8aa8cb7..ea42768 100644 (file)
@@ -500,7 +500,7 @@ class Title implements LinkTarget {
         * @param string $interwiki The interwiki prefix
         * @return Title The new object
         */
-       public static function &makeTitle( $ns, $title, $fragment = '', $interwiki = '' ) {
+       public static function makeTitle( $ns, $title, $fragment = '', $interwiki = '' ) {
                $t = new Title();
                $t->mInterwiki = $interwiki;
                $t->mFragment = $fragment;
index b070e1e..bfd1d61 100644 (file)
@@ -156,54 +156,6 @@ class WatchedItem {
                return new self( $user, $title, self::DEPRECATED_USAGE_TIMESTAMP, (bool)$checkRights );
        }
 
-       /**
-        * @deprecated since 1.27 Use WatchedItemStore::resetNotificationTimestamp()
-        */
-       public function resetNotificationTimestamp( $force = '', $oldid = 0 ) {
-               wfDeprecated( __METHOD__, '1.27' );
-               if ( $this->checkRights && !$this->user->isAllowed( 'editmywatchlist' ) ) {
-                       return;
-               }
-               MediaWikiServices::getInstance()->getWatchedItemStore()->resetNotificationTimestamp(
-                       $this->user,
-                       $this->getTitle(),
-                       $force,
-                       $oldid
-               );
-       }
-
-       /**
-        * @deprecated since 1.27 Use WatchedItemStore::addWatchBatch()
-        */
-       public static function batchAddWatch( array $items ) {
-               wfDeprecated( __METHOD__, '1.27' );
-               if ( !$items ) {
-                       return false;
-               }
-
-               $targets = [];
-               $users = [];
-               /** @var WatchedItem $watchedItem */
-               foreach ( $items as $watchedItem ) {
-                       $user = $watchedItem->getUser();
-                       if ( $watchedItem->checkRights && !$user->isAllowed( 'editmywatchlist' ) ) {
-                               continue;
-                       }
-                       $userId = $user->getId();
-                       $users[$userId] = $user;
-                       $targets[$userId][] = $watchedItem->getTitle()->getSubjectPage();
-                       $targets[$userId][] = $watchedItem->getTitle()->getTalkPage();
-               }
-
-               $store = MediaWikiServices::getInstance()->getWatchedItemStore();
-               $success = true;
-               foreach ( $users as $userId => $user ) {
-                       $success &= $store->addWatchBatchForUser( $user, $targets[$userId] );
-               }
-
-               return $success;
-       }
-
        /**
         * @deprecated since 1.27 Use User::addWatch()
         * @return bool
index 30efb3b..b5c57ee 100644 (file)
@@ -565,8 +565,7 @@ class WebRequest {
 
        /**
         * Fetch a text string from the given array or return $default if it's not
-        * set. Carriage returns are stripped from the text, and with some language
-        * modules there is an input transliteration applied. This should generally
+        * set. Carriage returns are stripped from the text. This should generally
         * be used for form "<textarea>" and "<input>" fields, and for
         * user-supplied freeform text input.
         *
index cf97984..37f85ea 100644 (file)
@@ -65,6 +65,14 @@ class WikiMap {
 
                $path = $wgConf->get( 'wgArticlePath', $wikiID, $major,
                        [ 'lang' => $minor, 'site' => $major ] );
+
+               // If we don't have a canonical server or a path containing $1, the
+               // WikiReference isn't going to function properly. Just return null in
+               // that case.
+               if ( !is_string( $canonicalServer ) || !is_string( $path ) || strpos( $path, '$1' ) === false ) {
+                       return null;
+               }
+
                return new WikiReference( $canonicalServer, $path, $server );
        }
 
index 3e57e89..b45eacb 100644 (file)
@@ -2144,7 +2144,7 @@ abstract class ApiBase extends ContextSource {
        /**
         * Return the error message related to a certain array
         * @param array|string|MessageSpecifier $error Element of a getUserPermissionsErrors()-style array
-        * @return array('code' => code, 'info' => info)
+        * @return [ 'code' => code, 'info' => info ]
         */
        public function parseMsg( $error ) {
                // Check whether someone passed the whole array, instead of one element as
index 8f1bd19..6601fb7 100644 (file)
@@ -167,7 +167,7 @@ class ApiContinuationManager {
 
        /**
         * Fetch continuation result data
-        * @return array Array( (array)$data, (bool)$batchcomplete )
+        * @return array [ (array)$data, (bool)$batchcomplete ]
         */
        public function getContinuation() {
                $data = [];
index 0e4c6e0..1dadc07 100644 (file)
@@ -212,15 +212,6 @@ class ApiLogin extends ApiBase {
 
                                $result['lguserid'] = intval( $user->getId() );
                                $result['lgusername'] = $user->getName();
-
-                               // @todo: These are deprecated, and should be removed at some
-                               // point (1.28 at the earliest, and see T121527). They were ok
-                               // when the core cookie-based login was the only thing, but
-                               // CentralAuth broke that a while back and
-                               // SessionManager/AuthManager *really* break it.
-                               $result['lgtoken'] = $user->getToken();
-                               $result['cookieprefix'] = $this->getConfig()->get( 'CookiePrefix' );
-                               $result['sessionid'] = $session->getId();
                                break;
 
                        case 'NeedToken':
@@ -228,10 +219,6 @@ class ApiLogin extends ApiBase {
                                $this->setWarning( 'Fetching a token via action=login is deprecated. ' .
                                   'Use action=query&meta=tokens&type=login instead.' );
                                $this->logFeatureUsage( 'action=login&!lgtoken' );
-
-                               // @todo: See above about deprecation
-                               $result['cookieprefix'] = $this->getConfig()->get( 'CookiePrefix' );
-                               $result['sessionid'] = $session->getId();
                                break;
 
                        case 'WrongToken':
index 592df53..0478027 100644 (file)
@@ -117,9 +117,9 @@ class ApiMain extends ApiBase {
        // @codingStandardsIgnoreStart String contenation on "msg" not allowed to break long line
        /**
         * List of user roles that are specifically relevant to the API.
-        * array( 'right' => array ( 'msg'    => 'Some message with a $1',
-        *                           'params' => array ( $someVarToSubst ) ),
-        *                          );
+        * [ 'right' => [ 'msg'    => 'Some message with a $1',
+        *                'params' => [ $someVarToSubst ] ],
+        * ];
         */
        private static $mRights = [
                'writeapi' => [
index fe24c2a..42dfb71 100644 (file)
@@ -81,14 +81,14 @@ class ApiModuleManager extends ContextSource {
         *
         * @code
         *  $modules['foo'] = 'ApiFoo';
-        *  $modules['bar'] = array(
+        *  $modules['bar'] = [
         *      'class' => 'ApiBar',
         *      'factory' => function( $main, $name ) { ... }
-        *  );
-        *  $modules['xyzzy'] = array(
+        *  ];
+        *  $modules['xyzzy'] = [
         *      'class' => 'ApiXyzzy',
-        *      'factory' => array( 'XyzzyFactory', 'newApiModule' )
-        *  );
+        *      'factory' => [ 'XyzzyFactory', 'newApiModule' ]
+        *  ];
         * @endcode
         *
         * @param array $modules A map of ModuleName => ModuleSpec; The ModuleSpec
index 066aaa3..ace776c 100644 (file)
@@ -272,20 +272,7 @@ class ApiOpenSearch extends ApiBase {
                if ( $this->allowedParams !== null ) {
                        return $this->allowedParams;
                }
-               $this->allowedParams = [
-                       'search' => null,
-                       'limit' => [
-                               ApiBase::PARAM_DFLT => $this->getConfig()->get( 'OpenSearchDefaultLimit' ),
-                               ApiBase::PARAM_TYPE => 'limit',
-                               ApiBase::PARAM_MIN => 1,
-                               ApiBase::PARAM_MAX => 100,
-                               ApiBase::PARAM_MAX2 => 100
-                       ],
-                       'namespace' => [
-                               ApiBase::PARAM_DFLT => NS_MAIN,
-                               ApiBase::PARAM_TYPE => 'namespace',
-                               ApiBase::PARAM_ISMULTI => true
-                       ],
+               $this->allowedParams = $this->buildCommonApiParams( false ) + [
                        'suggest' => false,
                        'redirects' => [
                                ApiBase::PARAM_TYPE => [ 'return', 'resolve' ],
@@ -297,19 +284,21 @@ class ApiOpenSearch extends ApiBase {
                        'warningsaserror' => false,
                ];
 
-               $profileParam = $this->buildProfileApiParam( SearchEngine::COMPLETION_PROFILE_TYPE,
-                       'apihelp-query+prefixsearch-param-profile' );
-               if ( $profileParam ) {
-                       $this->allowedParams['profile'] = $profileParam;
-               }
+               // Use open search specific default limit
+               $this->allowedParams['limit'][ApiBase::PARAM_DFLT] = $this->getConfig()->get(
+                       'OpenSearchDefaultLimit'
+               );
+
                return $this->allowedParams;
        }
 
        public function getSearchProfileParams() {
-               if ( isset( $this->getAllowedParams()['profile'] ) ) {
-                       return [ SearchEngine::COMPLETION_PROFILE_TYPE => 'profile' ];
-               }
-               return [];
+               return [
+                       'profile' => [
+                               'profile-type' => SearchEngine::COMPLETION_PROFILE_TYPE,
+                               'help-message' => 'apihelp-query+prefixsearch-param-profile'
+                       ],
+               ];
        }
 
        protected function getExamplesMessages() {
index af4e536..8045447 100644 (file)
@@ -58,7 +58,7 @@ class ApiPageSet extends ApiBase {
        private $mGoodTitles = [];
        private $mMissingPages = []; // [ns][dbkey] => fake page_id
        private $mMissingTitles = [];
-       /** @var array [fake_page_id] => array( 'title' => $title, 'invalidreason' => $reason ) */
+       /** @var array [fake_page_id] => [ 'title' => $title, 'invalidreason' => $reason ] */
        private $mInvalidTitles = [];
        private $mMissingPageIDs = [];
        private $mRedirectTitles = [];
@@ -777,7 +777,7 @@ class ApiPageSet extends ApiBase {
                $res = $db->select( 'page', $this->getPageTableFields(), $set,
                        __METHOD__ );
 
-               // Hack: get the ns:titles stored in array(ns => array(titles)) format
+               // Hack: get the ns:titles stored in [ ns => [ titles ] ] format
                $this->initFromQueryResult( $res, $linkBatch->data, true ); // process Titles
 
                // Resolve any found redirects
index 3e66cad..35fad4a 100644 (file)
@@ -345,7 +345,15 @@ class ApiParse extends ApiBase {
                                $titleObj->getPrefixedText();
                }
 
-               if ( isset( $prop['headitems'] ) || isset( $prop['headhtml'] ) ) {
+               if ( isset( $prop['headitems'] ) ) {
+                       $result_array['headitems'] = $this->formatHeadItems( $p_result->getHeadItems() );
+                       $this->logFeatureUsage( 'action=parse&prop=headitems' );
+                       $this->setWarning( 'headitems is deprecated since MediaWiki 1.28. '
+                               . 'Use prop=headhtml when creating new HTML documents, or '
+                               . 'prop=modules|jsconfigvars when updating a document client-side.' );
+               }
+
+               if ( isset( $prop['headhtml'] ) ) {
                        $context = new DerivativeContext( $this->getContext() );
                        $context->setTitle( $titleObj );
                        $context->setWikiPage( $pageObj );
@@ -355,29 +363,14 @@ class ApiParse extends ApiBase {
                        $output = new OutputPage( $context );
                        $output->addParserOutputMetadata( $p_result );
 
-                       if ( isset( $prop['headitems'] ) ) {
-                               $headItems = $this->formatHeadItems( $p_result->getHeadItems() );
-
-                               $css = $this->formatCss( $output->buildCssLinksArray() );
-
-                               $scripts = [ $output->getHeadScripts() ];
-
-                               $result_array['headitems'] = array_merge( $headItems, $css, $scripts );
-                       }
-
-                       if ( isset( $prop['headhtml'] ) ) {
-                               $result_array['headhtml'] = $output->headElement( $context->getSkin() );
-                               $result_array[ApiResult::META_BC_SUBELEMENTS][] = 'headhtml';
-                       }
+                       $result_array['headhtml'] = $output->headElement( $context->getSkin() );
+                       $result_array[ApiResult::META_BC_SUBELEMENTS][] = 'headhtml';
                }
 
                if ( isset( $prop['modules'] ) ) {
                        $result_array['modules'] = array_values( array_unique( $p_result->getModules() ) );
                        $result_array['modulescripts'] = array_values( array_unique( $p_result->getModuleScripts() ) );
                        $result_array['modulestyles'] = array_values( array_unique( $p_result->getModuleStyles() ) );
-                       // To be removed in 1.27
-                       $result_array['modulemessages'] = [];
-                       $this->setWarning( 'modulemessages is deprecated since MediaWiki 1.26' );
                }
 
                if ( isset( $prop['jsconfigvars'] ) ) {
@@ -461,7 +454,6 @@ class ApiParse extends ApiBase {
                        'indicators' => 'ind',
                        'modulescripts' => 'm',
                        'modulestyles' => 'm',
-                       'modulemessages' => 'm',
                        'properties' => 'pp',
                        'limitreportdata' => 'lr',
                ];
@@ -709,18 +701,6 @@ class ApiParse extends ApiBase {
                return $result;
        }
 
-       private function formatCss( $css ) {
-               $result = [];
-               foreach ( $css as $file => $link ) {
-                       $entry = [];
-                       $entry['file'] = $file;
-                       ApiResult::setContentValue( $entry, 'link', $link );
-                       $result[] = $entry;
-               }
-
-               return $result;
-       }
-
        private function formatLimitReportData( $limitReportData ) {
                $result = [];
 
index 318af58..b35eec2 100644 (file)
@@ -176,10 +176,9 @@ abstract class ApiQueryBase extends ApiBase {
        /**
         * Add a set of JOIN conditions to the internal array
         *
-        * JOIN conditions are formatted as array( tablename => array(jointype,
-        * conditions) e.g. array('page' => array('LEFT JOIN',
-        * 'page_id=rev_page')) . conditions may be a string or an
-        * addWhere()-style array
+        * JOIN conditions are formatted as [ tablename => [ jointype, conditions ] ]
+        * e.g. [ 'page' => [ 'LEFT JOIN', 'page_id=rev_page' ] ].
+        * Conditions may be a string or an addWhere()-style array.
         * @param array $join_conds JOIN conditions
         */
        protected function addJoinConds( $join_conds ) {
@@ -219,12 +218,12 @@ abstract class ApiQueryBase extends ApiBase {
 
        /**
         * Add a set of WHERE clauses to the internal array.
-        * Clauses can be formatted as 'foo=bar' or array('foo' => 'bar'),
+        * Clauses can be formatted as 'foo=bar' or [ 'foo' => 'bar' ],
         * the latter only works if the value is a constant (i.e. not another field)
         *
         * If $value is an empty array, this function does nothing.
         *
-        * For example, array('foo=bar', 'baz' => 3, 'bla' => 'foo') translates
+        * For example, [ 'foo=bar', 'baz' => 3, 'bla' => 'foo' ] translates
         * to "foo=bar AND baz='3' AND bla='foo'"
         * @param string|array $value
         */
@@ -341,13 +340,13 @@ abstract class ApiQueryBase extends ApiBase {
         * @param string $method Function the query should be attributed to.
         *  You should usually use __METHOD__ here
         * @param array $extraQuery Query data to add but not store in the object
-        *  Format is array(
+        *  Format is [
         *    'tables' => ...,
         *    'fields' => ...,
         *    'where' => ...,
         *    'options' => ...,
         *    'join_conds' => ...
-        *  )
+        *  ]
         * @return ResultWrapper
         */
        protected function select( $method, $extraQuery = [] ) {
index ae93bb1..02b7883 100644 (file)
@@ -96,7 +96,7 @@ class ApiQueryDuplicateFiles extends ApiQueryGeneratorBase {
                }
 
                // find all files with the hashes, result format is:
-               // array( hash => array( dup1, dup2 ), hash1 => ... )
+               // [ hash => [ dup1, dup2 ], hash1 => ... ]
                $filesToFindBySha1s = array_unique( array_values( $sha1s ) );
                if ( $params['localonly'] ) {
                        $filesBySha1s = RepoGroup::singleton()->getLocalRepo()->findBySha1s( $filesToFindBySha1s );
index f5c49ad..d287020 100644 (file)
@@ -92,7 +92,7 @@ class ApiQueryInfo extends ApiQueryBase {
         * The prototype for a token function is func($pageid, $title)
         * it should return a token or false (permission denied)
         * @deprecated since 1.24
-        * @return array Array(tokenname => function)
+        * @return array [ tokenname => function ]
         */
        protected function getTokenFunctions() {
                // Don't call the hooks twice
index 39b0212..3bf6d3f 100644 (file)
@@ -105,42 +105,18 @@ class ApiQueryPrefixSearch extends ApiQueryGeneratorBase {
                if ( $this->allowedParams !== null ) {
                        return $this->allowedParams;
                }
-               $this->allowedParams = [
-                       'search' => [
-                               ApiBase::PARAM_TYPE => 'string',
-                               ApiBase::PARAM_REQUIRED => true,
-                       ],
-                       'namespace' => [
-                               ApiBase::PARAM_DFLT => NS_MAIN,
-                               ApiBase::PARAM_TYPE => 'namespace',
-                               ApiBase::PARAM_ISMULTI => true,
-                       ],
-                       'limit' => [
-                               ApiBase::PARAM_DFLT => 10,
-                               ApiBase::PARAM_TYPE => 'limit',
-                               ApiBase::PARAM_MIN => 1,
-                               // Non-standard value for compatibility with action=opensearch
-                               ApiBase::PARAM_MAX => 100,
-                               ApiBase::PARAM_MAX2 => 200,
-                       ],
-                       'offset' => [
-                               ApiBase::PARAM_DFLT => 0,
-                               ApiBase::PARAM_TYPE => 'integer',
-                       ],
-               ];
-               $profileParam = $this->buildProfileApiParam( SearchEngine::COMPLETION_PROFILE_TYPE,
-                       'apihelp-query+prefixsearch-param-profile' );
-               if ( $profileParam ) {
-                       $this->allowedParams['profile'] = $profileParam;
-               }
+               $this->allowedParams = $this->buildCommonApiParams();
+
                return $this->allowedParams;
        }
 
        public function getSearchProfileParams() {
-               if ( isset( $this->getAllowedParams()['profile'] ) ) {
-                       return [ SearchEngine::COMPLETION_PROFILE_TYPE => 'profile' ];
-               }
-               return [];
+               return [
+                       'profile' => [
+                               'profile-type' => SearchEngine::COMPLETION_PROFILE_TYPE,
+                               'help-message' => 'apihelp-query+prefixsearch-param-profile',
+                       ],
+               ];
        }
 
        protected function getExamplesMessages() {
index 63c95d3..cc3ca60 100644 (file)
@@ -48,7 +48,7 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
         * The prototype for a token function is func($pageid, $title, $rc)
         * it should return a token or false (permission denied)
         * @deprecated since 1.24
-        * @return array Array(tokenname => function)
+        * @return array [ tokenname => function ]
         */
        protected function getTokenFunctions() {
                // Don't call the hooks twice
index 4377831..f46b5d2 100644 (file)
@@ -37,14 +37,6 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
        /** @var array list of api allowed params */
        private $allowedParams;
 
-       /**
-        * When $wgSearchType is null, $wgSearchAlternatives[0] is null. Null isn't
-        * a valid option for an array for PARAM_TYPE, so we'll use a fake name
-        * that can't possibly be a class name and describes what the null behavior
-        * does
-        */
-       const BACKEND_NULL_PARAM = 'database-backed';
-
        public function __construct( ApiQuery $query, $moduleName ) {
                parent::__construct( $query, $moduleName, 'sr' );
        }
@@ -65,10 +57,6 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
                global $wgContLang;
                $params = $this->extractRequestParams();
 
-               if ( isset( $params['backend'] ) && $params['backend'] == self::BACKEND_NULL_PARAM ) {
-                       unset( $params['backend'] );
-               }
-
                // Extract parameters
                $query = $params['search'];
                $what = $params['what'];
@@ -308,16 +296,7 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
                        return $this->allowedParams;
                }
 
-               $this->allowedParams = [
-                       'search' => [
-                               ApiBase::PARAM_TYPE => 'string',
-                               ApiBase::PARAM_REQUIRED => true
-                       ],
-                       'namespace' => [
-                               ApiBase::PARAM_DFLT => NS_MAIN,
-                               ApiBase::PARAM_TYPE => 'namespace',
-                               ApiBase::PARAM_ISMULTI => true,
-                       ],
+               $this->allowedParams = $this->buildCommonApiParams() + [
                        'what' => [
                                ApiBase::PARAM_TYPE => [
                                        'title',
@@ -354,52 +333,20 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
                                ApiBase::PARAM_ISMULTI => true,
                                ApiBase::PARAM_HELP_MSG_PER_VALUE => [],
                        ],
-                       'offset' => [
-                               ApiBase::PARAM_DFLT => 0,
-                               ApiBase::PARAM_HELP_MSG => 'api-help-param-continue',
-                       ],
-                       'limit' => [
-                               ApiBase::PARAM_DFLT => 10,
-                               ApiBase::PARAM_TYPE => 'limit',
-                               ApiBase::PARAM_MIN => 1,
-                               ApiBase::PARAM_MAX => ApiBase::LIMIT_BIG1,
-                               ApiBase::PARAM_MAX2 => ApiBase::LIMIT_BIG2
-                       ],
                        'interwiki' => false,
                        'enablerewrites' => false,
                ];
 
-               $searchConfig = MediaWikiServices::getInstance()->getSearchEngineConfig();
-               $alternatives = $searchConfig->getSearchTypes();
-               if ( count( $alternatives ) > 1 ) {
-                       if ( $alternatives[0] === null ) {
-                               $alternatives[0] = self::BACKEND_NULL_PARAM;
-                       }
-                       $this->allowedParams['backend'] = [
-                               ApiBase::PARAM_DFLT => $searchConfig->getSearchType(),
-                               ApiBase::PARAM_TYPE => $alternatives,
-                       ];
-                       // @todo: support profile selection when multiple
-                       // backends are available. The solution could be to
-                       // merge all possible profiles and let ApiBase
-                       // subclasses do the check. Making ApiHelp and ApiSandbox
-                       // comprehensive might be more difficult.
-               } else {
-                       $profileParam = $this->buildProfileApiParam( SearchEngine::FT_QUERY_INDEP_PROFILE_TYPE,
-                               'apihelp-query+search-param-qiprofile' );
-                       if ( $profileParam ) {
-                               $this->allowedParams['qiprofile'] = $profileParam;
-                       }
-               }
-
                return $this->allowedParams;
        }
 
        public function getSearchProfileParams() {
-               if ( isset( $this->getAllowedParams()['qiprofile'] ) ) {
-                       return [ SearchEngine::FT_QUERY_INDEP_PROFILE_TYPE => 'qiprofile' ];
-               }
-               return [];
+               return [
+                       'qiprofile' => [
+                               'profile-type' => SearchEngine::FT_QUERY_INDEP_PROFILE_TYPE,
+                               'help-message' => 'apihelp-query+search-param-qiprofile',
+                       ],
+               ];
        }
 
        protected function getExamplesMessages() {
index 97042af..5d32497 100644 (file)
@@ -594,7 +594,7 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                                        $ret['description'] = $ext['description'];
                                }
                                if ( isset( $ext['descriptionmsg'] ) ) {
-                                       // Can be a string or array( key, param1, param2, ... )
+                                       // Can be a string or [ key, param1, param2, ... ]
                                        if ( is_array( $ext['descriptionmsg'] ) ) {
                                                $ret['descriptionmsg'] = $ext['descriptionmsg'][0];
                                                $ret['descriptionmsgparams'] = array_slice( $ext['descriptionmsg'], 1 );
index 0688970..51e1923 100644 (file)
@@ -35,7 +35,8 @@ class ApiQueryContributions extends ApiQueryBase {
                parent::__construct( $query, $moduleName, 'uc' );
        }
 
-       private $params, $prefixMode, $userprefix, $multiUserMode, $usernames, $parentLens;
+       private $params, $prefixMode, $userprefix, $multiUserMode, $idMode, $usernames, $userids,
+               $parentLens;
        private $fld_ids = false, $fld_title = false, $fld_timestamp = false,
                $fld_comment = false, $fld_parsedcomment = false, $fld_flags = false,
                $fld_patrolled = false, $fld_tags = false, $fld_size = false, $fld_sizediff = false;
@@ -64,11 +65,14 @@ class ApiQueryContributions extends ApiQueryBase {
                // TODO: if the query is going only against the revision table, should this be done?
                $this->selectNamedDB( 'contributions', DB_SLAVE, 'contributions' );
 
+               $this->idMode = false;
                if ( isset( $this->params['userprefix'] ) ) {
                        $this->prefixMode = true;
                        $this->multiUserMode = true;
                        $this->userprefix = $this->params['userprefix'];
                } else {
+                       $anyIPs = false;
+                       $this->userids = [];
                        $this->usernames = [];
                        if ( !is_array( $this->params['user'] ) ) {
                                $this->params['user'] = [ $this->params['user'] ];
@@ -77,10 +81,32 @@ class ApiQueryContributions extends ApiQueryBase {
                                $this->dieUsage( 'User parameter may not be empty.', 'param_user' );
                        }
                        foreach ( $this->params['user'] as $u ) {
-                               $this->prepareUsername( $u );
+                               if ( is_null( $u ) || $u === '' ) {
+                                       $this->dieUsage( 'User parameter may not be empty', 'param_user' );
+                               }
+
+                               if ( User::isIP( $u ) ) {
+                                       $anyIPs = true;
+                                       $this->usernames[] = $u;
+                               } else {
+                                       $name = User::getCanonicalName( $u, 'valid' );
+                                       if ( $name === false ) {
+                                               $this->dieUsage( "User name {$u} is not valid", 'param_user' );
+                                       }
+                                       $this->usernames[] = $name;
+                               }
                        }
                        $this->prefixMode = false;
                        $this->multiUserMode = ( count( $this->params['user'] ) > 1 );
+
+                       if ( !$anyIPs ) {
+                               $dbr = $this->getDB();
+                               $res = $dbr->select( 'user', 'user_id', [ 'user_name' => $this->usernames ], __METHOD__ );
+                               foreach ( $res as $row ) {
+                                       $this->userids[] = $row->user_id;
+                               }
+                               $this->idMode = count( $this->userids ) === count( $this->usernames );
+                       }
                }
 
                $this->prepareQuery();
@@ -126,27 +152,6 @@ class ApiQueryContributions extends ApiQueryBase {
                );
        }
 
-       /**
-        * Validate the 'user' parameter and set the value to compare
-        * against `revision`.`rev_user_text`
-        *
-        * @param string $user
-        */
-       private function prepareUsername( $user ) {
-               if ( !is_null( $user ) && $user !== '' ) {
-                       $name = User::isIP( $user )
-                               ? $user
-                               : User::getCanonicalName( $user, 'valid' );
-                       if ( $name === false ) {
-                               $this->dieUsage( "User name {$user} is not valid", 'param_user' );
-                       } else {
-                               $this->usernames[] = $name;
-                       }
-               } else {
-                       $this->dieUsage( 'User parameter may not be empty', 'param_user' );
-               }
-       }
-
        /**
         * Prepares the query and returns the limit of rows requested
         */
@@ -163,7 +168,17 @@ class ApiQueryContributions extends ApiQueryBase {
                        $continue = explode( '|', $this->params['continue'] );
                        $db = $this->getDB();
                        if ( $this->multiUserMode ) {
-                               $this->dieContinueUsageIf( count( $continue ) != 3 );
+                               $this->dieContinueUsageIf( count( $continue ) != 4 );
+                               $modeFlag = array_shift( $continue );
+                               $this->dieContinueUsageIf( !in_array( $modeFlag, [ 'id', 'name' ] ) );
+                               if ( $this->idMode && $modeFlag === 'name' ) {
+                                       // The users were created since this query started, but we
+                                       // can't go back and change modes now. So just keep on with
+                                       // name mode.
+                                       $this->idMode = false;
+                               }
+                               $this->dieContinueUsageIf( ( $modeFlag === 'id' ) !== $this->idMode );
+                               $userField = $this->idMode ? 'rev_user' : 'rev_user_text';
                                $encUser = $db->addQuotes( array_shift( $continue ) );
                        } else {
                                $this->dieContinueUsageIf( count( $continue ) != 2 );
@@ -174,8 +189,8 @@ class ApiQueryContributions extends ApiQueryBase {
                        $op = ( $this->params['dir'] == 'older' ? '<' : '>' );
                        if ( $this->multiUserMode ) {
                                $this->addWhere(
-                                       "rev_user_text $op $encUser OR " .
-                                       "(rev_user_text = $encUser AND " .
+                                       "$userField $op $encUser OR " .
+                                       "($userField = $encUser AND " .
                                        "(rev_timestamp $op $encTS OR " .
                                        "(rev_timestamp = $encTS AND " .
                                        "rev_id $op= $encId)))"
@@ -206,14 +221,17 @@ class ApiQueryContributions extends ApiQueryBase {
                if ( $this->prefixMode ) {
                        $this->addWhere( 'rev_user_text' .
                                $this->getDB()->buildLike( $this->userprefix, $this->getDB()->anyString() ) );
+               } elseif ( $this->idMode ) {
+                       $this->addWhereFld( 'rev_user', $this->userids );
                } else {
                        $this->addWhereFld( 'rev_user_text', $this->usernames );
                }
                // ... and in the specified timeframe.
-               // Ensure the same sort order for rev_user_text and rev_timestamp
+               // Ensure the same sort order for rev_user/rev_user_text and rev_timestamp
                // so our query is indexed
                if ( $this->multiUserMode ) {
-                       $this->addWhereRange( 'rev_user_text', $this->params['dir'], null, null );
+                       $this->addWhereRange( $this->idMode ? 'rev_user' : 'rev_user_text',
+                               $this->params['dir'], null, null );
                }
                $this->addTimestampWhereRange( 'rev_timestamp',
                        $this->params['dir'], $this->params['start'], $this->params['end'] );
@@ -247,7 +265,6 @@ class ApiQueryContributions extends ApiQueryBase {
                        $this->addWhereIf( 'rev_parent_id = 0', isset( $show['new'] ) );
                }
                $this->addOption( 'LIMIT', $this->params['limit'] + 1 );
-               $index = [ 'revision' => 'usertext_timestamp' ];
 
                // Mandatory fields: timestamp allows request continuation
                // ns+title checks if the user has access rights for this page
@@ -320,7 +337,9 @@ class ApiQueryContributions extends ApiQueryBase {
                        $this->addWhereFld( 'ct_tag', $this->params['tag'] );
                }
 
-               $this->addOption( 'USE INDEX', $index );
+               if ( isset( $index ) ) {
+                       $this->addOption( 'USE INDEX', $index );
+               }
        }
 
        /**
@@ -430,7 +449,11 @@ class ApiQueryContributions extends ApiQueryBase {
 
        private function continueStr( $row ) {
                if ( $this->multiUserMode ) {
-                       return "$row->rev_user_text|$row->rev_timestamp|$row->rev_id";
+                       if ( $this->idMode ) {
+                               return "id|$row->rev_user|$row->rev_timestamp|$row->rev_id";
+                       } else {
+                               return "name|$row->rev_user_text|$row->rev_timestamp|$row->rev_id";
+                       }
                } else {
                        return "$row->rev_timestamp|$row->rev_id";
                }
index 5d5c829..3a4b012 100644 (file)
@@ -217,7 +217,7 @@ class ApiResult implements ApiSerializable {
         *    set to '*'. This may be skipped by including 'no*' in the value
         *    array.
         *  - Tags listed in META_BC_SUBELEMENTS will have their values changed to
-        *    array( '*' => $value ). This may be skipped by including 'nosub' in
+        *    [ '*' => $value ]. This may be skipped by including 'nosub' in
         *    the value array.
         *  - If META_TYPE is 'BCarray', set it to 'default'
         *  - If META_TYPE is 'BCassoc', set it to 'default'
@@ -230,9 +230,9 @@ class ApiResult implements ApiSerializable {
         *    as objects.
         *  - ArmorKVP: (string) If provided, transform arrays with META_TYPE 'kvp'
         *    and 'BCkvp' into arrays of two-element arrays, something like this:
-        *      $output = array();
+        *      $output = [];
         *      foreach ( $input as $key => $value ) {
-        *          $pair = array();
+        *          $pair = [];
         *          $pair[$META_KVP_KEY_NAME ?: $ArmorKVP_value] = $key;
         *          ApiResult::setContentValue( $pair, 'value', $value );
         *          $output[] = $pair;
@@ -390,7 +390,7 @@ class ApiResult implements ApiSerializable {
         * Add value to the output data at the given path.
         *
         * Path can be an indexed array, each element specifying the branch at which to add the new
-        * value. Setting $path to array('a','b','c') is equivalent to data['a']['b']['c'] = $value.
+        * value. Setting $path to [ 'a', 'b', 'c' ] is equivalent to data['a']['b']['c'] = $value.
         * If $path is null, the value will be inserted at the data root.
         *
         * @param array|string|int|null $path
index 139793d..8ae1192 100644 (file)
@@ -26,26 +26,89 @@ use MediaWiki\MediaWikiServices;
  * @ingroup API
  */
 trait SearchApi {
+
+       /**
+        * When $wgSearchType is null, $wgSearchAlternatives[0] is null. Null isn't
+        * a valid option for an array for PARAM_TYPE, so we'll use a fake name
+        * that can't possibly be a class name and describes what the null behavior
+        * does
+        */
+       private static $BACKEND_NULL_PARAM = 'database-backed';
+
        /**
-        * Build the profile api param definitions.
+        * The set of api parameters that are shared between api calls that
+        * call the SearchEngine. Primarily this defines parameters that
+        * are utilized by self::buildSearchEngine().
         *
-        * @param string $profileType type of profile to customize
-        * @param string $helpMsg i18n message
-        * @param string|null $backendType SearchEngine backend type or null for default engine
-        * @return array|null the api param definition or null if profiles are
-        * not supported by the searchEngine implementation.
+        * @param bool $isScrollable True if the api offers scrolling
+        * @return array
         */
-       public function buildProfileApiParam( $profileType, $helpMsg, $backendType = null ) {
-               $searchEngine = null;
-               if ( $backendType !== null ) {
-                       $searchEngine = MediaWikiServices::getInstance()
-                               ->getSearchEngineFactory()->create( $backendType );
+       public function buildCommonApiParams( $isScrollable = true ) {
+               $params = [
+                       'search' => [
+                               ApiBase::PARAM_TYPE => 'string',
+                               ApiBase::PARAM_REQUIRED => true,
+                       ],
+                       'namespace' => [
+                               ApiBase::PARAM_DFLT => NS_MAIN,
+                               ApiBase::PARAM_TYPE => 'namespace',
+                               ApiBase::PARAM_ISMULTI => true,
+                       ],
+                       'limit' => [
+                               ApiBase::PARAM_DFLT => 10,
+                               ApiBase::PARAM_TYPE => 'limit',
+                               ApiBase::PARAM_MIN => 1,
+                               ApiBase::PARAM_MAX => ApiBase::LIMIT_BIG1,
+                               ApiBase::PARAM_MAX2 => ApiBase::LIMIT_BIG2,
+                       ],
+               ];
+               if ( $isScrollable ) {
+                       $params['offset'] = [
+                               ApiBase::PARAM_DFLT => 0,
+                               ApiBase::PARAM_TYPE => 'integer',
+                               ApiBase::PARAM_HELP_MSG => 'api-help-param-continue',
+                       ];
+               }
+
+               $searchConfig = MediaWikiServices::getInstance()->getSearchEngineConfig();
+               $alternatives = $searchConfig->getSearchTypes();
+               if ( count( $alternatives ) > 1 ) {
+                       if ( $alternatives[0] === null ) {
+                               $alternatives[0] = self::$BACKEND_NULL_PARAM;
+                       }
+                       $this->allowedParams['backend'] = [
+                               ApiBase::PARAM_DFLT => $searchConfig->getSearchType(),
+                               ApiBase::PARAM_TYPE => $alternatives,
+                       ];
+                       // @todo: support profile selection when multiple
+                       // backends are available. The solution could be to
+                       // merge all possible profiles and let ApiBase
+                       // subclasses do the check. Making ApiHelp and ApiSandbox
+                       // comprehensive might be more difficult.
                } else {
-                       $searchEngine = MediaWikiServices::getInstance()->newSearchEngine();
+                       $params += $this->buildProfileApiParam();
                }
 
-               $profiles = $searchEngine->getProfiles( $profileType );
-               if ( $profiles ) {
+               return $params;
+       }
+
+       /**
+        * Build the profile api param definitions. Makes bold assumption only one search
+        * engine is available, ensure that is true before calling.
+        *
+        * @return array array containing available additional api param definitions.
+        *  Empty if profiles are not supported by the searchEngine implementation.
+        */
+       private function buildProfileApiParam() {
+               $configs = $this->getSearchProfileParams();
+               $searchEngine = MediaWikiServices::getInstance()->newSearchEngine();
+               $params = [];
+               foreach ( $configs as $paramName => $paramConfig ) {
+                       $profiles = $searchEngine->getProfiles( $paramConfig['profile-type'] );
+                       if ( !$profiles ) {
+                               continue;
+                       }
+
                        $types = [];
                        $helpMessages = [];
                        $defaultProfile = null;
@@ -58,20 +121,23 @@ trait SearchApi {
                                        $defaultProfile = $profile['name'];
                                }
                        }
-                       return [
+
+                       $params[$paramName] = [
                                ApiBase::PARAM_TYPE => $types,
-                               ApiBase::PARAM_HELP_MSG => $helpMsg,
+                               ApiBase::PARAM_HELP_MSG => $paramConfig['help-message'],
                                ApiBase::PARAM_HELP_MSG_PER_VALUE => $helpMessages,
                                ApiBase::PARAM_DFLT => $defaultProfile,
                        ];
                }
-               return null;
+
+               return $params;
        }
 
        /**
         * Build the search engine to use.
         * If $params is provided then the following searchEngine options
         * will be set:
+        *  - backend: which search backend to use
         *  - limit: mandatory
         *  - offset: optional, if set limit will be incremented by
         *    one ( to support the continue parameter )
@@ -84,6 +150,9 @@ trait SearchApi {
        public function buildSearchEngine( array $params = null ) {
                if ( $params != null ) {
                        $type = isset( $params['backend'] ) ? $params['backend'] : null;
+                       if ( $type === self::$BACKEND_NULL_PARAM ) {
+                               $type = null;
+                       }
                        $searchEngine = MediaWikiServices::getInstance()->getSearchEngineFactory()->create( $type );
                        $limit = $params['limit'];
                        $searchEngine->setNamespaces( $params['namespace'] );
@@ -97,9 +166,15 @@ trait SearchApi {
                                $limit += 1;
                        }
                        $searchEngine->setLimitOffset( $limit, $offset );
-                       foreach ( $this->getSearchProfileParams() as $type => $param ) {
-                               if ( isset( $params[$param] ) ) {
-                                       $searchEngine->setFeatureData( $type, $params[$param] );
+
+                       // Initialize requested search profiles.
+                       $configs = $this->getSearchProfileParams();
+                       foreach ( $configs as $paramName => $paramConfig ) {
+                               if ( isset( $params[$paramName] ) ) {
+                                       $searchEngine->setFeatureData(
+                                               $paramConfig['profile-type'],
+                                               $params[$paramName]
+                                       );
                                }
                        }
                } else {
@@ -109,8 +184,8 @@ trait SearchApi {
        }
 
        /**
-        * @return string[] the list of supported search profile types. Key is
-        * the profile type and its associated value is the request param.
+        * @return array[] array of arrays mapping from parameter name to a two value map
+        *  containing 'help-message' and 'profile-type' keys.
         */
        abstract public function getSearchProfileParams();
 }
index 605fcf5..7cc2db3 100644 (file)
@@ -23,7 +23,7 @@
        "apihelp-main-param-requestid": "Libovolná zde uvedená hodnota bude zahrnuta v odpovědi. Lze použít pro rozlišení požadavků.",
        "apihelp-main-param-servedby": "Zahrnout do odpovědi název hostitele, který požadavek obsloužil.",
        "apihelp-main-param-curtimestamp": "Zahrnout do odpovědi aktuální časové razítko.",
-       "apihelp-main-param-origin": "Pokud k API přistupujete pomocí mezidoménového AJAXového požadavku (CORS), nastavte tento parametr na doménu původu. Musí být součástí všech předběžných požadavků, takže musí být součástí URI požadavku (nikoli těla POSTu).\n\nU ověřených požadavků hodnota musí přesně odpovídat jednomu z původů v hlavičce <code>Origin</code>, takže musí být nastavena na něco jako <kbd>https://en.wikipedia.org</kbd> nebo <kbd>https://meta.wikimedia.org</kbd>. Pokud parametr neodpovídá hlavičce <code>Origin</code>, bude vrácena odpověď 403. Pokud parametr odpovídá hlavičce <code>Origin</code> a tento původ je na bílé listině, hlavičky <code>Access-Control-Allow-Origin</code> a <code>Access-Control-Allow-Credentials</code>budou nastaveny.\n\nU neověřených požadavků specifikujte hodnotu <kbd>*</kbd>. To pomůže nastavit hlavičku <code>Access-Control-Allow-Origin</code>, ale hlavička <code>Access-Control-Allow-Credentials</code> bude <code>false</code> a všechna data uživatelů budou omezena.",
+       "apihelp-main-param-origin": "Pokud k API přistupujete pomocí mezidoménového AJAXového požadavku (CORS), nastavte tento parametr na doménu původu. Musí být součástí všech předběžných požadavků, takže musí být součástí URI požadavku (nikoli těla POSTu).\n\nU autentizovaných požadavků hodnota musí přesně odpovídat jednomu z původů v hlavičce <code>Origin</code>, takže musí být nastavena na něco jako <kbd>https://en.wikipedia.org</kbd> nebo <kbd>https://meta.wikimedia.org</kbd>. Pokud parametr neodpovídá hlavičce <code>Origin</code>, bude vrácena odpověď 403. Pokud parametr odpovídá hlavičce <code>Origin</code> a tento původ je na bílé listině, budou nastaveny hlavičky <code>Access-Control-Allow-Origin</code> a <code>Access-Control-Allow-Credentials</code>.\n\nU neautentizovaných požadavků uveďte hodnotu <kbd>*</kbd>. To způsobí nastavení hlavičky <code>Access-Control-Allow-Origin</code>, ale hlavička <code>Access-Control-Allow-Credentials</code> bude <code>false</code> a budou omezena všechna data specifická pro uživatele.",
        "apihelp-main-param-uselang": "Jazyk, který se má použít pro překlad hlášení. Pomocí <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> se <kbd>siprop=languages</kbd> získáte seznam jazykových kódů nebo zadejte „<kbd>user</kbd>“ pro použití předvoleného jazyka aktuálního uživatele či „<kbd>content</kbd>“ pro použití jazyka obsahu této wiki.",
        "apihelp-block-description": "Zablokovat uživatele.",
        "apihelp-block-param-user": "Uživatelské jméno, IP adresa nebo rozsah IP adres, které chcete zablokovat.",
index dba5479..8bbef02 100644 (file)
        "apihelp-parse-paramvalue-prop-sections": "Gibt die Abschnitte im geparsten Wikitext zurück.",
        "apihelp-parse-paramvalue-prop-revid": "Ergänzt die Versionskennung der geparsten Seite.",
        "apihelp-parse-paramvalue-prop-displaytitle": "Ergänzt den Titel des geparsten Wikitextes.",
-       "apihelp-parse-paramvalue-prop-jsconfigvars": "Gibt die JavaScript-Konfigurationsvariablen speziell für die Seite aus.",
+       "apihelp-parse-paramvalue-prop-jsconfigvars": "Gibt die JavaScript-Konfigurationsvariablen speziell für die Seite aus. Zur Anwendung verwende <code>mw.config.set()</code>.",
        "apihelp-parse-paramvalue-prop-encodedjsconfigvars": "Gibt die JavaScript-Konfigurationsvariablen speziell für die Seite als JSON-Zeichenfolge aus.",
        "apihelp-parse-paramvalue-prop-indicators": "Gibt das HTML der Seitenstatusindikatoren zurück, die auf der Seite verwendet werden.",
        "apihelp-parse-paramvalue-prop-iwlinks": "Gibt Interwiki-Links des geparsten Wikitextes zurück.",
        "apihelp-protect-description": "Ändert den Schutzstatus einer Seite.",
        "apihelp-protect-param-title": "Titel der Seite, die du (ent-)sperren möchtest. Kann nicht zusammen mit $1pageid verwendet werden.",
        "apihelp-protect-param-pageid": "Seitenkennung der Seite, die du (ent-)sperren möchtest. Kann nicht zusammen mit $1title verwendet werden.",
-       "apihelp-protect-param-protections": "Liste der Schutzebenen nach dem Format <kbd>Aktion=Ebene</kbd> (z.B. <kbd>edit=sysop</kbd>).\n\n<strong>HINWEIS:</strong> Wenn eine Aktion nicht angegeben wird, wird deren Schutz entfernt.",
+       "apihelp-protect-param-protections": "Listet die Schutzebenen nach dem Format <kbd>Aktion=Ebene</kbd> (z.&nbsp;B. <kbd>edit=sysop</kbd>) auf. Die Ebene <kbd>all</kbd> bedeutet, dass jeder die Aktion ausführen darf, z.&nbsp;B. keine Beschränkung.\n\n<strong>HINWEIS:</strong> Wenn eine Aktion nicht angegeben wird, wird deren Schutz entfernt.",
        "apihelp-protect-param-expiry": "Zeitstempel des Schutzablaufs. Wenn nur ein Zeitstempel übergeben wird, ist dieser für alle Seitenschutze gültig. Um eine unendliche Schutzdauer festzulegen, kannst du die Werte <kbd>infinite</kbd>, <kbd>indefinite</kbd>, <kbd>infinity</kbd> oder <kbd>never</kbd> übergeben.",
        "apihelp-protect-param-reason": "Grund für den Seitenschutz oder dessen Aufhebung.",
        "apihelp-protect-param-tags": "Auf den Seitenschutz-Logbuch-Eintrag anzuwendende Änderungsmarkierungen.",
        "apihelp-protect-param-watch": "Wenn vorhanden, fügt dieser Parameter die zu (ent-)sperrende Seite der Beobachtungsliste des aktuellen Benutzers hinzu.",
        "apihelp-protect-param-watchlist": "Die Seite bedingungslos zur Beobachtungsliste des aktuellen Benutzers hinzufügen oder von ihr entfernen, Einstellungen verwenden oder Beobachtung nicht ändern.",
        "apihelp-protect-example-protect": "Schützt eine Seite",
-       "apihelp-protect-example-unprotect": "Eine Seite entsperren, indem die Einschränkungen durch den Schutz auf <kbd>all</kbd> gestellt werden.",
+       "apihelp-protect-example-unprotect": "Entsperrt eine Seite, indem die Einschränkungen durch den Schutz auf <kbd>all</kbd> gestellt werden (z.&nbsp;B. darf jeder die Aktion ausführen).",
        "apihelp-protect-example-unprotect2": "Eine Seite entsperren, indem keine Einschränkungen übergeben werden",
        "apihelp-purge-description": "Setzt den Cache der angegebenen Seiten zurück.\n\nFalls kein Benutzer angemeldet ist, müssen POST-Anfragen genutzt werden.",
        "apihelp-purge-param-forcelinkupdate": "Aktualisiert die Linktabellen.",
index a8f0278..7f30ef8 100644 (file)
        "apihelp-parse-paramvalue-prop-sections": "Gives the sections in the parsed wikitext.",
        "apihelp-parse-paramvalue-prop-revid": "Adds the revision ID of the parsed page.",
        "apihelp-parse-paramvalue-prop-displaytitle": "Adds the title of the parsed wikitext.",
-       "apihelp-parse-paramvalue-prop-headitems": "Gives items to put in the <code>&lt;head&gt;</code> of the page.",
+       "apihelp-parse-paramvalue-prop-headitems": "<span class=\"apihelp-deprecated\">Deprecated.</span> Gives items to put in the <code>&lt;head&gt;</code> of the page.",
        "apihelp-parse-paramvalue-prop-headhtml": "Gives parsed <code>&lt;head&gt;</code> of the page.",
-       "apihelp-parse-paramvalue-prop-modules": "Gives the ResourceLoader modules used on the page. Either <kbd>jsconfigvars</kbd> or <kbd>encodedjsconfigvars</kbd> must be requested jointly with <kbd>modules</kbd>.",
-       "apihelp-parse-paramvalue-prop-jsconfigvars": "Gives the JavaScript configuration variables specific to the page.",
+       "apihelp-parse-paramvalue-prop-modules": "Gives the ResourceLoader modules used on the page. To load, use <code>mw.loader.using()</code>. Either <kbd>jsconfigvars</kbd> or <kbd>encodedjsconfigvars</kbd> must be requested jointly with <kbd>modules</kbd>.",
+       "apihelp-parse-paramvalue-prop-jsconfigvars": "Gives the JavaScript configuration variables specific to the page. To apply, use <code>mw.config.set()</code>.",
        "apihelp-parse-paramvalue-prop-encodedjsconfigvars": "Gives the JavaScript configuration variables specific to the page as a JSON string.",
        "apihelp-parse-paramvalue-prop-indicators": "Gives the HTML of page status indicators used on the page.",
        "apihelp-parse-paramvalue-prop-iwlinks": "Gives interwiki links in the parsed wikitext.",
        "apihelp-protect-description": "Change the protection level of a page.",
        "apihelp-protect-param-title": "Title of the page to (un)protect. Cannot be used together with $1pageid.",
        "apihelp-protect-param-pageid": "ID of the page to (un)protect. Cannot be used together with $1title.",
-       "apihelp-protect-param-protections": "List of protection levels, formatted <kbd>action=level</kbd> (e.g. <kbd>edit=sysop</kbd>).\n\n<strong>Note:</strong> Any actions not listed will have restrictions removed.",
+       "apihelp-protect-param-protections": "List of protection levels, formatted <kbd>action=level</kbd> (e.g. <kbd>edit=sysop</kbd>). A level of <kbd>all</kbd> means everyone is allowed to take the action, i.e. no restriction.\n\n<strong>Note:</strong> Any actions not listed will have restrictions removed.",
        "apihelp-protect-param-expiry": "Expiry timestamps. If only one timestamp is set, it'll be used for all protections. Use <kbd>infinite</kbd>, <kbd>indefinite</kbd>, <kbd>infinity</kbd>, or <kbd>never</kbd>, for a never-expiring protection.",
        "apihelp-protect-param-reason": "Reason for (un)protecting.",
        "apihelp-protect-param-tags": "Change tags to apply to the entry in the protection log.",
        "apihelp-protect-param-watch": "If set, add the page being (un)protected to the current user's watchlist.",
        "apihelp-protect-param-watchlist": "Unconditionally add or remove the page from the current user's watchlist, use preferences or do not change watch.",
        "apihelp-protect-example-protect": "Protect a page.",
-       "apihelp-protect-example-unprotect": "Unprotect a page by setting restrictions to <kbd>all</kbd>.",
+       "apihelp-protect-example-unprotect": "Unprotect a page by setting restrictions to <kbd>all</kbd> (i.e. everyone is allowed to take the action).",
        "apihelp-protect-example-unprotect2": "Unprotect a page by setting no restrictions.",
 
        "apihelp-purge-description": "Purge the cache for the given titles.\n\nRequires a POST request if the user is not logged in.",
index 46bb3e6..0d6d46c 100644 (file)
        "apihelp-parse-paramvalue-prop-sections": "Fournit les sections dans le wikitexte analysé.",
        "apihelp-parse-paramvalue-prop-revid": "Ajoute l’ID de révision de la page analysée.",
        "apihelp-parse-paramvalue-prop-displaytitle": "Ajoute le titre du wikitexte analysé.",
-       "apihelp-parse-paramvalue-prop-headitems": "Fournit les éléments à mettre dans le <code>&lt;head&gt;</code> de la page.",
+       "apihelp-parse-paramvalue-prop-headitems": "<span class=\"apihelp-deprecated\">Obsolète.</span> Fournit les éléments à mettre dans le <code>&lt;head&gt;</code> de la page.",
        "apihelp-parse-paramvalue-prop-headhtml": "Fournit le <code>&lt;head&gt;</code> analysé de la page.",
-       "apihelp-parse-paramvalue-prop-modules": "Fournit les modules ResourceLoader utilisés sur la page. Soit <kbd>jsconfigvars</kbd> soit <kbd>encodedjsconfigvars</kbd> doit être demandé avec <kbd>modules</kbd>.",
-       "apihelp-parse-paramvalue-prop-jsconfigvars": "Fournit les variables de configuration JavaScript spécifiques à la page.",
+       "apihelp-parse-paramvalue-prop-modules": "Fournit les modules ResourceLoader utilisés sur la page. Pour les charger, utiliser <code>mw.loader.using()</code>. Soit <kbd>jsconfigvars</kbd> soit <kbd>encodedjsconfigvars</kbd> doit être demandé avec <kbd>modules</kbd>.",
+       "apihelp-parse-paramvalue-prop-jsconfigvars": "Fournit les variables de configuration JavaScript spécifiques à la page. Pour les appliquer, utiliser <code>mw.config.set()</code>.",
        "apihelp-parse-paramvalue-prop-encodedjsconfigvars": "Fournit les variables de configuration JavaScript spécifiques à la page comme chaîne JSON.",
        "apihelp-parse-paramvalue-prop-indicators": "Fournit le HTML des indicateurs d’état de page utilisés sur la page.",
        "apihelp-parse-paramvalue-prop-iwlinks": "Fournit les liens interwikis dans le wikitexte analysé.",
        "apihelp-protect-description": "Modifier le niveau de protection d’une page.",
        "apihelp-protect-param-title": "Titre de la page à (dé)protéger. Impossible à utiliser avec $1pageid.",
        "apihelp-protect-param-pageid": "ID de la page à (dé)protéger. Impossible à utiliser avec $1title.",
-       "apihelp-protect-param-protections": "Liste des niveaux de protection, au format <kbd>action=niveau</kbd> (par ex. <kbd>edit=sysop</kbd>).\n\n<strong>NOTE :<strong> Toutes les actions non listées auront leur restrictions supprimées.",
+       "apihelp-protect-param-protections": "Liste des niveaux de protection, au format <kbd>action=niveau</kbd> (par exemple  <kbd>edit=sysop</kbd>). Un niveau de <kbd>tout</kbd>, indique que tout le monde est autorisé à faire l'action, c'est à dire aucune restriction.\n\n<strong>NOTE :<strong> Toutes les actions non listées auront leur restrictions supprimées.",
        "apihelp-protect-param-expiry": "Horodatages d’expiration. Si un seul horodatage est fourni, il sera utilisé pour toutes les protections. Utiliser <kbd>infinite</kbd>, <kbd>indefinite</kbd>, <kbd>infinity</kbd> ou <kbd>never</kbd> pour une protection sans expiration.",
        "apihelp-protect-param-reason": "Motif de (dé)protection.",
        "apihelp-protect-param-tags": "Modifier les balises à appliquer à l’entrée dans le journal de protection.",
        "apihelp-protect-param-watch": "Si activé, ajouter la page (dé)protégée à la liste de suivi de l'utilisateur actuel.",
        "apihelp-protect-param-watchlist": "Ajouter ou supprimer sans condition la page de la liste de suivi de l'utilisateur actuel, utiliser les préférences ou ne pas modifier le suivi.",
        "apihelp-protect-example-protect": "Protéger une page",
-       "apihelp-protect-example-unprotect": "Enlever la protection d’une page en mettant les restrictions à <kbd>all</kbd>.",
+       "apihelp-protect-example-unprotect": "Enlever la protection d’une page en mettant les restrictions à <kbd>all</kbd> (c'est à dire tout le monde est autorisé à faire l'action).",
        "apihelp-protect-example-unprotect2": "Enlever la protection de la page en ne mettant aucune restriction",
        "apihelp-purge-description": "Vider le cache des titres fournis.\n\nNécessite une requête POST si l’utilisateur n’est pas connecté.",
        "apihelp-purge-param-forcelinkupdate": "Mettre à jour les tables de liens.",
        "api-help-param-list-can-be-empty": "{{PLURAL:$1|0=Doit être vide|Peut être vide, ou $2}}",
        "api-help-param-limit": "Pas plus de $1 autorisé.",
        "api-help-param-limit2": "Pas plus de $1 autorisé ($2 pour les robots).",
-       "api-help-param-integer-min": "{{PLURAL:$1|1=La valeur doit être inférieure|2=Les valeurs doivent être inférieures}} à $2.",
+       "api-help-param-integer-min": "{{PLURAL:$1|1=La valeur ne doit pas être inférieure|2=Les valeurs ne doivent pas être inférieures}} à $2.",
        "api-help-param-integer-max": "{{PLURAL:$1|1=La valeur ne doit pas être supérieure|2=Les valeurs ne doivent pas être supérieures}} à $3.",
        "api-help-param-integer-minmax": "{{PLURAL:$1|1=La valeur doit|2=Les valeurs doivent}} être entre $2 et $3.",
        "api-help-param-upload": "Doit être envoyé comme un fichier importé utilisant multipart/form-data.",
index 2e0cbc9..289aa78 100644 (file)
@@ -73,6 +73,7 @@
        "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.",
        "apihelp-cspreport-description": "Usado polos navegadores para informar de violacións da política de confidencialidade de contido. Este módulo non debe se usado nunca, excepto cando é usado automaticamente por un navegador web compatible con CSP.",
+       "apihelp-cspreport-param-reportonly": "Marcar un informe dunha política de vixiancia e non unha política esixida",
        "apihelp-cspreport-param-source": "Que xerou a cabeceira CSP que lanzou este informe",
        "apihelp-delete-description": "Borrar a páxina.",
        "apihelp-delete-param-title": "Título da páxina a eliminar. Non pode usarse xunto con <var>$1pageid</var>.",
index 7d8da1e..08a27d6 100644 (file)
        "apihelp-parse-paramvalue-prop-sections": "מתן הפסקאות בקוד הוויקי המפוענח.",
        "apihelp-parse-paramvalue-prop-revid": "הוספת מזהה הגרסה של הדף המפוענח.",
        "apihelp-parse-paramvalue-prop-displaytitle": "הוספת הכותרת של קוד הוויקי המפוענח.",
-       "apihelp-parse-paramvalue-prop-headitems": "נותן פריטים לשים ב־<code>&lt;head&gt;</code> של הדף.",
+       "apihelp-parse-paramvalue-prop-headitems": "<span class=\"apihelp-deprecated\">לא בשימוש.</span> נותן פריטים לשים ב־<code>&lt;head&gt;</code> של הדף.",
        "apihelp-parse-paramvalue-prop-headhtml": "נותן את ה־<code>&lt;head&gt;</code> המפוענח של הדף.",
-       "apihelp-parse-paramvalue-prop-modules": "×\9eצ×\9f ×\99×\97×\99×\93×\95ת ResourceLoader ×©×\9eש×\9eש×\95ת ×\91×\93×£. יש לבקש את <kbd>jsconfigvars</kbd> או את <kbd>encodedjsconfigvars</kbd> יחד עם <kbd>modules</kbd>.",
-       "apihelp-parse-paramvalue-prop-jsconfigvars": "נותן משתני הגדרות של JavaScript שייחודיים לדף הזה.",
+       "apihelp-parse-paramvalue-prop-modules": "×\9eת×\9f ×\99×\97×\99×\93×\95ת ResourceLoader ×©×\9eש×\9eש×\95ת ×\91×\93×£. ×\9b×\93×\99 ×\9c×\98×¢×\95×\9f, ×\99ש ×\9c×\94שת×\9eש ×\91<code dir=\"ltr\">mw.loader.using()</code>. יש לבקש את <kbd>jsconfigvars</kbd> או את <kbd>encodedjsconfigvars</kbd> יחד עם <kbd>modules</kbd>.",
+       "apihelp-parse-paramvalue-prop-jsconfigvars": "נותן משתני הגדרות של JavaScript שייחודיים לדף הזה. כדי להחיל, יש להשתמש ב<code dir=\"ltr\">mw.config.set()</code>.",
        "apihelp-parse-paramvalue-prop-encodedjsconfigvars": "נותן משתני הגדרות של JavaScript שייחודיים לדף הזה בתור מחרוזת JSON.",
        "apihelp-parse-paramvalue-prop-indicators": "נותן את ה־HTML של מחווני מצב דף שמשמשים בדף.",
        "apihelp-parse-paramvalue-prop-iwlinks": "מתן קישורי בינוויקי בקוד הוויקי המפוענח.",
        "apihelp-protect-description": "לשנות את רמת ההגנה של דף.",
        "apihelp-protect-param-title": "כותרת הדף להגנה או הסרת הגנה. לא ניתן להשתמש בזה יחד עם $1pageid.",
        "apihelp-protect-param-pageid": "מזהה הדף להגנה או הסרת הגנה. לא ניתן להשתמש בזה יחד עם $1title.",
-       "apihelp-protect-param-protections": "רש×\99×\9eת ×¨×\9e×\95ת ×\94×\9b× ×\94, ×\91תס×\93×\99ר <kbd>action=level</kbd> (×\9c×\9eש×\9c <kbd>edit=sysop</kbd>).",
+       "apihelp-protect-param-protections": "רש×\99×\9eת ×¨×\9e×\95ת ×\94×\92× ×\94, ×\91תס×\93×\99ר <kbd>action=level</kbd> (×\9c×\9eש×\9c <kbd>edit=sysop</kbd>). ×¨×\9eת <kbd>all</kbd> ×¤×\99ר×\95ש×\94 ×©×\9b×\95×\9c×\9d ×\9e×\95רש×\99×\9d ×\9c×\91צע ×\90ת ×\94פע×\95×\9c×\94, ×\9b×\9c×\95×\9eר ×\90×\99×\9f ×\94×\92× ×\94.\n\n<strong>×\94ער×\94:</strong> ×\94×\94×\92×\91×\9c×\95ת ×\99×\95סר×\95 ×\9e×\9b×\9c ×\94פע×\95×\9c×\95ת ×©×\9c×\90 ×\9bת×\95×\91×\95ת ×\91רש×\99×\9e×\94.",
        "apihelp-protect-param-expiry": "חותמי־זמן של תפוגה. אם הוגדר רק חותם־זמן אחד, הוא ישמש לכל ההגנות. יש להשתמש ב־<kbd>infinite</kbd>‏, <kbd>indefinite</kbd>‏, <kbd>infinity</kbd>, או <kbd>never</kbd> להגנה שלא פגה לעולם.",
        "apihelp-protect-param-reason": "סיבה להגנה או הסרת הגנה.",
        "apihelp-protect-param-tags": "תגי שינוי שיחולו על העיול ביומן ההגנה.",
        "apihelp-protect-param-watch": "אם זה מוגדר, הוספת הדף שהגנה נוספת אליו או מוסרת ממנו לרשימת המעקב של המשתמש הנוכחי.",
        "apihelp-protect-param-watchlist": "הוספה או הסרה של הדף ללא תנאי מרשימת המעקב של המשתמש הנוכחי, להשתמש בהעדפות או לא לשנות את המעקב.",
        "apihelp-protect-example-protect": "הגנה על דף.",
-       "apihelp-protect-example-unprotect": "להסיר את ההגנה מהדף על־ידי הגדרת מגבלות על <kbd>all</kbd>.",
+       "apihelp-protect-example-unprotect": "להסיר את ההגנה מהדף על־ידי הגדרת מגבלות על <kbd>all</kbd> (למשל: כולם מורשים לבצע את הפעולה).",
        "apihelp-protect-example-unprotect2": "הסרת הגנה מדף על־ידי הגדרה של אפס הגבלות.",
        "apihelp-purge-description": "ניקוי המטמון לכותרות שניתנו.\n\nדורש בקשת POST אם המשתמש לא נכנס לחשבון.",
        "apihelp-purge-param-forcelinkupdate": "עדכון טבלאות הקישורים.",
index 57e124c..e02abe0 100644 (file)
        "apihelp-protect-param-pageid": "ID della pagina da (s)proteggere. Non può essere usato insieme con $1title.",
        "apihelp-protect-param-tags": "Modifica etichette da applicare all'elemento del registro delle protezioni.",
        "apihelp-protect-example-protect": "Proteggi una pagina.",
-       "apihelp-protect-example-unprotect": "Sproteggi una pagina impostando restrizione su <kbd>all</kbd>.",
+       "apihelp-protect-example-unprotect": "Sproteggi una pagina impostando restrizione su <kbd>all</kbd> (cioè a tutti è consentito intraprendere l'azione).",
        "apihelp-protect-example-unprotect2": "Sproteggi una pagina impostando nessuna restrizione.",
        "apihelp-purge-param-forcelinkupdate": "Aggiorna la tabella dei collegamenti.",
        "apihelp-purge-param-forcerecursivelinkupdate": "Aggiorna la tabella dei collegamenti per questa pagina, e per ogni pagina che usa questa pagina come template.",
index 3c7c68d..7db9665 100644 (file)
        "apihelp-managetags-example-delete": "Schmiiß de Makkehrong mem Nahme „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">vandlaism</kbd>“ fott mem Jrond „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Misspelt</kbd>“.",
        "apihelp-managetags-example-activate": "Donn en Makkehrong aktevehre mem Nahme „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">spam</kbd>“ mem Jrond „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">For use in edit patrolling</kbd>“.",
        "apihelp-managetags-example-deactivate": "Donn en Makkehrong mem Nahme „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">spam</kbd>“ nit mieh aktihv maache, mem Jrond „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">For use in edit patrolling</kbd>“.",
+       "apihelp-mergehistory-description": "Väsjohne fun Sigge zosamme lähje.",
+       "apihelp-mergehistory-param-from": "De Övverschreff vun dä Sigg, vun däh de verjange Väsjohne zesamme jelaat wähde sulle. Kam_mer nit zesamme met <var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1fromid</var> bruche.",
+       "apihelp-mergehistory-param-fromid": "De Kännong vun dä Sigg, vun däh de verjange Väsjohne zesamme jelaat wähde sulle. Kam_mer nit zesamme met <var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1fromid</var> bruche.",
+       "apihelp-mergehistory-param-to": "De Övverschreff vun dä Sigg, wohen de verjange Väsjohne zesamme jelaat wähde sulle. Kam_mer nit zesamme met <var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1toid</var> bruche.",
+       "apihelp-mergehistory-param-toid": "De Kännong vun dä Sigg, wohen de verjange Väsjohne zesamme jelaat wähde sulle. Kam_mer nit zesamme met <var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1toid</var> bruche.",
        "apihelp-mergehistory-param-reason": "Der Jrond för et Zesammelähje vun dä älldere Väsjohne.",
        "apihelp-mergehistory-example-merge": "Donn de jannze älldere Väsjohne vun dä Sigg „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Oldpage</kbd>“ met dä Sigg „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Newpage</kbd>“ zesammelähje.",
        "apihelp-mergehistory-example-merge-timestamp": "Donn de älldere Väsjohne vun dä Sigg „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Oldpage</kbd>“ bes zom <kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">2015-12-31T04:37:41Z</kbd> met dä Sigg „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Newpage</kbd>“ zesammelähje.",
        "apihelp-parse-param-section": "Donn blohß der Ennhalld vun däm Affschnett met dä Nommer paase.\n\nWann „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">new</kbd>“ enjejovve es, donn dä Täx <var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1text</var> un de Övverschreff <var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1sectiontitle</var> paase, wi wänn_enne neuje Affschnett en dä Sigg derbei köhm.\n\nDä Parramehter „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">new</kbd>“ es blohß zohjelohße, wann och <var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">text</var> aanjejovve es.",
        "apihelp-parse-param-sectiontitle": "De Övverschreff för dä neuje Afschnet, wann <var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">section</var> = <kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">new</kbd> es.\n\nAnders wi beim Beärbeide vun dä Sigg weed dä Parramehter nit dorsch de <var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">summary</var> ußjetuusch, wann hä fottjelohße udder läddesch es.",
        "apihelp-parse-param-disablelimitreport": "Jiff keine Bereesch vum Vüürbereijde zom Paase (der „<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\">NewPP limit report</i>“) mem Paaser singe Dahte zosamme uß.",
+       "apihelp-parse-param-disablepp": "Nämm <var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1disablelimitreport</var> schtatt dämm.",
        "apihelp-parse-param-disableeditsection": "Donn de Lenks för Affschnedde ze änndere en de Ußjahbe vum Paaser eruß lohße.",
+       "apihelp-parse-param-disabletidy": "Donn et <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"HyperText Markup Language\">HTML</i> vun dä Ußjahbe nit oprühme, för e Beijschpell met <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"correct and cleans up HTML and XML documents fixing markup errors and upgrading legacy code\">tidy</i>.",
        "apihelp-parse-param-disabletoc": "Donn et Ennhaldsverzeijscheneß en de Ußjahbe vottlohße.",
        "apihelp-parse-example-page": "Donn en Sigg pahse.",
        "apihelp-parse-example-text": "Donn Wikkitäx pahse.",
        "apihelp-protect-param-cascade": "Donn en Schotz-Kaskahd zohlohße, alsu ene Schoz för ennjeföhschte Schablohne un upjerohfe Bellder vun dä Sigg. Deiht nix, wann keine von dä aanjejovve Zoote Schoz en Kaskahd zohlöht.",
        "apihelp-protect-param-watchlist": "Donn di Sigg ohne Bedengonge op däm aktoälle Metmaacher sing Oppaßleß udder nemm se druß fott, donn de Enschtällonge nämme, udder donn de Oppaßleß jaa nit verändere.",
        "apihelp-protect-example-protect": "Donn en Sigg schöze.",
+       "apihelp-protect-example-unprotect": "Donn en Sigg nit mih schöze un doh för saz de Beschrängkonge op <kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">all</kbd>“. <!--  https://phabricator.wikimedia.org/T141367 -->",
+       "apihelp-protect-example-unprotect2": "Donn dä Schoz för en Sigg ophävve, un doh för kein Beschrängkonge säze.",
        "apihelp-purge-param-forcelinkupdate": "Bräng de Tabälle met de lengks obb ene neue Schtand.",
        "apihelp-purge-example-simple": "Donn fö de Sigge „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Main Page</kbd>“ un „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">API</kbd>“ de zweschejeschpeijscherte Väsjohn fottschmiiße.",
        "apihelp-purge-example-generator": "Donn fö de eezte zehn Sigge em Schtanndadd_Appachtemang de zweschejeschpeijscherte Väsjohn fottschmiiße.",
        "apihelp-query+allrevisions-param-generatetitles": "Wann als ene  Jenerahtor enjesaz, brängk dat Övverschreffte un kein Kännonge vun Väsjohne.",
        "apihelp-query+allrevisions-example-user": "Donn de läzde fuffzisch Beijdrähsch vum Metmaacher „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Example</kbd>“ opleßte.",
        "apihelp-query+allrevisions-example-ns-main": "Donn de eezde fuffzisch Väsjohne em Houp-Appachemang opleßte.",
+       "apihelp-query+mystashedfiles-description": "Holl en Leß vun dem aktoälle Metmaacher singe upload stash.",
        "apihelp-query+mystashedfiles-param-prop": "Wat för en Aanjahbe holle för di Datteije.",
        "apihelp-query+mystashedfiles-param-limit": "Wi vill Datteije holle?",
        "apihelp-query+alltransclusions-param-from": "De Övverschreff vun dä ennjeföhschte Sigg, woh de Leß medd aanfange sull.",
index 32e227d..c37931a 100644 (file)
@@ -42,6 +42,7 @@
        "apihelp-feedcontributions-param-year": "A partir de l’annada (e mai recent) :",
        "apihelp-feedcontributions-param-month": "A partir del mes (e mai recent) :",
        "apihelp-feedrecentchanges-param-feedformat": "Lo format del flux.",
+       "apihelp-feedrecentchanges-param-hideminor": "Amagar las modificacions menoras.",
        "apihelp-feedrecentchanges-param-tagfilter": "Filtrar per balisa.",
        "apihelp-filerevert-param-comment": "Telecargar lo comentari.",
        "apihelp-filerevert-param-archivename": "Nom d’archiu de la revision de restablir.",
index 96fe70e..6023be0 100644 (file)
        "apihelp-protect-param-reason": "Powód zabezpieczania/odbezpieczania.",
        "apihelp-protect-param-cascade": "Włącz ochronę kaskadową (chronione są wszystkie osadzone szablony i obrazki na tej stronie). Ignorowane, jeśli żaden z danych poziomów ochrony nie wspiera kaskadowania.",
        "apihelp-protect-example-protect": "Zabezpiecz stronę",
-       "apihelp-protect-example-unprotect": "Odbezpiecz stronę ustawiając ograniczenia na <kbd>all</kbd>.",
+       "apihelp-protect-example-unprotect": "Odbezpiecz stronę ustawiając ograniczenia na <kbd>all</kbd> (czyli każdy może wykonać działanie).",
        "apihelp-protect-example-unprotect2": "Odbezpiecz stronę ustawiając brak ograniczeń.",
        "apihelp-purge-param-forcelinkupdate": "Uaktualnij tabele linków.",
        "apihelp-purge-example-generator": "Przeczyść pierwsze 10 stron w przestrzeni głównej.",
index 1b90a0d..40d5786 100644 (file)
@@ -98,6 +98,9 @@
        "api-help-lead": "Esta é uma página de documentação API do MediaWiki gerada automaticamente.\n\nDocumentação e exemplos: https://www.mediawiki.org/wiki/API",
        "api-help-main-header": "Módulo principal",
        "api-help-flag-deprecated": "Este módulo está obsoleto.",
+       "api-help-flag-readrights": "Este módulo requer direitos de leitura.",
+       "api-help-flag-writerights": "Este módulo requer direitos de leitura.",
+       "api-help-flag-mustbeposted": "Este módulo aceita somente solicitações POST.",
        "api-help-source": "Fonte: $1",
        "api-help-license": "Licença: [[$1|$2]]",
        "api-help-license-noname": "Licença: [[$1|Ver ligação]]",
        "api-help-param-deprecated": "Obsoleto.",
        "api-help-param-required": "Este parâmetro é obrigatório.",
        "api-help-datatypes-header": "Tipo de dados",
+       "api-help-datatypes": "Alguns tipos de parâmetro na API necessitam de mais explicações:\n;boolean\n:Os parâmetros booleanos funcionam como as caixas de seleção HTML: se o parâmetro for especificado, independentemente do valor, é considerado verdadeiro. Para um valor falso, omitir o parâmetro completo.\n;timestamp\n:Timestamps podem ser especificados em vários formatos. Formato de data e hora ISO 8601 é recomendado. Todos os horários estão em UTC, qualquer inclusão de fuso horário é ignorado.\n:* Data e hora ISO 8601, <kbd><var>2001</var>-<var>01</var>-<var>15</var>T<var>14</var>:<var>56</var>:<var>00</var>Z</kbd> (pontuação e <kbd>Z</kbd> são opcionais)\n:* Data e hora ISO 8601 com segundos fracionários (ignorado), <kbd><var>2001</var>-<var>01</var>-<var>15</var>T<var>14</var>:<var>56</var>:<var>00</var>.<var>00001</var>Z</kbd> (traços, dois pontos e <kbd>Z</kbd> são opcionais)\n:* Formato do MediaWiki, <kbd><var>2001</var><var>01</var><var>15</var><var>14</var><var>56</var><var>00</var></kbd>\n:* Formato numérico genérico, <kbd><var>2001</var>-<var>01</var>-<var>15</var> <var>14</var>:<var>56</var>:<var>00</var></kbd> (fuso horário opcional do <kbd>GMT</kbd>, <kbd>+<var>##</var></kbd>, or <kbd>-<var>##</var></kbd> são ignorados)\n:* Formato EXIF, <kbd><var>2001</var>:<var>01</var>:<var>15</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:*Formato RFC 2822 (o fuso horário pode ser omitido), <kbd><var>Mon</var>, <var>15</var> <var>Jan</var> <var>2001</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* Formato RFC 850 (o fuso horário pode ser omitido), <kbd><var>Monday</var>, <var>15</var>-<var>Jan</var>-<var>2001</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* Formato C ctime, <kbd><var>Mon</var> <var>Jan</var> <var>15</var> <var>14</var>:<var>56</var>:<var>00</var> <var>2001</var></kbd>\n:* Segundos desde 1970-01-01T00:00:00Z como um inteiro de 1 a 13 dígitos (excluindo <kbd>0</kbd>)\n:* A string <kbd>now</kbd>",
        "api-help-param-type-limit": "Tipo: inteiro ou <kbd>max</kbd>",
        "api-help-param-type-boolean": "Tipo: boolean ([[Special:ApiHelp/main#main/datatypes|detalhes]])",
        "api-help-param-type-user": "Tipo: {{PLURAL:$1|1=nome de utilizador|2=lista de nomes de utilizadores}}",
        "api-help-param-list": "{{PLURAL:$1|1=Um dos seguintes valores|2=Valores (separar com <kbd>{{!}}</kbd>)}}: $2",
        "api-help-param-multi-separate": "Separe os valores com <kbd>|</kbd>.",
+       "api-help-param-multi-max": "O número máximo de valores é {{PLURAL:$1|$1}} ({{PLURAL:$2|$2}} para robôs).",
        "api-help-param-default": "Padrão: $1",
        "api-help-param-default-empty": "Padrão: <span class=\"apihelp-empty\">(vazio)</span>",
        "api-help-param-no-description": "<span class=\"apihelp-empty\">(sem descrição)</span>",
index dd537f6..af95729 100644 (file)
@@ -28,7 +28,7 @@
        "apihelp-main-param-requestid": "Любое заданное здесь значение будет включено в ответ. Может быть использовано для различения запросов.",
        "apihelp-main-param-servedby": "Включить в результаты имя хоста, обработавшего запрос.",
        "apihelp-main-param-curtimestamp": "Включить в результаты временную метку.",
-       "apihelp-main-param-origin": "При обращении к API, используя кросс-доменный AJAX-запрос (CORS), задайте параметру значение исходного домена. Он должен быть включён в любой предварительный запрос и таким образом должен быть частью URI-запроса (не тела POST). Он должен точно соответствовать одному из источников в заголовке <code>Origin<code>, так что он должен быть задан наподобие <kbd>https://ru.wikipedia.org</kbd> или <kbd>https://meta.wikimedia.org</kbd>. Если параметр не соответствует заголовку <code>Origin<code>, будет возвращён ответ с кодом ошибки 403. Если параметр соответствует заголовку <code>Origin</code>, и источник находится в белом списке, будет установлен заголовок <code>Access-Control-Allow-Origin</code>.",
+       "apihelp-main-param-origin": "При обращении к API, используя кросс-доменный AJAX-запрос (CORS), задайте параметру значение исходного домена. Он должен быть включён в любой предварительный запрос и таким образом должен быть частью URI-запроса (не тела POST).\n\nДля аутентифицированных запросов он должен точно соответствовать одному из источников в заголовке <code>Origin<code>, так что он должен быть задан наподобие <kbd>https://ru.wikipedia.org</kbd> или <kbd>https://meta.wikimedia.org</kbd>. Если параметр не соответствует заголовку <code>Origin<code>, будет возвращён ответ с кодом ошибки 403. Если параметр соответствует заголовку <code>Origin</code>, и источник находится в белом списке, будут установлены заголовки <code>Access-Control-Allow-Origin</code> и <code>Access-Control-Allow-Credentials</code>.\n\nДля неаутентифицированных запросов укажите значение <kbd>*</kbd>. Это приведёт к установке заголовка <code>Access-Control-Allow-Origin</code> заголовка должен быть установлен, но <code>Access-Control-Allow-Credentials</code> примет значение <code>false</code> и все пользовательские данные будут ограничены.",
        "apihelp-block-description": "Блокировка участника.",
        "apihelp-block-param-user": "Имя участника, IP-адрес или диапазон IP-адресов, которые вы хотите заблокировать.",
        "apihelp-block-param-reason": "Причина блокировки.",
        "apihelp-feedcontributions-param-deletedonly": "Показать только удалённые правки.",
        "apihelp-feedcontributions-param-toponly": "Показать только правки, являющиеся последними версиями.",
        "apihelp-feedcontributions-param-newonly": "Показывать только правки, являющиеся созданием страниц.",
+       "apihelp-feedcontributions-param-hideminor": "Скрыть малые правки.",
        "apihelp-feedcontributions-param-showsizediff": "Показать размер различия между версиями.",
        "apihelp-feedcontributions-example-simple": "Показать вклад участника <kbd>Example</kbd>.",
        "apihelp-feedrecentchanges-param-invert": "Все пространства имён, кроме выбранного.",
        "apihelp-imagerotate-param-rotation": "На сколько градусов по часовой стрелке повернуть изображение.",
        "apihelp-imagerotate-example-simple": "Повернуть <kbd>File:Example.png</kbd> на <kbd>90</kbd> градусов.",
        "apihelp-imagerotate-example-generator": "Повернуть все изображения в <kbd>Category:Flip</kbd> на <kbd>180</kbd> градусов.",
-       "apihelp-import-param-summary": "Ð\98мпоÑ\80Ñ\82 Ð¸Ñ\82ога",
+       "apihelp-import-param-summary": "Ð\9eпиÑ\81ание Ð·Ð°Ð¿Ð¸Ñ\81и Ð¶Ñ\83Ñ\80нала Ð¸Ð¼Ð¿Ð¾Ñ\80Ñ\82а.",
        "apihelp-import-param-xml": "Загруженный XML-файл.",
        "apihelp-import-example-import": "Импортировать [[meta:Help:ParserFunctions]] с полной историей в пространство имён 100.",
        "apihelp-login-param-name": "Имя участника.",
        "apihelp-protect-param-title": "Бит атамаһы. $1pageid менән бергә ҡулланылмай.",
        "apihelp-protect-param-reason": "(ООН) һағы сәбәптәре.",
        "apihelp-protect-example-protect": "Защитить страницу.",
-       "apihelp-protect-example-unprotect": "<kbd>всех</kbd> өсөн сикләүҙәр ҡуйып,биттән һаҡлауҙы алырға.",
+       "apihelp-protect-example-unprotect": "Снять защиту страницы, установив ограничения <kbd>all</kbd> (т. е. любой желающий может принять меры).",
        "apihelp-protect-example-unprotect2": "Бер ниндәй сикләүҙәр ҡуймай биттән һаҡлауҙы алырға.",
        "apihelp-purge-param-forcelinkupdate": "Обновление связей таблиц.",
        "apihelp-purge-param-forcerecursivelinkupdate": "Һылтанманы һәм таблицаны яңыртығыҙ һәм был битте шаблон итеп ҡулланған башҡа биттәр өсөн һылтанмаларҙы ла яңыртығыҙ.",
        "apihelp-query+allimages-param-maxsize": "Бар һүрәттәр лимиты (байттарҙа).",
        "apihelp-query+allimages-param-limit": "Кире ҡайтыу өсөн образдар һаны.",
        "apihelp-query+allimages-example-B": "<kbd>Б</kbd> хәрефенән башланған файлдар исемлеген күрһәтергә.",
-       "apihelp-query+allimages-example-recent": "Ð\9aүпÑ\82Ó\99н Ñ\82үгел Ñ\82ейÓ\99лгÓ\99н Ò»Ó\99м [[Ñ\81пеÑ\86иалÑ\8cнÑ\8bе:NewFiles]] Ð¾Ò¡Ñ\88аÑ\88 Ñ\84айлдаÑ\80 Ð¸Ñ\81емлеген ÐºÒ¯Ñ\80Ò»Ó\99Ñ\82еÑ\80гÓ\99.",
+       "apihelp-query+allimages-example-recent": "Ð\9fоказаÑ\82Ñ\8c Ñ\81пиÑ\81ок Ð½ÐµÐ´Ð°Ð²Ð½Ð¾ Ð·Ð°Ð³Ñ\80Ñ\83женнÑ\8bÑ\85 Ñ\84айлов, Ð°Ð½Ð°Ð»Ð¾Ð³Ð¸Ñ\87но [[Special:NewFiles]].",
        "apihelp-query+allimages-example-generator": "<kbd>Т</kbd> хәрефенән башланған 4 файл хаҡында мәғлүмәтте  күрһәтергә.",
        "apihelp-query+alllinks-description": "Бирелгән исемдәр арауығына йүнәлткән барлыҡ һылтанмаларҙы һанап сығырға.",
        "apihelp-query+alllinks-param-from": "Һанауҙы башлау өсөн һылтанма атамаһы.",
index c60976f..1bf80a2 100644 (file)
@@ -84,6 +84,7 @@
        "apihelp-createaccount-example-pass": "创建用户<kbd>testuser</kbd>和密码<kbd>test123</kbd>。",
        "apihelp-createaccount-example-mail": "创建用户<kbd>testmailuser</kbd>并电邮发送一个随机生成的密码。",
        "apihelp-cspreport-description": "由浏览器使用以报告违反内容安全方针的内容。此模块应永不使用,除了在被CSP兼容的浏览器自动使用时。",
+       "apihelp-cspreport-param-reportonly": "标记作为来自监视方针的报告,而不是执行方针的报告",
        "apihelp-delete-description": "删除一个页面。",
        "apihelp-delete-param-title": "要删除的页面标题。不能与<var>$1pageid</var>一起使用。",
        "apihelp-delete-param-pageid": "要删除的页面的页面 ID。不能与<var>$1title</var>一起使用。",
        "apihelp-parse-paramvalue-prop-sections": "在被解析的wiki文本中提供段落。",
        "apihelp-parse-paramvalue-prop-revid": "添加被解析页面的修订ID。",
        "apihelp-parse-paramvalue-prop-displaytitle": "为被解析的wiki文本添加标题。",
-       "apihelp-parse-paramvalue-prop-headitems": "提供项目以插入至页面的<code>&lt;head&gt;</code>。",
+       "apihelp-parse-paramvalue-prop-headitems": "<span class=\"apihelp-deprecated\">已弃用。</span>提供项目以插入至页面的<code>&lt;head&gt;</code>。",
        "apihelp-parse-paramvalue-prop-headhtml": "提供页面的被解析<code>&lt;head&gt;</code>。",
-       "apihelp-parse-paramvalue-prop-modules": "提供在页面中使用的ResourceLoader模块。无论<kbd>jsconfigvars</kbd>还是<kbd>encodedjsconfigvars</kbd>都必须与<kbd>modules</kbd>共同被请求。",
-       "apihelp-parse-paramvalue-prop-jsconfigvars": "针对页面提供JavaScript配置变量。",
+       "apihelp-parse-paramvalue-prop-modules": "提供在页面中使用的ResourceLoader模块。要加载,请使用<code>mw.loader.using()</code>。无论<kbd>jsconfigvars</kbd>还是<kbd>encodedjsconfigvars</kbd>都必须与<kbd>modules</kbd>共同被请求。",
+       "apihelp-parse-paramvalue-prop-jsconfigvars": "针对页面提供JavaScript配置变量。要应用,请使用<code>mw.config.set()</code>。",
        "apihelp-parse-paramvalue-prop-encodedjsconfigvars": "针对页面提供JavaScript配置变量为一个JSON字符串。",
        "apihelp-parse-paramvalue-prop-indicators": "提供页面上使用的页面状态指示器的HTML。",
        "apihelp-parse-paramvalue-prop-iwlinks": "在被解析的wiki文本中提供跨wiki链接。",
        "apihelp-protect-description": "更改页面的保护等级。",
        "apihelp-protect-param-title": "要(解除)保护的页面标题。不能与$1pageid一起使用。",
        "apihelp-protect-param-pageid": "要(解除)保护的页面ID。不能与$1title一起使用。",
-       "apihelp-protect-param-protections": "保护等级列表,格式:<kbd>action=level</kbd>(例如<kbd>edit=sysop</kbd>)。\n\n<strong>注意:</strong>未列出的操作将移除限制。",
+       "apihelp-protect-param-protections": "保护等级列表,格式:<kbd>action=level</kbd>(例如<kbd>edit=sysop</kbd>)。等级<kbd>all</kbd>意味着任何人都可以执行操作,也就是说没有限制。\n\n<strong>注意:</strong>未列出的操作将移除限制。",
        "apihelp-protect-param-expiry": "到期时间戳。如果只有一个时间戳被设置,它将被用于所有保护。使用<kbd>infinite</kbd>、<kbd>indefinite</kbd>、<kbd>infinity</kbd>或<kbd>never</kbd>用于永不过期的保护。",
        "apihelp-protect-param-reason": "(解除)保护的原因。",
        "apihelp-protect-param-tags": "要在保护日志中应用到实体的更改标签。",
        "apihelp-protect-param-watch": "如果设置,就加入已开始(解除)保护的页面至当前用户的监视列表。",
        "apihelp-protect-param-watchlist": "无条件地将页面加入至当前用户的监视列表或将其移除,使用设置或不更改监视。",
        "apihelp-protect-example-protect": "保护一个页面。",
-       "apihelp-protect-example-unprotect": "通过设置限制为<kbd>all</kbd>解除保护一个页面。",
+       "apihelp-protect-example-unprotect": "通过设置限制为<kbd>all</kbd>解除保护一个页面(就是说任何人都可以执行操作)。",
        "apihelp-protect-example-unprotect2": "通过设置没有限制解除保护一个页面。",
        "apihelp-purge-description": "为指定标题刷新缓存。\n\n如果用户尚未登录的话,就需要POST请求。",
        "apihelp-purge-param-forcelinkupdate": "更新链接表。",
index bb78aa0..ea2e20b 100644 (file)
@@ -127,7 +127,7 @@ class HTMLFileCache extends FileCacheBase {
                $ulang = $context->getLanguage();
 
                // Check that there are no other sources of variation
-               if ( $user->getId() || $user->getNewtalk() || $ulang->equals( $wgContLang ) ) {
+               if ( $user->getId() || $user->getNewtalk() || !$ulang->equals( $wgContLang ) ) {
                        return false;
                }
                // Allow extensions to disable caching
index 9948040..77038ed 100644 (file)
@@ -236,6 +236,9 @@ class ChangesList extends ContextSource {
 
        /**
         * Show formatted char difference
+        *
+        * Needs the css module 'mediawiki.special.changeslist' to style output
+        *
         * @param int $old Number of bytes
         * @param int $new Number of bytes
         * @param IContextSource $context
index 9fb0660..fe254af 100644 (file)
@@ -53,6 +53,8 @@ abstract class Collation {
                                return new IdentityCollation;
                        case 'uca-default':
                                return new IcuCollation( 'root' );
+                       case 'uca-default-u-kn':
+                               return new IcuCollation( 'root-u-kn' );
                        case 'xx-uca-ckb':
                                return new CollationCkb;
                        case 'xx-uca-et':
index c2e8b24..f5d3c33 100644 (file)
@@ -36,6 +36,9 @@ class IcuCollation extends Collation {
        /** @var Language */
        protected $digitTransformLanguage;
 
+       /** @var boolean */
+       private $useNumericCollation = false;
+
        /** @var array */
        private $firstLetterData;
 
@@ -197,6 +200,15 @@ class IcuCollation extends Collation {
 
                $this->primaryCollator = Collator::create( $locale );
                $this->primaryCollator->setStrength( Collator::PRIMARY );
+
+               // If the special suffix for numeric collation is present, turn on numeric collation.
+               if ( substr( $locale, -5, 5 ) === '-u-kn' ) {
+                       $this->useNumericCollation = true;
+                       // Strip off the special suffix so it doesn't trip up fetchFirstLetterData().
+                       $this->locale = substr( $this->locale, 0, -5 );
+                       $this->mainCollator->setAttribute( Collator::NUMERIC_COLLATION, Collator::ON );
+                       $this->primaryCollator->setAttribute( Collator::NUMERIC_COLLATION, Collator::ON );
+               }
        }
 
        public function getSortKey( $string ) {
@@ -213,8 +225,9 @@ class IcuCollation extends Collation {
                        return '';
                }
 
-               // Check for CJK
                $firstChar = mb_substr( $string, 0, 1, 'UTF-8' );
+
+               // If the first character is a CJK character, just return that character.
                if ( ord( $firstChar ) > 0x7f && self::isCjk( UtfNormal\Utils::utf8ToCodepoint( $firstChar ) ) ) {
                        return $firstChar;
                }
@@ -232,7 +245,19 @@ class IcuCollation extends Collation {
                        // Before the first letter
                        return '';
                }
-               return $this->getLetterByIndex( $min );
+
+               $sortLetter = $this->getLetterByIndex( $min );
+
+               if ( $this->useNumericCollation ) {
+                       // If the sort letter is a number, return '0–9' (or localized equivalent).
+                       // ASCII value of 0 is 48. ASCII value of 9 is 57.
+                       // Note that this also applies to non-Arabic numerals since they are
+                       // mapped to Arabic numeral sort letters. For example, ২ sorts as 2.
+                       if ( ord( $sortLetter ) >= 48 && ord( $sortLetter ) <= 57 ) {
+                               $sortLetter = wfMessage( 'category-header-numerals' )->numParams( 0, 9 )->text();
+                       }
+               }
+               return $sortLetter;
        }
 
        /**
@@ -408,6 +433,7 @@ class IcuCollation extends Collation {
        }
 
        /**
+        * Test if a code point is a CJK (Chinese, Japanese, Korean) character
         * @since 1.16.3
         */
        public static function isCjk( $codepoint ) {
index 1893c73..53862b9 100644 (file)
@@ -417,6 +417,10 @@ class DBConnRef implements IDatabase {
                return $this->__call( __FUNCTION__, func_get_args() );
        }
 
+       public function serverIsReadOnly() {
+               return $this->__call( __FUNCTION__, func_get_args() );
+       }
+
        public function onTransactionResolution( callable $callback ) {
                return $this->__call( __FUNCTION__, func_get_args() );
        }
index 9b73584..3dc6e92 100644 (file)
@@ -58,6 +58,8 @@ abstract class DatabaseBase implements IDatabase {
        protected $mTrxPreCommitCallbacks = [];
        /** @var array[] List of (callable, method name) */
        protected $mTrxEndCallbacks = [];
+       /** @var bool Whether to suppress triggering of post-commit callbacks */
+       protected $suppressPostCommitCallbacks = false;
 
        protected $mTablePrefix;
        protected $mSchema;
@@ -694,9 +696,6 @@ abstract class DatabaseBase implements IDatabase {
        }
 
        public function close() {
-               if ( count( $this->mTrxIdleCallbacks ) ) { // sanity
-                       throw new MWException( "Transaction idle callbacks still pending." );
-               }
                if ( $this->mConn ) {
                        if ( $this->trxLevel() ) {
                                if ( !$this->mTrxAutomatic ) {
@@ -709,6 +708,8 @@ abstract class DatabaseBase implements IDatabase {
 
                        $closed = $this->closeConnection();
                        $this->mConn = false;
+               } elseif ( $this->mTrxIdleCallbacks || $this->mTrxEndCallbacks ) { // sanity
+                       throw new MWException( "Transaction callbacks still pending." );
                } else {
                        $closed = true;
                }
@@ -2387,14 +2388,19 @@ abstract class DatabaseBase implements IDatabase {
         * queries. If a deadlock occurs during the processing, the transaction
         * will be rolled back and the callback function will be called again.
         *
+        * Avoid using this method outside of Job or Maintenance classes.
+        *
         * Usage:
         *   $dbw->deadlockLoop( callback, ... );
         *
         * Extra arguments are passed through to the specified callback function.
+        * This method requires that no transactions are already active to avoid
+        * causing premature commits or exceptions.
         *
         * Returns whatever the callback function returned on its successful,
         * iteration, or false on error, for example if the retry limit was
         * reached.
+        *
         * @return mixed
         * @throws DBUnexpectedError
         * @throws Exception
@@ -2450,6 +2456,10 @@ abstract class DatabaseBase implements IDatabase {
                return false;
        }
 
+       public function serverIsReadOnly() {
+               return false;
+       }
+
        final public function onTransactionResolution( callable $callback ) {
                if ( !$this->mTrxLevel ) {
                        throw new DBUnexpectedError( $this, "No transaction is active." );
@@ -2468,17 +2478,43 @@ abstract class DatabaseBase implements IDatabase {
                if ( $this->mTrxLevel ) {
                        $this->mTrxPreCommitCallbacks[] = [ $callback, wfGetCaller() ];
                } else {
-                       $this->onTransactionIdle( $callback ); // this will trigger immediately
+                       // If no transaction is active, then make one for this callback
+                       $this->begin( __METHOD__ );
+                       try {
+                               call_user_func( $callback );
+                               $this->commit( __METHOD__ );
+                       } catch ( Exception $e ) {
+                               $this->rollback( __METHOD__ );
+                               throw $e;
+                       }
                }
        }
 
        /**
-        * Actually any "on transaction idle" callbacks.
+        * Whether to disable running of post-commit callbacks
+        *
+        * This method should not be used outside of Database/LoadBalancer
+        *
+        * @param bool $suppress
+        * @since 1.28
+        */
+       final public function setPostCommitCallbackSupression( $suppress ) {
+               $this->suppressPostCommitCallbacks = $suppress;
+       }
+
+       /**
+        * Actually run and consume any "on transaction idle/resolution" callbacks.
+        *
+        * This method should not be used outside of Database/LoadBalancer
         *
         * @param integer $trigger IDatabase::TRIGGER_* constant
         * @since 1.20
         */
-       protected function runOnTransactionIdleCallbacks( $trigger ) {
+       public function runOnTransactionIdleCallbacks( $trigger ) {
+               if ( $this->suppressPostCommitCallbacks ) {
+                       return;
+               }
+
                $autoTrx = $this->getFlag( DBO_TRX ); // automatic begin() enabled?
 
                $e = $ePrior = null; // last exception
@@ -2487,8 +2523,8 @@ abstract class DatabaseBase implements IDatabase {
                                $this->mTrxIdleCallbacks,
                                $this->mTrxEndCallbacks // include "transaction resolution" callbacks
                        );
-                       $this->mTrxIdleCallbacks = []; // recursion guard
-                       $this->mTrxEndCallbacks = []; // recursion guard
+                       $this->mTrxIdleCallbacks = []; // consumed (and recursion guard)
+                       $this->mTrxEndCallbacks = []; // consumed (recursion guard)
                        foreach ( $callbacks as $callback ) {
                                try {
                                        list( $phpCallback ) = $callback;
@@ -2519,7 +2555,7 @@ abstract class DatabaseBase implements IDatabase {
        }
 
        /**
-        * Actually any "on transaction pre-commit" callbacks.
+        * Actually run and consume any "on transaction pre-commit" callbacks.
         *
         * This method should not be used outside of Database/LoadBalancer
         *
@@ -2529,7 +2565,7 @@ abstract class DatabaseBase implements IDatabase {
                $e = $ePrior = null; // last exception
                do { // callbacks may add callbacks :)
                        $callbacks = $this->mTrxPreCommitCallbacks;
-                       $this->mTrxPreCommitCallbacks = []; // recursion guard
+                       $this->mTrxPreCommitCallbacks = []; // consumed (and recursion guard)
                        foreach ( $callbacks as $callback ) {
                                try {
                                        list( $phpCallback ) = $callback;
@@ -2637,8 +2673,6 @@ abstract class DatabaseBase implements IDatabase {
                $this->mTrxAutomatic = false;
                $this->mTrxAutomaticAtomic = false;
                $this->mTrxAtomicLevels = [];
-               $this->mTrxIdleCallbacks = [];
-               $this->mTrxPreCommitCallbacks = [];
                $this->mTrxShortId = wfRandomString( 12 );
                $this->mTrxWriteDuration = 0.0;
                $this->mTrxWriteCallers = [];
index 02a8d30..a6f8c31 100644 (file)
@@ -885,6 +885,13 @@ abstract class DatabaseMysqlBase extends Database {
                }
        }
 
+       public function serverIsReadOnly() {
+               $res = $this->query( "SHOW GLOBAL VARIABLES LIKE 'read_only'", __METHOD__ );
+               $row = $this->fetchObject( $res );
+
+               return $row ? ( strtolower( $row->Value ) === 'on' ) : false;
+       }
+
        /**
         * @param string $index
         * @return string
index c024632..41b131f 100644 (file)
@@ -1221,7 +1221,13 @@ interface IDatabase {
        public function getMasterPos();
 
        /**
-        * Run an anonymous function as soon as the current transaction commits or rolls back.
+        * @return bool Whether the DB is marked as read-only server-side
+        * @since 1.28
+        */
+       public function serverIsReadOnly();
+
+       /**
+        * Run a callback as soon as the current transaction commits or rolls back.
         * An error is thrown if no transaction is pending. Queries in the function will run in
         * AUTO-COMMIT mode unless there are begin() calls. Callbacks must commit any transactions
         * that they begin.
@@ -1238,7 +1244,7 @@ interface IDatabase {
        public function onTransactionResolution( callable $callback );
 
        /**
-        * Run an anonymous function as soon as there is no transaction pending.
+        * Run a callback as soon as there is no transaction pending.
         * If there is a transaction and it is rolled back, then the callback is cancelled.
         * Queries in the function will run in AUTO-COMMIT mode unless there are begin() calls.
         * Callbacks must commit any transactions that they begin.
@@ -1259,9 +1265,10 @@ interface IDatabase {
        public function onTransactionIdle( callable $callback );
 
        /**
-        * Run an anonymous function before the current transaction commits or now if there is none.
+        * Run a callback before the current transaction commits or now if there is none.
         * If there is a transaction and it is rolled back, then the callback is cancelled.
-        * Callbacks must not start nor commit any transactions.
+        * Callbacks must not start nor commit any transactions. If no transaction is active,
+        * then a transaction will wrap the callback.
         *
         * This is useful for updates that easily cause deadlocks if locks are held too long
         * but where atomicity is strongly desired for these updates and some related updates.
index 9a1d679..053f9f8 100644 (file)
@@ -204,15 +204,12 @@ abstract class LBFactory implements DestructibleService {
         * 1. To commit changes to the masters.
         * 2. To release the snapshot on all connections, master and slave.
         * @param string $fname Caller name
+        * @param array $options Options map:
+        *   - maxWriteDuration: abort if more than this much time was spent in write queries
         */
-       public function commitAll( $fname = __METHOD__ ) {
-               $this->logMultiDbTransaction();
-
-               $start = microtime( true );
+       public function commitAll( $fname = __METHOD__, array $options = [] ) {
+               $this->commitMasterChanges( $fname, $options );
                $this->forEachLBCallMethod( 'commitAll', [ $fname ] );
-               $timeMs = 1000 * ( microtime( true ) - $start );
-
-               RequestContext::getMain()->getStats()->timing( "db.commit-all", $timeMs );
        }
 
        /**
@@ -222,25 +219,17 @@ abstract class LBFactory implements DestructibleService {
         *   - maxWriteDuration: abort if more than this much time was spent in write queries
         */
        public function commitMasterChanges( $fname = __METHOD__, array $options = [] ) {
-               $limit = isset( $options['maxWriteDuration'] ) ? $options['maxWriteDuration'] : 0;
-
-               // Run pre-commit callbacks to keep them out of the COMMIT step. If one errors out here
-               // then all DB transactions can be rolled back before anything was committed yet.
-               $this->forEachLBCallMethod( 'runPreCommitCallbacks' );
-
-               $this->logMultiDbTransaction();
-               $this->forEachLB( function ( LoadBalancer $lb ) use ( $limit ) {
-                       $lb->forEachOpenConnection( function ( IDatabase $db ) use ( $limit ) {
-                               $time = $db->pendingWriteQueryDuration();
-                               if ( $limit > 0 && $time > $limit ) {
-                                       throw new DBTransactionError(
-                                               $db,
-                                               wfMessage( 'transaction-duration-limit-exceeded', $time, $limit )->text()
-                                       );
-                               }
-                       } );
-               } );
-
+               // Perform all pre-commit callbacks, aborting on failure
+               $this->forEachLBCallMethod( 'runMasterPreCommitCallbacks' );
+               // Perform all pre-commit checks, aborting on failure
+               $this->forEachLBCallMethod( 'approveMasterChanges', [ $options ] );
+               // Log the DBs and methods involved in multi-DB transactions
+               $this->logIfMultiDbTransaction();
+               // Actually perform the commit on all master DB connections
+               $this->forEachLBCallMethod( 'commitMasterChanges', [ $fname ] );
+               // Run all post-commit callbacks
+               $this->forEachLBCallMethod( 'runMasterPostCommitCallbacks' );
+               // Commit any dangling DBO_TRX transactions from callbacks on one DB to another DB
                $this->forEachLBCallMethod( 'commitMasterChanges', [ $fname ] );
        }
 
@@ -256,7 +245,7 @@ abstract class LBFactory implements DestructibleService {
        /**
         * Log query info if multi DB transactions are going to be committed now
         */
-       private function logMultiDbTransaction() {
+       private function logIfMultiDbTransaction() {
                $callersByDB = [];
                $this->forEachLB( function ( LoadBalancer $lb ) use ( &$callersByDB ) {
                        $masterName = $lb->getServerName( $lb->getWriterIndex() );
index d9a7381..2543958 100644 (file)
@@ -49,6 +49,8 @@ class LoadBalancer {
        private $mLoadMonitor;
        /** @var BagOStuff */
        private $srvCache;
+       /** @var WANObjectCache */
+       private $wanCache;
 
        /** @var bool|DatabaseBase Database connection that caused a problem */
        private $mErrorConnection;
@@ -76,6 +78,8 @@ class LoadBalancer {
        const MAX_LAG = 10;
        /** @var integer Max time to wait for a slave to catch up (e.g. ChronologyProtector) */
        const POS_WAIT_TIMEOUT = 10;
+       /** @var integer Seconds to cache master server read-only status */
+       const TTL_CACHE_READONLY = 5;
 
        /**
         * @var boolean
@@ -135,6 +139,7 @@ class LoadBalancer {
                }
 
                $this->srvCache = ObjectCache::getLocalServerInstance();
+               $this->wanCache = ObjectCache::getMainWANInstance();
 
                if ( isset( $params['trxProfiler'] ) ) {
                        $this->trxProfiler = $params['trxProfiler'];
@@ -578,7 +583,7 @@ class LoadBalancer {
 
                if ( $masterOnly ) {
                        # Make master-requested DB handles inherit any read-only mode setting
-                       $conn->setLBInfo( 'readOnlyReason', $this->getReadOnlyReason( $wiki ) );
+                       $conn->setLBInfo( 'readOnlyReason', $this->getReadOnlyReason( $wiki, $conn ) );
                }
 
                return $conn;
@@ -1004,14 +1009,10 @@ class LoadBalancer {
         * Close all open connections
         */
        public function closeAll() {
-               foreach ( $this->mConns as $conns2 ) {
-                       foreach ( $conns2 as $conns3 ) {
-                               /** @var DatabaseBase $conn */
-                               foreach ( $conns3 as $conn ) {
-                                       $conn->close();
-                               }
-                       }
-               }
+               $this->forEachOpenConnection( function ( DatabaseBase $conn ) {
+                       $conn->close();
+               } );
+
                $this->mConns = [
                        'local' => [],
                        'foreignFree' => [],
@@ -1051,35 +1052,68 @@ class LoadBalancer {
         * @param string $fname Caller name
         */
        public function commitAll( $fname = __METHOD__ ) {
-               foreach ( $this->mConns as $conns2 ) {
-                       foreach ( $conns2 as $conns3 ) {
-                               /** @var DatabaseBase[] $conns3 */
-                               foreach ( $conns3 as $conn ) {
-                                       if ( $conn->trxLevel() ) {
-                                               $conn->commit( $fname, 'flush' );
-                                       }
-                               }
+               $this->forEachOpenConnection( function ( DatabaseBase $conn ) use ( $fname ) {
+                       $conn->commit( $fname, 'flush' );
+               } );
+       }
+
+       /**
+        * Perform all pre-commit callbacks that remain part of the atomic transactions
+        * and disable any post-commit callbacks until runMasterPostCommitCallbacks()
+        * @since 1.28
+        */
+       public function runMasterPreCommitCallbacks() {
+               $this->forEachOpenMasterConnection( function ( DatabaseBase $conn ) {
+                       // Any error will cause all DB transactions to be rolled back together.
+                       $conn->runOnTransactionPreCommitCallbacks();
+                       // Defer post-commit callbacks until COMMIT finishes for all DBs.
+                       $conn->setPostCommitCallbackSupression( true );
+               } );
+       }
+
+       /**
+        * Perform all pre-commit checks for things like replication safety
+        * @param array $options Includes:
+        *   - maxWriteDuration : max write query duration time in seconds
+        * @throws DBTransactionError
+        * @since 1.28
+        */
+       public function approveMasterChanges( array $options ) {
+               $limit = isset( $options['maxWriteDuration'] ) ? $options['maxWriteDuration'] : 0;
+               $this->forEachOpenMasterConnection( function ( DatabaseBase $conn ) use ( $limit ) {
+                       // Assert that the time to replicate the transaction will be sane.
+                       // If this fails, then all DB transactions will be rollback back together.
+                       $time = $conn->pendingWriteQueryDuration();
+                       if ( $limit > 0 && $time > $limit ) {
+                               throw new DBTransactionError(
+                                       $conn,
+                                       wfMessage( 'transaction-duration-limit-exceeded', $time, $limit )->text()
+                               );
                        }
-               }
+               } );
        }
 
        /**
-        * Issue COMMIT only on master, only if queries were done on connection
+        * Issue COMMIT on all master connections where writes where done
         * @param string $fname Caller name
         */
        public function commitMasterChanges( $fname = __METHOD__ ) {
-               $masterIndex = $this->getWriterIndex();
-               foreach ( $this->mConns as $conns2 ) {
-                       if ( empty( $conns2[$masterIndex] ) ) {
-                               continue;
-                       }
-                       /** @var DatabaseBase $conn */
-                       foreach ( $conns2[$masterIndex] as $conn ) {
-                               if ( $conn->trxLevel() && $conn->writesOrCallbacksPending() ) {
-                                       $conn->commit( $fname, 'flush' );
-                               }
+               $this->forEachOpenMasterConnection( function ( DatabaseBase $conn ) use ( $fname ) {
+                       if ( $conn->writesOrCallbacksPending() ) {
+                               $conn->commit( $fname, 'flush' );
                        }
-               }
+               } );
+       }
+
+       /**
+        * Issue all pending post-commit callbacks
+        * @since 1.28
+        */
+       public function runMasterPostCommitCallbacks() {
+               $this->forEachOpenMasterConnection( function ( DatabaseBase $db ) {
+                       $db->setPostCommitCallbackSupression( false );
+                       $db->runOnTransactionIdleCallbacks( IDatabase::TRIGGER_COMMIT );
+               } );
        }
 
        /**
@@ -1115,28 +1149,6 @@ class LoadBalancer {
                }
        }
 
-       /**
-        * Call runOnTransactionPreCommitCallbacks() on all DB handles
-        *
-        * This method should not be used outside of LBFactory/LoadBalancer
-        *
-        * @since 1.28
-        */
-       public function runPreCommitCallbacks() {
-               $masterIndex = $this->getWriterIndex();
-               foreach ( $this->mConns as $conns2 ) {
-                       if ( empty( $conns2[$masterIndex] ) ) {
-                               continue;
-                       }
-                       /** @var DatabaseBase $conn */
-                       foreach ( $conns2[$masterIndex] as $conn ) {
-                               if ( $conn->trxLevel() && $conn->writesOrCallbacksPending() ) {
-                                       $conn->runOnTransactionPreCommitCallbacks();
-                               }
-                       }
-               }
-       }
-
        /**
         * @return bool Whether a master connection is already open
         * @since 1.24
@@ -1267,10 +1279,11 @@ class LoadBalancer {
        /**
         * @note This method may trigger a DB connection if not yet done
         * @param string|bool $wiki Wiki ID, or false for the current wiki
+        * @param DatabaseBase|null DB master connection; used to avoid loops [optional]
         * @return string|bool Reason the master is read-only or false if it is not
         * @since 1.27
         */
-       public function getReadOnlyReason( $wiki = false ) {
+       public function getReadOnlyReason( $wiki = false, DatabaseBase $conn = null ) {
                if ( $this->readOnlyReason !== false ) {
                        return $this->readOnlyReason;
                } elseif ( $this->getLaggedSlaveMode( $wiki ) ) {
@@ -1281,11 +1294,37 @@ class LoadBalancer {
                                return 'The database has been automatically locked ' .
                                        'while the slave database servers catch up to the master.';
                        }
+               } elseif ( $this->masterRunningReadOnly( $wiki, $conn ) ) {
+                       return 'The database master is running in read-only mode.';
                }
 
                return false;
        }
 
+       /**
+        * @param string $wiki Wiki ID, or false for the current wiki
+        * @param DatabaseBase|null DB master connectionl used to avoid loops [optional]
+        * @return bool
+        */
+       private function masterRunningReadOnly( $wiki, DatabaseBase $conn = null ) {
+               $cache = $this->wanCache;
+               $masterServer = $this->getServerName( $this->getWriterIndex() );
+
+               return (bool)$cache->getWithSetCallback(
+                       $cache->makeGlobalKey( __CLASS__, 'server-read-only', $masterServer ),
+                       self::TTL_CACHE_READONLY,
+                       function () use ( $wiki, $conn ) {
+                               try {
+                                       $dbw = $conn ?: $this->getConnection( DB_MASTER, [], $wiki );
+                                       return (int)$dbw->serverIsReadOnly();
+                               } catch ( DBError $e ) {
+                                       return 0;
+                               }
+                       },
+                       [ 'pcTTL' => $cache::TTL_PROC_LONG, 'busyValue' => 0 ]
+               );
+       }
+
        /**
         * Disables/enables lag checks
         * @param null|bool $mode
@@ -1305,16 +1344,11 @@ class LoadBalancer {
         */
        public function pingAll() {
                $success = true;
-               foreach ( $this->mConns as $conns2 ) {
-                       foreach ( $conns2 as $conns3 ) {
-                               /** @var DatabaseBase[] $conns3 */
-                               foreach ( $conns3 as $conn ) {
-                                       if ( !$conn->ping() ) {
-                                               $success = false;
-                                       }
-                               }
+               $this->forEachOpenConnection( function ( DatabaseBase $conn ) use ( &$success ) {
+                       if ( !$conn->ping() ) {
+                               $success = false;
                        }
-               }
+               } );
 
                return $success;
        }
@@ -1325,9 +1359,28 @@ class LoadBalancer {
         * @param array $params
         */
        public function forEachOpenConnection( $callback, array $params = [] ) {
-               foreach ( $this->mConns as $conns2 ) {
-                       foreach ( $conns2 as $conns3 ) {
-                               foreach ( $conns3 as $conn ) {
+               foreach ( $this->mConns as $connsByServer ) {
+                       foreach ( $connsByServer as $serverConns ) {
+                               foreach ( $serverConns as $conn ) {
+                                       $mergedParams = array_merge( [ $conn ], $params );
+                                       call_user_func_array( $callback, $mergedParams );
+                               }
+                       }
+               }
+       }
+
+       /**
+        * Call a function with each open connection object to a master
+        * @param callable $callback
+        * @param array $params
+        * @since 1.28
+        */
+       public function forEachOpenMasterConnection( $callback, array $params = [] ) {
+               $masterIndex = $this->getWriterIndex();
+               foreach ( $this->mConns as $connsByServer ) {
+                       if ( isset( $connsByServer[$masterIndex] ) ) {
+                               /** @var DatabaseBase $conn */
+                               foreach ( $connsByServer[$masterIndex] as $conn ) {
                                        $mergedParams = array_merge( [ $conn ], $params );
                                        call_user_func_array( $callback, $mergedParams );
                                }
diff --git a/includes/deferred/CallableUpdate.php b/includes/deferred/CallableUpdate.php
deleted file mode 100644 (file)
index d63c292..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/**
- * Deferrable Update for closure/callback
- */
-class MWCallableUpdate implements DeferrableUpdate, DeferrableCallback {
-       /** @var callable */
-       private $callback;
-       /** @var string */
-       private $fname;
-
-       /**
-        * @param callable $callback
-        * @param string $fname Calling method
-        */
-       public function __construct( callable $callback, $fname = 'unknown' ) {
-               $this->callback = $callback;
-               $this->fname = $fname;
-       }
-
-       public function doUpdate() {
-               call_user_func( $this->callback );
-       }
-
-       public function getOrigin() {
-               return $this->fname;
-       }
-}
diff --git a/includes/deferred/MWCallableUpdate.php b/includes/deferred/MWCallableUpdate.php
new file mode 100644 (file)
index 0000000..d63c292
--- /dev/null
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * Deferrable Update for closure/callback
+ */
+class MWCallableUpdate implements DeferrableUpdate, DeferrableCallback {
+       /** @var callable */
+       private $callback;
+       /** @var string */
+       private $fname;
+
+       /**
+        * @param callable $callback
+        * @param string $fname Calling method
+        */
+       public function __construct( callable $callback, $fname = 'unknown' ) {
+               $this->callback = $callback;
+               $this->fname = $fname;
+       }
+
+       public function doUpdate() {
+               call_user_func( $this->callback );
+       }
+
+       public function getOrigin() {
+               return $this->fname;
+       }
+}
index bd7629a..949a0ac 100644 (file)
@@ -779,7 +779,7 @@ class DifferenceEngine extends ContextSource {
                        throw new MWException( 'mOldid and mNewid must be set to get diff cache key.' );
                }
 
-               return wfMemcKey( 'diff', 'version', self::MW_DIFF_VERSION,
+               return wfMemcKey( 'diff', 'version', self::DIFF_VERSION,
                        'oldid', $this->mOldid, 'newid', $this->mNewid );
        }
 
index e35af75..a7f6e6f 100644 (file)
@@ -1422,97 +1422,103 @@ class LocalFile extends File {
                # Do some cache purges after final commit so that:
                # a) Changes are more likely to be seen post-purge
                # b) They won't cause rollback of the log publish/update above
-               $that = $this;
-               $dbw->onTransactionIdle( function () use (
-                       $that, $reupload, $wikiPage, $newPageContent, $comment, $user, $logEntry, $logId, $descId, $tags
-               ) {
-                       # Update memcache after the commit
-                       $that->invalidateCache();
-
-                       $updateLogPage = false;
-                       if ( $newPageContent ) {
-                               # New file page; create the description page.
-                               # There's already a log entry, so don't make a second RC entry
-                               # CDN and file cache for the description page are purged by doEditContent.
-                               $status = $wikiPage->doEditContent(
-                                       $newPageContent,
-                                       $comment,
-                                       EDIT_NEW | EDIT_SUPPRESS_RC,
-                                       false,
-                                       $user
-                               );
-
-                               if ( isset( $status->value['revision'] ) ) {
-                                       // Associate new page revision id
-                                       $logEntry->setAssociatedRevId( $status->value['revision']->getId() );
-                               }
-                               // This relies on the resetArticleID() call in WikiPage::insertOn(),
-                               // which is triggered on $descTitle by doEditContent() above.
-                               if ( isset( $status->value['revision'] ) ) {
-                                       /** @var $rev Revision */
-                                       $rev = $status->value['revision'];
-                                       $updateLogPage = $rev->getPage();
-                               }
-                       } else {
-                               # Existing file page: invalidate description page cache
-                               $wikiPage->getTitle()->invalidateCache();
-                               $wikiPage->getTitle()->purgeSquid();
-                               # Allow the new file version to be patrolled from the page footer
-                               Article::purgePatrolFooterCache( $descId );
-                       }
-
-                       # Update associated rev id. This should be done by $logEntry->insert() earlier,
-                       # but setAssociatedRevId() wasn't called at that point yet...
-                       $logParams = $logEntry->getParameters();
-                       $logParams['associated_rev_id'] = $logEntry->getAssociatedRevId();
-                       $update = [ 'log_params' => LogEntryBase::makeParamBlob( $logParams ) ];
-                       if ( $updateLogPage ) {
-                               # Also log page, in case where we just created it above
-                               $update['log_page'] = $updateLogPage;
-                       }
-                       $that->getRepo()->getMasterDB()->update(
-                               'logging',
-                               $update,
-                               [ 'log_id' => $logId ],
-                               __METHOD__
-                       );
-                       $that->getRepo()->getMasterDB()->insert(
-                               'log_search',
-                               [
-                                       'ls_field' => 'associated_rev_id',
-                                       'ls_value' => $logEntry->getAssociatedRevId(),
-                                       'ls_log_id' => $logId,
-                               ],
-                               __METHOD__
-                       );
+               DeferredUpdates::addUpdate(
+                       new AutoCommitUpdate(
+                               $dbw,
+                               __METHOD__,
+                               function () use (
+                                       $reupload, $wikiPage, $newPageContent, $comment, $user,
+                                       $logEntry, $logId, $descId, $tags
+                               ) {
+                                       # Update memcache after the commit
+                                       $this->invalidateCache();
+
+                                       $updateLogPage = false;
+                                       if ( $newPageContent ) {
+                                               # New file page; create the description page.
+                                               # There's already a log entry, so don't make a second RC entry
+                                               # CDN and file cache for the description page are purged by doEditContent.
+                                               $status = $wikiPage->doEditContent(
+                                                       $newPageContent,
+                                                       $comment,
+                                                       EDIT_NEW | EDIT_SUPPRESS_RC,
+                                                       false,
+                                                       $user
+                                               );
+
+                                               if ( isset( $status->value['revision'] ) ) {
+                                                       // Associate new page revision id
+                                                       $logEntry->setAssociatedRevId( $status->value['revision']->getId() );
+                                               }
+                                               // This relies on the resetArticleID() call in WikiPage::insertOn(),
+                                               // which is triggered on $descTitle by doEditContent() above.
+                                               if ( isset( $status->value['revision'] ) ) {
+                                                       /** @var $rev Revision */
+                                                       $rev = $status->value['revision'];
+                                                       $updateLogPage = $rev->getPage();
+                                               }
+                                       } else {
+                                               # Existing file page: invalidate description page cache
+                                               $wikiPage->getTitle()->invalidateCache();
+                                               $wikiPage->getTitle()->purgeSquid();
+                                               # Allow the new file version to be patrolled from the page footer
+                                               Article::purgePatrolFooterCache( $descId );
+                                       }
 
-                       # Add change tags, if any
-                       if ( $tags ) {
-                               $logEntry->setTags( $tags );
-                       }
+                                       # Update associated rev id. This should be done by $logEntry->insert() earlier,
+                                       # but setAssociatedRevId() wasn't called at that point yet...
+                                       $logParams = $logEntry->getParameters();
+                                       $logParams['associated_rev_id'] = $logEntry->getAssociatedRevId();
+                                       $update = [ 'log_params' => LogEntryBase::makeParamBlob( $logParams ) ];
+                                       if ( $updateLogPage ) {
+                                               # Also log page, in case where we just created it above
+                                               $update['log_page'] = $updateLogPage;
+                                       }
+                                       $this->getRepo()->getMasterDB()->update(
+                                               'logging',
+                                               $update,
+                                               [ 'log_id' => $logId ],
+                                               __METHOD__
+                                       );
+                                       $this->getRepo()->getMasterDB()->insert(
+                                               'log_search',
+                                               [
+                                                       'ls_field' => 'associated_rev_id',
+                                                       'ls_value' => $logEntry->getAssociatedRevId(),
+                                                       'ls_log_id' => $logId,
+                                               ],
+                                               __METHOD__
+                                       );
+
+                                       # Add change tags, if any
+                                       if ( $tags ) {
+                                               $logEntry->setTags( $tags );
+                                       }
 
-                       # Uploads can be patrolled
-                       $logEntry->setIsPatrollable( true );
+                                       # Uploads can be patrolled
+                                       $logEntry->setIsPatrollable( true );
 
-                       # Now that the log entry is up-to-date, make an RC entry.
-                       $logEntry->publish( $logId );
+                                       # Now that the log entry is up-to-date, make an RC entry.
+                                       $logEntry->publish( $logId );
 
-                       # Run hook for other updates (typically more cache purging)
-                       Hooks::run( 'FileUpload', [ $that, $reupload, !$newPageContent ] );
+                                       # Run hook for other updates (typically more cache purging)
+                                       Hooks::run( 'FileUpload', [ $this, $reupload, !$newPageContent ] );
 
-                       if ( $reupload ) {
-                               # Delete old thumbnails
-                               $that->purgeThumbnails();
-                               # Remove the old file from the CDN cache
-                               DeferredUpdates::addUpdate(
-                                       new CdnCacheUpdate( [ $that->getUrl() ] ),
-                                       DeferredUpdates::PRESEND
-                               );
-                       } else {
-                               # Update backlink pages pointing to this title if created
-                               LinksUpdate::queueRecursiveJobsForTable( $that->getTitle(), 'imagelinks' );
-                       }
-               } );
+                                       if ( $reupload ) {
+                                               # Delete old thumbnails
+                                               $this->purgeThumbnails();
+                                               # Remove the old file from the CDN cache
+                                               DeferredUpdates::addUpdate(
+                                                       new CdnCacheUpdate( [ $this->getUrl() ] ),
+                                                       DeferredUpdates::PRESEND
+                                               );
+                                       } else {
+                                               # Update backlink pages pointing to this title if created
+                                               LinksUpdate::queueRecursiveJobsForTable( $this->getTitle(), 'imagelinks' );
+                                       }
+                               }
+                       )
+               );
 
                if ( !$reupload ) {
                        # This is a new file, so update the image count
@@ -1913,14 +1919,36 @@ class LocalFile extends File {
                && strlen( serialize( $this->metadata ) ) <= self::CACHE_FIELD_MAX_LEN;
        }
 
+       /**
+        * @return Status
+        * @since 1.28
+        */
+       public function acquireFileLock() {
+               return $this->getRepo()->getBackend()->lockFiles(
+                       [ $this->getPath() ], LockManager::LOCK_EX, 10
+               );
+       }
+
+       /**
+        * @return Status
+        * @since 1.28
+        */
+       public function releaseFileLock() {
+               return $this->getRepo()->getBackend()->unlockFiles(
+                       [ $this->getPath() ], LockManager::LOCK_EX
+               );
+       }
+
        /**
         * Start an atomic DB section and lock the image for update
         * or increments a reference counter if the lock is already held
         *
+        * This method should not be used outside of LocalFile/LocalFile*Batch
+        *
         * @throws LocalFileLockError Throws an error if the lock was not acquired
         * @return bool Whether the file lock owns/spawned the DB transaction
         */
-       function lock() {
+       public function lock() {
                if ( !$this->locked ) {
                        $logger = LoggerFactory::getInstance( 'LocalFile' );
 
@@ -1930,9 +1958,7 @@ class LocalFile extends File {
                        // Bug 54736: use simple lock to handle when the file does not exist.
                        // SELECT FOR UPDATE prevents changes, not other SELECTs with FOR UPDATE.
                        // Also, that would cause contention on INSERT of similarly named rows.
-                       $backend = $this->getRepo()->getBackend();
-                       $lockPaths = [ $this->getPath() ]; // represents all versions of the file
-                       $status = $backend->lockFiles( $lockPaths, LockManager::LOCK_EX, 10 );
+                       $status = $this->acquireFileLock(); // represents all versions of the file
                        if ( !$status->isGood() ) {
                                $dbw->endAtomic( self::ATOMIC_SECTION_LOCK );
                                $logger->warning( "Failed to lock '{file}'", [ 'file' => $this->name ] );
@@ -1941,8 +1967,8 @@ class LocalFile extends File {
                        }
                        // Release the lock *after* commit to avoid row-level contention.
                        // Make sure it triggers on rollback() as well as commit() (T132921).
-                       $dbw->onTransactionResolution( function () use ( $backend, $lockPaths, $logger ) {
-                               $status = $backend->unlockFiles( $lockPaths, LockManager::LOCK_EX );
+                       $dbw->onTransactionResolution( function () use ( $logger ) {
+                               $status = $this->releaseFileLock();
                                if ( !$status->isGood() ) {
                                        $logger->error( "Failed to unlock '{file}'", [ 'file' => $this->name ] );
                                }
@@ -1959,10 +1985,12 @@ class LocalFile extends File {
        /**
         * Decrement the lock reference count and end the atomic section if it reaches zero
         *
+        * This method should not be used outside of LocalFile/LocalFile*Batch
+        *
         * The commit and loc release will happen when no atomic sections are active, which
         * may happen immediately or at some point after calling this
         */
-       function unlock() {
+       public function unlock() {
                if ( $this->locked ) {
                        --$this->locked;
                        if ( !$this->locked ) {
@@ -1973,16 +2001,6 @@ class LocalFile extends File {
                }
        }
 
-       /**
-        * Roll back the DB transaction and mark the image unlocked
-        */
-       function unlockAndRollback() {
-               $this->locked = false;
-               $dbw = $this->repo->getMasterDB();
-               $dbw->rollback( __METHOD__ );
-               $this->lockedOwnTrx = false;
-       }
-
        /**
         * @return Status
         */
@@ -2858,33 +2876,30 @@ class LocalFileMoveBatch {
        public function execute() {
                $repo = $this->file->repo;
                $status = $repo->newGood();
+               $destFile = wfLocalFile( $this->target );
+
+               $this->file->lock(); // begin
+               $destFile->lock(); // quickly fail if destination is not available
 
                $triplets = $this->getMoveTriplets();
                $checkStatus = $this->removeNonexistentFiles( $triplets );
                if ( !$checkStatus->isGood() ) {
-                       $status->merge( $checkStatus );
+                       $destFile->unlock();
+                       $this->file->unlock();
+                       $status->merge( $checkStatus ); // couldn't talk to file backend
                        return $status;
                }
                $triplets = $checkStatus->value;
-               $destFile = wfLocalFile( $this->target );
 
-               $this->file->lock(); // begin
-               $destFile->lock(); // quickly fail if destination is not available
-               // Rename the file versions metadata in the DB.
-               // This implicitly locks the destination file, which avoids race conditions.
-               // If we moved the files from A -> C before DB updates, another process could
-               // move files from B -> C at this point, causing storeBatch() to fail and thus
-               // cleanupTarget() to trigger. It would delete the C files and cause data loss.
-               $statusDb = $this->doDBUpdates();
+               // Verify the file versions metadata in the DB.
+               $statusDb = $this->verifyDBUpdates();
                if ( !$statusDb->isGood() ) {
                        $destFile->unlock();
-                       $this->file->unlockAndRollback();
+                       $this->file->unlock();
                        $statusDb->ok = false;
 
                        return $statusDb;
                }
-               wfDebugLog( 'imagemove', "Renamed {$this->file->getName()} in database: " .
-                       "{$statusDb->successCount} successes, {$statusDb->failCount} failures" );
 
                if ( !$repo->hasSha1Storage() ) {
                        // Copy the files into their new location.
@@ -2897,7 +2912,7 @@ class LocalFileMoveBatch {
                                // Delete any files copied over (while the destination is still locked)
                                $this->cleanupTarget( $triplets );
                                $destFile->unlock();
-                               $this->file->unlockAndRollback(); // unlocks the destination
+                               $this->file->unlock();
                                wfDebugLog( 'imagemove', "Error in moving files: "
                                        . $statusMove->getWikiText( false, false, 'en' ) );
                                $statusMove->ok = false;
@@ -2907,6 +2922,12 @@ class LocalFileMoveBatch {
                        $status->merge( $statusMove );
                }
 
+               // Rename the file versions metadata in the DB.
+               $this->doDBUpdates();
+
+               wfDebugLog( 'imagemove', "Renamed {$this->file->getName()} in database: " .
+                       "{$statusDb->successCount} successes, {$statusDb->failCount} failures" );
+
                $destFile->unlock();
                $this->file->unlock(); // done
 
@@ -2919,33 +2940,62 @@ class LocalFileMoveBatch {
        }
 
        /**
-        * Do the database updates and return a new FileRepoStatus indicating how
-        * many rows where updated.
+        * Verify the database updates and return a new FileRepoStatus indicating how
+        * many rows would be updated.
         *
         * @return FileRepoStatus
         */
-       protected function doDBUpdates() {
+       protected function verifyDBUpdates() {
                $repo = $this->file->repo;
                $status = $repo->newGood();
                $dbw = $this->db;
 
-               // Update current image
-               $dbw->update(
+               $hasCurrent = $dbw->selectField(
                        'image',
-                       [ 'img_name' => $this->newName ],
+                       '1',
                        [ 'img_name' => $this->oldName ],
-                       __METHOD__
+                       __METHOD__,
+                       [ 'FOR UPDATE' ]
+               );
+               $oldRowCount = $dbw->selectField(
+                       'oldimage',
+                       'COUNT(*)',
+                       [ 'oi_name' => $this->oldName ],
+                       __METHOD__,
+                       [ 'FOR UPDATE' ]
                );
 
-               if ( $dbw->affectedRows() ) {
+               if ( $hasCurrent ) {
                        $status->successCount++;
                } else {
                        $status->failCount++;
-                       $status->fatal( 'imageinvalidfilename' );
-
-                       return $status;
                }
+               $status->successCount += $oldRowCount;
+               // Bug 34934: oldCount is based on files that actually exist.
+               // There may be more DB rows than such files, in which case $affected
+               // can be greater than $total. We use max() to avoid negatives here.
+               $status->failCount += max( 0, $this->oldCount - $oldRowCount );
+               if ( $status->failCount ) {
+                       $status->error( 'imageinvalidfilename' );
+               }
+
+               return $status;
+       }
+
+       /**
+        * Do the database updates and return a new FileRepoStatus indicating how
+        * many rows where updated.
+        */
+       protected function doDBUpdates() {
+               $dbw = $this->db;
 
+               // Update current image
+               $dbw->update(
+                       'image',
+                       [ 'img_name' => $this->newName ],
+                       [ 'img_name' => $this->oldName ],
+                       __METHOD__
+               );
                // Update old images
                $dbw->update(
                        'oldimage',
@@ -2957,19 +3007,6 @@ class LocalFileMoveBatch {
                        [ 'oi_name' => $this->oldName ],
                        __METHOD__
                );
-
-               $affected = $dbw->affectedRows();
-               $total = $this->oldCount;
-               $status->successCount += $affected;
-               // Bug 34934: $total is based on files that actually exist.
-               // There may be more DB rows than such files, in which case $affected
-               // can be greater than $total. We use max() to avoid negatives here.
-               $status->failCount += max( 0, $total - $affected );
-               if ( $status->failCount ) {
-                       $status->error( 'imageinvalidfilename' );
-               }
-
-               return $status;
        }
 
        /**
index 2b7417e..a7acd8b 100644 (file)
  *    'help-messages'       -- array of message keys/objects. As above, each item can
  *                             be an array of msg key and then parameters.
  *                             Overwrites 'help'.
+ *    'notice'              -- message text for a message to use as a notice in the field.
+ *                             Currently used by OOUI form fields only.
+ *    'notice-messages'     -- array of message keys/objects to use for notice.
+ *                             Overrides 'notice'.
+ *    'notice-message'      -- message key or object to use as a notice.
  *    'required'            -- passed through to the object, indicating that it
  *                             is a required field.
  *    'size'                -- the length of text fields
index 7cb497d..5f6460d 100644 (file)
@@ -612,11 +612,17 @@ abstract class HTMLFormField {
                        $error = new OOUI\HtmlSnippet( $error );
                }
 
+               $notices = $this->getNotices();
+               foreach ( $notices as &$notice ) {
+                       $notice = new OOUI\HtmlSnippet( $notice );
+               }
+
                $config = [
                        'classes' => [ "mw-htmlform-field-$fieldType", $this->mClass ],
                        'align' => $this->getLabelAlignOOUI(),
                        'help' => $helpText !== null ? new OOUI\HtmlSnippet( $helpText ) : null,
                        'errors' => $errors,
+                       'notices' => $notices,
                        'infusable' => $infusable,
                ];
 
@@ -854,6 +860,30 @@ abstract class HTMLFormField {
                return $errors;
        }
 
+       /**
+        * Determine notices to display for the field.
+        *
+        * @since 1.28
+        * @return string[]
+        */
+       function getNotices() {
+               $notices = [];
+
+               if ( isset( $this->mParams['notice-message'] ) ) {
+                       $notices[] = $this->getMessage( $this->mParams['notice-message'] )->parse();
+               }
+
+               if ( isset( $this->mParams['notice-messages'] ) ) {
+                       foreach ( $this->mParams['notice-messages'] as $msg ) {
+                               $notices[] = $this->getMessage( $msg )->parse();
+                       }
+               } elseif ( isset( $this->mParams['notice'] ) ) {
+                       $notices[] = $this->mParams['notice'];
+               }
+
+               return $notices;
+       }
+
        /**
         * @return string HTML
         */
index 259d514..406667e 100644 (file)
@@ -332,8 +332,7 @@ class WikiImporter {
                }
 
                try {
-                       $dbw = wfGetDB( DB_MASTER );
-                       return $dbw->deadlockLoop( [ $revision, 'importOldRevision' ] );
+                       return $revision->importOldRevision();
                } catch ( MWContentSerializationException $ex ) {
                        $this->notice( 'import-error-unserialize',
                                $revision->getTitle()->getPrefixedText(),
@@ -351,8 +350,7 @@ class WikiImporter {
         * @return bool
         */
        public function importLogItem( $revision ) {
-               $dbw = wfGetDB( DB_MASTER );
-               return $dbw->deadlockLoop( [ $revision, 'importLogItem' ] );
+               return $revision->importLogItem();
        }
 
        /**
@@ -361,8 +359,7 @@ class WikiImporter {
         * @return bool
         */
        public function importUpload( $revision ) {
-               $dbw = wfGetDB( DB_MASTER );
-               return $dbw->deadlockLoop( [ $revision, 'importUpload' ] );
+               return $revision->importUpload();
        }
 
        /**
@@ -840,7 +837,7 @@ class WikiImporter {
                                'text',
                                ''
                        ] ) ) &&
-                       (int)( strlen( $revisionInfo['text'] ) / 1024 ) > $wgMaxArticleSize
+                       strlen( $revisionInfo['text'] ) > $wgMaxArticleSize * 1024
                ) {
                        throw new MWException( 'The text of ' .
                                ( isset( $revisionInfo['id'] ) ?
index 356a79f..d78d61a 100644 (file)
@@ -574,7 +574,7 @@ class WikiRevision {
                if ( !$this->getTitle() ) {
                        wfDebug( __METHOD__ . ": skipping invalid {$this->type}/{$this->action} log time, timestamp " .
                                $this->timestamp . "\n" );
-                       return;
+                       return false;
                }
                # Check if it exists already
                // @todo FIXME: Use original log ID (better for backups)
@@ -594,7 +594,7 @@ class WikiRevision {
                        wfDebug( __METHOD__
                                . ": skipping existing item for Log:{$this->type}/{$this->action}, timestamp "
                                . $this->timestamp . "\n" );
-                       return;
+                       return false;
                }
                $log_id = $dbw->nextSequenceValue( 'logging_log_id_seq' );
                $data = [
@@ -610,6 +610,8 @@ class WikiRevision {
                        'log_params' => $this->params
                ];
                $dbw->insert( 'logging', $data, __METHOD__ );
+
+               return true;
        }
 
        /**
index a1fcfab..606b97b 100644 (file)
@@ -45,7 +45,7 @@
        "config-page-restart": "Урынлаштырыуҙы яңынан башларға",
        "config-page-readme": "Мине уҡы",
        "config-page-releasenotes": "Өлгө тураһында мәғлүмәт",
-       "config-page-copying": "Рөхсәтнәмә",
+       "config-page-copying": "Рөхсәтнамә",
        "config-page-upgradedoc": "Яңыртыу",
        "config-page-existingwiki": "Ғәмәлдәге вики",
        "config-help-restart": "Һеҙ үҙегеҙ индергән һәм  һаҡланған әлеге мәғлүмәттәрҙе юйып, урынлаштырыуҙың яңы процессын ебәрергә теләйһегеҙме?",
index f0eb9f9..77cd689 100644 (file)
        "config-subscribe-help": "Гэта ня вельмі актыўны сьпіс распаўсюджаньня навінаў пра зьяўленьне новых вэрсіяў, які ўключаючы важныя навіны пра бясьпеку.\nВам неабходна падпісацца на яго і абнавіць Вашае ўсталяваньне MediaWiki, калі зьявяцца новыя вэрсіі.",
        "config-subscribe-noemail": "Вы спрабавалі падпісацца на рассылку паведамленьняў пра выхад новых вэрсіяў, не пазначыўшы адрас электроннай пошты.\nКалі ласка, падайце слушны адрас, калі Вы жадаеце падпісацца на рассылку.",
        "config-pingback": "Дзяліцца зьвесткамі пра гэтую ўсталёўку з распрацоўнікамі MediaWiki.",
+       "config-pingback-help": "Калі вы абярэце гэтую наладу, MediaWiki будзе час ад часу дасылаць базавыя зьвесткі пра гэтую ўсталёўку на https://www.mediawiki.org. Гэтыя зьвесткі ўключаюць, напрыклад, тып сыстэмы, вэрсію PHP і абраную базу зьвестак. Фундацыя «Вікімэдыя» дзеліцца гэтымі зьвесткамі з распрацоўнікамі MediaWiki, каб скіраваць далейшыя шляхі распрацоўкі. Наступныя зьвесткі будуць дасланыя для вашай сыстэмы:\n<pre>$1</pre>",
        "config-almost-done": "Вы амаль што скончылі!\nАстатнія налады можна прапусьціць і пачаць усталяваньне вікі.",
        "config-optional-continue": "Задаць болей пытаньняў.",
        "config-optional-skip": "Хопіць, проста ўсталяваць вікі.",
index 5e24b04..68497c5 100644 (file)
        "config-subscribe": "Přihlásit se k odběru [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce e-mailové konference pro oznamování nových verzí].",
        "config-subscribe-help": "Tohle je e-mailová konference s nízkým provozem, na které se oznamují nové verze, včetně důležitých bezpečnostních oznámení.\nMěli byste se do ní přihlásit a při vydání nových verzí aktualizovat svou instalaci MediaWiki.",
        "config-subscribe-noemail": "Pokusili jste se přihlásit k odběru e-mailové konference pro oznamování nových verzí, aniž byste poskytli e-mailovou adresu.\nPokud se chcete přihlásit k odběru, zadejte e-mailovou adresu.",
+       "config-pingback": "Sdílet údaje o této instalaci s vývojáři MediaWiki.",
+       "config-pingback-help": "Pokud zaškrtnete tuto volbu, bude MediaWiki pravidelně zasílat základní údaje této instance MediaWiki na https://www.mediawiki.org. Tyto údaje zahrnují například typ systému, verzi PHP a zvolené databázové úložiště. Nadace Wikimedia sdílí tato data s vývojáři MediaWiki, aby pomohla směrovat budoucí rozvoj. Pro váš systém budou zaslány tyto údaje:\n<pre>$1</pre>",
        "config-almost-done": "Už jsme skoro hotovi!\nZbývající konfiguraci už můžete přeskočit a nainstalovat wiki hned teď.",
        "config-optional-continue": "Ptejte se mě dál.",
        "config-optional-skip": "Už mě to nudí, prostě nainstalujte wiki.",
index 8de5c82..b55b3c7 100644 (file)
        "config-db-web-account-same": "Dasselbe Datenbankkonto wie während des Installationsvorgangs verwenden",
        "config-db-web-create": "Sofern nicht bereits vorhanden, muss nun das Konto erstellt werden",
        "config-db-web-no-create-privs": "Das angegebene und für den Installationsvorgang vorgesehene Datenbankkonto verfügt nicht über ausreichend Berechtigungen, um ein weiteres Datenbankkonto zu erstellen.\nDas hier angegebene Datenbankkonto muss daher bereits vorhanden sein.",
-       "config-mysql-engine": "Speicher-Engine:",
+       "config-mysql-engine": "Datenbanksystem:",
        "config-mysql-innodb": "InnoDB",
        "config-mysql-myisam": "MyISAM",
-       "config-mysql-myisam-dep": "'''Warnung:''' Es wurde MyISAM als Speicher-Engine für MySQL ausgewählt, die aus folgenden Gründen nicht für den Einsatz mit MediaWiki empfohlen ist:\n* Sie unterstützt aufgrund von Tabellensperrungen kaum die nebenläufige Ausführung von Aktionen.\n* Sie ist anfälliger für Datenprobleme.\n* Sie wird von MediaWiki nicht immer adäquat unterstützt.\n\nSofern die vorhandene MySQL-Installation die Speicher-Engine InnoDB unterstützt, wird deren Verwendung eindringlich empfohlen.\nSofern sie sie nicht unterstützt, sollte eine entsprechende Aktualisierung nunmehr Erwägung gezogen werden.",
-       "config-mysql-only-myisam-dep": "'''Warnung:''' MyISAM ist die einzige verfügbare Speicher-Engine für MySQL auf diesem Rechner, und dies wird nicht für die Verwendung mit MediaWiki empfohlen, da sie\n* aufgrund von Tabellensperrungen kaum die nebenläufige Ausführung von Aktionen unterstützt,\n* anfälliger für Datenprobleme ist und\n* von MediaWiki nicht immer adäquat unterstützt wird.\n\nDeine MySQL-Installation unterstützt nicht InnoDB. Eventuell muss eine Aktualisierung durchgeführt werden.",
+       "config-mysql-myisam-dep": "<strong>Warnung:</strong> Es wurde MyISAM als Speichersubsystem für das Datenbanksystem MySQL ausgewählt. Aus folgenden Gründen wird es nicht für den Einsatz mit MediaWiki empfohlen:\n* Es unterstützt aufgrund von Tabellensperrungen kaum die nebenläufige Ausführung von Aktionen.\n* Es ist anfälliger für Datenprobleme.\n* Es wird von MediaWiki nicht immer adäquat unterstützt.\n\nSofern die vorhandene MySQL-Installation das Speichersubsystem InnoDB unterstützt, wird deren Verwendung eindringlich empfohlen.\nSofern sie es nicht unterstützt, sollte nunmehr eine entsprechende Aktualisierung in Erwägung gezogen werden.",
+       "config-mysql-only-myisam-dep": "<strong>Warnung:</strong> MyISAM ist das einzige verfügbare Speichersubsystem für das Datenbanksystem MySQL auf diesem Server. Es wird nicht für die Verwendung mit MediaWiki empfohlen, da es\n* aufgrund von Tabellensperrungen kaum die nebenläufige Ausführung von Aktionen unterstützt,\n* anfälliger für Datenprobleme ist und\n* von MediaWiki nicht immer adäquat unterstützt wird.\n\nDeine MySQL-Installation unterstützt nicht das Speichersubsystem InnoDB. Eine Aktualisierung wird nunmehr empfohlen.",
        "config-mysql-engine-help": "'''InnoDB''' ist fast immer die bessere Wahl, da es gleichzeitige Zugriffe gut unterstützt.\n\n'''MyISAM''' ist in Einzelnutzerumgebungen sowie bei schreibgeschützten Wikis schneller.\nBei MyISAM-Datenbanken treten tendenziell häufiger Fehler auf als bei InnoDB-Datenbanken.",
        "config-mysql-charset": "Datenbankzeichensatz:",
        "config-mysql-binary": "binär",
        "config-subscribe-help": "Es handelt sich hierbei um eine Mailingliste mit wenigen Aussendungen, die für Mitteilungen zu Versionsveröffentlichungen, einschließlich wichtiger Sicherheitsveröffentlichungen, genutzt wird.\nDiese Mailingliste sollte abonniert werden. Zudem sollte die MediaWiki-Installation stets aktualisiert werden, sobald eine neue Programmversion veröffentlicht wurde.",
        "config-subscribe-noemail": "Beim Abonnieren der Mailingliste mit Mitteilungen zu Versionsveröffentlichungen wurde keine E-Mail-Adresse angegeben.\nBitte eine E-Mail-Adresse angeben, sofern die Mailingliste abonniert werden soll.",
        "config-pingback": "Daten über diese Installation mit den MediaWiki-Entwicklern teilen.",
-       "config-pingback-help": "Wenn du diese Option auswählst, pingt MediaWiki regelmäßig https://www.mediawiki.org mit Basisdaten über diese MediaWiki-Instanz an. Diese Daten enthalten zum Beispiel den Systemtyp, die PHP-Version und das ausgewählte Datenbank-Backend. Die Wikimedia Foundation teilt diese Daten mit MediaWiki-Entwicklern, um dabei zu helfen, zukünftigen Entwicklungsaufwand zu leiten.",
+       "config-pingback-help": "Sofern diese Option ausgewählt wird, meldet MediaWiki regelmäßig die Basisdaten dieser MediaWiki-Installation an https://www.mediawiki.org. Diese Daten enthalten beispielsweise den Betriebssystemtyp, die PHP-Version sowie das genutzte Datenbanksystem. Die Wikimedia Foundation teilt diese Daten mit den MediaWiki-Entwicklern, um Entscheidungen zur künftigen Softwareentwicklung zu verbessern. Die folgenden Daten werden für diese Installation gesendet:\n<pre>$1</pre>",
        "config-almost-done": "Der Vorgang ist fast abgeschlossen!\nDie verbleibenden Konfigurationseinstellungen können übersprungen und das Wiki umgehend installiert werden.",
        "config-optional-continue": "Ja, es sollen weitere Konfigurationseinstellungen vorgenommen werden.",
        "config-optional-skip": "Nein, das Wiki soll nun installiert werden.",
index e22317c..dae9f2a 100644 (file)
        "config-subscribe": "عضویت در [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce release announcements mailing list].",
        "config-subscribe-help": "این یک میلینگ لیست کم حجم است که برای اطلاع‌رسانی کاربرد دارد و شامل اطلاعیه‌های امنیتی می‌شود.\nشما باید در آن ثبت نام کنید و زمانی که نسخهٔ جدید مدیاویکی ارائه شد آن را به‌روز نمائید.",
        "config-subscribe-noemail": "شما بدون ثبت نشانی پست الکترونیکی قصد داشتید در فهرست اطلاع‌رسانی پخش نرم‌افزار ثبت‌نام کنید.\nاگر قصد ثبت‌نام دارید لطفاً یک نشانی پست الکترونیکی مشخص کنید.",
+       "config-pingback": "اشتراک گذاری داده‌های نصب با توسعه‌دهندگان مدیاویکی",
+       "config-pingback-help": "اگر این گزینه را انتخاب کنید، ویکی‌مدیا به صورت مداوم به وب‌گاه https://www.mediawiki.org برای ارسال اطلاعات ابتدایی نصب این مدیاویکی ارتباط برقرار می‌کند. اطلاعات شامل نوع سامانه، نسخهٔ پی‌اچ‌پی، دیتابیس انتخاب شده می‌باشد. بنیاد مدیاویکی برای توسعه‌های آینده نرم‌افزار اطلاعات را با توسعه دهندگان مدیاویکی به اشتراک می‌گذارد. اطلاعاتی که از سامانه شما ارسال خواهد شد موارد زیر هستند:\n<pre>$1</pre>",
        "config-almost-done": "شما تقریباً عملیات را کامل کرده‌اید.\nاکنون می‌توانید پیکربندی باقیمانده را نخوانده رها کنید و درحال‌حاضر ویکی را نصب کنید.",
        "config-optional-continue": "سوال‌های بیشتری از من بپرسید.",
        "config-optional-skip": "درحال‌حاضر خسته‌ام،سریعاً ویکی را نصب کنید.",
index a12e6a0..1d230b2 100644 (file)
        "config-subscribe-help": "Il s'agit d'une liste de diffusion à faible volume utilisée servant à annoncer les nouvelles versions, y compris les versions améliorant la sécurité du logiciel.\nVous devriez y souscrire et mettre à jour votre version de MediaWiki lorsque de nouvelles versions sont publiées.",
        "config-subscribe-noemail": "Vous avez essayé de vous abonner à la liste de diffusion des communiqués, sans fournir une adresse courriel ! S'il vous plaît, fournir une adresse électronique si vous souhaitez vous abonner à la liste de diffusion.",
        "config-pingback": "Partager des données au sujet de cette installation avec les développeurs de MediaWiki.",
-       "config-pingback-help": "Si vous sélectionnez cette option, MediaWiki fera périodiquement un ping https://www.mediawiki.org avec les données de base sur cette instance de MediaWiki. Ces données incluent, par exemple, le type de système, la version de PHP et de base de données arrière. La Fondation Wikimedia partage ces données avec les développeurs de MediaWiki pour aider à orienter les futurs efforts de développement.",
+       "config-pingback-help": "Si vous sélectionnez cette option, MediaWiki fera périodiquement un ping de https://www.mediawiki.org avec les données de base sur cette instance de MediaWiki. Ces données incluent, par exemple, le type de système, la version de PHP, ainsi que la base de données arrière choisie. La Fondation Wikimedia partage ces données avec les développeurs de MediaWiki pour aider à orienter les futurs efforts de développement. Les données suivantes concernant votre système seront envoyées : <pre>$1</pre>",
        "config-almost-done": "Vous avez presque fini !\nVous pouvez passer la configuration restante et installer immédiatement le wiki.",
        "config-optional-continue": "Me poser davantage de questions.",
        "config-optional-skip": "J’en ai assez, installer simplement le wiki.",
index 0a2f40a..6ed2722 100644 (file)
        "config-subscribe": "Sottoscrivi la [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce mailing list degli annunci di rilasci].",
        "config-subscribe-help": "Si tratta di una mailing list a basso traffico dedicata agli annunci di nuove versioni, compresi importanti segnalazioni riguardanti la sicurezza.\nÈ consigliato iscriversi e aggiornare la propria installazione di MediaWiki quando una nuova versione viene resa pubblica.",
        "config-subscribe-noemail": "Hai provato ad iscriverti alla mailing list dedicata agli annunci delle nuove versioni senza fornire un indirizzo email.\nInserire un indirizzo email se si desidera effettuare l'iscrizione alla mailing list.",
+       "config-pingback": "Condividi i dati su questa installazione con gli sviluppatori di MediaWiki.",
        "config-almost-done": "Hai quasi finito!\nAdesso puoi saltare la rimanente parte della configurazione e semplicemente installare la wiki.",
        "config-optional-continue": "Fammi altre domande.",
        "config-optional-skip": "Sono già stanco, installa solo il wiki.",
index d3405d2..c9ae2c8 100644 (file)
        "config-subscribe-help": "중요한 보안 발표를 포함한 배포판 발표에 사용되는 저용량 메일링 리스트입니다.\n이 리스트를 구독하고 새 버전이 나올 때 미디어위키 설치를 업데이트해야 합니다.",
        "config-subscribe-noemail": "이메일 주소를 입력하지 않고 릴리스 발표 메일링 리스트에 가입하려 합니다.\n메일링 리스트에 가입하고자 할 경우 이메일 주소를 입력하세요.",
        "config-pingback": "본 설치에 관한 데이터를 미디어위키 개발자와 공유합니다.",
-       "config-pingback-help": "이 옵션을 선택하면 미디어위키는 주기적으로 이 미디어위키 인스턴스에 대한 기본 데이터를 가지고 https://www.mediawiki.org에 핑을 합니다. 이 데이터에는 이를테면 시스템의 종류, PHP 버전, 선택한 데이터베이스 백엔드를 포함합니다. 위키미디어 재단은 이 데이터를 미디어위키 개발자들과 공유하여 향후 개발 활동의 길잡이에 도움을 줍니다.",
+       "config-pingback-help": "이 옵션을 선택하면 미디어위키는 주기적으로 이 미디어위키 인스턴스에 대한 기본 데이터를 가지고 https://www.mediawiki.org에 핑을 합니다. 이 데이터에는 이를테면 시스템의 종류, PHP 버전, 선택한 데이터베이스 백엔드를 포함합니다. 위키미디어 재단은 이 데이터를 미디어위키 개발자들과 공유하여 향후 개발 활동의 길잡이에 도움을 줍니다. 시스템에 대해 다음의 데이터가 전송될 것입니다:\n<pre>$1</pre>",
        "config-almost-done": "거의 다 완료했습니다!\n이제 남은 설정을 생략하고 지금 바로 위키를 설치할 수 있습니다.",
        "config-optional-continue": "더 많은 질문을 물어보세요.",
        "config-optional-skip": "지겨워요, 그냥 위키를 설치할래요.",
index 3befe74..91df060 100644 (file)
        "config-admin-error-password": "Interne Feeler beim Setze vum Passwuert fir den Admin \"<nowiki>$1</nowiki>\": <pre>$2</pre>",
        "config-admin-error-bademail": "Dir hutt eng E-Mail-Adress aginn déi net valabel ass",
        "config-subscribe": "Sech op d'[https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Ukënnegunge vun neie Versiounen] abonnéieren.",
+       "config-pingback-help": "Wann Dir dës Optioun auswielt schéckt MediaWiki regelméisseg https://www.mediawiki.org Basisdaten iwwer dës MediaWiki-Instanz. An dësen Daten sinn zum Beispill de Systemtyp, d'PHP-Versioun an déi erausgesicht Datebank-Backend. D'Wikimedia Foundation gëtt dës Daten un d'MediaWiki-Entwéckler, fir ze hëllefen d'Entwécklung an der Zukunft efficace z'organiséieren. Dës Date gi fir Äre System geschéckt:\n<pre>$1</pre>",
        "config-almost-done": "Dir sidd bal fäerdeg!\nDir kënnt elo déi Astellungen déi nach iwwreg sinn iwwersprangen an d'Wiki elo direkt installéieren.",
        "config-optional-continue": "Stellt mir méi Froen.",
        "config-optional-skip": "Ech hunn es genuch, installéier just d'Wiki.",
index 36ec508..f8b66c1 100644 (file)
        "config-subscribe": "Претплатете се на [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce release поштенскиот список за известувања].",
        "config-subscribe-help": "Ова е нископрометен поштенски список кој се користи за соопштувања во врска со изданија, вклучувајќи важни безбедносни соопштенија.\nТреба да се претплатите и да ја надградувате вашата воспоставка на МедијаВики кога излегуваат нови верзии.",
        "config-subscribe-noemail": "Се обидовте да се претплатите на поштенскиот список со известувања за нови изданија без да наведете е-пошта.\nНаведете е-поштенска адреса ако сакате да се претплатите на списокот.",
+       "config-pingback": "Споделувај податоци за воспоставката со разработувачите на МедијаВики.",
+       "config-pingback-help": "Ако ја изберете оваа можност, МедијаВики повремено ќе му испраќа на https://www.mediawiki.org основни податоци за овој примерок на МедијаВики. Тука спаѓаат видот на системот, PHP-верзијата и избраната базна заднина. Фондацијата Викимедија ги споделува овие податоци со разработувачите на МедијаВики со цел да им даде насоки за разработка во идните верзии. За вашиот систем ќе се испратат следниве податоци:\n<pre>$1</pre>",
        "config-almost-done": "Уште малку сте готови!\nСега можете да ги прескокнете преостанатите поставувања и веднаш да го воспоставите викито.",
        "config-optional-continue": "Постави ми повеќе прашања.",
        "config-optional-skip": "Веќе ми здосади, дај само воспостави го викито.",
index 418b4ff..53b4c9e 100644 (file)
        "config-subscribe-help": "Это список рассылки с малым числом сообщений, используется для анонса новых выпусков и сообщений о проблемах с безопасностью.\nВам следует подписаться на него и обновлять движок MediaWiki, по мере выхода новых версий.",
        "config-subscribe-noemail": "Вы попытались подписаться на список рассылки уведомлений о новых выпусках без указания адреса электронной почты.\nУкажите адрес электронной почты, если вы хотите подписаться на список рассылки.",
        "config-pingback": "Поделиться сведениями об этой установке с разработчикам MediaWiki.",
-       "config-pingback-help": "Если вы выберите этот вариант, MediaWiki будет периодически отправлять на https://www.mediawiki.org основные сведения об этом экземпляре MediaWiki. К этим данным относятся, в частности, тип операционной системы, версия PHP и выбранная СУБД. Фонда Викимедиа делится этими данными с разработчиками MediaWiki, чтобы помочь им в проведении будущих разработок.",
+       "config-pingback-help": "Если вы выберите этот вариант, MediaWiki будет периодически отправлять на https://www.mediawiki.org основные сведения об этом экземпляре MediaWiki. К этим данным относятся, в частности, тип операционной системы, версия PHP и выбранная СУБД. Фонда Викимедиа делится этими данными с разработчиками MediaWiki, чтобы помочь им в проведении будущих разработок. Следующие данные будут отправлены для вашей системы:\n<pre>$1</pre>",
        "config-almost-done": "Вы почти у цели!\nОстальные настройки можно пропустить и приступить к установке вики.",
        "config-optional-continue": "Произвести тонкую настройку",
        "config-optional-skip": "Хватит, установить вики",
index 829aae4..e1931dd 100644 (file)
        "config-subscribe": "Prenumerera på [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce e-postlistan för kungörelser av nya versioner].",
        "config-subscribe-help": "Detta är en e-postlista med låg volym vilken används för meddelanden om nya versionssläpp, inklusive viktiga säkerhetsmeddelanden.\nDu bör prenumerera på den och uppdatera din MediaWiki-installation när nya versioner kommer ut.",
        "config-subscribe-noemail": "Du försökte att prenumerera på e-postlistan för versionssläppsmeddelanden utan att tillhandahålla en e-postadress.\nAnge en e-postadress om du vill prenumerera på e-postlistan.",
+       "config-pingback": "Dela data om denna installation med MediaWikis utvecklare.",
        "config-almost-done": "Du är nästan färdig!\nDu kan nu hoppa över återstående konfigurationer och installera wikin direkt.",
        "config-optional-continue": "Ställ fler frågor till mig.",
        "config-optional-skip": "Jag är redan uttråkad, bara installera wiki.",
index 84cea99..d541696 100644 (file)
        "config-subscribe-help": "此低流量的邮件列表仅用于发行公告,其中包括重要安全公告。请订阅该列表以便在新的版本推出时升级您的MediaWiki。",
        "config-subscribe-noemail": "您选择了订阅发行公告邮件列表,但没有提供电子邮件地址。请提供一个电子邮件地址以订阅邮件列表。",
        "config-pingback": "与MediaWiki开发人员分享有关此安装程序的数据。",
-       "config-pingback-help": "如果您选择此选项,MediaWiki将定期与https://www.mediawiki.org通信,传输与此MediaWiki实例相关的基础数据。此数据包括例如系统类型、PHP版本和选择的数据库后端。维基媒体基金会与MediaWiki开发人员分享此数据,以帮助引导将来的开发计划。",
+       "config-pingback-help": "如果您选择此选项,MediaWiki将定期与https://www.mediawiki.org通信,传输与此MediaWiki实例相关的基础数据。此数据包括例如系统类型、PHP版本和选择的数据库后端。维基媒体基金会与MediaWiki开发人员分享此数据,以帮助引导将来的开发计划。以下数据将为您的系统发送:\n<pre>$1</pre>",
        "config-almost-done": "您几乎已经完成了!现在您可以跳过剩下的配置流程并立即安装wiki。",
        "config-optional-continue": "多问我一些问题吧。",
        "config-optional-skip": "我已经不耐烦了,赶紧安装我的wiki。",
index 2dc17bf..b5d014f 100644 (file)
@@ -759,10 +759,10 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
         * @param array $opts Options map:
         *   - checkKeys: List of "check" keys. The key at $key will be seen as invalid when either
         *      touchCheckKey() or resetCheckKey() is called on any of these keys.
-        *      Default: [];
-        *   - lowTTL: Consider pre-emptive updates when the current TTL (sec) of the key is less than
-        *      this. It becomes more likely over time, becoming a certainty once the key is expired.
-        *      Default: WANObjectCache::LOW_TTL seconds.
+        *      Default: [].
+        *   - lowTTL: Consider pre-emptive updates when the current TTL (seconds) of the key is less
+        *      than this. It becomes more likely over time, becoming certain once the key is expired.
+        *      Default: WANObjectCache::LOW_TTL.
         *   - lockTSE: If the key is tombstoned or expired (by checkKeys) less than this many seconds
         *      ago, then try to have a single thread handle cache regeneration at any given time.
         *      Other threads will try to use stale values if possible. If, on miss, the time since
@@ -776,9 +776,9 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
         *      stampedes cannot happen if the value falls out of cache. This can be used as insurance
         *      against cache regeneration becoming very slow for some reason (greater than the TTL).
         *      Default: null.
-        *   - pcTTL: Process cache the value in this PHP instance with this TTL. This avoids
-        *      network I/O when a key is read several times. This will not cache if the callback
-        *      returns false however. Note that any purges will not be seen while process cached;
+        *   - pcTTL: Process cache the value in this PHP instance for this many seconds. This avoids
+        *      network I/O when a key is read several times. This will not cache when the callback
+        *      returns false, however. Note that any purges will not be seen while process cached;
         *      since the callback should use slave DBs and they may be lagged or have snapshot
         *      isolation anyway, this should not typically matter.
         *      Default: WANObjectCache::TTL_UNCACHEABLE.
@@ -788,6 +788,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
         *      however, as this reduces compatibility (due to serialization).
         *      Default: null.
         * @return mixed Value found or written to the key
+        * @note Callable type hints are not used to avoid class-autoloading
         */
        final public function getWithSetCallback( $key, $ttl, $callback, array $opts = [] ) {
                $pcTTL = isset( $opts['pcTTL'] ) ? $opts['pcTTL'] : self::TTL_UNCACHEABLE;
@@ -862,6 +863,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
         *   - minTime: Treat values older than this UNIX timestamp as not existing. Default: null.
         * @param float &$asOf Cache generation timestamp of returned value [returned]
         * @return mixed
+        * @note Callable type hints are not used to avoid class-autoloading
         */
        protected function doGetWithSetCallback( $key, $ttl, $callback, array $opts, &$asOf = null ) {
                $lowTTL = isset( $opts['lowTTL'] ) ? $opts['lowTTL'] : min( self::LOW_TTL, $ttl );
index 2d67b87..c203a16 100644 (file)
@@ -36,6 +36,7 @@ use TitleFormatter;
 /**
  * Class that generates HTML <a> links for pages.
  *
+ * @see https://www.mediawiki.org/wiki/Manual:LinkRenderer
  * @since 1.28
  */
 class LinkRenderer {
index 6b0f887..0ebfab7 100644 (file)
@@ -43,7 +43,7 @@ abstract class MediaHandler {
         * Get a MediaHandler for a given MIME type from the instance cache
         *
         * @param string $type
-        * @return MediaHandler
+        * @return MediaHandler|bool
         */
        static function getHandler( $type ) {
                global $wgMediaHandlers;
index dbc27a9..46fef10 100644 (file)
@@ -1810,30 +1810,31 @@ class WikiPage implements Page, IDBAccessObject {
                }
 
                // Do secondary updates once the main changes have been committed...
-               $that = $this;
-               $dbw->onTransactionIdle(
-                       function () use (
-                               $dbw, &$that, $revision, &$user, $content, $summary, &$flags,
-                               $changed, $meta, &$status
-                       ) {
-                               // Do per-page updates in a transaction
-                               $dbw->setFlag( DBO_TRX );
-                               // Update links tables, site stats, etc.
-                               $that->doEditUpdates(
-                                       $revision,
-                                       $user,
-                                       [
-                                               'changed' => $changed,
-                                               'oldcountable' => $meta['oldCountable'],
-                                               'oldrevision' => $meta['oldRevision']
-                                       ]
-                               );
-                               // Trigger post-save hook
-                               $params = [ &$that, &$user, $content, $summary, $flags & EDIT_MINOR,
-                                       null, null, &$flags, $revision, &$status, $meta['baseRevId'] ];
-                               ContentHandler::runLegacyHooks( 'ArticleSaveComplete', $params );
-                               Hooks::run( 'PageContentSaveComplete', $params );
-                       }
+               DeferredUpdates::addUpdate(
+                       new AtomicSectionUpdate(
+                               $dbw,
+                               __METHOD__,
+                               function () use (
+                                       $revision, &$user, $content, $summary, &$flags,
+                                       $changed, $meta, &$status
+                               ) {
+                                       // Update links tables, site stats, etc.
+                                       $this->doEditUpdates(
+                                               $revision,
+                                               $user,
+                                               [
+                                                       'changed' => $changed,
+                                                       'oldcountable' => $meta['oldCountable'],
+                                                       'oldrevision' => $meta['oldRevision']
+                                               ]
+                                       );
+                                       // Trigger post-save hook
+                                       $params = [ &$this, &$user, $content, $summary, $flags & EDIT_MINOR,
+                                               null, null, &$flags, $revision, &$status, $meta['baseRevId'] ];
+                                       ContentHandler::runLegacyHooks( 'ArticleSaveComplete', $params );
+                                       Hooks::run( 'PageContentSaveComplete', $params );
+                               }
+                       )
                );
 
                return $status;
@@ -1938,26 +1939,27 @@ class WikiPage implements Page, IDBAccessObject {
                $status->value['revision'] = $revision;
 
                // Do secondary updates once the main changes have been committed...
-               $that = $this;
-               $dbw->onTransactionIdle(
-                       function () use (
-                               &$that, $dbw, $revision, &$user, $content, $summary, &$flags, $meta, &$status
-                       ) {
-                               // Do per-page updates in a transaction
-                               $dbw->setFlag( DBO_TRX );
-                               // Update links, etc.
-                               $that->doEditUpdates( $revision, $user, [ 'created' => true ] );
-                               // Trigger post-create hook
-                               $params = [ &$that, &$user, $content, $summary,
-                                       $flags & EDIT_MINOR, null, null, &$flags, $revision ];
-                               ContentHandler::runLegacyHooks( 'ArticleInsertComplete', $params );
-                               Hooks::run( 'PageContentInsertComplete', $params );
-                               // Trigger post-save hook
-                               $params = array_merge( $params, [ &$status, $meta['baseRevId'] ] );
-                               ContentHandler::runLegacyHooks( 'ArticleSaveComplete', $params );
-                               Hooks::run( 'PageContentSaveComplete', $params );
+               DeferredUpdates::addUpdate(
+                       new AtomicSectionUpdate(
+                               $dbw,
+                               __METHOD__,
+                               function () use (
+                                       $revision, &$user, $content, $summary, &$flags, $meta, &$status
+                               ) {
+                                       // Update links, etc.
+                                       $this->doEditUpdates( $revision, $user, [ 'created' => true ] );
+                                       // Trigger post-create hook
+                                       $params = [ &$this, &$user, $content, $summary,
+                                               $flags & EDIT_MINOR, null, null, &$flags, $revision ];
+                                       ContentHandler::runLegacyHooks( 'ArticleInsertComplete', $params );
+                                       Hooks::run( 'PageContentInsertComplete', $params );
+                                       // Trigger post-save hook
+                                       $params = array_merge( $params, [ &$status, $meta['baseRevId'] ] );
+                                       ContentHandler::runLegacyHooks( 'ArticleSaveComplete', $params );
+                                       Hooks::run( 'PageContentSaveComplete', $params );
 
-                       }
+                               }
+                       )
                );
 
                return $status;
@@ -2048,7 +2050,7 @@ class WikiPage implements Page, IDBAccessObject {
                }
 
                if ( $this->mPreparedEdit
-                       && $this->mPreparedEdit->newContent
+                       && isset( $this->mPreparedEdit->newContent )
                        && $this->mPreparedEdit->newContent->equals( $content )
                        && $this->mPreparedEdit->revid == $revid
                        && $this->mPreparedEdit->format == $serialFormat
index 32d8373..5e54615 100644 (file)
@@ -41,6 +41,7 @@ class MWTidy {
         * @param string $text HTML input fragment. This should not contain a
         *                     <body> or <html> tag.
         * @return string Corrected HTML output
+        * @throws MWException
         */
        public static function tidy( $text ) {
                $driver = self::singleton();
@@ -57,6 +58,7 @@ class MWTidy {
         * @param string $text
         * @param string &$errorStr Return the error string
         * @return bool Whether the HTML is valid
+        * @throws MWException
         */
        public static function checkErrors( $text, &$errorStr = null ) {
                $driver = self::singleton();
@@ -71,10 +73,16 @@ class MWTidy {
                }
        }
 
+       /**
+        * @return bool
+        */
        public static function isEnabled() {
                return self::singleton() !== false;
        }
 
+       /**
+        * @return bool|\MediaWiki\Tidy\TidyDriverBase
+        */
        protected static function singleton() {
                global $wgUseTidy, $wgTidyInternal, $wgTidyConf, $wgDebugTidy, $wgTidyConfig,
                        $wgTidyBin, $wgTidyOpts;
@@ -101,34 +109,46 @@ class MWTidy {
                        } else {
                                return false;
                        }
-                       switch ( $config['driver'] ) {
-                               case 'RaggettInternalHHVM':
-                                       self::$instance = new MediaWiki\Tidy\RaggettInternalHHVM( $config );
-                                       break;
-                               case 'RaggettInternalPHP':
-                                       self::$instance = new MediaWiki\Tidy\RaggettInternalPHP( $config );
-                                       break;
-                               case 'RaggettExternal':
-                                       self::$instance = new MediaWiki\Tidy\RaggettExternal( $config );
-                                       break;
-                               case 'Html5Depurate':
-                                       self::$instance = new MediaWiki\Tidy\Html5Depurate( $config );
-                                       break;
-                               case 'Html5Internal':
-                                       self::$instance = new MediaWiki\Tidy\Html5Internal( $config );
-                                       break;
-                               case 'disabled':
-                                       return false;
-                               default:
-                                       throw new MWException( "Invalid tidy driver: \"{$config['driver']}\"" );
-                       }
+                       self::$instance = self::factory( $config );
                }
                return self::$instance;
        }
 
+       /**
+        * Create a new Tidy driver object from configuration.
+        * @see $wgTidyConfig
+        * @param array $config
+        * @return bool|\MediaWiki\Tidy\TidyDriverBase
+        * @throws MWException
+        */
+       public static function factory( array $config ) {
+               switch ( $config['driver'] ) {
+                       case 'RaggettInternalHHVM':
+                               $instance = new MediaWiki\Tidy\RaggettInternalHHVM( $config );
+                               break;
+                       case 'RaggettInternalPHP':
+                               $instance = new MediaWiki\Tidy\RaggettInternalPHP( $config );
+                               break;
+                       case 'RaggettExternal':
+                               $instance = new MediaWiki\Tidy\RaggettExternal( $config );
+                               break;
+                       case 'Html5Depurate':
+                               $instance = new MediaWiki\Tidy\Html5Depurate( $config );
+                               break;
+                       case 'Html5Internal':
+                               $instance = new MediaWiki\Tidy\Html5Internal( $config );
+                               break;
+                       case 'disabled':
+                               return false;
+                       default:
+                               throw new MWException( "Invalid tidy driver: \"{$config['driver']}\"" );
+               }
+               return $instance;
+       }
+
        /**
         * Set the driver to be used. This is for testing.
-        * @param TidyDriverBase|false|null $instance
+        * @param MediaWiki\Tidy\TidyDriverBase|false|null $instance
         */
        public static function setInstance( $instance ) {
                self::$instance = $instance;
index a765450..f9eea48 100644 (file)
@@ -501,60 +501,46 @@ class Parser {
                                [ $this->mHighestExpansionDepth, $this->mOptions->getMaxPPExpandDepth() ]
                        );
                        $this->mOutput->setLimitReportData( 'limitreport-expensivefunctioncount',
-                               [ $this->mExpensiveFunctionCount, $this->mOptions->getExpensiveParserFunctionLimit() ]
+                               [ $this->mExpensiveFunctionCount,
+                                       $this->mOptions->getExpensiveParserFunctionLimit() ]
                        );
                        Hooks::run( 'ParserLimitReportPrepare', [ $this, $this->mOutput ] );
 
-                       $limitReport = "NewPP limit report\n";
-                       if ( $wgShowHostnames ) {
-                               $limitReport .= 'Parsed by ' . wfHostname() . "\n";
-                       }
-                       $limitReport .= 'Cached time: ' . $this->mOutput->getCacheTime() . "\n";
-                       $limitReport .= 'Cache expiry: ' . $this->mOutput->getCacheExpiry() . "\n";
-                       $limitReport .= 'Dynamic content: ' .
-                               ( $this->mOutput->hasDynamicContent() ? 'true' : 'false' ) .
-                               "\n";
-
-                       foreach ( $this->mOutput->getLimitReportData() as $key => $value ) {
-                               if ( Hooks::run( 'ParserLimitReportFormat',
-                                       [ $key, &$value, &$limitReport, false, false ]
-                               ) ) {
-                                       $keyMsg = wfMessage( $key )->inLanguage( 'en' )->useDatabase( false );
-                                       $valueMsg = wfMessage( [ "$key-value-text", "$key-value" ] )
-                                               ->inLanguage( 'en' )->useDatabase( false );
-                                       if ( !$valueMsg->exists() ) {
-                                               $valueMsg = new RawMessage( '$1' );
-                                       }
-                                       if ( !$keyMsg->isDisabled() && !$valueMsg->isDisabled() ) {
-                                               $valueMsg->params( $value );
-                                               $limitReport .= "{$keyMsg->text()}: {$valueMsg->text()}\n";
-                                       }
-                               }
-                       }
-                       // Since we're not really outputting HTML, decode the entities and
-                       // then re-encode the things that need hiding inside HTML comments.
-                       $limitReport = htmlspecialchars_decode( $limitReport );
+                       $limitReport = '';
                        Hooks::run( 'ParserLimitReport', [ $this, &$limitReport ] );
+                       if ( $limitReport != '' ) {
+                               // Sanitize for comment. Note '‐' in the replacement is U+2010,
+                               // which looks much like the problematic '-'.
+                               $limitReport = str_replace( [ '-', '&' ], [ '‐', '&amp;' ], $limitReport );
+                               $text .= "\n<!-- \nNewPP limit report\n$limitReport-->\n";
+                       }
 
-                       // Sanitize for comment. Note '‐' in the replacement is U+2010,
-                       // which looks much like the problematic '-'.
-                       $limitReport = str_replace( [ '-', '&' ], [ '‐', '&amp;' ], $limitReport );
-                       $text .= "\n<!-- \n$limitReport-->\n";
-
-                       // Add on template profiling data
+                       // Add on template profiling data in human/machine readable way
                        $dataByFunc = $this->mProfiler->getFunctionStats();
                        uasort( $dataByFunc, function ( $a, $b ) {
                                return $a['real'] < $b['real']; // descending order
                        } );
-                       $profileReport = "Transclusion expansion time report (%,ms,calls,template)\n";
+                       $profileReport = [];
                        foreach ( array_slice( $dataByFunc, 0, 10 ) as $item ) {
-                               $profileReport .= sprintf( "%6.2f%% %8.3f %6d - %s\n",
-                                       $item['%real'], $item['real'], $item['calls'],
-                                       htmlspecialchars( $item['name'] ) );
+                               $profileReport[] = sprintf( "%6.2f%% %8.3f %6d %s",
+                                       $item['%real'], $item['real'], $item['calls'], $item['name'] );
                        }
-                       $text .= "\n<!-- \n$profileReport-->\n";
+                       $this->mOutput->setLimitReportData( 'limitreport-timingprofile', $profileReport );
 
-                       if ( $this->mGeneratedPPNodeCount > $this->mOptions->getMaxGeneratedPPNodeCount() / 10 ) {
+                       // Add other cache related metadata
+                       if ( $wgShowHostnames ) {
+                               $this->mOutput->setLimitReportData( 'cachereport-origin', wfHostname() );
+                       }
+                       $this->mOutput->setLimitReportData( 'cachereport-timestamp',
+                               $this->mOutput->getCacheTime() );
+                       $this->mOutput->setLimitReportData( 'cachereport-ttl',
+                               $this->mOutput->getCacheExpiry() );
+                       $this->mOutput->setLimitReportData( 'cachereport-transientcontent',
+                               $this->mOutput->hasDynamicContent() );
+
+                       if ( $this->mGeneratedPPNodeCount
+                               > $this->mOptions->getMaxGeneratedPPNodeCount() / 10
+                       ) {
                                wfDebugLog( 'generated-pp-node-count', $this->mGeneratedPPNodeCount . ' ' .
                                        $this->mTitle->getPrefixedDBkey() );
                        }
@@ -1355,8 +1341,10 @@ class Parser {
 
                $text = Sanitizer::normalizeCharReferences( $text );
 
-               if ( MWTidy::isEnabled() && $this->mOptions->getTidy() ) {
-                       $text = MWTidy::tidy( $text );
+               if ( MWTidy::isEnabled() ) {
+                       if ( $this->mOptions->getTidy() ) {
+                               $text = MWTidy::tidy( $text );
+                       }
                } else {
                        # attempt to sanitize at least some nesting problems
                        # (bug #2702 and quite a few others)
index 3462d10..f052812 100644 (file)
@@ -188,9 +188,7 @@ class ParserOutput extends CacheTime {
         */
        private $mExtensionData = [];
 
-       /**
-        * @var array $mLimitReportData Parser limit report data.
-        */
+       /** @var array $mLimitReportData Parser limit report data. */
        private $mLimitReportData = [];
 
        /**
@@ -367,15 +365,6 @@ class ParserOutput extends CacheTime {
                return $this->mModuleStyles;
        }
 
-       /**
-        * @deprecated since 1.26 Obsolete
-        * @return array
-        */
-       public function getModuleMessages() {
-               wfDeprecated( __METHOD__, '1.26' );
-               return [];
-       }
-
        /** @since 1.23 */
        public function getJsConfigVars() {
                return $this->mJsConfigVars;
@@ -644,14 +633,6 @@ class ParserOutput extends CacheTime {
                $this->mModuleStyles = array_merge( $this->mModuleStyles, (array)$modules );
        }
 
-       /**
-        * @deprecated since 1.26 Use addModules() instead
-        * @param string|array $modules
-        */
-       public function addModuleMessages( $modules ) {
-               wfDeprecated( __METHOD__, '1.26' );
-       }
-
        /**
         * Add one or more variables to be set in mw.config in JavaScript.
         *
@@ -998,24 +979,34 @@ class ParserOutput extends CacheTime {
        /**
         * Sets parser limit report data for a key
         *
-        * The key is used as the prefix for various messages used for formatting:
-        *  - $key: The label for the field in the limit report
-        *  - $key-value-text: Message used to format the value in the "NewPP limit
-        *      report" HTML comment. If missing, uses $key-format.
-        *  - $key-value-html: Message used to format the value in the preview
-        *      limit report table. If missing, uses $key-format.
-        *  - $key-value: Message used to format the value. If missing, uses "$1".
-        *
-        * Note that all values are interpreted as wikitext, and so should be
-        * encoded with htmlspecialchars() as necessary, but should avoid complex
-        * HTML for sanity of display in the "NewPP limit report" comment.
+        * If $value consist of a list of two floats, it will be interpreted as
+        * (actual value, maximum allowed value). The presence of a "-" in $key will cause
+        * the first part of the key to be interpreted as a namespace.
         *
         * @since 1.22
-        * @param string $key Message key
-        * @param mixed $value Appropriate for Message::params()
+        * @param string $key Data key
+        * @param mixed $value Data value One of (float, string, bool, JSON serializable array)
         */
        public function setLimitReportData( $key, $value ) {
-               $this->mLimitReportData[$key] = $value;
+               if ( is_array( $value ) ) {
+                       if ( array_keys( $value ) === [ 0, 1 ]
+                               && is_numeric( $value[0] )
+                               && is_numeric( $value[1] )
+                       ) {
+                               $data = [ 'value' => $value[0], 'limit' => $value[1] ];
+                       } else {
+                               $data = $value;
+                       }
+               } else {
+                       $data = $value;
+               }
+
+               if ( strpos( $key, '-' ) ) {
+                       list( $ns, $name ) = explode( '-', $key, 2 );
+                       $this->mLimitReportData[$ns][$name] = $data;
+               } else {
+                       $this->mLimitReportData[$key] = $data;
+               }
        }
 
        /**
index 04ec841..65ac6e6 100644 (file)
@@ -46,8 +46,6 @@ class SectionProfiler {
        protected $collateOnly = true;
        /** @var array Cache of a standard broken collation entry */
        protected $errorEntry;
-       /** @var callable Cache of a profile out callback */
-       protected $profileOutCallback;
 
        /**
         * @param array $params
@@ -55,9 +53,6 @@ class SectionProfiler {
        public function __construct( array $params = [] ) {
                $this->errorEntry = $this->getErrorEntry();
                $this->collateOnly = empty( $params['trace'] );
-               $this->profileOutCallback = function ( $profiler, $section ) {
-                       $profiler->profileOutInternal( $section );
-               };
        }
 
        /**
index 12218ce..5555e8b 100644 (file)
@@ -162,14 +162,14 @@ class ExtensionProcessor implements Processor {
         * @return array
         */
        public function extractInfo( $path, array $info, $version ) {
+               $dir = dirname( $path );
                if ( $version === 2 ) {
-                       $this->extractConfig2( $info );
+                       $this->extractConfig2( $info, $dir );
                } else {
                        // $version === 1
                        $this->extractConfig1( $info );
                }
                $this->extractHooks( $info );
-               $dir = dirname( $path );
                $this->extractExtensionMessagesFiles( $dir, $info );
                $this->extractMessagesDirs( $dir, $info );
                $this->extractNamespaces( $info );
@@ -243,7 +243,10 @@ class ExtensionProcessor implements Processor {
                        foreach ( $info['namespaces'] as $ns ) {
                                $id = $ns['id'];
                                $this->defines[$ns['constant']] = $id;
-                               $this->attributes['ExtensionNamespaces'][$id] = $ns['name'];
+                               if ( !( isset( $ns['conditional'] ) && $ns['conditional'] ) ) {
+                                       // If it is not conditional, register it
+                                       $this->attributes['ExtensionNamespaces'][$id] = $ns['name'];
+                               }
                                if ( isset( $ns['gender'] ) ) {
                                        $this->globals['wgExtraGenderNamespaces'][$id] = $ns['gender'];
                                }
@@ -381,8 +384,9 @@ class ExtensionProcessor implements Processor {
         * @todo In the future, this should be done via Config interfaces
         *
         * @param array $info
+        * @param string $dir
         */
-       protected function extractConfig2( array $info ) {
+       protected function extractConfig2( array $info, $dir ) {
                if ( isset( $info['config_prefix'] ) ) {
                        $prefix = $info['config_prefix'];
                } else {
@@ -392,7 +396,10 @@ class ExtensionProcessor implements Processor {
                        foreach ( $info['config'] as $key => $data ) {
                                $value = $data['value'];
                                if ( isset( $value['merge_strategy'] ) ) {
-                                       $value[ExtensionRegistry::MERGE_STRATEGY] = $value['merge_strategy'];
+                                       $value[ExtensionRegistry::MERGE_STRATEGY] = $data['merge_strategy'];
+                               }
+                               if ( isset( $data['path'] ) && $data['path'] ) {
+                                       $value = "$dir/$value";
                                }
                                $this->globals["$prefix$key"] = $value;
                        }
index 6596112..1a93f6e 100644 (file)
@@ -1388,13 +1388,14 @@ MESSAGE;
         * the given value.
         *
         * @param array $configuration List of configuration values keyed by variable name
+        * @param bool $pretty Pretty-print with extra whitespace
         * @return string
         */
-       public static function makeConfigSetScript( array $configuration ) {
+       public static function makeConfigSetScript( array $configuration, $pretty = null ) {
                return Xml::encodeJsCall(
                        'mw.config.set',
                        [ $configuration ],
-                       ResourceLoader::inDebugMode()
+                       ( $pretty === null ) ? ResourceLoader::inDebugMode() : $pretty
                );
        }
 
index f47a70b..39fb8ef 100644 (file)
  * Item class for a filearchive table row
  */
 class RevDelArchivedFileItem extends RevDelFileItem {
+       /** @var RevDelArchivedFileList */
+       protected $list;
+       /** @var ArchivedFile */
+       protected $file;
+       /** @var LocalFile */
+       protected $lockFile;
+
        public function __construct( $list, $row ) {
                RevDelItem::__construct( $list, $row );
                $this->file = ArchivedFile::newFromRow( $row );
+               $this->lockFile = RepoGroup::singleton()->getLocalRepo()->newFile( $row->fa_name );
        }
 
        public function getIdField() {
@@ -125,4 +133,12 @@ class RevDelArchivedFileItem extends RevDelFileItem {
 
                return $ret;
        }
+
+       public function lock() {
+               return $this->lockFile->acquireFileLock();
+       }
+
+       public function unlock() {
+               return $this->lockFile->releaseFileLock();
+       }
 }
index dca4d5a..3a3b467 100644 (file)
  * Item class for an oldimage table row
  */
 class RevDelFileItem extends RevDelItem {
-       /** @var File */
+       /** @var OldLocalFile */
        public $file;
+       /** @var RevDelFileList */
+       protected $list;
 
        public function __construct( $list, $row ) {
                parent::__construct( $list, $row );
@@ -233,4 +235,12 @@ class RevDelFileItem extends RevDelItem {
 
                return $ret;
        }
+
+       public function lock() {
+               return $this->file->acquireFileLock();
+       }
+
+       public function unlock() {
+               return $this->file->releaseFileLock();
+       }
 }
index dba368d..b114c75 100644 (file)
@@ -61,4 +61,22 @@ abstract class RevDelItem extends RevisionItemBase {
         * @return array Data for the API result
         */
        abstract public function getApiData( ApiResult $result );
+
+       /**
+        * Lock the item against changes outside of the DB
+        * @return Status
+        * @since 1.28
+        */
+       public function lock() {
+               return Status::newGood();
+       }
+
+       /**
+        * Unlock the item against changes outside of the DB
+        * @return Status
+        * @since 1.28
+        */
+       public function unlock() {
+               return Status::newGood();
+       }
 }
index 3c81feb..d365bf6 100644 (file)
@@ -81,14 +81,13 @@ abstract class RevDelList extends RevisionListBase {
        public function areAnySuppressed() {
                $bit = $this->getSuppressBit();
 
-               // @codingStandardsIgnoreStart Generic.CodeAnalysis.ForLoopWithTestFunctionCall.NotAllowed
-               for ( $this->reset(); $this->current(); $this->next() ) {
-                       // @codingStandardsIgnoreEnd
-                       $item = $this->current();
+               /** @var $item RevDelItem */
+               foreach ( $this as $item ) {
                        if ( $item->getBits() & $bit ) {
                                return true;
                        }
                }
+
                return false;
        }
 
@@ -104,6 +103,8 @@ abstract class RevDelList extends RevisionListBase {
         * @since 1.23 Added 'perItemStatus' param
         */
        public function setVisibility( array $params ) {
+               $status = Status::newGood();
+
                $bitPars = $params['value'];
                $comment = $params['comment'];
                $perItemStatus = isset( $params['perItemStatus'] ) ? $params['perItemStatus'] : false;
@@ -113,9 +114,17 @@ abstract class RevDelList extends RevisionListBase {
                $dbw = wfGetDB( DB_MASTER );
                $this->res = $this->doQuery( $dbw );
 
+               $status->merge( $this->acquireItemLocks() );
+               if ( !$status->isGood() ) {
+                       return $status;
+               }
+
                $dbw->startAtomic( __METHOD__ );
+               $dbw->onTransactionResolution( function () {
+                       // Release locks on commit or error
+                       $this->releaseItemLocks();
+               } );
 
-               $status = Status::newGood();
                $missing = array_flip( $this->ids );
                $this->clearFileOps();
                $idsForLog = [];
@@ -136,11 +145,8 @@ abstract class RevDelList extends RevisionListBase {
                // passed to doPostCommitUpdates().
                $visibilityChangeMap = [];
 
-               // @codingStandardsIgnoreStart Generic.CodeAnalysis.ForLoopWithTestFunctionCall.NotAllowed
-               for ( $this->reset(); $this->current(); $this->next() ) {
-                       // @codingStandardsIgnoreEnd
-                       /** @var $item RevDelItem */
-                       $item = $this->current();
+               /** @var $item RevDelItem */
+               foreach ( $this as $item ) {
                        unset( $missing[$item->getId()] );
 
                        if ( $perItemStatus ) {
@@ -264,17 +270,39 @@ abstract class RevDelList extends RevisionListBase {
                        ]
                );
 
-               // Clear caches
-               $that = $this;
-               $dbw->onTransactionIdle( function() use ( $that, $visibilityChangeMap ) {
-                       $that->doPostCommitUpdates( $visibilityChangeMap );
-               } );
+               // Clear caches after commit
+               DeferredUpdates::addCallableUpdate(
+                       function () use ( $visibilityChangeMap ) {
+                               $this->doPostCommitUpdates( $visibilityChangeMap );
+                       },
+                       DeferredUpdates::PRESEND
+               );
 
                $dbw->endAtomic( __METHOD__ );
 
                return $status;
        }
 
+       final protected function acquireItemLocks() {
+               $status = Status::newGood();
+               /** @var $item RevDelItem */
+               foreach ( $this as $item ) {
+                       $status->merge( $item->lock() );
+               }
+
+               return $status;
+       }
+
+       final protected function releaseItemLocks() {
+               $status = Status::newGood();
+               /** @var $item RevDelItem */
+               foreach ( $this as $item ) {
+                       $status->merge( $item->unlock() );
+               }
+
+               return $status;
+       }
+
        /**
         * Reload the list data from the master DB. This can be done after setVisibility()
         * to allow $item->getHTML() to show the new data.
index 719f905..8fa212e 100644 (file)
@@ -46,6 +46,9 @@ use WebRequest;
  * @since 1.27
  */
 final class Session implements \Countable, \Iterator, \ArrayAccess {
+       /** @var null|string[] Encryption algorithm to use */
+       private static $encryptionAlgorithm = null;
+
        /** @var SessionBackend Session backend */
        private $backend;
 
@@ -409,24 +412,42 @@ final class Session implements \Countable, \Iterator, \ArrayAccess {
         * Decide what type of encryption to use, based on system capabilities.
         * @return array
         */
-       private function getEncryptionAlgorithm() {
+       private static function getEncryptionAlgorithm() {
                global $wgSessionInsecureSecrets;
 
-               if (
-                       function_exists( 'openssl_encrypt' )
-                       && in_array( 'aes-256-ctr', openssl_get_cipher_methods(), true )
-               ) {
-                       return [ 'openssl', 'aes-256-ctr' ];
-               } elseif (
-                       function_exists( 'mcrypt_encrypt' )
-                       && in_array( 'rijndael-128', mcrypt_list_algorithms(), true )
-                       && in_array( 'ctr', mcrypt_list_modes(), true )
-               ) {
-                       return [ 'mcrypt', 'rijndael-128', 'ctr' ];
-               } elseif ( $wgSessionInsecureSecrets ) {
-                       // @todo: import a pure-PHP library for AES instead of this
-                       return [ 'insecure' ];
-               } else {
+               if ( self::$encryptionAlgorithm === null ) {
+                       if ( function_exists( 'openssl_encrypt' ) ) {
+                               $methods = openssl_get_cipher_methods();
+                               if ( in_array( 'aes-256-ctr', $methods, true ) ) {
+                                       self::$encryptionAlgorithm = [ 'openssl', 'aes-256-ctr' ];
+                                       return self::$encryptionAlgorithm;
+                               }
+                               if ( in_array( 'aes-256-cbc', $methods, true ) ) {
+                                       self::$encryptionAlgorithm = [ 'openssl', 'aes-256-cbc' ];
+                                       return self::$encryptionAlgorithm;
+                               }
+                       }
+
+                       if ( function_exists( 'mcrypt_encrypt' )
+                               && in_array( 'rijndael-128', mcrypt_list_algorithms(), true )
+                       ) {
+                               $modes = mcrypt_list_modes();
+                               if ( in_array( 'ctr', $modes, true ) ) {
+                                       self::$encryptionAlgorithm = [ 'mcrypt', 'rijndael-128', 'ctr' ];
+                                       return self::$encryptionAlgorithm;
+                               }
+                               if ( in_array( 'cbc', $modes, true ) ) {
+                                       self::$encryptionAlgorithm = [ 'mcrypt', 'rijndael-128', 'cbc' ];
+                                       return self::$encryptionAlgorithm;
+                               }
+                       }
+
+                       if ( $wgSessionInsecureSecrets ) {
+                               // @todo: import a pure-PHP library for AES instead of this
+                               self::$encryptionAlgorithm = [ 'insecure' ];
+                               return self::$encryptionAlgorithm;
+                       }
+
                        throw new \BadMethodCallException(
                                'Encryption is not available. You really should install the PHP OpenSSL extension, ' .
                                'or failing that the mcrypt extension. But if you really can\'t and you\'re willing ' .
@@ -435,6 +456,7 @@ final class Session implements \Countable, \Iterator, \ArrayAccess {
                        );
                }
 
+               return self::$encryptionAlgorithm;
        }
 
        /**
@@ -455,7 +477,7 @@ final class Session implements \Countable, \Iterator, \ArrayAccess {
                // Encrypt
                // @todo: import a pure-PHP library for AES instead of doing $wgSessionInsecureSecrets
                $iv = \MWCryptRand::generate( 16, true );
-               $algorithm = $this->getEncryptionAlgorithm();
+               $algorithm = self::getEncryptionAlgorithm();
                switch ( $algorithm[0] ) {
                        case 'openssl':
                                $ciphertext = openssl_encrypt( $serialized, $algorithm[1], $encKey, OPENSSL_RAW_DATA, $iv );
@@ -464,6 +486,11 @@ final class Session implements \Countable, \Iterator, \ArrayAccess {
                                }
                                break;
                        case 'mcrypt':
+                               // PKCS7 padding
+                               $blocksize = mcrypt_get_block_size( $algorithm[1], $algorithm[2] );
+                               $pad = $blocksize - ( strlen( $serialized ) % $blocksize );
+                               $serialized .= str_repeat( chr( $pad ), $pad );
+
                                $ciphertext = mcrypt_encrypt( $algorithm[1], $encKey, $serialized, $algorithm[2], $iv );
                                if ( $ciphertext === false ) {
                                        throw new \UnexpectedValueException( 'Encryption failed' );
@@ -521,7 +548,7 @@ final class Session implements \Countable, \Iterator, \ArrayAccess {
                }
 
                // Decrypt
-               $algorithm = $this->getEncryptionAlgorithm();
+               $algorithm = self::getEncryptionAlgorithm();
                switch ( $algorithm[0] ) {
                        case 'openssl':
                                $serialized = openssl_decrypt( base64_decode( $ciphertext ), $algorithm[1], $encKey,
@@ -540,6 +567,10 @@ final class Session implements \Countable, \Iterator, \ArrayAccess {
                                        $this->logger->debug( $ex->getMessage(), [ 'exception' => $ex ] );
                                        return $default;
                                }
+
+                               // Remove PKCS7 padding
+                               $pad = ord( substr( $serialized, -1 ) );
+                               $serialized = substr( $serialized, 0, -$pad );
                                break;
                        case 'insecure':
                                $ex = new \Exception(
index 14391d2..98ff187 100644 (file)
@@ -22,6 +22,9 @@
  */
 
 class SpecialNewFiles extends IncludableSpecialPage {
+       /** @var FormOptions */
+       protected $opts;
+
        public function __construct() {
                parent::__construct( 'Newimages' );
        }
@@ -33,21 +36,85 @@ class SpecialNewFiles extends IncludableSpecialPage {
                $out = $this->getOutput();
                $this->addHelpLink( 'Help:New images' );
 
-               $pager = new NewFilesPager( $this->getContext(), $par );
+               $opts = new FormOptions();
+
+               $opts->add( 'like', '' );
+               $opts->add( 'showbots', false );
+               $opts->add( 'hidepatrolled', false );
+               $opts->add( 'limit', 50 );
+               $opts->add( 'offset', '' );
+
+               $opts->fetchValuesFromRequest( $this->getRequest() );
+
+               if ( $par !== null ) {
+                       $opts->setValue( is_numeric( $par ) ? 'limit' : 'like', $par );
+               }
+
+               $opts->validateIntBounds( 'limit', 0, 500 );
+
+               $this->opts = $opts;
 
                if ( !$this->including() ) {
-                       $this->setTopText();
-                       $form = $pager->getForm();
-                       $form->prepareForm();
-                       $form->displayForm( '' );
+                       $this->buildForm();
                }
 
+               $pager = new NewFilesPager( $this->getContext(), $opts );
+
                $out->addHTML( $pager->getBody() );
                if ( !$this->including() ) {
                        $out->addHTML( $pager->getNavigationBar() );
                }
        }
 
+       protected function buildForm() {
+               $formDescriptor = [
+                       'like' => [
+                               'type' => 'text',
+                               'label-message' => 'newimages-label',
+                               'name' => 'like',
+                       ],
+
+                       'showbots' => [
+                               'type' => 'check',
+                               'label-message' => 'newimages-showbots',
+                               'name' => 'showbots',
+                       ],
+
+                       'hidepatrolled' => [
+                               'type' => 'check',
+                               'label-message' => 'newimages-hidepatrolled',
+                               'name' => 'hidepatrolled',
+                       ],
+
+                       'limit' => [
+                               'type' => 'hidden',
+                               'default' => $this->opts->getValue( 'limit' ),
+                               'name' => 'limit',
+                       ],
+
+                       'offset' => [
+                               'type' => 'hidden',
+                               'default' => $this->opts->getValue( 'offset' ),
+                               'name' => 'offset',
+                       ],
+               ];
+
+               if ( $this->getConfig()->get( 'MiserMode' ) ) {
+                       unset( $formDescriptor['like'] );
+               }
+
+               if ( !$this->getUser()->useFilePatrol() ) {
+                       unset( $formDescriptor['hidepatrolled'] );
+               }
+
+               $form = HTMLForm::factory( 'ooui', $formDescriptor, $this->getContext() )
+                       ->setWrapperLegendMsg( 'newimages-legend' )
+                       ->setSubmitTextMsg( 'ilsubmit' )
+                       ->setMethod( 'get' )
+                       ->prepareForm()
+                       ->displayForm( false );
+       }
+
        protected function getGroupName() {
                return 'changes';
        }
index 2e7b4cd..f00477f 100644 (file)
@@ -57,17 +57,18 @@ class SpecialPreferences extends SpecialPage {
                if ( $request->getSessionData( 'specialPreferencesSaveSuccess' ) ) {
                        // Remove session data for the success message
                        $request->setSessionData( 'specialPreferencesSaveSuccess', null );
+                       $out->addModuleStyles( 'mediawiki.notification.convertmessagebox.styles' );
 
-                       $out->wrapWikiMsg(
+                       $out->addHtml(
                                Html::rawElement(
                                        'div',
                                        [
-                                               'class' => 'mw-preferences-messagebox successbox',
-                                               'id' => 'mw-preferences-success'
+                                               'class' => 'mw-preferences-messagebox mw-notify-success successbox',
+                                               'id' => 'mw-preferences-success',
+                                               'data-mw-autohide' => 'false',
                                        ],
-                                       Html::element( 'p', [], '$1' )
-                               ),
-                               'savedprefs'
+                                       Html::element( 'p', [], $this->msg( 'savedprefs' )->text() )
+                               )
                        );
                }
 
index aed2fa6..9690d45 100644 (file)
@@ -386,7 +386,7 @@ class SpecialSearch extends SpecialPage {
                if ( $textMatches && !$textStatus ) {
                        // output appropriate heading
                        if ( $numTextMatches > 0 && $numTitleMatches > 0 ) {
-                               $out->addHTML( '<div class="visualClear"></div>' );
+                               $out->addHTML( '<div class="mw-search-visualclear"></div>' );
                                // if no title matches the heading is redundant
                                $out->wrapWikiMsg( "==$1==\n", 'textmatches' );
                        }
@@ -435,7 +435,7 @@ class SpecialSearch extends SpecialPage {
                        $textMatches->free();
                }
 
-               $out->addHTML( '<div class="visualClear"></div>' );
+               $out->addHTML( '<div class="mw-search-visualclear"></div>' );
 
                if ( $prevnext ) {
                        $out->addHTML( "<p class='mw-search-pager-bottom'>{$prevnext}</p>\n" );
@@ -456,7 +456,7 @@ class SpecialSearch extends SpecialPage {
        protected function interwikiHeader( $interwiki, $interwikiResult ) {
                // TODO: we need to figure out how to name wikis correctly
                $wikiMsg = $this->msg( 'search-interwiki-results-' . $interwiki )->parse();
-               return "<p class=\"mw-search-interwiki-header\">\n$wikiMsg</p>";
+               return "<p class=\"mw-search-interwiki-header mw-search-visualclear\">\n$wikiMsg</p>";
        }
 
        /**
@@ -1166,7 +1166,7 @@ class SpecialSearch extends SpecialPage {
         * @return string
         */
        protected function searchProfileTabs( $term ) {
-               $out = Html::element( 'div', [ 'class' => 'visualClear' ] ) .
+               $out = Html::element( 'div', [ 'class' => 'mw-search-visualclear' ] ) .
                        Xml::openElement( 'div', [ 'class' => 'mw-search-profile-tabs' ] );
 
                $bareterm = $term;
@@ -1244,6 +1244,7 @@ class SpecialSearch extends SpecialPage {
                        'autofocus' => trim( $term ) === '',
                        'value' => $term,
                        'dataLocation' => 'content',
+                       'infusable' => true,
                ] );
 
                $layout = new OOUI\ActionFieldLayout( $searchWidget, new OOUI\ButtonInputWidget( [
index d5affc7..c7c1239 100644 (file)
@@ -147,9 +147,22 @@ class UserrightsPage extends SpecialPage {
 
                // show a successbox, if the user rights was saved successfully
                if ( $request->getCheck( 'success' ) && $this->mFetchedUser !== null ) {
-                       $out->wrapWikiMsg(
-                               "<div class=\"successbox\">\n$1\n</div>",
-                               [ 'savedrights', $this->mFetchedUser->getName() ]
+                       $out->addModules( [ 'mediawiki.special.userrights' ] );
+                       $out->addModuleStyles( 'mediawiki.notification.convertmessagebox.styles' );
+                       $out->addHtml(
+                               Html::rawElement(
+                                       'div',
+                                       [
+                                               'class' => 'mw-notify-success successbox',
+                                               'id' => 'mw-preferences-success',
+                                               'data-mw-autohide' => 'false',
+                                       ],
+                                       Html::element(
+                                               'p',
+                                               [],
+                                               $this->msg( 'savedrights', $this->mFetchedUser->getName() )->text()
+                                       )
+                               )
                        );
                }
 
index ae57736..d1f9f40 100644 (file)
@@ -30,33 +30,30 @@ class NewFilesPager extends ReverseChronologicalPager {
        protected $gallery;
 
        /**
-        * @var bool
+        * @var FormOptions
         */
-       protected $showBots;
+       protected $opts;
 
        /**
-        * @var bool
+        * @param IContextSource $context
+        * @param FormOptions $opts
         */
-       protected $hidePatrolled;
-
-       function __construct( IContextSource $context, $par = null ) {
-               $this->like = $context->getRequest()->getText( 'like' );
-               $this->showBots = $context->getRequest()->getBool( 'showbots', 0 );
-               $this->hidePatrolled = $context->getRequest()->getBool( 'hidepatrolled', 0 );
-               if ( is_numeric( $par ) ) {
-                       $this->setLimit( $par );
-               }
+       function __construct( IContextSource $context, FormOptions $opts ) {
+               $this->opts = $opts;
+
+               $this->setLimit( $opts->getValue( 'limit' ) );
 
                parent::__construct( $context );
        }
 
        function getQueryInfo() {
+               $opts = $this->opts;
                $conds = $jconds = [];
                $tables = [ 'image' ];
                $fields = [ 'img_name', 'img_user', 'img_timestamp' ];
                $options = [];
 
-               if ( !$this->showBots ) {
+               if ( !$opts->getValue( 'showbots' ) ) {
                        $groupsWithBotPermission = User::getGroupsWithPermission( 'bot' );
 
                        if ( count( $groupsWithBotPermission ) ) {
@@ -72,7 +69,7 @@ class NewFilesPager extends ReverseChronologicalPager {
                        }
                }
 
-               if ( $this->hidePatrolled ) {
+               if ( $opts->getValue( 'hidepatrolled' ) ) {
                        $tables[] = 'recentchanges';
                        $conds['rc_type'] = RC_LOG;
                        $conds['rc_log_type'] = 'upload';
@@ -92,9 +89,10 @@ class NewFilesPager extends ReverseChronologicalPager {
                        $options[] = 'STRAIGHT_JOIN';
                }
 
-               if ( !$this->getConfig()->get( 'MiserMode' ) && $this->like !== null ) {
+               $likeVal = $opts->getValue( 'like' );
+               if ( !$this->getConfig()->get( 'MiserMode' ) && $likeVal !== '' ) {
                        $dbr = wfGetDB( DB_SLAVE );
-                       $likeObj = Title::newFromText( $this->like );
+                       $likeObj = Title::newFromText( $likeVal );
                        if ( $likeObj instanceof Title ) {
                                $like = $dbr->buildLike(
                                        $dbr->anyString(),
@@ -154,54 +152,4 @@ class NewFilesPager extends ReverseChronologicalPager {
                        . "</i><br />\n"
                );
        }
-
-       function getForm() {
-               $fields = [
-                       'like' => [
-                               'type' => 'text',
-                               'label-message' => 'newimages-label',
-                               'name' => 'like',
-                       ],
-                       'showbots' => [
-                               'type' => 'check',
-                               'label-message' => 'newimages-showbots',
-                               'name' => 'showbots',
-                       ],
-                       'hidepatrolled' => [
-                               'type' => 'check',
-                               'label-message' => 'newimages-hidepatrolled',
-                               'name' => 'hidepatrolled',
-                       ],
-                       'limit' => [
-                               'type' => 'hidden',
-                               'default' => $this->mLimit,
-                               'name' => 'limit',
-                       ],
-                       'offset' => [
-                               'type' => 'hidden',
-                               'default' => $this->getRequest()->getText( 'offset' ),
-                               'name' => 'offset',
-                       ],
-               ];
-
-               if ( $this->getConfig()->get( 'MiserMode' ) ) {
-                       unset( $fields['like'] );
-               }
-
-               if ( !$this->getUser()->useFilePatrol() ) {
-                       unset( $fields['hidepatrolled'] );
-               }
-
-               $context = new DerivativeContext( $this->getContext() );
-               $context->setTitle( $this->getTitle() ); // Remove subpage
-               $form = new HTMLForm( $fields, $context );
-
-               $form->setSubmitTextMsg( 'ilsubmit' );
-               $form->setSubmitProgressive();
-
-               $form->setMethod( 'get' );
-               $form->setWrapperLegendMsg( 'newimages-legend' );
-
-               return $form;
-       }
 }
index a774aba..39507af 100644 (file)
@@ -911,6 +911,44 @@ class User implements IDBAccessObject {
                return true;
        }
 
+       /**
+        * Return the users who are members of the given group(s). In case of multiple groups,
+        * users who are members of at least one of them are returned.
+        *
+        * @param string|array $groups A single group name or an array of group names
+        * @param int $limit Max number of users to return. The actual limit will never exceed 5000
+        *   records; larger values are ignored.
+        * @param int $after ID the user to start after
+        * @return UserArrayFromResult
+        */
+       public static function findUsersByGroup( $groups, $limit = 5000, $after = null ) {
+               if ( $groups === [] ) {
+                       return UserArrayFromResult::newFromIDs( [] );
+               }
+
+               $groups = array_unique( (array)$groups );
+               $limit = min( 5000, $limit );
+
+               $conds = [ 'ug_group' => $groups ];
+               if ( $after !== null ) {
+                       $conds[] = 'ug_user > ' . (int)$after;
+               }
+
+               $dbr = wfGetDB( DB_SLAVE );
+               $ids = $dbr->selectFieldValues(
+                       'user_groups',
+                       'ug_user',
+                       $conds,
+                       __METHOD__,
+                       [
+                               'DISTINCT' => true,
+                               'ORDER BY' => 'ug_user',
+                               'LIMIT' => $limit,
+                       ]
+               ) ?: [];
+               return UserArray::newFromIDs( $ids );
+       }
+
        /**
         * Usernames which fail to pass this function will be blocked
         * from new account registrations, but may be used internally
index ee769da..a9e8042 100644 (file)
@@ -42,9 +42,6 @@ class ComplexTitleInputWidget extends \OOUI\Widget {
                $this->title = new TitleInputWidget( array_merge(
                        $config['title'],
                        [
-                               // The inner TitleInputWidget shouldn't be infusable,
-                               // only the ComplexTitleInputWidget itself can be.
-                               'infusable' => false,
                                'relative' => true,
                                'namespace' => isset( $config['namespace']['value'] ) ?
                                        $config['namespace']['value'] :
index dcd5415..0d71629 100644 (file)
@@ -30,7 +30,6 @@ class SearchInputWidget extends TitleInputWidget {
         */
        public function __construct( array $config = [] ) {
                $config = array_merge( [
-                       'infusable' => true,
                        'maxLength' => null,
                        'type' => 'search',
                        'icon' => 'search',
index 886afa6..da2e94b 100644 (file)
@@ -32,7 +32,7 @@ class TitleInputWidget extends \OOUI\TextInputWidget {
        public function __construct( array $config = [] ) {
                // Parent constructor
                parent::__construct(
-                       array_merge( [ 'infusable' => true, 'maxLength' => 255 ], $config )
+                       array_merge( [ 'maxLength' => 255 ], $config )
                );
 
                // Properties, which are ignored in PHP and just shipped back to JS
index 86c2bc3..d591ad1 100644 (file)
@@ -17,7 +17,7 @@ class UserInputWidget extends \OOUI\TextInputWidget {
         */
        public function __construct( array $config = [] ) {
                // Parent constructor
-               parent::__construct( array_merge( [ 'infusable' => true ], $config ) );
+               parent::__construct( $config );
 
                // Initialization
                $this->addClasses( [ 'mw-widget-userInputWidget' ] );
index 738cd5e..17c452c 100644 (file)
        "content-model-css": "CSS",
        "content-json-empty-object": "غرض فارغ",
        "content-json-empty-array": "مصفوفة فارغة",
+       "deprecated-self-close-category": "صفحات تستخدم وسوم أتش تي أم أل غير صالحة",
        "duplicate-args-warning": "<strong>تنبيه:</strong> المدخل \"$3\" ل[[:$1]] المستعمل في [[:$2]] مكرر. آخر قيمة مكرر منه هي المعتمدة.",
        "duplicate-args-category": "صفحات تستعمل قالبا ببيانات مكررة",
        "duplicate-args-category-desc": "تحوي هذه الصفحة استدعاءات قالب تستخدم متغيرات مزدوجة مثل <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> أو <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "recentchangesdays-max": "الحد الأقصى {{PLURAL:$1|أقل من يوم|يوم واحد|يومان|$1 أيام|$1 يوما|$1 يوم}}",
        "recentchangescount": "عدد التعديلات الظاهرة مبدئيا:",
        "prefs-help-recentchangescount": "بما في ذلك أحدث التغييرات وتاريخ الصفحات والسجلات.",
-       "prefs-help-watchlist-token2": "Ù\87ذا Ù\87Ù\88 Ø§Ù\84Ù\85Ù\81تاح Ø§Ù\84سرÙ\8a Ù\84تغذÙ\8aØ© Ø§Ù\84Ù\88Ù\90ب لقائمة مراقبتك.\nيمكن لأي شخص يعرفه أن يقرأ قائمة مراقبتك، ولذا لا تتشاركه مع أحد. [[Special:ResetTokens|انقر هنا إذا أردت إعادة ضبطه]].",
+       "prefs-help-watchlist-token2": "Ù\87ذا Ù\87Ù\88 Ø§Ù\84Ù\85Ù\81تاح Ø§Ù\84سرÙ\8a Ù\84تغذÙ\8aØ© Ø§Ù\84Ù\88Ù\8aب لقائمة مراقبتك.\nيمكن لأي شخص يعرفه أن يقرأ قائمة مراقبتك، ولذا لا تتشاركه مع أحد. [[Special:ResetTokens|انقر هنا إذا أردت إعادة ضبطه]].",
        "savedprefs": "تم حفظ تفضيلاتك.",
        "savedrights": "حُفظت الصلاحيات الجديدة {{GENDER:$1|للمستخدم|للمستخدمة}} $1.",
        "timezonelegend": "المنطقة الزمنية:",
        "group-bot": "بوتات",
        "group-sysop": "مديرو نظام",
        "group-bureaucrat": "بيروقراطيون",
-       "group-suppress": "Ù\86ظار",
+       "group-suppress": "Ù\85زÙ\8aÙ\84Ù\88Ù\86",
        "group-all": "(الكل)",
        "group-user-member": "{{GENDER:$1|مستخدم|مستخدمة}}",
        "group-autoconfirmed-member": "{{GENDER:$1|مستخدم مؤكد تلقائيًا|مستخدمة مؤكدة تلقائيًا}}",
        "group-bot-member": "{{GENDER:$1|بوت}}",
        "group-sysop-member": "{{GENDER:$1|إداري|إدارية}}",
        "group-bureaucrat-member": "{{GENDER:$1|بيروقراط}}",
-       "group-suppress-member": "{{GENDER:$1|Ù\86اظر|Ù\86اظرة}}",
+       "group-suppress-member": "{{GENDER:$1|Ù\85زÙ\8aÙ\84\85زÙ\8aÙ\84ة}}",
        "grouppage-user": "{{ns:project}}:مستخدمون",
        "grouppage-autoconfirmed": "{{ns:project}}:مستخدمون مؤكدون تلقائياً",
        "grouppage-bot": "{{ns:project}}:بوتات",
        "grouppage-sysop": "{{ns:project}}:إداريون",
        "grouppage-bureaucrat": "{{ns:project}}:بيروقراطيون",
-       "grouppage-suppress": "{{ns:project}}:نظار",
+       "grouppage-suppress": "{{ns:project}}:خاصية الإزالة",
        "right-read": "قراءة الصفحات",
        "right-edit": "تعديل الصفحات",
        "right-createpage": "إنشاء الصفحات (التي ليست صفحات نقاش)",
        "ignorewarnings": "تجاهل أية تحذيرات",
        "minlength1": "أسماء الملفات يجب أن تتكون من حرف واحد على الأقل.",
        "illegalfilename": "اسم الملف \"$1\" يحتوي على حروف غير مسموح بها في عناوين الصفحات.\nمن فضلك أعد تسمية الملف وحاول رفعه مرة أخرى.",
-       "filename-toolong": "Ø·Ù\88Ù\84 Ø£Ø³Ù\85اء Ø§Ù\84Ù\85Ù\84Ù\81ات Ù\8aجب Ø£Ù\86 Ù\84ا Ù\8aتجاÙ\88ز 240 Ø­Ø±Ù\81 (باÙ\8aت)",
+       "filename-toolong": "Ø·Ù\88Ù\84 Ø£Ø³Ù\85اء Ø§Ù\84Ù\85Ù\84Ù\81ات Ù\8aجب Ø£Ù\86 Ù\84ا Ù\8aتجاÙ\88ز 240 Ø¨Ø§Ù\8aت",
        "badfilename": "تم تغيير اسم الملف إلى \"$1\".",
        "filetype-mime-mismatch": "امتداد الملف \".$1\" لا يطابق نوع MIME للملف ($2).",
        "filetype-badmime": "من غير المسموح به رفع ملفات من النوع \"$1\".",
        "img-auth-nopathinfo": "PATH_INFO مفقود.\nخادومك ليس مضبوطاً لتمرير هذه المعلومة.\nقد يكون مبنياً على نظام CGI ولا يمكنه دعم img_auth.\nراجع https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
        "img-auth-notindir": "المسار المطلوب غير موجود في مجلد الرفع المضبوط.",
        "img-auth-badtitle": "تعذر تشكيل عنوان صالح من \"$1\".",
-       "img-auth-nologinnWL": "لست والجاً و\"$1\" ليست في القائمة البيضاء.",
+       "img-auth-nologinnWL": "لست والجا و\"$1\" ليست في القائمة البيضاء.",
        "img-auth-nofile": "الملف \"$1\" غير موجود.",
        "img-auth-isdir": "أنت تحاول الوصول إلى الدليل \"$1\".\nيسمح بوصول الملفات فقط.",
        "img-auth-streaming": "عرض \"$1\".",
        "listusers-noresult": "لم يتم إيجاد مستخدم.",
        "listusers-blocked": "(ممنوع)",
        "activeusers": "قائمة المستخدمين النشطين",
-       "activeusers-intro": "هذه قائمة بالمستخدمين الذين مارسوا نوعاً من النشاط خلال {{PLURAL:$1||اليوم الماضي|اليومين الماضيين|ال$1 أيام الماضية|ال$1 يوماً ماضياً|ال$1 يوم ماضي}}.",
-       "activeusers-count": "{{PLURAL:$1|لا أفعال|فعل واحد|فعلان اثنان|$1 أفعال|$1 فعلاً|$1 فعل}} منذ {{PLURAL:$3||يوم|يومين|$3 أيام|$3 يوماً|$1 يوم}}",
+       "activeusers-intro": "هذه قائمة بالمستخدمين الذين مارسوا نوعا من النشاط خلال {{PLURAL:$1||اليوم الماضي|اليومين الماضيين|ال$1 أيام الماضية|ال$1 يوما ماضيا|ال$1 يوم ماضي}}.",
+       "activeusers-count": "{{PLURAL:$1|لا أفعال|فعل واحد|فعلان اثنان|$1 أفعال|$1 فعلا|$1 فعل}} منذ {{PLURAL:$3||يوم|يومين|$3 أيام|$3 يوما|$1 يوم}}",
        "activeusers-from": "اعرض المستخدمين ابتداء من:",
        "activeusers-hidebots": "أخف البوتات",
        "activeusers-hidesysops": "أخف الإداريين",
        "alreadyrolled": "لم يمكن استرجاع آخر تعديل ل[[$1]] بواسطة [[User:$2|$2]] ([[User talk:$2|نقاش]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]])؛\nشخص آخر عدل أو استرجع الصفحة بالفعل.\n\nآخر تعديل كان بواسطة [[User:$3|$3]] ([[User talk:$3|نقاش]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
        "editcomment": "ملخص التعديل كان:<em>$1</em>.",
        "revertpage": "استرجع تعديلات [[Special:Contributions/$2|$2]] ([[User talk:$2|نقاش]]) حتى آخر مراجعة ل[[User:$1|$1]]",
-       "revertpage-nouser": "استرجع تعديلات مستخدم مخفيّ حتى آخر مراجعة ل{{GENDER:$1|[[User:$1|$1]]}}",
+       "revertpage-nouser": "استرجع تعديلات مستخدم مخفي حتى آخر مراجعة ل{{GENDER:$1|[[User:$1|$1]]}}",
        "rollback-success": "استرجع تعديلات $1؛\nاسترجع حتى آخر نسخة بواسطة $2.",
        "sessionfailure-title": "فشل في الجلسة",
        "sessionfailure": "يبدو أنه هناك مشكلة في جلسة الدخول الخاصة بك؛\nلذلك فقد ألغيت هذه العملية كإجراء احترازي ضد الاختراق.\nمن فضلك اضغط على مفتاح \"رجوع\" لتحميل الصفحة التي جئت منها، ثم حاول مرة أخرى.",
        "tags-edit-success": "طبقت التغييرات.",
        "tags-edit-failure": "التغييرات لم تطبق: $1",
        "tags-edit-nooldid-title": "مراجعة هدف غير صالحة",
-       "tags-edit-nooldid-text": "لم تحدد النسخة التي تريد تطبيق العملية عليها أو لا توجد تلك النسخة",
+       "tags-edit-nooldid-text": "لم تحدد النسخة التي تريد تطبيق العملية عليها أو لا يوجد نسخة من الأصل.",
        "tags-edit-none-selected": "من فضلك اختر على الأقل وسما واحدا للإضافة أو الإزالة.",
        "comparepages": "قارن صفحات",
        "compare-page1": "صفحة 1",
        "api-error-missingparam": "خطأ داخلي : متغيرات مفقودة ضمن الطلب.",
        "api-error-missingresult": "خطأ داخلي : لا يمكن التحديد ما إذا كان النسخ ناجحاً.",
        "api-error-mustbeloggedin": "يجب أن تكون مسجلا في لتحميل الملفات.",
-       "api-error-mustbeposted": "خطأ داخلي: يتطلب طلب HTTP POST.",
+       "api-error-mustbeposted": "خطأ داخلي: الطلب يتطلب HTTP POST.",
        "api-error-noimageinfo": "نجح التحميل، ولكن الخادم لم يقدم لنا أي معلومات حول الملف.",
        "api-error-nomodule": "خطأ داخلي: لم يتم تعيين تحميل الوحدة النمطية.",
        "api-error-ok-but-empty": "خطأ داخلي : لم يكن هناك استجابة من الملقم.",
index e283439..5760e81 100644 (file)
        "passwordreset-emailsentusername": "Si hai una direición de corréu electrónicu asociada con esti nome d'usuariu, unviaráse un corréu electrónicu pa reaniciar la contraseña.",
        "passwordreset-emailsent-capture": "Unvióse un corréu electrónicu pa reaniciar la contraseña, que s'amuesa abaxo.",
        "passwordreset-emailerror-capture": "Unvióse un corréu electrónicu pa reaniciar la contraseña, que s'amuesa abaxo, pero falló l'unviu {{GENDER:$2|al usuariu|a la usuaria}}: $1",
+       "passwordreset-emailsent-capture2": "{{PLURAL:$1|Unvióse'l corréu|Unviáronse los correos}} de reaniciu de contraseña. {{PLURAL:$1|El nome d'usuariu y la contraseña|La llista de nomes d'usuarios y contraseñes}} amuésase de siguío.",
+       "passwordreset-emailerror-capture2": "Nun foi posible mandar un corréu electrónicu {{Gender:$2|al usuariu|a la usuaria}}: $1 {{PLURAL:$3|El nome d'usuariu y la contraseña|La llista de nomes d'usuarios y contraseñes}} amuésase de siguío.",
+       "passwordreset-nocaller": "Tien d'apurrise un llamador",
+       "passwordreset-nosuchcaller": "El llamador nun esiste: $1",
+       "passwordreset-ignored": "Nun se llogró'l reaniciu de la contraseña. ¿Seique nun se configuró un proveedor?",
        "passwordreset-invalideamil": "Direición de corréu inválida",
        "passwordreset-nodata": "Nun s'apurrió nin un nome d'usuariu nin una dirección de corréu electrónicu",
        "changeemail": "Camudar o desaniciar la dirección de corréu electrónicu",
        "minoredit": "Esta ye una edición menor",
        "watchthis": "Vixilar esta páxina",
        "savearticle": "Guardar la páxina",
+       "savechanges": "Guardar los cambios",
        "publishpage": "Publicar la páxina",
+       "publishchanges": "Publicar los cambios",
        "preview": "Vista previa",
        "showpreview": "Amosar previsualización",
        "showdiff": "Amosar cambeos",
        "content-model-css": "CSS",
        "content-json-empty-object": "Oxetu baleru",
        "content-json-empty-array": "Matriz balera",
+       "deprecated-self-close-category": "Páxines qu'utilicen etiquetes HTML autozarraes inválides",
+       "deprecated-self-close-category-desc": "Esta páxina contien etiquetes HTML autozarraes inválides, tales como <code>&lt;b/></code> o <code>&lt;span/></code>. El comportamientu d'estes va camudar llueu pa ser coherente cola especificación d'HTML5, polo qu'el so usu nel testu wiki ta en desusu.",
        "duplicate-args-warning": "<strong>Avisu:</strong> [[:$1]] llama a [[:$2]] con más d'un valor pal parámetru «$3». Sólo va usase l'últimu valor dau.",
        "duplicate-args-category": "Páxines con argumentos duplicaos nes llamaes a plantíes",
        "duplicate-args-category-desc": "La páxina contien llamaes a plantíes qu'usen argumentos duplicaos, como <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> o <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "upload-http-error": "Hebo un error HTTP: $1",
        "upload-copy-upload-invalid-domain": "La xubida de copies nun ta disponible dende esti dominiu.",
        "upload-foreign-cant-upload": "Esta wiki nun ta configurada pa xubir ficheros al estoyu de ficheros esternu solicitáu.",
-       "upload-foreign-cant-load-config": "Falló la carga de la configuración de xuba de ficheros pal estoyu esternu de ficheros.",
+       "upload-foreign-cant-load-config": "Falló la carga de la configuración pa xubir ficheros al estoyu esternu.",
        "upload-dialog-disabled": "Nesta wiki tán desactivaes les xubíes de ficheros por aciu d'esti diálogu.",
        "upload-dialog-title": "Xubir ficheru",
        "upload-dialog-button-cancel": "Encaboxar",
        "trackingcategories-msg": "Categoría de siguimientu",
        "trackingcategories-name": "Nome del mensaxe",
        "trackingcategories-desc": "Criterios d'inclusión de categoría",
+       "restricted-displaytitle-ignored": "Páxines con títulos de vista inoraos",
+       "restricted-displaytitle-ignored-desc": "Esta páxina tien un <code><nowiki>{{DISPLAYTITLE}}</nowiki></code> inoráu porque nun ye equivaliente al títulu verdaderu de la páxina.",
        "noindex-category-desc": "La páxina contien una pallabra máxica <code><nowiki>__NOINDEX__</nowiki></code> (y ta nun espaciu de nomes nel que se permite esta marca) y, poro, los robós nun la indexarán.",
        "index-category-desc": "La páxina contien una pallabra máxica <code><nowiki>__INDEX__</nowiki></code> (y ta nun espaciu de nomes nel que se permite esta marca) y, poro, los robós la indexarán anque normalmente nun lo faigan.",
        "post-expand-template-inclusion-category-desc": "El tamañu de la páxina ye mayor que <code>$wgMaxArticleSize</code> después de espander toles plantíes, de mou qu'algunes plantíes nun s'espandieron.",
        "log-action-filter-suppress-reblock": "Supresión d'usuariu por rebloquéu",
        "log-action-filter-upload-upload": "Nueva carga",
        "log-action-filter-upload-overwrite": "Recargar",
+       "authmanager-authn-not-in-progress": "L'autenticación nun ta en cursu o los datos de sesión perdiéronse. Por favor, vuelve de nueves al principiu.",
        "authmanager-authn-no-primary": "Les credenciales apurríes nun pudieron autentificase.",
        "authmanager-authn-no-local-user": "Les credenciales apurríes nun tán asociaes con nengún usuariu nesta wiki.",
+       "authmanager-authn-no-local-user-link": "Les credenciales suministraes son válides, pero nun tán venceyaes con nengún usuariu d'esta wiki. Empecipia sesión d'otra miente, o crea un usuariu nuevu, y podrás venceyar los tos credenciales anteriores a esa cuenta.",
        "authmanager-authn-autocreate-failed": "Falló la creación automática d'una cuenta local: $1",
+       "authmanager-change-not-supported": "Les credenciales apurríes nun pueden camudase porque nun hai nada que les use.",
+       "authmanager-create-disabled": "Ta desactivada la creación de cuentes.",
+       "authmanager-create-from-login": "Pa crear la cuenta, rellena los campos de más abaxo.",
+       "authmanager-create-not-in-progress": "La creación de la cuenta nun ta progresando, o perdiéronse los datos de la sesión. Por favor, vuelve de nueves al principiu.",
+       "authmanager-create-no-primary": "Les credenciales apurríes nun pueden usase pa crear cuentes.",
+       "authmanager-link-no-primary": "Les credenciales apurríes nun pueden usase pa enllazar cuentes.",
+       "authmanager-link-not-in-progress": "L'enllazáu de la cuenta nun ta progresando, o perdiéronse los datos de la sesión. Por favor, vuelve de nueves al principiu.",
+       "authmanager-authplugin-setpass-failed-title": "Falló'l cambiu de contraseña",
+       "authmanager-authplugin-setpass-failed-message": "El complementu d'autenticación refugó'l cambéu de contraseña.",
+       "authmanager-authplugin-create-fail": "El complementu d'autenticación refugó la creación de la cuenta.",
+       "authmanager-authplugin-setpass-denied": "El complementu de autenticación nun permite cambiar contraseñes.",
        "authmanager-authplugin-setpass-bad-domain": "Dominiu inválidu.",
        "authmanager-autocreate-noperm": "Nun se permite la creación automática de cuentes.",
        "authmanager-autocreate-exception": "La creación automática de cuentes desactivóse temporalmente por cuenta d'errores previos.",
        "authmanager-provider-password": "Autenticación basada en contraseña",
        "authmanager-provider-password-domain": "Autenticación basada en contraseña y dominiu",
        "authmanager-provider-temporarypassword": "Contraseña temporal",
+       "authprovider-confirmlink-message": "Basándose nos tos últimos intentos d'aniciar sesión, les siguientes cuentes pueden venceyase a la to cuenta na wiki. Venceyales permite aniciar sesión al traviés d'eses cuentes. Escueye cuáles tienen de venceyase.",
+       "authprovider-confirmlink-request-label": "Cuentes que tienen de venceyase",
+       "authprovider-confirmlink-success-line": "$1: Enllazada correutamente.",
+       "authprovider-confirmlink-failed": "L'enllaz de cuentes nun foi totalmente correutu: $1",
+       "authprovider-confirmlink-ok-help": "Siguir depués d'amosar los mensaxes de fallu nel enllazáu.",
        "authprovider-resetpass-skip-label": "Saltar",
        "authprovider-resetpass-skip-help": "Saltar el reaniciu de la contraseña.",
+       "authform-nosession-login": "La autenticación foi correuta, pero'l navegador nun \"s'alcuerda\" de que tuvo coneutáu.\n\n$1",
+       "authform-nosession-signup": "Creóse la cuenta, pero'l navegador nun \"s'alcuerda\" de que tuvo coneutáu.\n\n$1",
+       "authform-newtoken": "Falta token. $1",
+       "authform-notoken": "Falta token",
+       "authform-wrongtoken": "Token incorreutu",
        "specialpage-securitylevel-not-allowed-title": "Nun ta permitío",
        "cannotauth-not-allowed-title": "Permisu refugáu",
        "cannotauth-not-allowed": "Nun tienes permisu pa usar esta páxina",
index 58955dc..abdc239 100644 (file)
@@ -24,7 +24,7 @@
        },
        "tog-underline": "باغلانتی‌لارین آلتینی خطله:",
        "tog-hideminor": "سوْن دییشیکلیکلرده کیچیکلری گیزلت",
-       "tog-hidepatrolled": "سوْن دییشیکلیکلرده نظارتلنمیش دَییشیکلیکلری گیزلت",
+       "tog-hidepatrolled": "سوْن دییشیکلیک‌لرده گؤزدن گئچیریلمیش دَییشیکلیکلری گیزلت",
        "tog-newpageshidepatrolled": "یوْخلانمیش صفحه‌لری یئنی صفحه‌لر لیستیندن گیزلت",
        "tog-hidecategorization": "صفحه بؤلمه‌لرینی گیزلت",
        "tog-extendwatchlist": "ایزله‌دیک‌لری تکجه یئنی‌لر اۆچون دئییل، بۆتون دییشیک‌لیک‌لری گؤسترمک اۆچون گئنیشلندیر.",
@@ -57,6 +57,7 @@
        "tog-watchlisthideliu": "گیریش ائتمیش ایشلدن‌لرین دَییشیک‌لیک‌لرینی ایزله‌دیک‌لردن گیزلت",
        "tog-watchlisthideanons": "تانینمامیش ایشلدن‌لرین دَییشیک‌لیک‌لرینی ایزله‌دیک‌لردن گیزلت",
        "tog-watchlisthidepatrolled": "نظارتلنمیش دَییشیکلیکلری گؤزله‌دیکلردن گیزلت",
+       "tog-watchlisthidecategorization": "صفحه‌لرین بؤلمه‌‌لرینی گیزلت",
        "tog-ccmeonemails": "باشقا ایشلدن‌لره گؤندردیگیم ایمئیل‌لرین کوْپی‌لرینی منه گؤندر",
        "tog-diffonly": "مۆقایسه‌لر آلتیندا صفحه‌نین ایچینده‌کیلرینی گؤسترمه",
        "tog-showhiddencats": "گیزلی بؤلمه‌لری گؤستر",
        "createaccountreason": "نَدَن‌لیک:",
        "createacct-reason": "سبب",
        "createacct-reason-ph": "ندن سیز باشقا حساب یارادیرسینیز",
+       "createacct-reason-help": "حساب یاراتماق لیستینده گؤستریلن مساژ",
        "createacct-submit": "حسابینیزی یارادین",
        "createacct-another-submit": "حساب یارات",
        "createacct-continue-submit": "حساب یاراتماغین دالی‌سینی توت",
+       "createacct-another-continue-submit": "حساب یاراتماغی داوام ائت",
        "createacct-benefit-heading": "{{SITENAME}} سیزین کیمی آدام‌لارین الی ایله یارانیب‌دیر.",
        "createacct-benefit-body1": "{{PLURAL:$1|دَییشیکلیک}}",
        "createacct-benefit-body2": "{{PLURAL:$1|صفحه}}",
        "changepassword-success": "رمزینیز باجارییلا دَییشدیرلدی!",
        "changepassword-throttled": "سیزین چوخ گیریش چالیشماغینیز اولوب‌دور.\nلوطفاً یئنی‌دن چالیشماق‌دان اؤنجه $1 دؤزون.",
        "botpasswords": "روبات رمزی",
+       "botpasswords-disabled": "روبات پسووْردلاری ایشلدن سالینیبدیر.",
        "botpasswords-createnew": "روبات رمزی یارات",
        "botpasswords-label-appid": "روبات آدی:",
        "botpasswords-label-create": "یارات",
        "botpasswords-label-delete": "سیل",
        "botpasswords-label-resetpassword": "رمزی یئنی‌له",
        "botpasswords-label-grants-column": "وئریلدی",
+       "botpasswords-bad-appid": "\"$1\" روْبات آدی اعتیبارلی دئییلدیر.",
+       "botpasswords-created-title": "روْبات پسووْردو یارادیلدی.",
+       "botpasswords-updated-title": "روْبات پسووْردو آپدئیت اوْلوندو.",
+       "botpasswords-deleted-title": "روْبات پسووْردو سیلیندی",
        "resetpass_forbidden": "رمزلر دَییشیلمز",
        "resetpass-no-info": "بو صحیفه‌نی دوغرو گؤردوگونوز اوچون سیستمه گیرمه‌لیسینیز.",
        "resetpass-submit-loggedin": "رمزی دَییشدیر",
index 7d76b81..89dbf65 100644 (file)
        "exif-webstatement": "Интернеттағы авторлыҡ хоҡуҡтары тураһындағы белдереү",
        "exif-originaldocumentid": "Сығанаҡ документтың уникаль идентификаторы",
        "exif-licenseurl": "Авторлыҡ рөхсәтнәмәһенең URL",
-       "exif-morepermissionsurl": "Альтернатив рөхсәтнәмә мәғлүмәттәре",
+       "exif-morepermissionsurl": "Альтернатив рөхсәтнамә мәғлүмәттәре",
        "exif-attributionurl": "Был эште ҡулланғанда, зинһар, ошонда һылтанма яһағыҙ",
        "exif-preferredattributionname": "Был эште ҡулланғанда, зинһар, ошоларҙы белдерегеҙ",
        "exif-pngfilecomment": "PNG файл өсөн иҫкәрмә",
        "mw-widgets-dateinput-no-date": "Дата һайланмаған",
        "mw-widgets-titleinput-description-new-page": "Был бит юҡ",
        "mw-widgets-titleinput-description-redirect": "$1 йүнәлтеү",
-       "api-error-blacklisted": "Башҡа аңлайышлы исем һайлағыҙ.",
        "sessionmanager-tie": "Бер юлы бер нисә ғаризаның төп нөсхәһен тикшереп булмай: $1.",
        "sessionprovider-generic": "$1 сессия",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "куки нигеҙендә сессиялар",
index d6cfcca..e8bcee2 100644 (file)
        "resetpass-expired-soft": "Тэрмін дзеяньня вашага паролю скончыўся і ён патрабуе замены. Калі ласка, абярыце новы пароль цяпер або націсьніце «{{int:authprovider-resetpass-skip-label}}», каб зьмяніць яго пазьней.",
        "resetpass-validity-soft": "Ваш пароль зьяўляецца некарэктным: $1\n\nКалі ласка, абярыце зараз новы пароль або націсьніце «{{int:authprovider-resetpass-skip-label}}», каб скінуць яго пазьней.",
        "passwordreset": "Ачыстка паролю",
-       "passwordreset-text-one": "Запоўніце гэтую форму, каб скінуць пароль.",
+       "passwordreset-text-one": "Запоўніце гэтую форму, каб атрымаць часовы пароль электроннай поштай.",
        "passwordreset-text-many": "{{PLURAL:$1|Запоўніце адно з палёў, каб атрымаць часовы пароль праз электронную пошту.}}",
        "passwordreset-disabled": "Магчымасьць ачысткі паролю была забароненая ў {{GRAMMAR:месны|{{SITENAME}}}}.",
        "passwordreset-emaildisabled": "Функцыі e-mail у гэтай вікі былі адключаныя.",
        "listgrouprights-namespaceprotection-namespace": "Прастора назваў",
        "listgrouprights-namespaceprotection-restrictedto": "Правы, якія дазваляюць удзельніку рэдагаваць",
        "listgrants": "Дазволы",
+       "listgrants-summary": "Ніжэй прыведзены сьпіс дазволаў і адпаведных правоў карыстальнікаў, да якіх яны даюць доступ. Удзельнікі могуць дазваляць праграмам ужываць іх рахунак, але з абмежаванымі правамі, якія грунтуюцца на дазволах, дадзеных удзельнікам. Праграмы, якія дзейнічаюць ад імя ўдзельніка, ня могуць карыстацца правамі, якіх ня мае ўдзельнік. Пра асобныя правы можна атрымаць [[{{MediaWiki:Listgrouprights-helppage}}|дадатковую інфармацыю]].",
        "listgrants-grant": "Дазвол",
        "listgrants-rights": "Правы",
        "trackingcategories": "Катэгорыі, якія патрабуюць увагі",
        "tooltip-ca-nstab-category": "Паказаць старонку катэгорыі",
        "tooltip-minoredit": "Пазначыць гэтую зьмену як дробную",
        "tooltip-save": "Захаваць Вашы зьмены",
+       "tooltip-publish": "Апублікаваць вашыя зьмены",
        "tooltip-preview": "Праглядзець Вашы зьмены. Калі ласка, выкарыстоўвайце гэтую магчымасьць перад тым, як захаваць старонку!",
        "tooltip-diff": "Паказаць зробленыя Вамі зьмены ў тэксьце",
        "tooltip-compareselectedversions": "Пабачыць розьніцу паміж дзьвюма абранымі вэрсіямі гэтай старонкі.",
        "confirmemail_body_set": "Нехта, магчыма Вы, з IP-адраса $1,\nустанавіў адрас электроннай пошты для рахунку «$2» у {{GRAMMAR:месны|{{SITENAME}}}}.\n\nКаб пацьвердзіць, што гэты рахунак сапраўды належыць Вам, і каб актывізаваць падтрымку электроннай пошты ў {{GRAMMAR:месны|{{SITENAME}}}}, адкрыйце гэтую спасылку у Вашым браўзэры:\n\n$3\n\nКалі рахунак Вам *не* належыць, перайдзіце па гэтай спасылцы\nкаб скасаваць пацьверджаньне па электроннай пошце:\n\n$5\n\nГэты код пацьверджаньня дзейнічае да $4.",
        "confirmemail_invalidated": "Пацьверджаньне адрасу электроннай пошты адмененае",
        "invalidateemail": "Скасаваць пацьверджаньне адрасу электроннай пошты",
+       "notificationemail_subject_changed": "Адрас электроннай пошты на сайце {{SITENAME}} быў зьменены",
+       "notificationemail_subject_removed": "Адрас электроннай пошты на сайце {{SITENAME}} быў выдалены",
+       "notificationemail_body_changed": "Некім, магчыма вамі, з IP-адрасу $1,\nбыў зьменены адрас электроннай пошты «$2» на «$3» на сайце {{SITENAME}}.\n\nКалі гэта былі ня вы, неадкладна зьвяжыцеся з адміністратарам.",
        "scarytranscludedisabled": "[Улучэньне інтэрвікі было адключанае]",
        "scarytranscludefailed": "[Памылка атрыманьня шаблёну $1]",
        "scarytranscludefailed-httpstatus": "[Памылка атрыманьня шаблёну $1: HTTP $2]",
        "confirm-watch-top": "Дадаць гэтую старонку ў Ваш сьпіс назіраньня?",
        "confirm-unwatch-button": "Добра",
        "confirm-unwatch-top": "Выдаліць гэтую старонку з Вашага сьпісу назіраньня?",
+       "confirm-rollback-button": "Так",
+       "confirm-rollback-top": "Адкаціць праўкі на гэтай старонцы?",
        "quotation-marks": "«$1»",
        "imgmultipageprev": "← папярэдняя старонка",
        "imgmultipagenext": "наступная старонка →",
        "redirect-page": "Ідэнтыфікатар старонкі",
        "redirect-revision": "Вэрсіі старонкі",
        "redirect-file": "Імя файла",
+       "redirect-logid": "ID журнала",
        "redirect-not-exists": "Значэньне ня знойдзена",
        "fileduplicatesearch": "Пошук дублікатаў файлаў",
        "fileduplicatesearch-summary": "Пошук аднолькавых файлаў на падставе іх хэшаў.",
        "tags-delete-not-found": "Метка «$1» не існуе.",
        "tags-delete-too-many-uses": "Метка «$1» выкарыстаная ў больш чым $2 {{PLURAL:$2|вэрсіі|вэрсіях}}, адпаведна, яна ня можа быць выдаленая.",
        "tags-delete-warnings-after-delete": "Метка «$1» была выдаленая, але {{PLURAL:$2|1=атрыманае наступнае папярэджаньне|атрыманыя наступныя папярэджаньні}}:",
+       "tags-delete-no-permission": "У вас няма дазволу на выдаленьне метак зьменаў.",
        "tags-activate-title": "Актываваць метку",
        "tags-activate-question": "Вы зьбіраецеся актываваць метку «$1».",
        "tags-activate-reason": "Прычына:",
        "feedback-useragent": "Агент удзельніка:",
        "searchsuggest-search": "Пошук",
        "searchsuggest-containing": "утрымлівае...",
+       "api-error-autoblocked": "Ваш IP-адрас быў аўтаматычна заблякаваны, бо ён быў выкарыстаны заблякаваным удзельнікам.",
        "api-error-badaccess-groups": "У Вас няма дазволу загружаць файлы ў гэтую вікі.",
        "api-error-badtoken": "Унутраная памылка: няслушны ключ.",
+       "api-error-blocked": "Рэдагаваньне было для вас заблякаванае.",
        "api-error-copyuploaddisabled": "Загрузка з URL-адрасу забароненая на гэтым сэрвэры.",
        "api-error-duplicate": "На сайце ўжо {{PLURAL:$1|1=існуе іншы файл|існуюць іншыя файлы}} з такім жа зьместам.",
        "api-error-duplicate-archive": "Раней на сайце {{PLURAL:$1|1=быў файл|былі файлы}} з дакладна такім жа зьместам, але {{PLURAL:$1|1=ён быў выдалены|яны былі выдаленыя}}.",
        "expand_templates_preview": "Папярэдні прагляд",
        "expand_templates_preview_fail_html": "<em>Праз тое што {{SITENAME}} мае ўключаным неапрацаваны HTML і адбылася страта зьвестак сэсіі, папярэдні прагляд схаваны, як засьцярога ад атакаў з дапамогай JavaScript.</em>\n\n<strong>Калі гэта слушная спроба перадпрагляду, калі ласка, паспрабуйце яшчэ раз.</strong>\nКалі гэта не спрацуе, паспрабуйце [[Special:UserLogout|выйсьці]] і ўвайсьці яшчэ раз, а таксама праверце, што ваш браўзэр дазваляе кукі-файлы з гэтага сайту.",
        "expand_templates_preview_fail_html_anon": "<em>Праз тое што {{SITENAME}} мае ўключаным сыры HTML і вы не ўвайшлі ў сыстэму, папярэдні прагляд схаваны, як засьцярога ад атакаў з дапамогай JavaScript.</em>\n\n<strong>Калі гэта слушная спроба перадпрагляду, калі ласка, [[Special:UserLogin|увайдзіце ў сыстэму]] і паспрабуйце яшчэ раз.</strong>",
+       "expand_templates_input_missing": "Вам трэба ўвесьці хоць нейкі тэкст.",
        "pagelanguage": "Зьмена мовы старонкі",
        "pagelang-name": "Старонка",
        "pagelang-language": "Мова",
        "mediastatistics-header-text": "Тэкст",
        "mediastatistics-header-executable": "Выконваныя файлы",
        "mediastatistics-header-archive": "Сьціснутыя фарматы",
+       "mediastatistics-header-total": "Усе файлы",
        "json-warn-trailing-comma": "$1 {{PLURAL:$1|залішняя коска ў канцы была выдаленая|залішнія коскі ў канцы былі выдаленыя|залішніх косак у канцы былі выдаленыя}} з JSON",
        "json-error-unknown": "Узьнікла праблема з JSON. Памылка: $1",
        "json-error-depth": "Перавышаная максымальная глыбіня стэку",
index fcf7f32..fdb5b84 100644 (file)
        "password-change-forbidden": "Вы не можаце змяняць паролі на гэтай Вікі.",
        "externaldberror": "Або памылка вонкавай аўтэнтыкацыі ў базе дадзеных, або вам не дазволена абнаўляць свой вонкавы рахунак.",
        "login": "Увайсці ў сістэму",
+       "login-security": "Праверыць вашу асобу",
        "nav-login-createaccount": "Увайсці ў сістэму / стварыць рахунак",
        "userlogin": "Увайсці ў сістэму / стварыць рахунак",
        "userloginnocreate": "Увайсці",
        "userlogin-resetpassword-link": "Забылі пароль?",
        "userlogin-helplink2": "Даведка па прадстаўленні сістэме",
        "userlogin-loggedin": "Вы ўжо ўвайшлі ў сістэму як {{GENDER:$1|$1}}.\nСкарыстайцеся формай ніжэй, каб прадставіцца сістэме як іншы ўдзельнік.",
+       "userlogin-reauth": "Вы павінны ўвайсці ў сістэму зноў, каб пераканацца, што Вы {{GENDER:$1|$1}}",
        "userlogin-createanother": "Стварыць яшчэ адзін уліковы запіс",
        "createacct-emailrequired": "Адрас электроннай пошты",
        "createacct-emailoptional": "Адрас электроннай пошты (неабавязкова)",
        "createacct-email-ph": "Увядзіце ваш адрас электроннай пошты",
        "createacct-another-email-ph": "Увядзіце адрас электроннай пошты",
        "createaccountmail": "Ужыць часовы выпадковы пароль і даслаць яго праз эл.пошту",
+       "createaccountmail-help": "Можа быць выкарыстаны для стварэння ўліковага запісу для іншага чалавека без пазнання пароля.",
        "createacct-realname": "Сапраўднае імя (неабавязкова)",
        "createaccountreason": "Прычына:",
        "createacct-reason": "Прычына",
        "createacct-reason-ph": "Чаму вы ствараеце іншы ўліковы запіс",
+       "createacct-reason-help": "Паведамленне паказана ў логу стварэння ўліковага запісу",
        "createacct-submit": "Стварыць уліковы запіс",
        "createacct-another-submit": "Стварыць уліковы запіс",
        "createacct-continue-submit": "Працягнуць стварэнне ўліковага запісу",
+       "createacct-another-continue-submit": "Працягнуць стварэнне ўліковага запісу",
        "createacct-benefit-heading": "{{SITENAME}} зроблены такімі ж людзьмі, як вы.",
        "createacct-benefit-body1": "{{PLURAL:$1|праўка|праўкі|правак}}",
        "createacct-benefit-body2": "{{PLURAL:$1|старонка|старонкі|старонак}}",
        "nocookiesnew": "Рахунак быў створаны, але ў сістэму вы не ўвайшлі. {{SITENAME}} карыстаецца квіткамі (кукі), каб апрацоўваць уваходы ўдзельнікаў, а гэтая функцыянальнасць адключана ў вашым браўзеры. Уключыце квіткі ў браўзеры, тады ўваходзьце са сваімі новымі імем удзельніка і паролем.",
        "nocookieslogin": "{{SITENAME}} карыстаецца квіткамі (кукі), каб пазнаваць удзельнікаў. У вашым браўзеры квіткі не дазволены. Дазвольце іх працу і паспрабуйце ізноў.",
        "nocookiesfornew": "Уліковы запіс карыстальніка не быў створаны, бо мы не змаглі пацвердзіць яго крыніцы. \nУпэўніцеся, што кукі ўключаныя, абнавіце старонку і паспрабуйце яшчэ раз.",
+       "createacct-loginerror": "Уліковы запіс быў паспяхова створаны, але Вы не змаглі аўтарызавацц аўтаматычна. Калі ласка, перайдзіце да старонкі [[Адмысловае:Імя_ўдзельніка|ручной аўтарызацыі]].",
        "noname": "Вы не вызначылі правільнага імя ўдзельніка.",
        "loginsuccesstitle": "Паспяховы ўваход у сістэму",
        "loginsuccess": "<strong>Цяпер Вы ўвайшлі на {{SITENAME}} як \"$1\".</strong>",
        "passwordreset-emailsent-capture": "Ніжэй прыведзены адпраўлены ліст пра скід пароля.",
        "passwordreset-emailerror-capture": "Ніжэй прыведзены створаны ліст пра скід пароля, яго адпраўка не атрымалася па прычыне: $1",
        "passwordreset-invalideamil": "Няслушны адрас электроннай пошты",
+       "passwordreset-nodata": "Не былі пададзены ні імя ўдзельніка, ні адрас электроннай пошты",
        "changeemail": "Змяніць або выдаліць адрас электроннай пошты",
        "changeemail-header": "Запоўніце гэтую форму, каб змяніць свой адрас электроннай пошты. Калі хочаце выдаліць адрас электроннай пошты, злучаны з вашым уліковым запісам, пакіньце поле новага адраса электроннай пошты пустым пры адпраўцы формы.",
        "changeemail-passwordrequired": "Вам трэба будзе ўвесці свой пароль, каб пацвердзіць гэта змяненне.",
        "minoredit": "Дробная праўка",
        "watchthis": "Назіраць за гэтай старонкай",
        "savearticle": "Запісаць",
+       "savechanges": "Запісаць змены",
        "publishpage": "Апублікаваць старонку",
+       "publishchanges": "Апублікаваць змены",
        "preview": "Перадпаказ",
        "showpreview": "Як будзе",
        "showdiff": "Розніца",
        "userpage-userdoesnotexist": "Рахунак удзельніка \"<nowiki>$1</nowiki>\" не зарэгістраваны. Праверце, ці вы жадаеце стварыць або паправіць гэтую старонку.",
        "userpage-userdoesnotexist-view": "Уліковы запіс удзельніка \" $1 \"не зарэгістраваны.",
        "blocked-notice-logextract": "Гэты карыстальнік у дадзены момант заблакаваны. \n Апошні запіс журнала блакіровак прыводзіцца ніжэй для даведкі:",
-       "clearyourcache": "<strong>Заўвага:</strong> Пасля замацоўвання, вам можа спатрэбіцца ачыстка кэшу браўзера, каб убачыць унесеныя змяненні. \n*<strong>Firefox / Safari:</strong> націсніце <em>Reload</em>, утрымліваючы <em>Shift</em>, або націсніце <em>Ctrl-F5</em> ці <em>Ctrl-R</em> (<em>⌘-R</em> на Макінтошах)\n* <strong>Google Chrome</strong>: Націсніце <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> на Mac)\n* <strong>Internet Explorer</strong>: націсніце <em>Refresh</em>, утрымліваючы <em>Ctrl</em>, або націсніце <em>Ctrl-F5</em>\n* <strong>Opera</strong>: увайдзіце ў настройкі карыстальніка (меню <em>Tools</em>, падпункт <em>Preferences</em>), там ачысціце кэш;",
+       "clearyourcache": "<strong>Заўвага:</strong> Пасля замацоўвання, вам можа спатрэбіцца ачыстка кэшу браўзера, каб убачыць унесеныя змяненні. \n*<strong>Firefox / Safari:</strong> націсніце <em>Reload</em>, утрымліваючы <em>Shift</em>, або націсніце <em>Ctrl-F5</em> ці <em>Ctrl-R</em> (<em>⌘-R</em> на Макінтошах)\n* <strong>Google Chrome</strong>: Націсніце <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> на Mac)\n* <strong>Internet Explorer</strong>: націсніце <em>Refresh</em>, утрымліваючы <em>Ctrl</em>, або націсніце <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Увайдзіце <em>Menu → Settings</em> (<em>Opera → Preferences</em> на Mac), далей <em>Privacy & security → Clear browsing data → Cached images and files</em>.",
        "usercssyoucanpreview": "'''Парада:''' Карыстайцеся кнопкай \"''{{int:showpreview}}''\" для выпрабоўвання новага коду CSS ''перад тым'', як яго запісваць.",
        "userjsyoucanpreview": "'''Парада:''' Карыстайцеся кнопкай \"''{{int:showpreview}}''\" для выпрабоўвання новага коду JS ''перад тым'', як яго запісваць.",
        "usercsspreview": "'''Памятайце, што гэта толькі папярэдні паказ вашага ўласнага CSS. Праўкі яшчэ не замацаваныя!'''",
        "content-model-css": "CSS",
        "content-json-empty-object": "Пусты аб'ект",
        "content-json-empty-array": "Пусты масіў",
+       "deprecated-self-close-category": "Старонкі з недапушчальнымі самазакрытымі HTML-тэгамі",
        "duplicate-args-warning": "<strong>Увага:</strong> [[:$1]] выклікае [[:$2]] з больш чым адным значэннем для параметра \"$3\". Толькі апошняе з пададзеных значэнняў будзе ўжытае.",
        "duplicate-args-category": "Старонкі, якія выкарыстоўваюць задубляваныя параметры ў шаблонах",
        "duplicate-args-category-desc": "Старонка ўтрымлівае шаблоны з задубляванымі параметрамі, напрыклад, <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> або <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "right-override-export-depth": "Экспартаваць старонкі, у тым ліку звязаныя, да глыбіні спасылак 5.",
        "right-sendemail": "Адпраўляць электронныя лісты іншым удзельнікам",
        "right-passwordreset": "Бачыць электронныя лісты аб змяненні пароля",
-       "right-managechangetags": "Ствараць і выдаляць [[Special:Tags|біркі]] з базы даных",
+       "right-managechangetags": "Ствараць і (дэ)актываваць [[Special:Tags|біркі]]",
        "right-applychangetags": "Прымяняць [[Special:Tags|біркі]] са сваімі праўкамі",
        "right-changetags": "Дадаваць і выдаляць адвольныя [[Special:Tags|біркі]] да асобных версій і запісаў у журнале падзей",
        "right-deletechangetags": "Выдаляць [[Special:Tags|біркі]] з базы даных",
        "uploadstash-badtoken": "Не атрымалася выканаць названыя дзеянні. Магчыма, скончыўся тэрмін дзеяння вашага жэтона бяспекі. Паспрабуйце яшчэ раз.",
        "uploadstash-errclear": "Ачыстка файлаў не ўдалася",
        "uploadstash-refresh": "Абнавіць спіс файлаў",
+       "uploadstash-thumbnail": "паказаць мініяцюру",
        "invalid-chunk-offset": "Недапушчальнае зрушэнне фрагмента",
        "img-auth-accessdenied": "Доступ забаронены",
        "img-auth-nopathinfo": "Адсутнічае PATH_INFO.\nВаш сервер не настроены на перадачу гэтых звестак.\nМагчыма, ён на аснове CGI і не падтрымлівае img_auth.\nГл. https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
        "rollback-success": "Адкочаны праўкі $1; вернута апошняя версія $2.",
        "sessionfailure-title": "Памылка сеансу",
        "sessionfailure": "Магчыма, ёсць праблемы з вашым сеансам працы ў сістэме. Таму вам было адмоўлена ў выкананні дзеяння, каб засцерагчыся ад захопу сеанса.\n\nВярніцеся на папярэднюю старонку, перазагрузіце яе і тады паспрабуйце зноў.",
+       "changecontentmodel": "Змяніць мадэль змесціва старонкі",
+       "changecontentmodel-legend": "Змяніць мадэль змесціва",
        "changecontentmodel-title-label": "Назва старонкі",
        "changecontentmodel-model-label": "Новая мадэль змесціва",
        "changecontentmodel-reason-label": "Прычына:",
        "changecontentmodel-submit": "Змяніць",
+       "changecontentmodel-success-title": "Мадэль змесціва была зменена",
+       "changecontentmodel-emptymodels-title": "Няма даступных мадэляў змесціва",
        "logentry-contentmodel-change-revertlink": "адкаціць",
        "logentry-contentmodel-change-revert": "адкат",
        "protectlogpage": "Журнал аховы",
        "special-characters-group-khmer": "Кхмерскія",
        "special-characters-title-endash": "кароткі працяжнік",
        "special-characters-title-emdash": "доўгі працяжнік",
-       "special-characters-title-minus": "мінус"
+       "special-characters-title-minus": "мінус",
+       "log-action-filter-all": "Усе",
+       "log-action-filter-block-block": "заблакаваць",
+       "log-action-filter-block-reblock": "Змена блакіроўкі",
+       "log-action-filter-block-unblock": "Разблакаваць",
+       "log-action-filter-contentmodel-change": "Змяненне Contentmodel",
+       "log-action-filter-contentmodel-new": "Стварэнне старонкі з нестандартным Contentmodel",
+       "log-action-filter-delete-delete": "Выдаленне старонкі",
+       "log-action-filter-delete-restore": "Узнаўленне старонкі",
+       "log-action-filter-delete-event": "Выдаленне лога",
+       "log-action-filter-delete-revision": "Выдаленне перагляду",
+       "log-action-filter-import-interwiki": "Імпарт Transwiki",
+       "log-action-filter-import-upload": "Імпарт выгрузкай XML",
+       "log-action-filter-managetags-create": "Стварэнне тэгаў",
+       "log-action-filter-managetags-delete": "Выдаленне тэгаў",
+       "log-action-filter-managetags-activate": "Актывацыя тэга",
+       "log-action-filter-managetags-deactivate": "Адключэнне тэга",
+       "log-action-filter-move-move": "Перайсці без перазапісу рэдырэктаў",
+       "log-action-filter-move-move_redir": "Перамясціць з заменай рэдырэктаў",
+       "log-action-filter-newusers-create": "Стварэнне ананімным удзельнікам",
+       "log-action-filter-newusers-create2": "Стварэнне зарэгістраваным удзельнікам",
+       "log-action-filter-newusers-autocreate": "Аўтаматычнае стварэнне",
+       "log-action-filter-newusers-byemail": "Стварэнне паролем, высланым па электроннай пошце",
+       "log-action-filter-patrol-patrol": "Ручны догляд",
+       "log-action-filter-patrol-autopatrol": "Аўтаматычны догляд",
+       "log-action-filter-protect-protect": "Абарона",
+       "log-action-filter-protect-modify": "Мадыфікацыя абароны",
+       "log-action-filter-protect-unprotect": "Зняцце абароны",
+       "log-action-filter-protect-move_prot": "Ахова старонкі",
+       "log-action-filter-rights-rights": "Ручное змяненне",
+       "log-action-filter-rights-autopromote": "Аўтаматычнае змяненне",
+       "log-action-filter-upload-upload": "Новая перадача",
+       "log-action-filter-upload-overwrite": "Выкладванне",
+       "authmanager-authn-not-in-progress": "Праверка сапраўднасці не выконваецца або сесія перадачы дадзеных была страчана. Калі ласка, пачніце зноў з самага пачатку.",
+       "authmanager-authn-no-primary": "Прадастаўленыя ўліковыя дадзеныя не могуць быць завераны.",
+       "authmanager-authn-no-local-user": "Прадастаўленыя ўліковыя дадзеныя не звязаныя з нікодным удзельнікам на гэтай Вікі.",
+       "authmanager-authn-no-local-user-link": "Прадастаўленыя ўліковыя дадзеныя сапраўдныя, але не звязаныя з ніводным удзельнікам гэтай Вікі. Увайдзіце іншым спосабам або стварыце новы акаўнт і ў вас з'явіцца магчымасць звязаць свае папярэднія ўліковыя дадзеныя для гэтага ўліковага запісу.",
+       "authmanager-authn-autocreate-failed": "Аўтаматычнае стварэнне лакальнага ўліковага запісу не ўдалося: $1",
+       "authmanager-change-not-supported": "Прадастаўленыя ўліковыя дадзеныя не могуць быць зменены, як нішто не будзе іх выкарыстоўваць.",
+       "authmanager-create-disabled": "стварэнне рахунка не дазволена",
+       "authmanager-create-from-login": "Каб стварыць уліковы запіс, калі ласка, запоўніце палі ніжэй.",
+       "authmanager-create-not-in-progress": "Праверка сапраўднасці не выконваецца або сесія перадачы дадзеных была страчана. Калі ласка, пачніце зноў з самага пачатку.",
+       "authmanager-create-no-primary": "Прадастаўленыя ўліковыя дадзеныя не могуць быць выкарыстаны для стварэння ўліковага запісу.",
+       "authmanager-link-no-primary": "Прадастаўленыя ўліковыя дадзеныя не могуць быць выкарыстаны для прывязкі рахунку.",
+       "authmanager-link-not-in-progress": "Звязванне ўліковага запісу не выконваецца або сесія перадачы дадзеных была страчана. Калі ласка, пачніце зноў з самага пачатку.",
+       "authmanager-authplugin-setpass-failed-title": "Памылка змены пароля",
+       "authmanager-authplugin-setpass-failed-message": "Убудова аўтэнтыфікацыі адмоўлена па змене пароля.",
+       "authmanager-authplugin-create-fail": "Убудова аўтэнтыфікацыі адмоўлена ў рэгістрацыі.",
+       "authmanager-authplugin-setpass-denied": "Убудова праверкі сапраўднасці не дазваляе змяняць паролі.",
+       "authmanager-authplugin-setpass-bad-domain": "Недапушчальны дамен.",
+       "authmanager-autocreate-noperm": "Аўтаматычнае стварэнне уліковых запісаў не дапускаецца.",
+       "authmanager-autocreate-exception": "Аўтаматычнае стварэнне уліковых запісаў часова адключана з-за памылак папярэдніх.",
+       "authmanager-userdoesnotexist": "Уліковы запіс удзельніка \"$1\" не зарэгістраваны.",
+       "authmanager-username-help": "Імя карыстальніка для праверкі сапраўднасці.",
+       "authmanager-password-help": "Пароль для праверкі сапраўднасці.",
+       "authmanager-domain-help": "Дамен для знешняй праверкі сапраўднасці.",
+       "authmanager-retype-help": "Пароль яшчэ раз для пацверджання.",
+       "authmanager-email-label": "Эл.пошта",
+       "authmanager-email-help": "Адрас электроннай пошты:",
+       "authmanager-realname-label": "Сапраўднае імя:",
+       "authmanager-realname-help": "Рэальнае імя карыстальніка",
+       "authmanager-provider-password": "Праверка сапраўднасці на аснове пароляў",
+       "authmanager-provider-temporarypassword": "Тымчасовы пароль:",
+       "authprovider-confirmlink-message": "Грунтуючыся на апошніх спробах падлучэння, наступныя уліковыя запісы могуць быць звязаныя з Вашым ўліковым запісам Вікі. Калі ласка, выберыце, якія з іх павінны быць звязаныя паміж сабой.",
+       "authprovider-confirmlink-request-label": "Рахункі, якія павінны быць звязаныя",
+       "authprovider-confirmlink-success-line": "$1: звязаны паспяхова.",
+       "authprovider-confirmlink-failed": "Прывязка акаўнта не атрымалася ў поўнай меры: $1",
+       "authprovider-confirmlink-ok-help": "Працягнуць пасля вываду паведамленняў аб памылках прывязкі.",
+       "authprovider-resetpass-skip-label": "Прапусціць",
+       "authprovider-resetpass-skip-help": "Прапусціць скід пароля.",
+       "authform-nosession-login": "Праверка сапраўднасці прайшла паспяхова, але ваш браўзэр не можа \"запомніць\" уваход у сістэму.\n\n$1",
+       "authform-nosession-signup": "Уліковы запіс быў створаны, але ваш браўзэр не можа \"запомніць\" у сістэму.\n\n$1",
+       "authform-newtoken": "Адсутнічае маркер. \n\n$1",
+       "authform-notoken": "Адсутнічае маркер",
+       "authform-wrongtoken": "Няправільны маркер",
+       "specialpage-securitylevel-not-allowed-title": "Не дапускаецца",
+       "specialpage-securitylevel-not-allowed": "Прабачце, вам не дазволена выкарыстоўваць гэтую старонку, таму што ваша асоба не можа быць праверана.",
+       "authpage-cannot-login": "Не атрымалася запусціць лагін.",
+       "authpage-cannot-login-continue": "Можаце працягваць аўтарызацыю. Сеанс хутчэй за ўсе скончыўся.",
+       "authpage-cannot-create": "Немагчыма пачаць стварэнне рахунку.",
+       "authpage-cannot-create-continue": "Немагчыма працягнуць стварэнне акаўнта. Сеанс хутчэй за ўсе скончыўся.",
+       "authpage-cannot-link": "Не атрымалася запусціць прывязку акаўнта.",
+       "authpage-cannot-link-continue": "Немагчыма працягваць звязванне ўліковага запісу. Сеанс хутчэй за ўсе скончыўся.",
+       "cannotauth-not-allowed-title": "Доступ забаронены.",
+       "cannotauth-not-allowed": "Вам не дазволена выкарыстоўваць гэтую старонку",
+       "changecredentials": "Змяненне уліковых дадзеных",
+       "changecredentials-submit": "Змяненне уліковых дадзеных",
+       "changecredentials-invalidsubpage": "$1 не з'яўляецца дапушчальным тыпам уліковых дадзеных.",
+       "changecredentials-success": "Вашы дадзеныя былі змененыя.",
+       "removecredentials": "Выдаліць ўліковыя дадзеныя",
+       "removecredentials-submit": "Выдаліць ўліковыя дадзеныя",
+       "removecredentials-invalidsubpage": "$1 не з'яўляецца дапушчальным тыпам уліковых дадзеных.",
+       "removecredentials-success": "Вашы ўліковыя дадзеныя былі выдаленыя.",
+       "credentialsform-provider": "Калі ласка, увядзіце ўліковыя дадзеныя:",
+       "credentialsform-account": "Імя ўліковага запісу:",
+       "cannotlink-no-provider-title": "Няма рахункаў, якія трэба звязваць",
+       "cannotlink-no-provider": "Няма рахункаў, якія трэба звязваць",
+       "linkaccounts": "Звязаць акаўнты",
+       "linkaccounts-success-text": "Акаўнт быў звязаны.",
+       "linkaccounts-submit": "Звязаць акаўнты",
+       "unlinkaccounts": "Адмяніць сувязь уліковых запісаў",
+       "unlinkaccounts-success": "Сувязь акаўнтаў была выдалена."
 }
index 0b8d5f8..a5a984b 100644 (file)
        "newpassword": "Нова парола:",
        "retypenew": "Повтори новата парола:",
        "resetpass_submit": "Избиране на парола и влизане",
-       "changepassword-success": "Ð\9fаÑ\80олаÑ\82а Ð²Ð¸ Ð±ÐµÑ\88е Ð¿Ñ\80оменена Ñ\83Ñ\81пеÑ\88но!",
+       "changepassword-success": "Паролата беше променена успешно!",
        "changepassword-throttled": "Направили сте твърде много опити да въведете паролата за тази сметка.\nНеобходимо е да изчакате $1 преди да опитате отново.",
        "botpasswords-createnew": "Създаване на нова бот парола",
        "botpasswords-editexisting": "Редактиране на съществуваща бот парола",
        "watchlistedit-clear-titles": "Заглавия:",
        "watchlistedit-clear-submit": "Изчистване на списъка за наблюдение (Необратимо!)",
        "watchlistedit-clear-done": "Списъкът за наблюдение беше изчистен.",
+       "watchlistedit-clear-removed": "{{PLURAL:$1|1 заглавие беше премахнато|$1 заглавия бяха премахнати}}:",
        "watchlisttools-clear": "Изчистване на списъка за наблюдение",
        "watchlisttools-view": "Преглед на списъка за наблюдение",
        "watchlisttools-edit": "Преглед и редактиране на списъка за наблюдение",
        "log-action-filter-upload-upload": "Ново качване",
        "log-action-filter-upload-overwrite": "Повторно качване",
        "authmanager-authplugin-setpass-bad-domain": "Невалиден домейн.",
+       "authmanager-retype-help": "Парола (повторно) за потвърждение.",
        "authmanager-email-label": "Е-поща",
        "authmanager-email-help": "Електронна поща",
        "authmanager-realname-label": "Истинско име",
+       "authmanager-realname-help": "Истинско име на потребителя",
+       "authmanager-provider-temporarypassword": "Временна парола",
        "authprovider-resetpass-skip-label": "Пропусни",
        "specialpage-securitylevel-not-allowed-title": "Не е позволено",
        "cannotauth-not-allowed-title": "Достъпът е отказан"
index 1626101..14c32f3 100644 (file)
        "right-editmyprivateinfo": "আপনার ব্যক্তিগত তথ্য সম্পাদনা করুন (যেমন ইমেইল ঠিকানা, আসল নাম)",
        "right-editmyoptions": "আপনার পছন্দসমূহ পরিবর্তন করুন",
        "right-rollback": "একটি নির্দিষ্ট পাতার সর্বশেষ ব্যবহারকারীর সম্পদনা পূর্বাবস্থায় ফিরিয়ে আনুন",
-       "right-markbotedits": "রà§\8bলড-বà§\8dযাà¦\95 à¦¸à¦®à§\8dপাদনাসমà§\82হà¦\95à§\87 à¦¬à¦\9f à¦¸à¦®à§\8dপাদনা à¦¹à¦¿à¦¸à§\87বà§\87 à¦\9aিহà§\8dনিত à¦\95রà§\8b",
+       "right-markbotedits": "ফà§\87রত à¦\86না à¦¸à¦®à§\8dপাদনাসমà§\82হà¦\95à§\87 à¦¬à¦\9f à¦¸à¦®à§\8dপাদনা à¦¹à¦¿à¦¸à§\87বà§\87 à¦\9aিহà§\8dনিত à¦\95রà§\87",
        "right-noratelimit": "রেট লিমিটের ভিত্তিতে পরিবর্তন হবে না",
        "right-import": "অন্য উইকি থেকে পাতা আমদানী করো",
        "right-importupload": "ফাইল আপলোড থেকে এই পাতাগুলো আমদানী করো",
        "enotif_body": "প্রিয় $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nসম্পাদকের সারাংশ: $PAGESUMMARY $PAGEMINOREDIT\n\nসম্পাদকের সাথে যোগাযোগের উপায়:\nইমেইল: $PAGEEDITOR_EMAIL\nউইকি: $PAGEEDITOR_WIKI\n\nপাতাটির পরবর্তী পরিবর্তনগুলো জন্য আর কোন বিজ্ঞপ্তি পাঠানো হবে না, যতক্ষণ না আপনি প্রবেশ করার সময় এই পাতায় ব্রাউজ করবেন। এছাড়া আপনি আপনার নজরতালিকায় রাখা সবগুলি পাতা জন্য বিজ্ঞপ্তি ফ্ল্যাগ শুরুর অবস্থায় ফিরিয়ে নিতে পারেন।\n\nআপনার বন্ধুত্বপূর্ণ {{SITENAME}} বিজ্ঞপ্তি ব্যবস্থা\n\n--\nইমেইল বিজ্ঞপ্তি সেটিং পরিবর্তনের জন্য দেখুন\n{{canonicalurl:{{#special:Preferences}}}}\n\nআপনার নজরতালিকা সেটিংস পরিবর্তন করতে চাইলে দেখুন, \n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nনজরতালিকা থেকে কোন পাতা অপসারণ করতে চাইলে এখানে যান:\n$UNWATCHURL\n\nপ্রতিক্রিয়া জানাতে ও আরও সহযোগিতার জন্য:\n$HELPPAGE",
        "created": "তৈরী হয়েছিল",
        "changed": "পরিবর্তিত",
-       "deletepage": "পাতাটি মুছে ফেলা হোক",
+       "deletepage": "পাতা মুছুন",
        "confirm": "নিশ্চিত করুন",
        "excontent": "বিষয়বস্তু ছিল: '$1'",
        "excontentauthor": "বিষয়বস্তু ছিল: \"$1\", এবং একমাত্র অবদানকারী ছিলেন \"[[Special:Contributions/$2|$2]]\" ([[User talk:$2|আলাপ]])",
        "movereason": "কারণ:",
        "revertmove": "পূর্বাবস্থায় ফেরত নেওয়া হোক",
        "delete_and_move_text": "\"[[:$1]]\" শিরোনামের গন্তব্য পাতাটি ইতিমধ্যেই বিদ্যমান। আপনি কি স্থানান্তর সফল করার জন্য পাতাটি মুছে দিতে চান?",
-       "delete_and_move_confirm": "হà§\8dযাà¦\81, à¦ªà¦¾à¦¤à¦¾à¦\9fি à¦®à§\81à¦\9bà§\87 à¦«à§\87লা à¦¹à§\8bà¦\95",
+       "delete_and_move_confirm": "হà§\8dযাà¦\81, à¦ªà¦¾à¦¤à¦¾à¦\9fি à¦®à§\81à¦\9bà§\81ন",
        "delete_and_move_reason": "\"[[$1]]\" থেকে স্থানান্তরের স্বার্থে মুছে ফেলা হয়েছে",
        "selfmove": "উৎস ও গন্তব্য পাতা একই শিরোনামের; কোন পাতা একই শিরোনামের আরেক পাতায় সরানো যাবে না।",
        "immobile-source-namespace": "পাতাটি \"$1\" নামস্থানে স্থানান্তর সম্ভব নয়",
index cdf6cb1..2c0b040 100644 (file)
@@ -65,7 +65,7 @@
        "tog-ccmeonemails": "Pošalji mi kopije e-pošte koju pošaljem drugim korisnicima",
        "tog-diffonly": "Ne prikazuj sadržaj stranice ispod razlika",
        "tog-showhiddencats": "Prikaži skrivene kategorije",
-       "tog-norollbackdiff": "Izostavi razliku nakon vraćanja",
+       "tog-norollbackdiff": "Ne prikazuj razliku nakon izvršenog vraćanja",
        "tog-useeditwarning": "Upozori me kad napuštam stranicu za izmjene bez sačuvanih promjena",
        "tog-prefershttps": "Uvijek koristi sigurnu konekciju kada sam prijavljen.",
        "underline-always": "Uvijek",
        "revdelete-unsuppress": "Ukloni ograničenja na vraćenim revizijama",
        "revdelete-log": "Razlog:",
        "revdelete-submit": "Primijeni na odabrane {{PLURAL:$1|reviziju|revizije}}",
-       "revdelete-success": "'''Vidljivost revizije uspješno ažurirana.'''",
+       "revdelete-success": "'''Vidljivost izmjene je ažurirana.'''",
        "revdelete-failure": "'''Vidljivost revizije nije mogla biti ažurirana:'''\n$1",
        "logdelete-success": "'''Vidljivost evidencije uspješno postavljena.'''",
        "logdelete-failure": "'''Zapisnik vidljivosti nije mogao biti postavljen:'''\n$1",
        "rightslogtext": "Ovo je zapisnik promjena korisničkih prava.",
        "action-read": "čitate ovu stranicu",
        "action-edit": "uređujete ovu stranicu",
-       "action-createpage": "napravite stranicu",
-       "action-createtalk": "kreirate stranice za razgovor",
+       "action-createpage": "napravite ovu stranicu",
+       "action-createtalk": "pravite stranice za razgovor",
        "action-createaccount": "napravite ovaj korisnički račun",
        "action-history": "gledate historiju ove stranice",
        "action-minoredit": "da označite ovu izmjenu kao malu",
        "action-viewmyprivateinfo": "pogledajte svoje privatne informacije",
        "action-editmyprivateinfo": "uredite svoje privatne podatke",
        "action-editcontentmodel": "uredi model sadržaja stranice",
-       "action-managechangetags": "napravite i uklonite oznake iz baze podataka",
+       "action-managechangetags": "pravite i (de)aktivirate oznake",
        "action-applychangetags": "dodate oznake uz vaše izmjene",
        "action-changetags": "dodate ili uklonite razne oznake na pojedinačnim verzijama i unosima u zapisnicima",
        "nchanges": "$1 {{PLURAL:$1|promjena|promjene|promjena}}",
index ac9bf27..85468aa 100644 (file)
        "nocookieslogin": "{{SITENAME}} utilitza galetes per a enregistrar usuaris. Teniu les galetes desactivades. Activeu-les i torneu a provar.",
        "nocookiesfornew": "No s'ha creat el compte d'usuari, ja que no es podia confirmar el seu origen.\nVerifiqueu que teniu habilitades les galetes al vostre navegador, torneu a carregar aquesta pàgina i intenteu-lo de nou.",
        "nocookiesforlogin": "{{int:nocookieslogin}}",
+       "createacct-loginerror": "El vostre compte ha estat creat correctament, però la vostra sessió podria no iniciar-se automàticament. Si us plau, realitzeu l'inici de [[Special:UserLogin|sessió manual]].",
        "noname": "No heu especificat un nom vàlid d'usuari.",
        "loginsuccesstitle": "Sessió iniciada",
        "loginsuccess": "Heu iniciat la sessió a {{SITENAME}} com a «$1».",
        "botpasswords-created-title": "S'ha creat la contrasenya del bot",
        "botpasswords-created-body": "S'ha creat la contrasenya per al bot «$1» de l'usuari «$2».",
        "botpasswords-updated-title": "Contrasenya de bot actualitzada",
+       "botpasswords-deleted-title": "S'ha eliminat la contrasenya del bot",
+       "botpasswords-deleted-body": "La contrasenya del bot \"$1\", pertanyent a l'usuari \"$2\", ha estat eliminada.",
+       "botpasswords-newpassword": "La nova contrasenya per a iniciar sessió amb <strong>$1</strong> és <strong>$2</strong>. Si us plau, guardeu-la de cara al futur.",
+       "botpasswords-no-provider": "BotPasswordsSessionProvider no està disponible.",
+       "botpasswords-restriction-failed": "Les restriccions de contrasenyes de bots impedeixen aquest inici de sessió.",
        "botpasswords-not-exist": "L'usuari «$1» no té una contrasenya de bot anomenada «$2».",
        "resetpass_forbidden": "No poden canviar-se les contrasenyes",
        "resetpass_forbidden-reason": "Les contrasenyes no es poden canviar: $1",
        "passwordreset-emailtext-user": "L'usuari $1 de {{SITENAME}} ha demanat una reinicialització de la vostra contrasenya per al projecte {{SITENAME}} ($4). {{PLURAL:$3|El següent compte d'usuari està associat|Els següents comptes d'usuari estan associats}} amb aquesta adreça de correu electrònic:\n\n$2\n\n{{PLURAL:$3|Aquesta contrasenya temporal caducarà|Aquestes contrasenyes temporals caducaran}} en {{PLURAL:$5|un dia|$5 dies}}.\nHauríeu d'entrar ara per fixar una nova contrasenya. Si algú que no sou vós és qui ha fet aquesta petició o si heu recordat la contrasenya original i ja no la voleu canviar, podeu ignorar aquest missatge i seguir utilitzant la vostra antiga contrasenya.",
        "passwordreset-emailelement": "Nom d'usuari: \n$1\n\nContrasenya temporal: \n$2",
        "passwordreset-emailsentemail": "Si aquesta adreça electrònica està associada al vostre compte, s’enviarà un missatge de restabliment de contrasenya.",
+       "passwordreset-emailsentusername": "Si existeix una adreça electrònica associada a aquest nom d'usuari, s’hi enviarà un missatge de reestabliment de contrasenya.",
        "passwordreset-emailsent-capture": "S'ha enviat un correu electrònic de reinicialització de contrasenya, tal com es mostra a continuació.",
        "passwordreset-emailerror-capture": "S'ha generat un correu electrònic de renovació de contrasenya, que es mostra a continuació, però ha fallat l'enviament a {{GENDER:$2:l'usuari|la usuària}}: $1",
        "passwordreset-emailsent-capture2": "{{PLURAL:$1|S'ha enviat el correu|S'han enviat els correus}} de restabliment de {{PLURAL:$1|contrasenya|contrasenyes}}. A continuació es mostra {{PLURAL:$1|l'usuari i contrasenya|la llista d'usuaris i contrasenyes}}.",
        "passwordreset-invalideamil": "Adreça de correu electrònic no vàlida",
+       "passwordreset-nodata": "No s'ha proporcionat cap nom d'usuari ni adreça electrònica",
        "changeemail": "Canvia o elimina l’adreça electrònica",
        "changeemail-header": "Empleneu aquest formulari per canviar la vostra adreça electrònica. Si voleu eliminar qualssevol associacions d’adreces electròniques del vostre compte, deixeu en blanc el camp i envieu el formulari.",
        "changeemail-passwordrequired": "Cal que introduïu la vostra contrasenya per confirmar el canvi.",
        "right-override-export-depth": "Exportar pàgines incloent aquelles enllaçades fins a una fondària de 5",
        "right-sendemail": "Enviar missatges de correu electrònic a altres usuaris",
        "right-passwordreset": "Veure les sol·licituds de restabliment de contrasenya per correu electrònic",
-       "right-managechangetags": "Crear i suprimir [[Special:Tags|etiquetes]] des de la base de dades",
+       "right-managechangetags": "Crear, activar i desactivar [[Special:Tags|etiquetes]]",
        "right-applychangetags": "Aplica les [[Special:Tags|etiquetes]] juntament amb els canvis propis",
        "right-changetags": "Afegeix i suprimeix [[Special:Tags|etiquetes]] en revisions individuals i entrades de registre",
+       "right-deletechangetags": "Suprimir [[Special:Tags|etiquetes]] des de la base de dades",
        "grant-group-page-interaction": "Interacció amb pàgines",
        "grant-group-file-interaction": "Interacció amb fitxes multimèdia",
        "grant-group-watchlist-interaction": "Interacció amb la vostra llista de seguiment",
        "grant-createeditmovepage": "Crea, modifica i reanomena pàgines",
        "grant-delete": "Suprimeix pàgines, revisions i entrades de registre",
        "grant-editinterface": "Modifica l'espai de noms MediaWiki i els CSS/JavaScript d'usuari",
+       "grant-editmyoptions": "Editeu les vostres preferències d'usuari",
        "grant-editmywatchlist": "Modifica la llista de seguiment",
        "grant-editpage": "Modifica les pàgines existents",
        "grant-editprotected": "Modifica pàgines protegides",
        "rightslogtext": "Aquest és un registre de canvis dels permisos d'usuari.",
        "action-read": "llegir aquesta pàgina",
        "action-edit": "modificar aquesta pàgina",
-       "action-createpage": "crear pàgines",
-       "action-createtalk": "crear pàgines de discussió",
+       "action-createpage": "crear aquesta pàgina",
+       "action-createtalk": "crear aquesta pàgina de discussió",
        "action-createaccount": "crear aquest compte d'usuari",
        "action-autocreateaccount": "crea automàtica aquest compte d'usuari extern",
        "action-history": "mostra l'historial de la pàgina",
        "action-managechangetags": "crear i (des)activar etiquetes",
        "action-applychangetags": "aplica les etiquetes juntament amb els canvis",
        "action-changetags": "afegeix i elimina etiquetes a les revisions i les entrades de registre individuals",
+       "action-deletechangetags": "eliminar etiquetes des de la base de dades",
        "nchanges": "$1 {{PLURAL:$1|canvi|canvis}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|des de la darrera visita}}",
        "enhancedrc-history": "historial",
        "upload-too-many-redirects": "L'URL conté massa redireccions",
        "upload-http-error": "Ha ocorregut un error HTTP: $1",
        "upload-copy-upload-invalid-domain": "Les càrregues de còpia no són disponibles des d'aquest domini.",
+       "upload-dialog-disabled": "La càrrega de fitxers utilitzant aquest quadre de diàleg està desactivada en aquest wiki.",
        "upload-dialog-title": "Carrega un fitxer",
        "upload-dialog-button-cancel": "Cancel·la",
        "upload-dialog-button-done": "Fet",
        "upload-form-label-infoform-name": "Nom",
        "upload-form-label-infoform-name-tooltip": "Un únic títol descriptiu pel fitxer, que servirà com a nom del fitxer. Podeu utilitzar llenguatge senzill amb espais. No hi inclogueu l'extensió del fitxer.",
        "upload-form-label-infoform-description": "Descripció",
+       "upload-form-label-infoform-description-tooltip": "Descriviu breument tot el que sigui notable d'aquesta obra.\nSi es tracta d'una fotografia, esmenteu els principals elements que hi ha representats o bé l'esdeveniment o lloc en qüestió.",
        "upload-form-label-usage-title": "Ús",
        "upload-form-label-usage-filename": "Nom del fitxer",
        "upload-form-label-own-work": "Això és el meu propi treball",
        "upload-form-label-infoform-categories": "Categories",
        "upload-form-label-infoform-date": "Data",
+       "upload-form-label-own-work-message-generic-local": "Confirmo que estic carregant aquest fitxer seguint les condicions d'ús i polítiques de concessió de llicències a {{SITENAME}}.",
+       "upload-form-label-not-own-work-message-generic-local": "Si no podeu carregar aquest fitxer sota les polítiques de {{SITENAME}}, si us plau, tanqueu aquest quadre de diàleg i proveu amb un altre mètode.",
        "upload-form-label-not-own-work-local-generic-local": "També podeu provar [[Special:Upload|la pàgina de càrrega per defecte]].",
        "upload-form-label-own-work-message-generic-foreign": "Entenc que esteu carregant el fitxer en un repositori compartit. Confirmo que ho estic fent seguint les condicions d'ús i les polítiques de llicenciament que s'hi apliquen.",
+       "upload-form-label-not-own-work-message-generic-foreign": "Si no podeu carregar aquest fitxer sota les polítiques del repositori lliure, si us plau, tanqueu aquest quadre de diàleg i proveu amb un altre mètode.",
+       "upload-form-label-not-own-work-local-generic-foreign": "També us recomanem que utilitzeu [[Special:Upload|la pàgina de càrrega a {{SITENAME}}]] si aquest fitxer es pot carregar seguint les seves polítiques.",
        "backend-fail-stream": "No s'ha pogut transmetre el fitxer $1.",
        "backend-fail-backup": "No s'ha pogut fer una còpia de seguretat del fitxer $1.",
        "backend-fail-notexists": "El fitxer $1 no existeix.",
        "uploadstash-summary": "Aquesta pàgina permet accedir als fitxers que han estat carregats (o estan en procés de ser carregats), però que encara no s'han publicat al wiki. Aquests fitxers només són visibles per a l'usuari que els ha carregats.",
        "uploadstash-clear": "Esborra els fitxers en reserva",
        "uploadstash-nofiles": "No teniu fitxers en reserva",
-       "uploadstash-badtoken": "No s'ha pogut realitzar l'acció, possiblement perquè han caducat la vostra identificació. Intenteu-ho de nou.",
+       "uploadstash-badtoken": "No s'ha pogut realitzar l'acció, possiblement perquè ha caducat la vostra identificació. Intenteu-ho de nou.",
        "uploadstash-errclear": "S'estan netejant els fitxers que han fallat.",
        "uploadstash-refresh": "Actualitza la llista de fitxers",
        "uploadstash-thumbnail": "mostra una miniatura",
index 0655819..eca5136 100644 (file)
        "password-change-forbidden": "Хьан йиш яц хӀокху вики чохь пароль хийца.",
        "externaldberror": "Арахьара хаамийн базан гӀоьнца аутентификаци ечу хенахь гӀалат даьлла я хьа дӀаяздаран хийцам бан бакъонаш яц.",
        "login": "Системин довзийтар",
+       "login-security": "Хьой хилар бакъде",
        "nav-login-createaccount": "Довзийтар / дӀаяздар кхоллар",
        "userlogin": "Довзийтар я декъашхочун дӀаяздар кхоллар",
        "userloginnocreate": "Довзийта",
        "userlogin-resetpassword-link": "Пароль кхоссар?",
        "userlogin-helplink2": "Системин чудахаран гӀодар",
        "userlogin-loggedin": "Хьо {{GENDER:$1|$1}} цӀарца чохь ву/ю.\nЛахара форманца кхин цӀарца чугӀо.",
+       "userlogin-reauth": "{{GENDER:$1|$1}} хьой хилар бакъдан системин чугӀо.",
        "userlogin-createanother": "Кхолла декъашхочун кхин дӀаяздар",
        "createacct-emailrequired": "Электронан поштан адрес",
        "createacct-emailoptional": "Электронан поштан адрес (ца яздича мега)",
        "resetpass-wrong-oldpass": "Нийса йоцу я хана йолу карара пароль. Ахьа кхиамца пароль хийцина я керла хана йолу пароль ехна хила там бу.",
        "resetpass-recycled": "Дехар до, хӀинца йолччул башха пароль хӀотта йе.",
        "resetpass-temp-emailed": "Ахьа чугӀош язйина цкъачунна электронан поште яийтина пароль. Чудахар чекхдалийта язъян еза керла пароль.",
-       "resetpass-temp-password": "ЦÑ\85Ñ\8cан Ñ\85ана пароль:",
+       "resetpass-temp-password": "Ð¥ана пароль:",
        "resetpass-abort-generic": "Пароль хийцар дӀахедар",
        "resetpass-expired": "Хьан паролан хан чекхелла. Дехар до керла пароль хӀоттаяр.",
        "resetpass-expired-soft": "Хьа паролан хан чекхелла. Дехар до, харжа керла пароль я тӀетаӀе «{{int:authprovider-resetpass-skip-label}}», и тӀехо хица.",
        "passwordreset-emailtitle": "{{SITENAME}}: декъашхочун дӀаяздарх лаьцна хаам",
        "passwordreset-emailtext-ip": "{{SITENAME}} ($4) проектехь цхьам я ахьа хӀокху IP-адрес $1 тӀера хьа декъашхочун пароль кхоссар дехна,\nоьцу электронан адресца дихкина ду {{PLURAL:$3|1хӀара декъашхочун дӀаяздар|хӀара декъашхочун дӀаяздар}}:\n\n$2\n\n{{PLURAL:$3|ХӀара хана пароль|ХӀара хана паролаш}} лелар ю {{PLURAL:$5|$5 дийнахь}}.\nСистемин чугӀой харжа керла пароль. \nХьой пароль кхоссар дехна дацахь я хьалхалера пароль дага еънехь хӀума цадеш Ӏад битта хӀара хаам хьа йиш ю шира пароль лелаян.",
        "passwordreset-emailtext-user": "{{SITENAME}} ($4) проектера декъашхочо $1 хьа декъашхочун пароль кхоссар дехна,\nоьцу электронан адресца дихкина ду {{PLURAL:$3|1хӀара декъашхочун дӀаяздар|хӀара декъашхочун дӀаяздар}}:\n\n$2\n\n{{PLURAL:$3|ХӀара хана пароль|ХӀара хана паролаш}} лелар ю {{PLURAL:$5|$5 дийнахь}}.\nСистемин чугӀой харжа керла пароль. \nХьой пароль кхоссар дехна дацахь я хьалхалера пароль дага еънехь хӀума цадеш Ӏад битта хӀара хаам хьа йиш ю шира пароль лелаян.",
-       "passwordreset-emailelement": "Ð\94екÑ\8aаÑ\88Ñ\85оÑ\87Ñ\83н Ñ\86Ó\80е: \n$1\n\nХанна Ð¹Ð¾Ð»Ñ\83 Ð¿Ð°Ñ\80олÑ\8c: \n$2",
+       "passwordreset-emailelement": "Декъашхочун цӀе: \n$1\n\nХанна пароль: \n$2",
        "passwordreset-emailsentemail": "Электронан хаам баийтина кхоьссинчу паролах лаьцна хаам чохь болуш.",
        "passwordreset-emailsent-capture": "Электронан хаам баийтина кхоьссинчу паролах лаьцна хаам чохь болуш. \nцуна йозане хьажа йиш ю лахахь.",
        "passwordreset-emailerror-capture": "Пароль кхоссаран хаам чохь болуш электронан кехат кхоьллина, цуна йоза хьажа йиш ю лахахь, амма иза {{GENDER:$2|декъашхочунга}} дӀадахьийта тар цаделира бахьнехь: $1",
        "mostlinkedtemplates": "Массарел дуккха а лелайо агӀонаш",
        "mostcategories": "Дуккха категореш тӀе тоьхна йолу агӀонаш",
        "mostimages": "Массарел дуккха лелайо файлаш",
-       "mostinterwikis": "Ð\94Ñ\83ккÑ\85а Ñ\8eкÑ\8aаÑ\80вики хьажоргаш тӀе тоьхна йолу агӀонаш",
+       "mostinterwikis": "Ð\94Ñ\83ккÑ\85а Ñ\8eкÑ\8aаÑ\80викаÑ\88-хьажоргаш тӀе тоьхна йолу агӀонаш",
        "mostrevisions": "Сих сиха нисйина йолу агӀонаш",
        "prefixindex": "Хьалха агӀонийн цӀерш хӀотто еза",
        "prefixindex-namespace": "Хьалха агӀонийн цӀерш хӀотто еза («{{ns:$1}}»)",
        "special-characters-title-minus": "хьаьрк минус",
        "mw-widgets-titleinput-description-redirect": "ДӀасхьажорг $1 тӀе",
        "sessionprovider-generic": "$1 сесси",
-       "randomrootpage": "Цахууш нисъелла ораман агӀо"
+       "randomrootpage": "Цахууш нисъелла ораман агӀо",
+       "authmanager-provider-temporarypassword": "Ханна пароль",
+       "changecredentials": "Декъашхочун дӀаяздаран хийцам",
+       "removecredentials": "ДӀадаха декъашхойн дӀаяздарш",
+       "removecredentials-submit": "ДӀадаха декъашхойн дӀаяздарш",
+       "credentialsform-provider": "ДӀаяздарийн тайпа:",
+       "credentialsform-account": "Декъашхочун цӀе:"
 }
index f01e18d..cecccf6 100644 (file)
        "backend-fail-read": "Die Datei $1 konnte nicht gelesen werden.",
        "backend-fail-create": "Die Datei $1 konnte nicht gespeichert werden.",
        "backend-fail-maxsize": "Die Datei $1 konnte nicht gespeichert werden, da sie größer als {{PLURAL:$2|ein Byte|$2 Bytes}} ist.",
-       "backend-fail-readonly": "Das Speicher-Backend „$1“ befindet sich derzeit im Lesemodus. Der angegebene Grund lautet: <em>$2</em>",
-       "backend-fail-synced": "Die Datei „$1“ befindet sich, innerhalb des internen Speicher-Backends, in einem inkonsistenten Zustand.",
-       "backend-fail-connect": "Es konnte keine Verbindung zum Speicher-Backend „$1“ hergestellt werden.",
-       "backend-fail-internal": "Im Speicher-Backend „$1“ ist ein unbekannter Fehler aufgetreten.",
+       "backend-fail-readonly": "Die Datenbank „$1“ befindet sich derzeit im Lesemodus. Der Grund hierfür ist: <em>$2</em>",
+       "backend-fail-synced": "Die Datei „$1“ befindet sich, innerhalb des internen Datenbanksystems, in einem inkonsistenten Zustand.",
+       "backend-fail-connect": "Es konnte keine Verbindung zur Datenbank „$1“ hergestellt werden.",
+       "backend-fail-internal": "In der Datenbank „$1“ ist ein unbekannter Fehler aufgetreten.",
        "backend-fail-contenttype": "Der Inhaltstyp, der im Pfad „$1“ zu speichernden Datei, konnte nicht bestimmt werden.",
-       "backend-fail-batchsize": "Eine Stapelverarbeitungsdatei, die {{PLURAL:$1|eine Operation|$1 Operationen}} enthält, wurde an das Speicher-Backend gesandt. Die Begrenzung liegt allerdings bei {{PLURAL:$2|einer Operation|$2 Operationen}}.",
+       "backend-fail-batchsize": "Der Datenbank wurde eine Stapelverarbeitungsdatei mit {{PLURAL:$1|einem Verarbeitungsschritt|$1 Verarbeitungsschritten}} übermittelt. Die zulässige Obergrenze liegt indes bei {{PLURAL:$2|einem Verarbeitungsschritt|$2 Verarbeitungsschritten}}.",
        "backend-fail-usable": "Die Datei „$1“ konnte entweder aufgrund eines nicht vorhandenen Verzeichnisses oder wegen unzureichender Berechtigungen weder abgerufen noch gespeichert werden.",
-       "filejournal-fail-dbconnect": "Es konnte keine Verbindung zur Journaldatenbank des Speicher-Backends „$1“ hergestellt werden.",
-       "filejournal-fail-dbquery": "Die Journaldatenbank des Speicher-Backends „$1“ konnte nicht aktualisiert werden.",
+       "filejournal-fail-dbconnect": "Es konnte keine Verbindung zur Journaldatenbank des Datenbanksystems „$1“ hergestellt werden.",
+       "filejournal-fail-dbquery": "Die Journaldatenbank des Datenbanksystems „$1“ konnte nicht aktualisiert werden.",
        "lockmanager-notlocked": "„$1“ konnte nicht entsperrt werden, da keine Sperrung besteht.",
        "lockmanager-fail-closelock": "Die Sperrdatei für „$1“ konnte nicht geschlossen werden.",
        "lockmanager-fail-deletelock": "Die Sperrdatei für „$1“ konnte nicht gelöscht werden.",
        "licenses-edit": "Lizenzoptionen bearbeiten",
        "license-nopreview": "(es ist keine Vorschau verfügbar)",
        "upload_source_url": "(deine ausgewählte Datei von einer gültigen, öffentlich zugänglichen URL)",
-       "upload_source_file": "(deine ausgewählte Datei von deinem Computer)",
+       "upload_source_file": "(die von dir auf deinem Computer ausgewählte Datei)",
        "listfiles-delete": "löschen",
        "listfiles-summary": "Diese Spezialseite listet alle hochgeladenen Dateien auf.",
        "listfiles_search_for": "Suche nach Datei:",
index e16eca1..30fae1f 100644 (file)
        "morenotlisted": "Vêşi lista nêbi...",
        "mypage": "Pele",
        "mytalk": "Mesac",
-       "anontalk": "Werênayış",
+       "anontalk": "Mışewre",
        "navigation": "Pusula",
        "and": "&#32;u",
        "qbfind": "Bıvêne",
        "view-foreign": "$1'i bıvin",
        "edit": "Bıvurne",
        "edit-local": "Şınasnayışê lokali bıvurne",
-       "create": "Vıraze",
+       "create": "Bıvıraz",
        "create-local": "Şınasnayışê lokali cı ke",
        "editthispage": "Ena pele bıvurne",
        "create-this-page": "Na pele bınuse",
        "unprotectthispage": "Starkerdışe ena peler bıvurne",
        "newpage": "Pela newiye",
        "talkpage": "Ena pele sero werêne",
-       "talkpagelinktext": "werênayış",
+       "talkpagelinktext": "mışewre",
        "specialpage": "Pela xısusiye",
        "personaltools": "Hacetê şexsiy",
        "articlepage": "Pela zerreki bıvêne",
-       "talk": "Werênayış",
+       "talk": "Mışewre",
        "views": "Asayışi",
        "toolbox": "Haceti",
        "userpage": "Pela karberi bıvêne",
        "redirectedfrom": "($1 ra kırışı yê)",
        "redirectpagesub": "Pela berdışi",
        "redirectto": "Beno hetê:",
-       "lastmodifiedat": "Ena pele tewr peyên roca $2, $1 de biya rocaniye.",
+       "lastmodifiedat": "Ena pele tewr peyên roca $1, seate $2 de biya rocaniye.{{MediaWiki bın}}",
        "viewcount": "Ena pele {{PLURAL:$1|rae|$1 rey}} vêniya.",
        "protectedpage": "Pela pawıtiye",
        "jumpto": "Şo be:",
        "actionthrottled": "Kerden peysnaya",
        "actionthrottledtext": "Riyê tedbirê anti-spami ra,  wextê do kılmek de şıma nê fealiyeti nêşkenê zaf zêde bıkerê, şıma ki no hedi viyarna ra.\nÇend deqey ra tepeya reyna bıcerrebnên.",
        "protectedpagetext": "Na per qey nêvuriyayiş ho pawyeno ya zi kerdışe bini.",
-       "viewsourcetext": "To şikinay çımey na pele bıvêne u kopya kerê:",
+       "viewsourcetext": "To şikinay çımey na pele bıvêne u kopya kerê:{{MediaWiki Wesiqe malumat}}",
        "viewyourtext": "Na pela '''Vurnayışê ke kerdê''' re şıma şenê kopya kerê:",
        "protectedinterface": "Na pela qandê nusnerin destegê verri dana u kes xırabin nêqero deye kerda kılit.",
        "editinginterface": "'''İqaz:''' Şıma hayo yew pela ke seba nuşteyê meqalanê cayanê bırnayeyan dana, vurnenê.\nVurnayışê na pele karberanê binan rê serpela karberi kena ke bımocno.\nSeba çarnayışi, yardımê [https://translatewiki.net/wiki/Main_Page?setlang=diq translatewiki.net]i ra procêdoşkerdışi rê diqet kerên.",
        "remembermypassword": "Parola mı nê cıgeyrayoği de biya xo viri (seba tewr zêde $1 {{PLURAL:$1|roce|rocan}})",
        "userlogin-remembermypassword": "Mı biya xo viri",
        "userlogin-signwithsecure": "Ebe teqdimkerê asayişın cıkewe",
+       "cannotloginnow-title": "Enewke ronıştışo nêabeno",
+       "cannotloginnow-text": "$1 karkerdışa ronıştış akerdış mıkum niyo.",
        "yourdomainname": "Nameyê şıma yo meydani",
        "password-change-forbidden": "Şıma na wiki de nêşenê parola bıvurnê.",
        "externaldberror": "Ya database de xeta esta ya zi heqê şıma çino şıma no hesab bıvurni.",
        "login": "Cı kewe",
+       "login-security": "Kamiya xo araşt kerê",
        "nav-login-createaccount": "Dekew de / hesab vıraze",
        "userlogin": "Cıkewtış / hesab vıraze",
        "userloginnocreate": "Cı kewe",
        "userlogin-resetpassword-link": "Parola xo kerda xo vira?",
        "userlogin-helplink2": "Heqa qeydbiyayışi de peşti bıgêrên",
        "userlogin-loggedin": "Tı xora namey {{GENDER:$1|$1}} ra kewtê/kewtay cı.\nFormê cêrêni bıgureyne ke namey karberio bin ra cı kewê.",
+       "userlogin-reauth": "Eger ke {{GENDER:$1|$1}} şımayê se xo araşt kerdışirê fına ronıştış akerê.",
        "userlogin-createanother": "Zewbi hesab vıraz",
        "createacct-emailrequired": "Adresa e-postey",
        "createacct-emailoptional": "Adresa e-postey (mecburi niya)",
        "right-passwordreset": "E-postayanê parola reset kerdışa vineno",
        "right-managechangetags": "[[Special:Tags|Etiketi]] vıraz u aktiv (me)ke",
        "right-applychangetags": "[[Special:Tags|Etiketa]]  vurnayışana piya dezge fi.",
+       "grant-group-email": "e-poste bırışe",
+       "grant-group-customization": "Şexsi kerdış u tercihi",
+       "grant-group-other": "Enwayi babet aktivitey",
+       "grant-blockusers": "Karberi men ke u meni wedarne",
+       "grant-createaccount": "Hesab vıraze",
+       "grant-createeditmovepage": "Perer vırazê, bıvurnê u berê",
        "grant-editmyoptions": "Tercihanê xo bıvurne",
        "grant-editmywatchlist": "Listeyseyran de xo bıvırne",
        "grant-editpage": "Peran bıvurnê",
        "grant-editprotected": "Srar bıyaye peran bıvurnê",
+       "grant-patrol": "Perer de vurnayışa çımra ravyarn",
+       "grant-uploadfile": "Dosyaya newi bar ke",
+       "grant-basic": "Heqê basiti",
+       "grant-viewdeleted": "Besteryaya peran u dosyaya bıasne",
+       "grant-viewmywatchlist": "Lista serykerdışê xo bıvêne",
        "newuserlogpage": "Cıkewtışê hesabvıraştışi",
        "newuserlogpagetext": "Ena log de viraştişê karberî esta.",
        "rightslog": "Qeydê heqanê karberi",
        "rightslogtext": "Ena listeyê loganê ke heqqa karbaranî mucneno.",
        "action-read": "ena pela wanayış",
        "action-edit": "ena pela bıvurnê",
-       "action-createpage": "pelan vıraze",
+       "action-createpage": "Ena perer bıvıraze",
        "action-createtalk": "pelanê werênayışi bıvıraze",
        "action-createaccount": "hesabê nê karberi bıvıraze",
        "action-minoredit": "nê vurnayışi be qıckek işaret ke",
        "enhancedrc-history": "tarix",
        "recentchanges": "Vurriyayışê peyêni",
        "recentchanges-legend": "Tercihê vurnayışanê peyênan",
-       "recentchanges-summary": "Ena pele de wiki sero vurnayışanê peyênan teqib ke.",
+       "recentchanges-summary": "\"Wiki sero vurnayışanê peyênan ena perer ra teqib ke.\"\n{{vp-diq}}",
        "recentchanges-noresult": "Goreyê kriteranê kıfşkerdeyan ra qet yew vurnayış nêvêniya.",
        "recentchanges-feed-description": "Ena feed dı vurnayişanê tewr peniyan teqip bık.",
        "recentchanges-label-newpage": "Enê vurnayışi ra yew pela newiye vıraziye",
        "rcshowhidecategorization": "kategorizasyonê pele $1",
        "rcshowhidecategorization-show": "Bıasne",
        "rcshowhidecategorization-hide": "Bınımne",
-       "rclinks": "Peyniya $2 rocan de $1 vurnayışan bımocne <br />$3",
+       "rclinks": "$2 rocan de $1 vurriyayışanê peyênan bıasne <br />$3",
        "diff": "ferq",
        "hist": "verên",
        "hide": "Bınımne",
        "apisandbox-results": "Neticey",
        "apisandbox-sending-request": "API waştış rışêno...",
        "apisandbox-request-url-label": "URL waştış:",
-       "apisandbox-request-time": "Demê waştışi: $1",
+       "apisandbox-request-time": "Demê waştışi: {{PLURAL:$1|$1 ms}}",
        "booksources": "Çımeyê kıtaban",
        "booksources-search-legend": "Seba çımeyanê kıtaban cı geyre",
        "booksources-isbn": "ISBN:",
        "mywatchlist": "Lista seyrkerdışi",
        "watchlistfor2": "Qandê $1 ($2)",
        "nowatchlist": "listeya temaşa kerdıişê şıma de yew madde zi çina.",
-       "watchlistanontext": "qey vurnayişê maddeya listeya temaşakerdişi $1.",
+       "watchlistanontext": "qey vurnayişê maddeya listeya temaşakerdiş ronıştış akerê",
        "watchnologin": "Şıma cıkewtış nêvıraşto",
        "addwatch": "Lista seyrkerdışi ke",
-       "addedwatchtext": "Ma pele \"[[:$1]]\" zerri [[Special:Watchlist|watchlist]]ê tı kerd de.\nEna deme ra, ma qe vurnayışan ser ena pele tı haberdar keni.",
+       "addedwatchtext": "Ma pele \"[[:$1]]\" zerri [[Special:Watchlist|listeya seyri]] tı kerd de.\nEna deme ra, ma qe vurnayışan ser ena pele tı haberdar keni.",
+       "addedwatchtext-short": "Pera $1`i çebyê listeya seyran de şıma",
        "removewatch": "Lista seyrkerdışi ra wedare",
        "removedwatchtext": "Ena pela \"[[:$1]]\" biya wedariya [[Special:Watchlist|listeyê seyr-kerdışi şıma]].",
        "watch": "Seyr ke",
        "pagesize": "(bitî)",
        "restriction-edit": "Bıvurne",
        "restriction-move": "Berr",
-       "restriction-create": "Vıraze",
+       "restriction-create": "Bıvıraz",
        "restriction-upload": "Bar ke",
        "restriction-level-sysop": "tam pawiyayo",
        "restriction-level-autoconfirmed": "nêm pawiyayo",
        "sp-contributions-deleted": "iştırakê karberi esterdi",
        "sp-contributions-uploads": "barkerdey",
        "sp-contributions-logs": "qeydi",
-       "sp-contributions-talk": "werênayış",
+       "sp-contributions-talk": "mışewre",
        "sp-contributions-userrights": "idareyê heqanê karberan",
        "sp-contributions-blocked-notice": "verniyê no/na karber/e geriyayo/a\nqê referansi qeydê vernigrewtışi cêr de eşkera biyo:",
        "sp-contributions-blocked-notice-anon": "Eno adresê IPi bloke biyo.\nCıkewtışo tewr peyêno ke bloke biyo, cêr seba referansi belikerdeyo:",
        "deletedwhileediting": "'''Teme''': Ena pele  verniyê ti de eseteriyaya!",
        "confirmrecreate": "Karberê [[User:$1|$1]]î ([[User talk:$1|mesac]]), verniyê vurnayîşê ti ra ena pele wedarno, sebeb: ''$2''\nMa rica keno tesdiq bike ke ti raştî wazeno eno pel bivirazo.",
        "confirmrecreate-noreason": "karbero [[User:$1|$1]] ([[User talk:$1|mesac]]) , dest pêkerdışiena pela sero vurnayışiya tepya ena pela besternê. Şıma qayıli ke ena pela fına vırazê se ena pela tesdiq kerê.",
-       "recreate": "Reyna viraz",
+       "recreate": "Werzayne",
        "unit-pixel": "px",
        "confirm_purge_button": "Temam",
        "confirm-purge-top": "Vervirê na pele bestere?",
index c1bba97..4bfec97 100644 (file)
        "revdelete-submit": "Εφαρμογή {{PLURAL:$1|στην επιλεγμένη αναθεώρηση|στις επιλεγμένες αναθεωρήσεις}}",
        "revdelete-success": "'''Η ορατότητα έκδοσης ενημερώθηκε επιτυχώς.'''",
        "revdelete-failure": "'''Η ορατότητα της επεξεργασίας δεν ήταν δυνατόν να ενημερωθεί:''' $1",
-       "logdelete-success": "'''Η ορατότητα γεγονότος τέθηκε επιτυχώς.'''",
+       "logdelete-success": "Η ορατότητα γεγονότος τέθηκε επιτυχώς.",
        "logdelete-failure": "'''Η ορατότητα του καταλόγου δεν μπορούσε να ρυθμιστεί:'''\n$1",
        "revdel-restore": "αλλαγή ορατότητας",
        "pagehist": "Ιστορικό σελίδας",
index 6d1e58d..7c755f7 100644 (file)
        "noindex-category": "Noindexed pages",
        "broken-file-category": "Pages with broken file links",
        "categoryviewer-pagedlinks": "($1) ($2)",
+       "category-header-numerals": "$1–$2",
        "about": "About",
        "article": "Content page",
        "newwindow": "(opens in new window)",
index 9215593..4b76762 100644 (file)
                        "Dgstranz",
                        "Copper12",
                        "Ivanhercaz",
-                       "AlvaroMolina"
+                       "AlvaroMolina",
+                       "Tokvo"
                ]
        },
        "tog-underline": "Subrayar los enlaces:",
        "blocklist-timestamp": "Fecha y hora",
        "blocklist-target": "Destino",
        "blocklist-expiry": "Caduca",
-       "blocklist-by": "Administrador bloqueante",
+       "blocklist-by": "Administrador que bloqueó",
        "blocklist-params": "Parámetros de bloqueo",
        "blocklist-reason": "Motivo",
        "ipblocklist-submit": "Buscar",
index 9f4442b..542e0e9 100644 (file)
        "minoredit": "Aldaketa hau txikia da",
        "watchthis": "Orrialde hau jarraitu",
        "savearticle": "Gorde orria",
+       "savechanges": "Aldaketak gorde",
        "publishpage": "Orrialdea argitaratu",
        "publishchanges": "Aldaketak argitaratu",
        "preview": "Aurrebista erakutsi",
        "revdelete-unsuppress": "Berrezarritako aldaketen mugak kendu",
        "revdelete-log": "Arrazoia:",
        "revdelete-submit": "Hautatutako {{PLURAL:$1|berrikuspenari|berrikuspenei}} aplikatu",
-       "revdelete-success": "'''Berrikuspenen ikusgarritasuna eguneratu da.'''",
+       "revdelete-success": "Berrikuspenen ikusgarritasuna eguneratu da.",
        "revdelete-failure": "'''Ezin da berrikuspenaren ikuspena eguneratu:'''\n$1",
-       "logdelete-success": "'''Log ikusgarritasuna ondo ezarri da.'''",
+       "logdelete-success": "Log ikusgarritasuna ondo ezarri da.",
        "logdelete-failure": "'''Erregistroaren ikusgaitasuna ezin da honela ezarri:'''\n$1",
        "revdel-restore": "Aldatu ikusgaitasuna",
        "pagehist": "Orriaren historia",
        "mergehistory-go": "Aldaketa bateragarriak erakutsi",
        "mergehistory-submit": "Berrikuspenak bateratu",
        "mergehistory-empty": "Ezin da berrikuspenik bateratu",
-       "mergehistory-done": "$1(e)ko {{PLURAL:$3|berrikuspen|berrikuspen}} bateratu egin dira [[:$2]](e)n.",
+       "mergehistory-done": "$1(e)ko {{PLURAL:$3|berrikuspen|berrikuspen}} bateratu egin {{PLURAL:$3|da|dira}} [[:$2]](e)n.",
        "mergehistory-fail": "Ezin izan da historia bateratu; egiaztatu orrialde eta denbora parametroak.",
        "mergehistory-no-source": "Ez da $1 jatorrizko orrialdea existitzen.",
        "mergehistory-no-destination": "Ez da $1 helburu orrialdea existitzen.",
        "badsig": "Baliogabeko sinadura; egiaztatu HTML etiketak.",
        "badsiglength": "Zure sinadura luzeegia da.\n$1 {{PLURAL:$1|karakteretik|karakteretik}} behera izan behar ditu.",
        "yourgender": "Nola nahiagu duzu deskribatua izatea?",
-       "gender-unknown": "Nahiago dut ez esatea",
+       "gender-unknown": "Aipatzen zaituztenean, softwareak genero neutroa erabiliko du hori posible denean",
        "gender-male": "Wiki orrialdeak editatzen dituen gizona",
        "gender-female": "Wiki orrialdeak editatzen dituen emakumea",
        "prefs-help-gender": "Hobespen hau jartzea aukerazkoa da.\nSoftwareak bere balioak erabiltzen ditu zu aipatzeko eta beste batzuek genero gramatikala erabiltzeko aukera izan dezaten.\nInformazio hau publikoa da.",
        "editusergroup": "{{GENDER:$1|Erabiltzaile}} taldeak editatu",
        "editinguser": "'''[[User:$1|$1]]''' $2 lankidearen erabiltzaile-eskubideak aldatzen",
        "userrights-editusergroup": "Erabiltzaile taldeak editatu",
-       "saveusergroups": "Erabiltzaile taldeak gorde",
+       "saveusergroups": "Erabiltzaile {{GENDER:$1|taldeak}} gorde",
        "userrights-groupsmember": "Ondorengo talde honetako kide da:",
        "userrights-groupsmember-auto": "Honen kide inplizitua:",
        "userrights-groups-help": "Lankide hau zein taldetakoa den alda dezakezu:\n* Laukia hautatuta baldin badago, esan nahi du lankidea talde horretakoa dela.\n* Laukia hautatu gabe baldin badago, esan nahi du lankidea talde horretakoa ez dela.\n* Izartxoak (*) erakusten du ezin duzula talde horretatik kendu, taldera gehitu eta gero; edo alderantziz, ezin duzula talde horretara gehitu, taldetik kendu eta gero.",
        "userrights-changeable-col": "Alda ditzakezun taldeak",
        "userrights-unchangeable-col": "Aldatu ezin ditzakezun taldeak",
        "userrights-conflict": "Gatazka gertatu da erabiltzaile eskubideak aldatzean. Mesedez, berrikusi eta baieztatu zure aldaketak.",
-       "userrights-removed-self": "Arrakasta izan duzu zure eskumenak kentzen. Beraz jada ezin duzu orrialde hau gehiago ikusi.",
+       "userrights-removed-self": "Zure eskumenak kendu dituzu. Beraz jada ezin duzu orrialde hau gehiago ikusi.",
        "group": "Taldea:",
        "group-user": "Erabiltzaileak",
        "group-autoconfirmed": "Lankide autokonfirmatuak",
        "right-override-export-depth": "5eko sakonerararteko loturiko orrialdeak barne esportatu",
        "right-sendemail": "Beste erabiltzaileei e-posta bidali",
        "right-passwordreset": "Ikusi pasahitza berrezartze e-postak",
+       "grant-group-email": "E-posta bidali",
        "grant-createaccount": "Kontuak sortu",
        "grant-editmycssjs": "Zure CSS/JavaScript aldatu",
        "grant-editmyoptions": "Aldatu zure hobespenak",
        "rightslogtext": "Erabiltzaile eskubideetan izandako aldaketen erregistroa da hau.",
        "action-read": "orrialde hau irakurri",
        "action-edit": "orri hau aldatu",
-       "action-createpage": "orrialdeak sortu",
-       "action-createtalk": "eztabaida orrialdeak sortu",
+       "action-createpage": "Sortu orri hau",
+       "action-createtalk": "eztabaida orrialde hau sortu",
        "action-createaccount": "lankide hau sortu",
        "action-history": "orrialde honen historia ikusi",
        "action-minoredit": "markatu aldaketa hau txikitzat",
        "listgrouprights-removegroup-self-all": "Talde guztiak norbere kontutik ezabatu",
        "listgrouprights-namespaceprotection-namespace": "Izen-tartea",
        "listgrants": "Diru-laguntzak",
+       "listgrants-grant": "Baimena eman",
        "listgrants-rights": "Eskubideak",
+       "trackingcategories": "Jarraipen kategoriak",
+       "trackingcategories-msg": "Jarraipen kategoria",
        "trackingcategories-name": "Mezuaren izena",
        "trackingcategories-nodesc": "Ez dago deskribapenik eskuragarri.",
        "trackingcategories-disabled": "Kategoria desgaitua dago",
        "wlshowhideanons": "erabiltzaile anonimoak",
        "wlshowhidepatr": "Patruilatutako aldaketak",
        "wlshowhidemine": "nire edizioak",
+       "wlshowhidecategorization": "orrialdearen kategorizazioa",
        "watchlist-options": "Jarraitze-zerrendaren aukerak",
        "watching": "Zerrendan gehitzen...",
        "unwatching": "Zerrendatik kentzen...",
        "sessionfailure": "Badirudi saioarekin arazoren bat dagoela; bandalismoak saihesteko ekintza hau ezeztatu egin da. Mesedez, nabigatzaileko \"atzera\" botoian klik egin, hona ekarri zaituen orrialde hori berriz kargatu, eta saiatu berriz.",
        "changecontentmodel-title-label": "Orriaren izenburua",
        "changecontentmodel-reason-label": "Arrazoia:",
+       "changecontentmodel-submit": "Aldatu",
        "logentry-contentmodel-change-revertlink": "desegin",
        "logentry-contentmodel-change-revert": "desegin",
        "protectlogpage": "Babes erregistroa",
        "ipb-unblock": "Erabiltzaile izen edo IP helbide bati blokeoa kendu",
        "ipb-blocklist": "Blokeaketak ikusi",
        "ipb-blocklist-contribs": "{{GENDER:$1|$1(r)en}} ekarpenak",
+       "ipb-blocklist-duration-left": "gainerako $1",
        "unblockip": "Erabiltzailea desblokeatu",
        "unblockiptext": "Erabili beheko formularioa lehenago blokeatutako IP helbide edo erabiltzaile baten idazketa baimenak leheneratzeko.",
        "ipusubmit": "Blokeoa ezabatu",
        "confirm-watch-top": "Orrialde hau zure jarraipen-zerrendara gehitu?",
        "confirm-unwatch-button": "Ados",
        "confirm-unwatch-top": "Orrialde hau zure jarraipen-zerrendatik kendu?",
+       "confirm-rollback-button": "Ados",
        "quotation-marks": "«$1»",
        "imgmultipageprev": "&larr; aurreko orrialdea",
        "imgmultipagenext": "hurrengo orrialdea &rarr;",
        "expand_templates_generate_xml": "Erakutsi XML parse zuhaitza",
        "expand_templates_generate_rawhtml": "Erakutsi HTML gordina",
        "expand_templates_preview": "Aurreikusi",
-       "pagelanguage": "Orriaren hizkuntza aukeratu",
+       "pagelanguage": "Orriaren hizkuntza aldatu",
        "pagelang-name": "Orria",
        "pagelang-language": "Hizkuntza",
        "pagelang-use-default": "Hizkuntza lehenetsia erabili",
        "mw-widgets-dateinput-no-date": "Ez duzu datarik aukeratu",
        "mw-widgets-titleinput-description-new-page": "orri hori oraindik ez da existitzen",
        "mw-widgets-titleinput-description-redirect": "$1ra birzuzendu",
-       "sessionprovider-generic": "$1 sesio"
+       "sessionprovider-generic": "$1 sesio",
+       "log-action-filter-all": "Denak",
+       "log-action-filter-block-block": "Blokeatu",
+       "log-action-filter-block-reblock": "Blokeoa aldatu",
+       "log-action-filter-block-unblock": "blokeoa kendu",
+       "authmanager-email-label": "Emaila",
+       "authmanager-email-help": "Helbide elektronikoa",
+       "authmanager-realname-label": "Benetako izena",
+       "authmanager-realname-help": "Erabiltzailearen benetako izena",
+       "authprovider-resetpass-skip-label": "Utzi",
+       "authform-wrongtoken": "Token okerra"
 }
index 8c8cee9..5fa1a5d 100644 (file)
        "actionfailed": "عمل ناموفق بود",
        "deletedtext": "«$1» حذف شد.\nبرای سابقهٔ حذف‌های اخیر به $2 مراجعه کنید.",
        "dellogpage": "سیاههٔ حذف",
-       "dellogpagetext": "فهرست زیر فهرستی از آخرین حذف‌هاست.\nهمهٔ زمان‌های نشان‌داده‌شده زمان خادم (وقت گرینویچ) است.",
+       "dellogpagetext": "فهرست زیر فهرستی از آخرین حذف‌هاست.\nهمهٔ زمان‌های نشان‌داده‌شده زمان کارساز (وقت گرینویچ) است.",
        "deletionlog": "سیاههٔ حذف",
        "reverted": "به نسخهٔ قدیمی‌تر واگردانده شد",
        "deletecomment": "دلیل:",
        "confirmrecreate-noreason": "کاربر [[User:$1|$1]] ([[User talk:$1|بحث]]) این صفحه را پس از شروع ویرایش‌تان {{GENDER:$1|پاک}} کرده‌است.  لطفاً تأیید کنید که شما واقعاً می‌خواهید آن را دوباره ایجاد کنید.",
        "recreate": "باز ایجاد",
        "confirm_purge_button": "تأیید",
-       "confirm-purge-top": "پاککردن نسخهٔ حافظهٔ نهانی (Cache) این صفحه را تأیید می‌کنید؟",
+       "confirm-purge-top": "پاک کردن نسخهٔ حافظهٔ نهانی (Cache) این صفحه را تأیید می‌کنید؟",
        "confirm-purge-bottom": "خالی کردن میانگیر یک صفحه باعث می‌شود که آخرین نسخهٔ آن نمایش یابد.",
        "confirm-watch-button": "تأیید",
        "confirm-watch-top": "این صفحه به فهرست پی‌گیری‌های شما افزوده شود؟",
index 4d7507b..33bc465 100644 (file)
        "botpasswords-no-provider": "BotPasswordsSessionProvider n’est pas disponible.",
        "botpasswords-restriction-failed": "Les restrictions de mot de passe de robots empêchent cette connexion.",
        "botpasswords-invalid-name": "Le nom d’utilisateur spécifié ne contient pas de séparateur de mot de passe de robots (« $1 »).",
-       "botpasswords-not-exist": "L’utilisateur « $1 » n’a pas de nom de mot de passe de robots appelé « $2 ».",
+       "botpasswords-not-exist": "L’utilisateur « $1 » n’a pas le mot de passe de robots intitulé « $2 ».",
        "resetpass_forbidden": "Les mots de passe ne peuvent pas être changés",
        "resetpass_forbidden-reason": "Les mots de passe ne peuvent pas être modifiés : $1",
-       "resetpass-no-info": "Vous devez être connecté pour avoir accès à cette page.",
+       "resetpass-no-info": "Vous devez être connecté pour avoir accès directement à cette page.",
        "resetpass-submit-loggedin": "Changer de mot de passe",
        "resetpass-submit-cancel": "Annuler",
        "resetpass-wrong-oldpass": "Mot de passe actuel ou temporaire invalide.\nVous avez peut-être déjà changé votre mot de passe ou demandé un nouveau mot de passe temporaire.",
        "resetpass-expired": "Votre mot de passe a expiré. Veuillez en fournir un nouveau pour vous connecter.",
        "resetpass-expired-soft": "Votre mot de passe a expiré, et doit être réinitialisé. Veuillez en choisir un nouveau maintenant ou cliquer sur « {{int:authprovider-resetpass-skip-label}} » pour le faire plus tard.",
        "resetpass-validity-soft": "Votre mot de passe n’est pas valide : $1\n\nVeuillez choisir un nouveau mot de passe maintenant, ou cliquez sur « {{int:authprovider-resetpass-skip-label}} » pour le réinitialiser plus tard.",
-       "passwordreset": "Remise à zéro du mot de passe",
+       "passwordreset": "Réinitialisation du mot de passe",
        "passwordreset-text-one": "Remplissez ce formulaire pour réinitialiser votre mot de passe.",
        "passwordreset-text-many": "{{PLURAL:$1|Remplissez un des champs pour recevoir un mot de passe temporaire par courriel.}}",
        "passwordreset-disabled": "La réinitialisation des mots de passe a été désactivée sur ce wiki.",
        "passwordreset-email": "Adresse de courriel :",
        "passwordreset-emailtitle": "Détails du compte sur {{SITENAME}}",
        "passwordreset-emailtext-ip": "Quelqu’un (probablement vous, depuis l’adresse IP $1) a demandé un réinitialisation de votre mot de passe pour {{SITENAME}} ($4). {{PLURAL:$3|Le compte utilisateur suivant est associé|Les comptes utilisateurs suivants sont associés}} à cette adresse de courriel :\n\n$2\n\n{{PLURAL:$3|Ce mot de passe temporaire expirera|Ces mots de passe temporaires expireront}} dans {{PLURAL:$5|un jour|$5 jours}}. Vous devez maintenant vous connecter et choisir un nouveau mot de passe. Si cette demande ne provient pas de vous, ou que vous avez retrouvé votre mot de passe initial, et ne souhaitez plus le modifier, vous pouvez ignorer ce message et continuer à utiliser votre ancien mot de passe.",
-       "passwordreset-emailtext-user": "L’utilisateur $1 sur {{SITENAME}} a demandé un réinitialisation de votre mot de passe pour {{SITENAME}} ($4). {{PLURAL:$3|Le compte utilisateur suivant est associé|Les comptes utilisateurs suivants sont associés}} à cette adresse de courriel :\n\n$2\n\n{{PLURAL:$3|Ce mot de passe temporaire expirera|Ces mots de passe temporaires expireront}} dans {{PLURAL:$5|un jour|$5 jours}}. Vous devez maintenant vous connecter et choisir un nouveau mot de passe. Si cette demande ne provient pas de vous, ou que vous avez retrouvé votre mot de passe initial, et ne souhaitez plus le modifier, vous pouvez ignorer ce message et continuer à utiliser votre ancien mot de passe.",
+       "passwordreset-emailtext-user": "L’utilisateur $1 sur {{SITENAME}} a demandé une réinitialisation de votre mot de passe pour {{SITENAME}} ($4). {{PLURAL:$3|Le compte utilisateur suivant est associé|Les comptes utilisateurs suivants sont associés}} à cette adresse de courriel :\n\n$2\n\n{{PLURAL:$3|Ce mot de passe temporaire expirera|Ces mots de passe temporaires expireront}} dans {{PLURAL:$5|un jour|$5 jours}}. \nVous devez maintenant vous connecter et choisir un nouveau mot de passe. Si cette demande ne provient pas de vous, ou si vous avez retrouvé votre mot de passe initial, et ne souhaitez plus le modifier, vous pouvez ignorer ce message et continuer à utiliser votre ancien mot de passe.",
        "passwordreset-emailelement": "Nom d’utilisateur : \n$1\n\nMot de passe temporaire : \n$2",
        "passwordreset-emailsentemail": "Si cette adresse de courriel est associée à votre compte, alors un courriel de réinitialisation de mot de passe sera envoyé.",
        "passwordreset-emailsentusername": "S’il y a une adresse de courriel associée à ce nom d’utilisateur, alors un courriel de réinitialisation de mot de passe sera envoyé.",
        "editpage-cannot-use-custom-model": "Le modèle de contenu de cette page ne peut pas être modifié.",
        "longpageerror": "<strong>Erreur : Le texte que vous avez soumis fait {{PLURAL:$1|un Kio|$1 Kio}}, ce qui dépasse la limite fixée à {{PLURAL:$2|un Kio|$2 Kio}}.</strong>\nIl ne peut pas être sauvegardé.",
        "readonlywarning": "<strong>AVERTISSEMENT : la base de données a été verrouillée pour des opérations de maintenance. Vous ne pouvez donc pas publier vos modifications pour l’instant.</strong>\nVous pouvez copier et coller votre texte dans un fichier texte et l’enregistrer pour plus tard.\n\nL’administrateur système ayant verrouillé la base de données a donné l’explication suivante : $1",
-       "protectedpagewarning": "'''AVERTISSEMENT : cette page est protégée. Seuls les utilisateurs ayant le statut d'administrateur peuvent la modifier.'''<br />\nLa dernière entrée du journal est affichée ci-dessous pour référence :",
-       "semiprotectedpagewarning": "'''Note :''' Cette page a été protégée de telle façon que seuls les contributeurs enregistrés puissent la modifier. La dernière entrée du journal est affichée ci-dessous pour référence :",
+       "protectedpagewarning": "<strong>AVERTISSEMENT : cette page est protégée afin que seuls les utilisateurs ayant le statut d'administrateur puissent la modifier.</strong>\nLa dernière entrée du journal est affichée ci-dessous pour référence :",
+       "semiprotectedpagewarning": "<strong>Note :</strong>Cette page a été protégée de telle façon que seuls les contributeurs enregistrés puissent la modifier. \nLa dernière entrée du journal est affichée ci-dessous pour référence :",
        "cascadeprotectedwarning": "'''ATTENTION :''' Cette page a été protégée de manière à ce que seuls les administrateurs puissent la modifier car elle est transcluse dans {{PLURAL:$1|la page protégée suivante, qui a|les pages protégées suivantes, qui ont}} la « protection en cascade » activée :",
-       "titleprotectedwarning": "'''ATTENTION : Cette page a été protégée de telle manière que des [[Special:ListGroupRights|droits spécifiques]] sont requis pour pouvoir la créer.''' La dernière entrée du journal est affichée ci-dessous pour référence :",
+       "titleprotectedwarning": "<strong>ATTENTION : Cette page a été protégée de telle manière que des [[Special:ListGroupRights|droits spécifiques]] sont requis pour pouvoir la créer.</strong> \nLa dernière entrée du journal est affichée ci-dessous pour référence :",
        "templatesused": "{{PLURAL:$1|Modèle utilisé|Modèles utilisés}} par cette page :",
        "templatesusedpreview": "{{PLURAL:$1|Modèle utilisé|Modèles utilisés}} dans cette prévisualisation :",
        "templatesusedsection": "{{PLURAL:$1|Modèle utilisé|Modèles utilisés}} dans cette section :",
        "parser-unstrip-loop-warning": "Boucle non démontable détectée",
        "parser-unstrip-recursion-limit": "Limite de récursion non démontable dépassée ($1)",
        "converter-manual-rule-error": "Erreur détectée dans la règle manuelle de conversion de langue",
-       "undo-success": "Cette modification va être défaite. Veuillez vérifier les modifications ci-dessous, puis publier si c’est bien ce que vous voulez faire.",
+       "undo-success": "Cette modification va être défaite. \nVeuillez vérifier les différences ci-dessous, puis publier l'annulation si c’est bien ce que vous voulez faire.",
        "undo-failure": "Cette modification ne peut pas être défaite : cela entrerait en conflit avec les modifications intermédiaires.",
        "undo-norev": "La modification n’a pas pu être défaite parce qu’elle est inexistante ou qu’elle a été supprimée.",
        "undo-nochange": "Il semblerait que la modification ait déjà été annulée.",
        "last": "diff",
        "page_first": "première",
        "page_last": "dernière",
-       "histlegend": "Légende : ({{int:cur}}) = différence avec la version actuelle, ({{int:last}}) = différence avec la version précédente, <b>{{int:minoreditletter}}</b> = modification mineure",
+       "histlegend": "Diff de sélection: cochez les boîtes radio des révisions à comparer et appuyez sur entrée ou sur le bouton en bas.<br />\nLégende: <strong>({{int:cur}})</strong> = différence avec la dernière révision, <strong>({{int:last}})</strong> = différence avec la précédente révision, <strong>{{int:minoreditletter}}</strong> = modification mineure.",
        "history-fieldset-title": "Naviguer dans l’historique",
-       "history-show-deleted": "Masqués seulement",
+       "history-show-deleted": "Supprimés seulement",
        "histfirst": "les plus anciennes",
        "histlast": "les plus récentes",
        "historysize": "($1 octet{{PLURAL:$1||s}})",
        "historyempty": "(vide)",
        "history-feed-title": "Historique des versions",
-       "history-feed-description": "Historique pour cette page sur le wiki",
+       "history-feed-description": "Historique des versions pour cette page sur le wiki",
        "history-feed-item-nocomment": "$1 le $2",
-       "history-feed-empty": "La page demandée n'existe pas.\nElle a peut-être été effacée ou renommée.\nEssayez de [[Special:Search|rechercher sur le wiki]] pour trouver des pages en rapport.",
+       "history-feed-empty": "La page demandée n'existe pas.\nElle a peut-être été effacée ou renommée.\nEssayez de [[Special:Search|rechercher sur le wiki]] pour trouver de nouvelles pages en rapport avec le sujet.",
        "history-edit-tags": "Modifier les balises des révisions sélectionnées",
        "rev-deleted-comment": "(résumé de modification retiré)",
        "rev-deleted-user": "(nom d'utilisateur retiré)",
        "mergehistory-no-destination": "La page de destination $1 n'existe pas.",
        "mergehistory-invalid-source": "La page d'origine doit avoir un titre valide.",
        "mergehistory-invalid-destination": "La page de destination doit avoir un titre valide.",
-       "mergehistory-autocomment": "[[:$1]] fusionnée avec [[:$2]]",
-       "mergehistory-comment": "[[:$1]] fusionnée avec [[:$2]] : $3",
-       "mergehistory-same-destination": "Les pages d'origine et de destination ne peuvent pas être la même",
+       "mergehistory-autocomment": "[[:$1]] fusionnée dans [[:$2]]",
+       "mergehistory-comment": "[[:$1]] fusionnée dans [[:$2]] : $3",
+       "mergehistory-same-destination": "Les pages d'origine et de destination ne peuvent pas être les mêmes",
        "mergehistory-reason": "Motif :",
        "mergehistory-revisionrow": "$1 ($2) $3 — $4 $5 $6",
        "mergelog": "Journal des fusions",
        "revertmerge": "Séparer",
-       "mergelogpagetext": "Voici la liste des plus récentes fusions de l’historique d’une page dans celui d’une autre.",
+       "mergelogpagetext": "Voici la liste des fusions les plus récentes de l’historique d’une page dans celui d’une autre.",
        "history-title": "$1 : Historique des versions",
        "difference-title": "$1 : Différence entre versions",
        "difference-title-multipage": "Différences entre les pages « $1 » et « $2 »",
index 0f7c1d8..0b88513 100644 (file)
                        "Gothicspeaker"
                ]
        },
+       "tog-previewonfirst": "𐌰𐍄𐌰𐌿𐌲𐌴𐌹 𐍆𐌰𐌿𐍂𐌰𐍃𐌹𐌿𐌽 𐌰𐍄 𐍆𐍂𐌿𐌼𐌹𐍃𐍄𐌰 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽",
        "underline-always": "Sinteino",
        "underline-never": "𐌽𐌹 𐌰𐌹𐍅",
        "sunday": "𐌰𐍆𐌰𐍂𐍃𐌰𐌱𐌱𐌰𐍄𐍉",
        "monday": "𐌼𐌴𐌽𐌹𐌽𐍃 𐌳𐌰𐌲𐍃",
        "tuesday": "𐍄𐌴𐌹𐍅𐌹𐍃 𐌳𐌰𐌲𐍃",
-       "wednesday": "Midiwiko",
-       "thursday": "ð\90\8d\80ð\90\8c°ð\90\8c¹ð\90\8c½ð\90\8d\84ð\90\8c´𐌳𐌰𐌲𐍃",
-       "friday": "ð\90\8d\80ð\90\8c°ð\90\8d\82ð\90\8c´ð\90\8c¹ð\90\8c½ð\90\8d\83𐌳𐌰𐌲𐍃",
+       "wednesday": "𐍅𐍉𐌳𐌰𐌽𐌹𐍃 𐌳𐌰𐌲𐍃",
+       "thursday": "ð\90\8c¸ð\90\8c¿ð\90\8c½ð\90\8c°ð\90\8d\82ð\90\8c¹ð\90\8d\83 𐌳𐌰𐌲𐍃",
+       "friday": "ð\90\8d\86ð\90\8d\82ð\90\8c°ð\90\8c¿ð\90\8c¾ð\90\8d\89ð\90\8c½ð\90\8d\83 𐌳𐌰𐌲𐍃",
        "saturday": "𐍃𐌰𐌱𐌱𐌰𐍄𐍉",
        "sun": "𐍃𐌿𐌽",
        "mon": "𐌼𐌴𐌽",
-       "tue": "ð\90\8c°ð\90\8d\82ð\90\8c´",
+       "tue": "ð\90\8d\84ð\90\8c´ð\90\8c¹ð\90\8d\85",
        "wed": "𐍅𐍉𐌳",
-       "thu": "ð\90\8d\80ð\90\8c°ð\90\8c¹",
-       "fri": "ð\90\8d\86ð\90\8d\82ð\90\8c¹",
+       "thu": "ð\90\8c¸ð\90\8c¿ð\90\8c½",
+       "fri": "ð\90\8d\86ð\90\8d\82ð\90\8c°ð\90\8c¿",
        "sat": "𐍃𐌰𐌼",
        "january": "𐌾𐌰𐌽𐌿𐌰𐍂𐌴𐌹𐍃",
        "february": "𐍆𐌰𐌹𐌱𐍂𐌿𐌰𐍂𐌴𐌹𐍃",
        "october": "𐌰𐌿𐌺𐍄𐍉𐌱𐌰𐌹𐍂",
        "november": "𐌽𐌰𐌿𐌱𐌰𐌹𐌼𐌱𐌰𐌹𐍂",
        "december": "𐌾𐌹𐌿𐌻𐌴𐌹𐍃",
-       "january-gen": "ð\90\8c°ð\90\8d\86ð\90\8d\84ð\90\8c¿ð\90\8c¼ð\90\8c¹ð\90\8c½ð\90\8d\83 ð\90\8c¾ð\90\8c¹ð\90\8c¿ð\90\8c»ð\90\8c´ð\90\8c¹𐍃",
-       "february-gen": "ð\90\8d\86ð\90\8c°ð\90\8c¹ð\90\8c±ð\90\8d\82ð\90\8c¿ð\90\8c°ð\90\8d\82ð\90\8c´ð\90\8c¹𐍃",
-       "march-gen": "ð\90\8cºð\90\8c°ð\90\8c»ð\90\8c³ð\90\8c¼ð\90\8c´ð\90\8c½ð\90\8d\89ð\90\8c¸ð\90\8c¹𐍃",
-       "april-gen": "ð\90\8c²ð\90\8d\82ð\90\8c°ð\90\8d\83ð\90\8c¼ð\90\8c´ð\90\8c½ð\90\8d\89ð\90\8c¸𐌹𐍃",
-       "may-gen": "ð\90\8c±ð\90\8c»ð\90\8d\89ð\90\8c¼ð\90\8c°ð\90\8c¼ð\90\8c´ð\90\8c½ð\90\8d\89ð\90\8c¸ð\90\8c¹𐍃",
-       "june-gen": "ð\90\8d\85ð\90\8c°ð\90\8d\82ð\90\8c¼ð\90\8c¼ð\90\8c´ð\90\8c½ð\90\8d\89ð\90\8c¸ð\90\8c¹𐍃",
-       "july-gen": "ð\90\8c·ð\90\8c°ð\90\8d\85ð\90\8c¹ð\90\8c¼ð\90\8c´ð\90\8c½ð\90\8d\89ð\90\8c¸ð\90\8c¹𐍃",
-       "august-gen": "ð\90\8c°ð\90\8d\83ð\90\8c°ð\90\8c½ð\90\8c¼ð\90\8c´ð\90\8c½ð\90\8d\89ð\90\8c¸ð\90\8c¹𐍃",
-       "september-gen": "ð\90\8c°ð\90\8cºð\90\8d\82ð\90\8c°ð\90\8c½ð\90\8c¼ð\90\8c´ð\90\8c½ð\90\8d\89ð\90\8c¸ð\90\8c¹ð\90\8d\83",
-       "october-gen": "ð\90\8d\85ð\90\8c´ð\90\8c¹ð\90\8c½ð\90\8c¼ð\90\8c´ð\90\8c½ð\90\8d\89ð\90\8c¸ð\90\8c¹ð\90\8d\83",
-       "november-gen": "ð\90\8d\86ð\90\8d\82ð\90\8c¿ð\90\8c¼ð\90\8c¹ð\90\8c½ð\90\8d\83 ð\90\8c¾ð\90\8c¹ð\90\8c¿ð\90\8c»ð\90\8c´ð\90\8c¹ð\90\8d\83",
-       "december-gen": "ð\90\8c¾ð\90\8c¹ð\90\8c¿ð\90\8c»ð\90\8c´ð\90\8c¹𐍃",
+       "january-gen": "ð\90\8c¾ð\90\8c°ð\90\8c½ð\90\8c¿ð\90\8c°ð\90\8d\82ð\90\8c¾ð\90\8d\89𐍃",
+       "february-gen": "ð\90\8d\86ð\90\8c°ð\90\8c¹ð\90\8c±ð\90\8d\82ð\90\8c¿ð\90\8c°ð\90\8d\82ð\90\8c¾ð\90\8d\89𐍃",
+       "march-gen": "ð\90\8c¼ð\90\8c°ð\90\8d\82ð\90\8d\84ð\90\8c¹ð\90\8c°ð\90\8c¿𐍃",
+       "april-gen": "ð\90\8c°ð\90\8d\80ð\90\8d\82ð\90\8c´ð\90\8c¹ð\90\8c»𐌹𐍃",
+       "may-gen": "ð\90\8c¼ð\90\8c°ð\90\8c¾ð\90\8c°ð\90\8c¿𐍃",
+       "june-gen": "ð\90\8c¾ð\90\8c¿ð\90\8c½ð\90\8c¹ð\90\8c°ð\90\8c¿𐍃",
+       "july-gen": "ð\90\8c¾ð\90\8c¿ð\90\8c»ð\90\8c¹ð\90\8c°ð\90\8c¿𐍃",
+       "august-gen": "ð\90\8c°ð\90\8c²ð\90\8c¿ð\90\8d\83ð\90\8d\84ð\90\8c°ð\90\8c¿𐍃",
+       "september-gen": "ð\90\8d\83ð\90\8c°ð\90\8c¹ð\90\8d\80ð\90\8d\84ð\90\8c°ð\90\8c¹ð\90\8c¼ð\90\8c±ð\90\8c°ð\90\8c¹ð\90\8d\82",
+       "october-gen": "ð\90\8c°ð\90\8c¿ð\90\8cºð\90\8d\84ð\90\8d\89ð\90\8c±ð\90\8c°ð\90\8c¹ð\90\8d\82",
+       "november-gen": "ð\90\8c½ð\90\8c°ð\90\8c¿ð\90\8c±ð\90\8c°ð\90\8c¹ð\90\8c¼ð\90\8c±ð\90\8c°ð\90\8c¹ð\90\8d\82",
+       "december-gen": "ð\90\8c¾ð\90\8c¹ð\90\8c¿ð\90\8c»ð\90\8c¾ð\90\8d\89𐍃",
        "jan": "𐌾𐌰𐌽",
        "feb": "𐍆𐌰𐌽",
        "mar": "𐌼𐌰𐍂",
        "oct": "𐌰𐌿𐌺",
        "nov": "𐌽𐌰𐌿𐌱",
        "dec": "𐌳𐌰𐌹𐌺",
+       "january-date": "𐌾𐌰𐌽𐌿𐌰𐍂𐌴𐌹𐍃 $1",
+       "february-date": "𐍆𐌰𐌹𐌱𐍂𐌿𐌰𐍂𐌴𐌹𐍃 $1",
+       "march-date": "𐌼𐌰𐍂𐍄𐌹𐌿𐍃 $1",
+       "april-date": "𐌰𐍀𐍂𐌹𐌻𐌹𐍃 $1",
        "september-date": "𐍃𐌰𐌹𐍀𐍄𐌰𐌹𐌼𐌱𐌰𐌹𐍂 $1",
        "november-date": "𐌽𐌰𐌿𐌱𐌰𐌹𐌼𐌱𐌰𐌹𐍂 $1",
        "pagecategories": "{{PLURAL:$1|𐌺𐌿𐌽𐌹|𐌺𐌿𐌽𐌾𐌰}}",
@@ -70,7 +75,9 @@
        "subcategories": "𐌼𐌹𐌽𐌽𐌹𐌶𐍉𐌽𐌰 𐌺𐌿𐌽𐌾𐌰",
        "category-media-header": "𐌼𐌴𐌳𐌾𐌰 𐌹𐌽𐌽 𐌺𐌿𐌽𐌾𐌰 \"$1\"",
        "hidden-categories": "{{PLURAL:$1|𐌰𐍆𐍆𐌹𐌻𐌷𐌰𐌽 𐌺𐌿𐌽𐌹|𐌰𐍆𐍆𐌹𐌻𐌷𐌰𐌽𐌰 𐌺𐌿𐌽𐌾𐌰}}",
+       "hidden-category-category": "𐌰𐍆𐍆𐌹𐌻𐌷𐌰𐌽𐌰 𐌺𐌿𐌽𐌾𐌰",
        "category-subcat-count": "{{PLURAL:$2|𐌸𐌰𐍄𐌰 𐌺𐌿𐌽𐌹 𐌷𐌰𐌱𐌰𐌹𐌸 𐌸𐌰𐍄𐌴𐌹𐌽𐌴𐌹 𐌹𐍆𐍄𐌿𐌼 𐌼𐌹𐌽𐌽𐌹𐌶𐍉𐌽 𐌺𐌿𐌽𐌹|𐌸𐌰𐍄𐌰 𐌺𐌿𐌽𐌹 𐌷𐌰𐌱𐌰𐌹𐌸 {{PLURAL:$1|𐌼𐌹𐌽𐌽𐌹𐌶𐍉𐌽 𐌺𐌿𐌽𐌹|𐌹𐍆𐍄𐌿𐌼𐌰 $1 𐌼𐌹𐌽𐌽𐌹𐌶𐍉𐌽𐌰 𐌺𐌿𐌽𐌾𐌰}}, 𐌰𐌻𐌻𐌰𐌹𐌶𐌴 $2 𐌺𐌿𐌽𐌾𐌴.}}",
+       "category-subcat-count-limited": "𐌸𐌰𐍄𐌰 𐌺𐌿𐌽𐌹 𐌷𐌰𐌱𐌰𐌹𐌸 𐌹𐍆𐍄𐌿𐌼𐍉𐌽/𐌹𐍆𐍄𐌿𐌼𐍉𐌽𐌰\n{{PLURAL:$1|𐌼𐌹𐌽𐌽𐌹𐌶𐍉𐌽 𐌺𐌿𐌽𐌹|$1 𐌼𐌹𐌽𐌽𐌹𐌶𐍉𐌽𐌰 𐌺𐌿𐌽𐌾𐌰}}.",
        "category-article-count": "{{PLURAL:$2|𐌸𐌰𐍄𐌰 𐌺𐌿𐌽𐌹 𐌷𐌰𐌱𐌰𐌹𐌸 𐌸𐌰𐍄𐌰𐌹𐌽𐌴𐌹 𐌹𐍆𐍄𐌿𐌼𐌰𐌽 𐌻𐌰𐌿𐍆.|𐌹𐍆𐍄𐌿𐌼𐌰(𐌽𐍃) {{PLURAL:$1|𐌻𐌰𐌿𐍆𐍃 𐌹𐍃𐍄|$1 𐌻𐌰𐌿𐌱𐍉𐍃 𐍃𐌹𐌽𐌳}} 𐌹𐌽 𐌸𐌰𐌼𐌼𐌰 𐌺𐌿𐌽𐌾𐌰, 𐌰𐌻𐌻𐌰𐌹𐌶𐌴 $2 𐌻𐌰𐌿𐌱𐌴.}}",
        "about": "𐌱𐌹",
        "article": "𐌷𐌰𐌱𐌰𐌽𐌳𐍃 𐌻𐌰𐌿𐍆𐍃",
        "history_short": "𐍃𐍀𐌹𐌻𐌻",
        "printableversion": "𐌿𐍃𐌼𐌴𐍂𐌴𐌹𐌽𐍃 𐌳𐌿 𐌿𐍃𐌼𐌴𐌻𐌾𐌰𐌽",
        "permalink": "𐌰𐌹𐍅𐌴𐌹𐌽𐌰 𐌲𐌰𐍅𐌹𐍃𐍃",
+       "print": "𐌿𐍃𐌼𐌴𐌻𐌴𐌹",
        "view": "𐍃𐌰𐌹𐍈",
        "view-foreign": "𐍃𐌰𐌹𐍈 𐌰𐌽𐌰 $1",
        "edit": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹",
        "create-this-page": "𐍃𐌺𐌰𐍀𐌴𐌹 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆",
        "delete": "𐍆𐍂𐌰𐌵𐌹𐍃𐍄𐌴𐌹",
        "deletethispage": "𐍆𐍂𐌰𐌵𐌹𐍃𐍄𐌴𐌹 𐌸𐌰𐌼𐌼𐌰 𐌻𐌰𐌿𐌱𐌰",
-       "protect": "𐌱𐌰𐌹𐍂𐌲𐌰𐌽",
+       "undeletethispage": "𐌽𐌰𐍃𐌴𐌹 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆",
+       "protect": "𐍆𐍂𐌹𐌸",
        "protect_change": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹",
        "protectthispage": "𐍆𐍂𐌹𐌸 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆",
        "unprotect": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹 𐌼𐌿𐌽𐌳",
        "talk": "𐌲𐌰𐍅𐌰𐌿𐍂𐌳𐌾𐌰",
        "views": "𐍃𐌹𐌿𐌽𐌴𐌹𐍃",
        "toolbox": "𐍃𐌰𐍂𐍅𐌰𐌽𐍃",
+       "projectpage": "𐌰𐌽𐌳𐌷𐌿𐌻𐌴𐌹 𐍆𐌰𐌿𐍂𐌰𐍅𐌰𐌿𐍂𐍀𐌰𐌻𐌰𐌿𐍆",
+       "viewhelppage": "𐌰𐌽𐌳𐌷𐌿𐌻𐌴𐌹 𐌷𐌹𐌻𐍀𐌰𐌻𐌰𐌿𐍆",
        "otherlanguages": "𐌰𐌽𐌸𐌰𐍂𐌰𐌹𐌼 𐍂𐌰𐌶𐌳𐍉𐌼",
        "redirectedfrom": "(𐌹𐍃 𐍄𐌹𐌿𐌷𐌰𐌽𐍃/𐍄𐌹𐌿𐌷𐌰𐌽𐌰 𐌷𐌹𐌳𐍂𐌴 𐍆𐍂𐌰𐌼 $1)",
        "redirectpagesub": "𐌰𐌻𐌾𐌰𐍂 𐌱𐍂𐌹𐌲𐌲𐌰𐌽𐌳𐍃 𐌻𐌰𐌿𐍆𐍃",
        "lastmodifiedat": "𐍃𐌰 𐌻𐌰𐌿𐍆𐍃 𐌸𐌰𐍄𐌰 𐌰𐍆𐍄𐌿𐌼𐌹𐍃𐍄 𐌹𐌽𐌼𐌰𐌹𐌳𐌹𐌸𐍃 𐍅𐌰𐍃 ($1) ($2).",
+       "protectedpage": "𐍆𐍂𐌹𐌸𐍉𐌽𐍃 𐌻𐌰𐌿𐍆𐍃",
        "jumpto": "𐌲𐌰𐌲𐌲 𐌳𐌿:",
        "jumptonavigation": "𐌻𐌰𐌿𐌱𐌰𐌲𐌰𐍅𐌹𐍃𐍃𐌴𐌹𐍃",
        "jumptosearch": "𐍃𐍉𐌺𐌴𐌹",
+       "pool-errorunknown": "𐌽𐌰𐍃𐌴𐌹 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆",
        "aboutsite": "𐌱𐌹 {{SITENAME}}",
        "aboutpage": "Project:𐌱𐌹",
        "copyrightpage": "{{ns:project}}:𐌼𐌰𐌽𐌻𐌴𐌹𐌺𐌰𐍅𐌹𐍄𐍉𐌸𐌰",
        "privacy": "𐌲𐌰𐍂𐌴𐌳𐌴𐌹𐌽𐍉𐍃 𐍃𐌿𐌽𐌳𐍂𐍉𐍅𐌹𐍃𐌰𐌽𐌰",
        "privacypage": "Project:𐌲𐌰𐍂𐌰𐌹𐌳𐌴𐌹𐌽𐍉𐍃 𐍃𐌿𐌽𐌳𐍂𐍉𐍅𐌹𐍃𐌰𐌽𐌰",
        "retrievedfrom": "𐌲𐌰𐌽𐌿𐌼𐌰𐌽 𐍆𐍂𐌰𐌼 \"$1\"",
-       "youhavenewmessages": "𐌸𐌿 𐌷𐌰𐌱𐌹𐍃 $1 ($2).",
+       "youhavenewmessages": "{{PLURAL:$3|𐌷𐌰𐌱𐌰𐌹𐍃}} $1 ($2).",
        "editsection": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹",
        "editold": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹",
        "editlink": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹",
        "createacct-yourpasswordagain": "𐌲𐌰𐍃𐌹𐌲𐌻𐌴𐌹 𐌲𐌰𐌼𐍉𐍄𐌰𐍅𐌰𐌿𐍂𐌳",
        "createacct-yourpasswordagain-ph": "𐌼𐌴𐌻𐌴𐌹 𐌲𐌰𐌼𐍉𐍄𐌰𐍅𐌰𐌿𐍂𐌳 𐌰𐍆𐍄𐍂𐌰",
        "userlogin-remembermypassword": "𐌲𐌰𐍆𐌰𐍃𐍄 𐌼𐌹𐌺 𐌰𐍄𐌲𐌰𐌲𐌲𐌰𐌽𐌰𐌽𐌰/𐌰𐍄𐌲𐌰𐌲𐌲𐌰𐌽𐌰",
-       "login": "Atgaggan",
+       "login": "𐌰𐍄𐌲𐌰𐌲𐌲",
        "nav-login-createaccount": "𐌰𐍄𐌲𐌰𐌲𐌲𐌰𐌽 / 𐌲𐌰𐌻𐌰𐌽𐌲𐌾𐌰𐌽 𐌽𐌹𐌿𐍄𐌰𐌽𐌳𐌹𐍃",
        "userlogin": "Atgaggan / gaskapjan niutandis",
-       "userloginnocreate": "𐌰𐍄𐌲𐌰𐌲𐌲𐌰𐌽",
-       "logout": "ð\90\8c»ð\90\8c´ð\90\8c¹ð\90\8c¸ð\90\8c°ð\90\8c½",
-       "userlogout": "ð\90\8c»ð\90\8c´ð\90\8c¹ð\90\8c¸ð\90\8c°ð\90\8c½",
+       "userloginnocreate": "𐌰𐍄𐌲𐌰𐌲𐌲",
+       "logout": "ð\90\8c°ð\90\8d\86ð\90\8c»ð\90\8c´ð\90\8c¹ð\90\8c¸",
+       "userlogout": "ð\90\8c°ð\90\8d\86ð\90\8c»ð\90\8c´ð\90\8c¹ð\90\8c¸",
        "userlogin-noaccount": "𐌽𐌹 𐌷𐌰𐌱𐌰𐌹𐍃 𐌺𐌰𐍅𐍄𐍃𐌾𐍉𐌽?",
        "userlogin-joinproject": "𐌲𐌰𐌼𐌰𐌹𐌽𐌴𐌹 {{SITENAME}}",
-       "nologinlink": "Gaskapjan þein niutandis",
-       "createaccount": "ð\90\8c²ð\90\8c°ð\90\8c»ð\90\8c°ð\90\8c²ð\90\8c¾ð\90\8c°ð\90\8c½ ð\90\8c½ð\90\8c¹ð\90\8c¿ð\90\8d\84ð\90\8c°ð\90\8c½ð\90\8c³ð\90\8c¹ð\90\8d\83",
-       "gotaccount": "Habiþ þu niutandis? '''$1'''",
-       "gotaccountlink": "Atgaggan",
+       "nologinlink": "𐍃𐌺𐌰𐍀𐌴𐌹 𐌺𐌰𐍅𐍄𐍃𐌾𐍉𐌽",
+       "createaccount": "ð\90\8d\83ð\90\8cºð\90\8c°ð\90\8d\80ð\90\8c´ð\90\8c¹ ð\90\8cºð\90\8c°ð\90\8d\85ð\90\8d\84ð\90\8d\83ð\90\8c¾ð\90\8d\89ð\90\8c½",
+       "gotaccount": "𐌾𐌿 𐌺𐌰𐍅𐍄𐍃𐌾𐍉𐌽 𐌷𐌰𐌱𐌰𐌹𐍃? $1.",
+       "gotaccountlink": "𐌰𐍄𐌲𐌰𐌲𐌲",
        "userlogin-resetpassword-link": "𐌿𐍆𐌰𐍂𐌼𐌿𐌽𐌽𐍉𐌳𐌴𐍃 𐌸𐌴𐌹𐌽𐌰𐌼𐌼𐌰 𐌲𐌰𐌼𐍉𐍄𐌰𐍅𐌰𐌿𐍂𐌳𐌰?",
        "userlogin-helplink2": "𐌷𐌹𐌻𐍀𐌰 𐌼𐌹𐌸 𐌰𐍄𐌲𐌰𐌲𐌲𐌰",
        "createacct-emailoptional": "𐌴-𐌱𐍉𐌺𐍉𐍃 (𐌼𐌰𐌷𐍄𐌴𐌹𐌲𐍉𐍃)",
        "createacct-email-ph": "𐌼𐌴𐌻𐌴𐌹 𐌸𐌴𐌹𐌽𐍉𐍃 𐌴-𐌱𐍉𐌺𐍉𐍃",
-       "createaccountreason": "ð\90\8d\86ð\90\8c°ð\90\8c¹ð\90\8d\82ð\90\8c¹ð\90\8c½ð\90\8c°:",
-       "createacct-reason": "ð\90\8d\86ð\90\8c°ð\90\8c¹ð\90\8d\82ð\90\8c¹ð\90\8c½ð\90\8c°",
+       "createaccountreason": "ð\90\8c²ð\90\8d\82ð\90\8c¿ð\90\8c½ð\90\8c³ð\90\8c¿ð\90\8d\83:",
+       "createacct-reason": "ð\90\8c²ð\90\8d\82ð\90\8c¿ð\90\8c½ð\90\8c³ð\90\8c¿ð\90\8d\83",
        "createacct-submit": "𐍃𐌺𐌰𐍀𐌴𐌹 𐌸𐌴𐌹𐌽𐌰 𐌺𐌰𐍅𐍄𐍃𐌾𐍉𐌽",
        "createacct-benefit-heading": "{{SITENAME}} 𐍄𐌰𐍅𐌹𐌸 𐌹𐍃𐍄 𐍆𐍂𐌰𐌼 𐌼𐌰𐌽𐌽𐌰𐌼 𐍃𐍅𐌴 𐌸𐌿𐌺.",
        "createacct-benefit-body1": "{{PLURAL:$1|𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍃|𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉𐍃}}",
        "pt-login-button": "𐌰𐍄𐌲𐌰𐌲𐌲",
        "pt-createaccount": "𐍃𐌺𐌰𐍀𐌴𐌹 𐌺𐌰𐍅𐍄𐍃𐌾𐍉𐌽",
        "passwordreset": "𐌰𐍆𐍄𐍂𐌰 𐍃𐌰𐍄𐌴𐌹 𐌲𐌰𐌼𐍉𐍄𐌰𐍅𐌰𐌿𐍂𐌳",
-       "bold_sample": "ð\90\8c°ð\90\8c±ð\90\8d\82ð\90\8d\83 ð\90\8c±ð\90\8d\89ð\90\8cºð\90\8c°",
-       "bold_tip": "ð\90\8c°ð\90\8c±ð\90\8d\82 ð\90\8d\85ð\90\8c°ð\90\8c¿ð\90\8d\82ð\90\8c³ð\90\8c°",
-       "italic_sample": "ð\90\8d\85ð\90\8d\82ð\90\8c°ð\90\8c¹ð\90\8cµð\90\8d\83 ð\90\8d\85ð\90\8c°ð\90\8c¿ð\90\8d\82ð\90\8c³ð\90\8c°",
-       "italic_tip": "ð\90\8c³ð\90\8d\82ð\90\8c¹ð\90\8c¿ð\90\8d\83ð\90\8d\89 ð\90\8c±ð\90\8d\89ð\90\8cºð\90\8c°",
-       "link_sample": "ð\90\8d\84ð\90\8c°ð\90\8c¹ð\90\8cºð\90\8c¾ð\90\8c°ð\90\8c½ð\90\8c±ð\90\8c°ð\90\8c½ð\90\8c³ð\90\8c¹ ð\90\8c½ð\90\8c°ð\90\8c¼ð\90\8d\89",
-       "link_tip": "ð\90\8d\84ð\90\8c°ð\90\8c¹ð\90\8cºð\90\8c¾ð\90\8c°ð\90\8c½ð\90\8c±ð\90\8c°ð\90\8c½ð\90\8c³ð\90\8c¹ ð\90\8c¹ð\90\8c½ð\90\8c½ð\90\8c°ð\90\8c½ð\90\8c°",
-       "extlink_sample": "http://www.example.com ð\90\8d\84ð\90\8c°ð\90\8c¹ð\90\8cºð\90\8c¾ð\90\8c°ð\90\8c½ð\90\8c³ð\90\8c°ð\90\8c½ð\90\8c³ð\90\8c¹ ð\90\8c½ð\90\8c°ð\90\8c¼ð\90\8d\89",
-       "extlink_tip": "Uta táikjabandi (maúdjan http://)",
-       "headline_sample": "ð\90\8c·ð\90\8c°ð\90\8c¿ð\90\8c±ð\90\8c¹ð\90\8c³ð\90\8c°ð\90\8d\85ð\90\8c°ð\90\8c¿ð\90\8d\82ð\90\8c³ð\90\8c°",
-       "headline_tip": "ð\90\8c·ð\90\8c°ð\90\8c¿ð\90\8c·ð\90\8d\83 ð\90\8c·ð\90\8c°ð\90\8c¿ð\90\8c±ð\90\8c¹ð\90\8c³ð\90\8c°ð\90\8c±ð\90\8d\89ð\90\8cºð\90\8c° â\80¢ð\90\8c±â\80¢",
+       "bold_sample": "ð\90\8d\83ð\90\8d\85ð\90\8c¹ð\90\8c½ð\90\8c¸ð\90\8d\89ð\90\8d\83 ð\90\8c±ð\90\8d\89ð\90\8cºð\90\8d\89ð\90\8d\83",
+       "bold_tip": "ð\90\8d\83ð\90\8d\85ð\90\8c¹ð\90\8c½ð\90\8c¸ð\90\8d\89ð\90\8d\83 ð\90\8c±ð\90\8d\89ð\90\8cºð\90\8d\89ð\90\8d\83",
+       "italic_sample": "ð\90\8d\85ð\90\8d\82ð\90\8c°ð\90\8c¹ð\90\8cµð\90\8d\89ð\90\8d\83 ð\90\8c±ð\90\8d\89ð\90\8cºð\90\8d\89ð\90\8d\83",
+       "italic_tip": "ð\90\8d\85ð\90\8d\82ð\90\8c°ð\90\8c¹ð\90\8cµð\90\8d\89ð\90\8d\83 ð\90\8c±ð\90\8d\89ð\90\8cºð\90\8d\89ð\90\8d\83",
+       "link_sample": "ð\90\8c²ð\90\8c°ð\90\8d\85ð\90\8c¹ð\90\8d\83ð\90\8d\83ð\90\8c¹-ð\90\8c¿ð\90\8d\86ð\90\8c°ð\90\8d\82ð\90\8c¼ð\90\8c´ð\90\8c»ð\90\8c¹",
+       "link_tip": "ð\90\8c¹ð\90\8c½ð\90\8c½ð\90\8c°ð\90\8c½ð\90\8c° ð\90\8c²ð\90\8c°ð\90\8d\85ð\90\8c¹ð\90\8d\83ð\90\8d\83",
+       "extlink_sample": "http://www.example.com ð\90\8c²ð\90\8c°ð\90\8d\85ð\90\8c¹ð\90\8d\83ð\90\8d\83ð\90\8c¹-ð\90\8c¿ð\90\8d\86ð\90\8c°ð\90\8d\82ð\90\8c¼ð\90\8c´ð\90\8c»ð\90\8c¹",
+       "extlink_tip": "𐌿𐍄𐌰𐌲𐌰𐍅𐌹𐍃𐍃 (𐌲𐌰𐌼𐌹𐌽𐌸𐌴𐌹 http:// 𐍆𐌰𐌿𐍂𐌰𐌻𐌰𐌲𐌴𐌹𐌽𐍃)",
+       "headline_sample": "ð\90\8c¿ð\90\8d\86ð\90\8c°ð\90\8d\82ð\90\8d\83ð\90\8d\84ð\90\8d\82ð\90\8c¹ð\90\8cºð\90\8c°ð\90\8c±ð\90\8d\89ð\90\8cºð\90\8d\89ð\90\8d\83",
+       "headline_tip": "ð\90\8c·ð\90\8c°ð\90\8c¿ð\90\8c·ð\90\8c¹ð\90\8c¸ð\90\8c° â\80¢ð\90\8c±â\80¢ ð\90\8c¿ð\90\8d\86ð\90\8c°ð\90\8d\82ð\90\8d\83ð\90\8d\84ð\90\8d\82ð\90\8c¹ð\90\8cºð\90\8d\83",
        "nowiki_sample": "𐍃𐌰𐍄𐌾𐌴𐌹 𐌿𐌽𐍃𐌽𐌴𐌹𐌸𐌾𐌰𐌽𐌳𐍃 𐍄𐌴𐌺𐍃𐍄 𐌱𐍉𐌺𐌰𐍅𐌰𐌿𐍂𐌳𐌰𐌼 𐌷𐌹𐍄",
        "nowiki_tip": "𐌿𐌽𐍅𐌹𐍄𐌾𐌹𐍃 𐍅𐌹𐌺𐌹𐍃𐌽𐌴𐌹𐌸𐌾𐌰𐌽𐌳𐍃",
        "image_tip": "𐌹𐌽𐌽𐌱𐍉𐌳𐌰𐌽𐍃 𐍆𐌴𐌹𐌻𐌰",
        "media_tip": "𐍄𐌰𐌹𐌺𐌾𐌰𐌱𐌰𐌽𐌳𐌾𐌹𐍃 𐍆𐌴𐌹𐌻𐌰𐌽𐌹𐍃",
-       "sig_tip": "ð\90\8c¿ð\90\8c½ð\90\8c³ð\90\8c°ð\90\8d\82ð\90\8c¼ð\90\8c´ð\90\8c» ð\90\8c¸ð\90\8c´ð\90\8c¹ð\90\8c½ð\90\8c° ð\90\8c¼ð\90\8c¹ð\90\8c¸ ð\90\8d\83ð\90\8d\84ð\90\8c¿ð\90\8c½ð\90\8c³ð\90\8c°𐌼𐌴𐌻𐌰",
+       "sig_tip": "ð\90\8c¸ð\90\8c´ð\90\8c¹ð\90\8c½ð\90\8c° ð\90\8c¿ð\90\8d\86ð\90\8c¼ð\90\8c´ð\90\8c»ð\90\8c´ð\90\8c¹ð\90\8c½ð\90\8d\83 ð\90\8c¼ð\90\8c¹ð\90\8c¸ ð\90\8c²ð\90\8c»ð\90\8c°ð\90\8c²ð\90\8c²ð\90\8d\85ð\90\8c°ð\90\8c¼ð\90\8c¼ð\90\8c° 𐌼𐌴𐌻𐌰",
        "hr_tip": "𐍂𐌰𐌹𐌷𐍄𐍃𐌱𐌰𐌿𐍂𐌳 (𐌱𐍂𐌿𐌺𐌾𐌰𐌽 𐌼𐌹𐌸 𐌽𐌹𐌿𐍆𐌰𐍂𐌿𐍃𐍃𐌿𐍃)",
-       "summary": "ð\90\8c¼ð\90\8c°ð\90\8c¹ð\90\8c³ð\90\8c¾ð\90\8c°ð\90\8c½ð\90\8d\83ð\90\8d\80ð\90\8c¹ð\90\8c»ð\90\8c»ð\90\8d\89ð\90\8c½:",
+       "summary": "ð\90\8c¼ð\90\8c°ð\90\8c¿ð\90\8d\82ð\90\8c²ð\90\8c¿ð\90\8d\83 ð\90\8d\83ð\90\8cºð\90\8c´ð\90\8c¹ð\90\8d\82ð\90\8c´ð\90\8c¹ð\90\8c½ð\90\8d\83:",
        "subject": "𐌿𐍆𐍅𐌰𐌿𐍂𐍀𐌰:",
        "minoredit": "𐌸𐌰𐍄𐌰 𐌹𐍃𐍄 𐌼𐌹𐌽𐌽𐌹𐌶𐌴𐌹 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍃",
        "watchthis": "𐌰𐍄𐍅𐌹𐍄 𐌻𐌰𐌿𐌱𐌰",
        "savearticle": "𐌲𐌰𐍆𐌰𐍃𐍄 𐌻𐌰𐌿𐍆",
-       "preview": "ð\90\8d\86ð\90\8c°ð\90\8c¿ð\90\8d\82ð\90\8d\83ð\90\8c°ð\90\8c¹ð\90\8d\88ð\90\8c° ð\90\8d\83ð\90\8c´ð\90\8c¹ð\90\8c³ð\90\8d\89",
-       "showpreview": "ð\90\8d\85ð\90\8c¹ð\90\8d\84ð\90\8c°ð\90\8c½ ð\90\8d\86ð\90\8c°ð\90\8c¿ð\90\8d\82ð\90\8d\83ð\90\8c°ð\90\8c¹ð\90\8d\88ð\90\8c°",
+       "preview": "ð\90\8d\86ð\90\8c°ð\90\8c¿ð\90\8d\82ð\90\8c°ð\90\8d\83ð\90\8c¹ð\90\8c¿ð\90\8c½ð\90\8d\83",
+       "showpreview": "ð\90\8c°ð\90\8d\84ð\90\8c°ð\90\8c¿ð\90\8c²ð\90\8c´ð\90\8c¹ ð\90\8d\86ð\90\8c°ð\90\8c¿ð\90\8d\82ð\90\8c°ð\90\8d\83ð\90\8c¹ð\90\8c¿ð\90\8c½",
        "showdiff": "𐌰𐍄𐌰𐌿𐌲𐌴𐌹 𐌹𐌽𐌼𐌰𐌹𐌳𐌹𐌽𐌹𐌽𐍃",
        "loginreqlink": "𐌰𐍄𐌲𐌰𐌲𐌲",
-       "newarticle": "(Niu)",
+       "newarticle": "(𐌽𐌹𐌿𐌾𐌰𐍄𐌰)",
        "newarticletext": "𐌻𐌰𐌹𐍃𐍄𐌹𐌳𐌴𐍃 𐌲𐌰𐍅𐌹𐍃 𐌳𐌿 𐌻𐌰𐌿𐌱𐌰 𐍃𐌰𐌴𐌹 𐌽𐌹𐍃𐍄. 𐌳𐌿 𐍃𐌺𐌰𐍀𐌾𐌰𐌽 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆, 𐌰𐌽 𐌰𐍃𐍄𐍉𐌳𐌴𐌹 𐌼𐌴𐌻𐌾𐌰𐌽 𐌹𐌽 𐌰𐍂𐌺𐌰𐌹 𐌿𐍆 (𐍃𐌰𐌹𐍈 [$1 𐌷𐌹𐌻𐍀𐌰𐌻𐌰𐌿𐍆] 𐌼𐌰𐌽𐌰𐌲𐌹𐌶𐌹𐌽 𐌺𐌿𐌽𐌸𐌾𐌰). 𐌾𐌰𐌱𐌰𐌹 𐌹𐍃 𐌷𐌴𐍂 𐌹𐌽 𐌰𐌹𐍂𐌶𐌴𐌹𐌽𐍃, 𐌲𐌰𐌲𐌲 𐌳𐌿 <𐍃𐍄𐍂𐍉𐌽𐌲>𐌹𐌱𐌿𐌺𐌰𐌷𐌰𐌿𐌱𐌹𐌳𐌹𐌻𐍉𐌽.",
        "noarticletext": "𐌽𐌿 𐌽𐌹 𐍃𐌹𐌽𐌳 𐌱𐍉𐌺𐍉𐍃 𐌹𐌽 𐌸𐌰𐌼𐌼𐌰 𐌻𐌰𐌿𐌱𐌰.\n𐌼𐌰𐌲𐍄 [[Special:Search/{{PAGENAME}}|𐍃𐍉𐌺𐌾𐌰𐌽 𐌸𐌰𐍄𐌰 𐌻𐌰𐌿𐌱𐌰-𐌿𐍆𐌰𐍂𐌼𐌴𐌻𐌹]] 𐌹𐌽 𐌰𐌽𐌸𐌰𐍂𐌰𐌹𐌼 𐌻𐌰𐌿𐌱𐌰𐌼,  <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 𐍃𐍉𐌺𐌾𐌰𐌽 𐌲𐌰𐌷𐌰𐌷𐌾𐍉 𐌲𐌰𐍆𐌰𐍃𐍄𐍉𐍃], 𐌰𐌹𐌸𐌸𐌰𐌿 [{{fullurl:{{FULLPAGENAME}}|action=edit}} 𐍃𐌺𐌰𐍀𐌾𐌰𐌽 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆.]</ span>",
        "noarticletext-nopermission": "𐌽𐌿 𐌽𐌹 𐍃𐌹𐌽𐌳 𐌱𐍉𐌺𐍉𐍃 𐌹𐌽 𐌸𐌰𐌼𐌼𐌰 𐌻𐌰𐌿𐌱𐌰.\n𐌼𐌰𐌲𐍄 [[Special:Search/{{PAGENAME}}|𐍃𐍉𐌺𐌾𐌰𐌽 𐌸𐌰𐍄𐌰 𐌻𐌰𐌿𐌱𐌰-𐌿𐍆𐌰𐍂𐌼𐌴𐌻𐌹]] 𐌹𐌽 𐌰𐌽𐌸𐌰𐍂𐌰𐌹𐌼 𐌻𐌰𐌿𐌱𐌰𐌼, 𐌸𐌰𐌿 <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 𐍃𐍉𐌺𐌾𐌰𐌽 𐌲𐌰𐌷𐌰𐌷𐌾𐍉 𐌲𐌰𐍆𐌰𐍃𐍄𐍉𐍃]</span>, 𐌹𐌸 𐌽𐌹 𐌷𐌰𐌱𐌰𐌹𐍃 𐌰𐌽𐌳𐌻𐌴𐍄 𐍃𐌺𐌰𐍀𐌾𐌰𐌽 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆.",
-       "updated": "(Nuwisan)",
+       "updated": "(𐌰𐌽𐌰𐌽𐌹𐍅𐌹𐌸)",
        "previewnote": "<strong>𐌲𐌰𐌼𐌹𐌽𐌸𐌴𐌹 𐌸𐌰𐍄𐌴𐌹 𐌸𐌰𐍄𐌰 𐌹𐍃𐍄 𐌸𐌰𐍄𐌰𐌹𐌽𐌴𐌹 𐍆𐌰𐌿𐍂𐌰𐍃𐌹𐌿𐌽𐍃.</strong>\n𐌸𐌴𐌹𐌽𐍉𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉𐍃 𐌽𐌰𐌿𐌷 𐌽𐌹 𐌲𐌰𐍆𐌰𐍃𐍄𐌰𐌽𐍉𐍃 𐍃𐌹𐌽𐌳!",
-       "editing": "𐌼𐌰𐌹𐌳𐌾𐌰𐌽 𐌰𐍆 $1",
+       "editing": "{{GENDER:𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌰𐌽𐌳𐍃|𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌰𐌽𐌳𐌴𐌹}} $1",
        "creating": "𐍃𐌺𐌰𐍀𐌾𐌰𐌽𐌳𐍃/𐍃𐌺𐌰𐍀𐌾𐌰𐌽𐌳𐌴𐌹 $1",
-       "editingsection": "𐌼𐌰𐌹𐌳𐌾𐌰𐌽 𐌰𐍆 $1 (𐍆𐌴𐍂𐌰)",
-       "editingcomment": "ð\90\8c¼ð\90\8c°ð\90\8c¹ð\90\8c³ð\90\8c¾ð\90\8c°ð\90\8c½ ð\90\8c°ð\90\8d\86 $1 (ð\90\8d\82ð\90\8d\89ð\90\8c³ð\90\8c¾ð\90\8c°ð\90\8d\86ð\90\8c´ð\90\8d\82ð\90\8c°)",
+       "editingsection": "{{GENDER:𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌰𐌽𐌳𐍃|𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌰𐌽𐌳𐌴𐌹}} $1 (𐌳𐌰𐌹𐌻)",
+       "editingcomment": "ð\90\8c¹ð\90\8c½ð\90\8c¼ð\90\8c°ð\90\8c¹ð\90\8c³ð\90\8c¾ð\90\8c°ð\90\8c½ð\90\8c³ð\90\8d\83\90\8c¹ð\90\8c½ð\90\8c¼ð\90\8c°ð\90\8c¹ð\90\8c³ð\90\8c¾ð\90\8c°ð\90\8c½ð\90\8c³ð\90\8c´ð\90\8c¹ $1 (ð\90\8c½ð\90\8c¹ð\90\8c¿ð\90\8c¾ð\90\8c° ð\90\8c³ð\90\8c°ð\90\8c¹ð\90\8c»)",
        "yourdiff": "𐌼𐌹𐍃𐍃𐌰𐌻𐌴𐌹𐌺𐍉𐍃",
        "template-protected": "(𐌷𐌰𐌱𐌰𐌹𐌸 𐌼𐌿𐌽𐌳)",
        "template-semiprotected": "(halb-gabaírgjan)",
        "histlast": "𐌽𐌹𐌿𐌾𐌹𐍃𐍄𐍉",
        "history-feed-item-nocomment": "$1 at $2",
        "rev-delundel": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹 𐌰𐌽𐌰𐍃𐌹𐌿𐌽",
-       "revdel-restore": "ð\90\8c¹ð\90\8c½ð\90\8c¼ð\90\8c°ð\90\8c¹ð\90\8c³ð\90\8c¾ð\90\8c¹ð\90\8d\83 ð\90\8c°ð\90\8c½ð\90\8c°ð\90\8d\83ð\90\8c¹ð\90\8c¿ð\90\8c½ð\90\8c¼ð\90\8c°ð\90\8c·ð\90\8d\84ð\90\8c´ð\90\8c¹ð\90\8c²ð\90\8d\83",
+       "revdel-restore": "ð\90\8c¹ð\90\8c½ð\90\8c¼ð\90\8c°ð\90\8c¹ð\90\8c³ð\90\8c´ð\90\8c¹ ð\90\8c°ð\90\8c½ð\90\8c°ð\90\8d\83ð\90\8c¹ð\90\8c¿ð\90\8c½",
        "revertmerge": "𐌿𐌽𐌲𐌰𐍄𐌹𐌻𐍉𐍃",
        "history-title": "𐌰𐍆𐍄𐍂𐌰𐍃𐌹𐌿𐌽𐌹𐍃𐍀𐌹𐌻𐌻 𐌻𐌰𐌿𐌱𐌹𐍃 \"$1\"",
        "difference-title": "𐌲𐌰𐍃𐌺𐌰𐌹𐌳𐌴𐌹𐌽𐍃 𐌼𐌹𐌸 𐌰𐍆𐍄𐍂𐌰𐍃𐌹𐌿𐌽𐍉𐌼 𐌻𐌰𐌿𐌱𐌹𐍃 \"$1\"",
        "search-suggest": "𐍄𐌰𐌹𐌺𐌽𐌹𐌳𐌰 𐌸𐌿: $1",
        "searchall": "𐌰𐌻𐌻𐍃",
        "search-showingresults": "{{ZPLURAL:$4|𐍄𐌰𐌿𐌹 <strong>$1 𐍅𐌰𐌹𐌷𐍄𐌰𐌹𐍃 <strong>$3|𐍄𐍉𐌾𐌰 <strong>$1 - $2 𐍅𐌰𐌹𐌷𐍄𐌰𐌹𐍃 <strong>$3}}",
-       "search-nonefound": "ð\90\8c½ð\90\8c¹ ð\90\8c°ð\90\8c¹ð\90\8c½ð\90\8c·ð\90\8c¿ð\90\8c½ ð\90\8c²ð\90\8c°ð\90\8c²ð\90\8c¹ð\90\8c±ð\90\8c¾ð\90\8d\89 ð\90\8d\86ð\90\8c¿ð\90\8c»ð\90\8c»ð\90\8c¾ð\90\8c¹ð\90\8c¸ ð\90\8d\83ð\90\8d\89ð\90\8cºð\90\8c´ð\90\8c¹ð\90\8c½",
+       "search-nonefound": "ð\90\8c½ð\90\8c¹ ð\90\8d\84ð\90\8c°ð\90\8c¿ð\90\8c¹ ð\90\8d\85ð\90\8c°ð\90\8d\83 ð\90\8d\83ð\90\8c°ð\90\8c¼ð\90\8c°ð\90\8c½ð\90\8c° ð\90\8d\83ð\90\8d\85ð\90\8c° ð\90\8d\83ð\90\8d\89ð\90\8cºð\90\8c´ð\90\8c¹ð\90\8c½.",
        "powersearch-legend": "𐍃𐍉𐌺𐌴𐌹𐌸",
        "preferences": "𐌼𐌴𐌹𐌽𐍉𐍃 𐌱𐍂𐌿𐌺𐌾𐌰𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐌴𐌹𐍃",
        "mypreferences": "𐌲𐌰𐌻𐌴𐌹𐌺𐌰𐌽𐌳𐌴𐌹𐌽𐍃 𐍅𐌰𐌹𐌷𐍄𐍃",
index 7e94b9c..6239424 100644 (file)
        "actionthrottledtext": "כאמצעי נגד שימוש לרעה, קיימת מגבלה על ביצוע פעולה זו פעמים רבות מדי בזמן קצר, וחרגת מהמגבלה הזאת.\nנא לנסות שוב בעוד מספר דקות.",
        "protectedpagetext": "דף זה מוגן כדי למנוע עריכה ופעולות אחרות.",
        "viewsourcetext": "ב{{GENDER:|אפשרותך|אפשרותך|אפשרותכם}} לצפות בטקסט המקור של הדף ולהעתיקו.",
-       "viewyourtext": "באפשרותך לצפות בטקסט המקור של <strong>העריכות שלך</strong> בדף הזה ולהעתיקו.",
+       "viewyourtext": "ב{{GENDER:|אפשרותך|אפשרותך|אפשרותכם}} לצפות בטקסט המקור של <strong>העריכות {{GENDER:|שלך|שלך|שלכם}}</strong> בדף הזה ולהעתיקו.",
        "protectedinterface": "דף זה הוא אחד הדפים המספקים הודעות מערכת לתוכנה שמפעילה את {{SITENAME}}, והוא מוגן כדי למנוע השחתות.\nכדי להוסיף או לשנות תרגומים של הודעות מערכת עבור כל אתרי הוויקי, יש להשתמש ב־[https://translatewiki.net/ translatewiki.net], פרויקט התרגום של מדיה־ויקי.",
        "editinginterface": "<strong>אזהרה:</strong> הדף ש{{GENDER:|אתה עורך|את עורכת|אתם עורכים}} הוא אחד הדפים המספקים הודעות מערכת לתוכנה שמפעילה את {{SITENAME}}.\nשינויים בדף הזה ישפיעו על ממשק המשתמש של משתמשים אחרים באתר.",
        "translateinterface": "כדי להוסיף או לשנות תרגומים של הודעות מערכת עבור כל אתרי הוויקי, יש להשתמש ב־[https://translatewiki.net/ translatewiki.net], פרויקט התרגום של מדיה־ויקי.",
        "editingsection": "עריכת הדף \"$1\" (פסקה)",
        "editingcomment": "עריכת הדף \"$1\" (פסקה חדשה)",
        "editconflict": "התנגשות עריכה: $1",
-       "explainconflict": "משתמש אחר שינה את הדף מאז שהתחלתם לערוך אותו.\nחלון העריכה העליון מציג את הטקסט בדף כפי שהוא כרגע.\nהשינויים שלכם מוצגים בחלון העריכה התחתון.\nעליכם למזג את השינויים שלכם לתוך הטקסט הקיים.\n<strong>רק</strong> הטקסט בחלון העריכה העליון יישמר כשתלחצו על \"{{int:savearticle}}\".",
+       "explainconflict": "משתמש אחר שינה את הדף מאז שהתחלת לערוך אותו.\nתיבת העריכה העליונה מכילה את הטקסט בדף כפי שהוא כרגע.\nהשינויים שלך מוצגים בתיבת העריכה התחתונה.\nיש למזג את השינויים שלך מתיבת העריכה התחתונה לתיבת העריכה העליונה.\n<strong>רק</strong> הטקסט בתיבת העריכה העליונה יישמר לאחר לחיצה על \"{{int:savearticle}}\".",
        "yourtext": "הטקסט שלך",
        "storedversion": "גרסה שמורה",
        "nonunicodebrowser": "'''אזהרה: הדפדפן שלך אינו תואם לתקן יוניקוד.'''\nכדי למנוע בעיות הנוצרות כתוצאה מכך ולאפשר לך לערוך דפים בבטחה, תווים שאינם ב־ASCII יוצגו בתיבת העריכה כקודים הקסדצימליים.",
-       "editingold": "<strong>אזהרה: אתם עורכים גרסה לא עדכנית של דף זה.</strong>\nאם תשמרו את הדף, כל השינויים שנעשו מאז גרסה זו יאבדו.",
+       "editingold": "<strong>אזהרה: {{GENDER:|אתה עורך|את עורכת|אתם עורכים}} גרסה ישנה של דף זה.</strong>\nאם {{GENDER:|תשמור|תשמרי|תשמרו}} את העריכה, כל השינויים שנעשו מאז גרסה זו יאבדו.",
        "yourdiff": "הבדלים",
        "copyrightwarning": "'''שימו לב:''' תרומתכם ל{{grammar:תחילית|{{SITENAME}}}} תפורסם תחת תנאי הרישיון $2 (ראו $1 לפרטים נוספים). אם אינכם רוצים שעבודתכם תהיה זמינה לעריכה על־ידי אחרים, שתופץ לעיני כול, ושאחרים יוכלו להעתיק ממנה בציון המקור – אל תפרסמו אותה פה. כמו־כן, אתם מבטיחים לנו כי כתבתם את הטקסט הזה בעצמכם, או העתקתם אותו ממקור שאינו מוגן בזכויות יוצרים. '''אל תעשו שימוש בחומר המוגן בזכויות יוצרים ללא רשות!'''",
        "copyrightwarning2": "'''שימו לב:''' תורמים אחרים עשויים לערוך או אף להסיר את תרומתכם ל{{grammar:תחילית|{{SITENAME}}}}. אם אינכם רוצים שעבודתכם תהיה זמינה לעריכה על־ידי אחרים, אל תפרסמו אותה פה. כמו־כן, אתם מבטיחים לנו כי כתבתם את הטקסט הזה בעצמכם, או העתקתם אותו ממקור שאינו מוגן בזכויות יוצרים (ראו $1 לפרטים נוספים). '''אל תעשו שימוש בחומר המוגן בזכויות יוצרים ללא רשות!'''",
        "fix-double-redirects": "עדכון הפניות לכותרת הדף המקורית",
        "move-leave-redirect": "השארת הפניה בדף המקורי",
        "protectedpagemovewarning": "'''אזהרה:''' דף זה מוגן כך שרק מפעילי מערכת יכולים להעביר אותו.\nפעולת היומן האחרונה מוצגת להלן:",
-       "semiprotectedpagemovewarning": "'''הערה:''' דף זה מוגן כך שרק משתמשים רשומים יכולים להעביר אותו.\nפעולת היומן האחרונה מוצגת להלן:",
+       "semiprotectedpagemovewarning": "<strong>הערה:</strong> דף זה מוגן כך שרק משתמשים רשומים יכולים להעביר אותו.\nפעולת היומן האחרונה מוצגת להלן:",
        "move-over-sharedrepo": "[[:$1]] כבר קיים במאגר משותף. העברת הקובץ לכותרת זו תדרוס את הקובץ המשותף.",
        "file-exists-sharedrepo": "קובץ בשם שנבחר כבר קיים כקובץ משותף.\nיש לבחור שם אחר.",
        "export": "ייצוא דפים",
index fd7476b..ca05a97 100644 (file)
        "revdelete-uname-unhid": "suradničko ime je otkriveno",
        "revdelete-restricted": "primijenjeno ograničenje za administratore",
        "revdelete-unrestricted": "uklonjeno ograničenje za administratore",
+       "logentry-merge-merge": "$1 je {{GENDER:$2|spojio|spojila}} $3 s $4 (izmjene do $5)",
        "logentry-move-move": "$1 je {{GENDER:$2|premjestio|premjestila}} stranicu $3 na $4",
        "logentry-move-move-noredirect": "$1 je {{GENDER:$2|premjestio|premjestila}} stranicu $3 na $4 bez preusmjeravanja",
        "logentry-move-move_redir": "$1 je {{GENDER:$2|premjestio|premjestila}} stranicu $3 na $4 preko preusmjeravanja",
        "mw-widgets-dateinput-placeholder-month": "GGGG-MM",
        "mw-widgets-titleinput-description-new-page": "stranica još ne postoji",
        "mw-widgets-titleinput-description-redirect": "preusmjeravanje na $1",
+       "log-action-filter-block": "Vrsta blokiranja:",
        "log-action-filter-newusers": "Način stvaranja računa:",
        "log-action-filter-upload": "Vrsta postavljanja:",
        "log-action-filter-all": "sve",
+       "log-action-filter-block-block": "blokiranje",
+       "log-action-filter-block-reblock": "promjena blokiranja",
+       "log-action-filter-block-unblock": "deblokiranje",
        "log-action-filter-newusers-create": "stvorio anonimni suradnik",
        "log-action-filter-newusers-create2": "stvorio registrirani suradnik",
        "log-action-filter-newusers-autocreate": "automatski stvoren",
index 11357f8..567cf1a 100644 (file)
@@ -53,7 +53,7 @@
        "tog-ccmeonemails": "Mi kopije e-mejlkow pósłać, kotrež druhim wužiwarjam pósćelu",
        "tog-diffonly": "Jenož rozdźěle pokazać (nic pak zbytny wobsah)",
        "tog-showhiddencats": "Schowane kategorije pokazać",
-       "tog-norollbackdiff": "Rozdźěl po wróćostajenju zanjechać",
+       "tog-norollbackdiff": "Rozdźěl po wróćostajenju njepokazać",
        "tog-useeditwarning": "Warnować, hdyž so wobdźěłowanska strona z njeskładowanymi změnami wopušća",
        "tog-prefershttps": "Po přizjewjenju přeco wěsty zwisk wužiwać",
        "underline-always": "Přeco",
        "morenotlisted": "Tuta lisćina dospołna njeje.",
        "mypage": "Strona",
        "mytalk": "Diskusija",
-       "anontalk": "Diskusijna strona tuteje IP.adresy",
+       "anontalk": "Diskusija",
        "navigation": "Nawigacija",
        "and": "&#32;a",
        "qbfind": "Namakać",
        "laggedslavemode": "'''Kedźbu:''' Je móžno, zo strona žane zaktualizowanja njewobsahuje.",
        "readonly": "Datowa banka je zawrjena",
        "enterlockreason": "Zapodaj přičinu za zawrjenje a přibližny čas, hdy budźe zawrjenje zběhnjene",
-       "readonlytext": "Datowa banka je tuchwilu za nowe zapiski a druhe změny zawrjena, najskerje wothladowanskich dźěłow dla; po jich zakónčenju budźe wšitko zaso normalne.\n\nAdministrator, kiž je datowu banku zawrěł, je jako přičinu podał: $1",
+       "readonlytext": "Datowa banka je tuchwilu za nowe zapiski a druhe změny zawrjena, najskerje wothladowanskich dźěłow dla; po jich zakónčenju budźe wšitko zaso normalne.\n\nSystemowy administrator, kiž je datowu banku zawrěł, je slědowacu přičinu podał: $1",
        "missing-article": "Datowa banka njenamaka tekst strony z mjenom \"$1\" $2, kotryž dyrbjał so namakać.\n\nTo so zwjetša zawinuje, hdyž so njepłaćiwa změna abo zapisk stawiznow na stronu wotkazuje, kotraž bu wušmórnjena.\n\nJeli to njetrjechi, sy najskerje programowy zmylk w softwarje namakał.\nZdźěl to prošu [[Special:ListUsers/sysop|admininistratorej]] podawajo wotpowědny URL.",
        "missingarticle-rev": "(Wersijowe čisło: $1)",
        "missingarticle-diff": "(Rozdźěl: $1, $2)",
        "viewsource": "Žórłowy tekst",
        "viewsource-title": "Žórłowy tekst za $1 sej wobhladać",
        "actionthrottled": "Akcije wobmjezowane",
-       "actionthrottledtext": "Jako připrawa přećiwo spamej, je častosć wuwjedźenja tuteje akcije w krótkej dobje wobmjezowana a ty sy tutón limit překročił. Prošu spytaj za něšto mjeńšiny hišće raz.",
+       "actionthrottledtext": "Jako naprawa přećiwo znjewužiwanju, je ličba wuwjedźenjow tuteje akcije w krótkej dobje wobmjezowana a ty sy tutón limit překročił. Prošu spytaj za něšto mjeńšin hišće raz.",
        "protectedpagetext": "Tuta strona je přećiwo wobdźěłowanju abo druhim akcijam škitana.",
-       "viewsourcetext": "Móžeš sej žórłowy tekst tuteje strony wobhladać a jón kopěrować:",
-       "viewyourtext": "Móžeš sej žórłowy tekst '''swojich změnow''' wobhladać a do slědowaceje strony kopěrować:",
+       "viewsourcetext": "Móžeš sej žórłowy tekst tuteje strony wobhladać a jón kopěrować.",
+       "viewyourtext": "Móžeš sej žórłowy tekst <strong>swojich změnow</strong> wobhladać a do slědowaceje strony kopěrować.",
        "protectedinterface": "Tuta strona wobsahuje tekst za wužiwarski powjerch softwary na tutym wikiju a je škitana, zo by so znjewužiwanje zadźěwało.\nZo by přełožki za wšě wikije přidał abo změnił, wužij prošu [https://translatewiki.net/ translatewiki.net], projekt MediaWiki za lokalizaciju.",
        "editinginterface": "<strong>Warnowanje:</strong> Wobdźěłuješ stronu, kotraž so wužiwa, zo by tekst za wužiwarski powjerch softwary k dispoziciji stajiła. Změny na stronje  wuskutkuja so na napohlad wužiwarskeho powjercha za druhich wužiwarjow na tutym wikiju.",
        "translateinterface": "Zo by přełožki za wšě wikije přidał abo změnił, wužiwajće prošu [https://translatewiki.net/ translatewiki.net], lokalizaciski projekt MediaWiki.",
-       "cascadeprotected": "Tuta strona je za wobdźěłowanje zawrjena, dokelž je w {{PLURAL:$1|slědowacej stronje|slědowacymaj stronomaj|slědowacych stronach|slědowacych stronach}} zapřijata, {{PLURAL:$1|kotraž je|kotrejž stej|kotrež su|kotrež su}} přez kaskadowu opciju {{PLURAL:$1|škitana|škitanej|škitane|škitane}}:\n$2",
+       "cascadeprotected": "Tuta strona je za wobdźěłowanje zawrjena, dokelž je w {{PLURAL:$1|slědowacej stronje|slědowacymaj stronomaj|slědowacych stronach}} zapřijata, {{PLURAL:$1|kotraž je|kotrejž stej|kotrež su}} přez kaskadowu opciju {{PLURAL:$1|škitana|škitanej|škitane}}:\n$2",
        "namespaceprotected": "Nimaš dowolnosć, zo by stronu w mjenowym rumje '''$1''' wobdźěłał.",
        "customcssprotected": "Nimaš prawo, zo by tutu CSS-stronu wobdźěłał, dokelž wosobinske nastajenja druheho wužiwarja wobsahuje.",
        "customjsprotected": "Nimaš prawo, zo by tutu JavaScript-stronu wobdźěłał, dokelž wosobinske nastajenja druheho wužiwarja wobsahuje.",
        "mypreferencesprotected": "Nimaš prawo swoje nastajenja wobdźěłać.",
        "ns-specialprotected": "Specialne strony njedadźa so wobdźěłać.",
        "titleprotected": "Tutón titul bu přećiwo wutworjenju přez [[User:$1|$1]] škitany.\nPodata přičina je <em>$2</em>.",
-       "filereadonlyerror": "Njeje móžno dataju \"$1\" změnić, dokelž datajowy repozitorij \"$2\" je jenož čitajomny.\n\nAdministrator, kiž je jón zawrěł, je tule přičinu podał: \"$3\".",
+       "filereadonlyerror": "Njeje móžno dataju \"$1\" změnić, dokelž datajowy repozitorij \"$2\" je jenož čitajomny.\n\nSystemowy administrator, kiž je jón zawrěł, je tule přičinu podał: \"$3\".",
        "invalidtitle-knownnamespace": "Njepłaćiwy titul z mjenowym rumom \"$2\" a tekstom \"$3\"",
        "invalidtitle-unknownnamespace": "Njepłaćiwy titul z njeznatym mjenowym rumom $1 a tekstom \"$2\"",
        "exception-nologin": "Njejsy přizjewjeny",
        "nocookieslogin": "{{SITENAME}} wužiwa placki za přizjewjenje wužiwarjow.\nSy placki znjemóžnił. \nProšu zmóžń je a spytaj hišće raz.",
        "nocookiesfornew": "Wužiwarske konto njeje so załožiło, dokelž njemóžachmy jeho žórło wobkrućić.\nPřeswědč so, zo placki su zmóžnjene, ačitaj tutu stronu znowa a spytaj hišće raz.",
        "noname": "Njejsy płaćiwe wužiwarske mjeno podał.",
-       "loginsuccesstitle": "Přizjewjenje wuspěšne",
+       "loginsuccesstitle": "Přizjewjeny",
        "loginsuccess": "'''Sy nětko jako \"$1\" w {{GRAMMAR:lokatiw|{{SITENAME}}}} {{GENDER:|přizjewjeny|přizjewjena|přizjewjene}}.'''",
-       "nosuchuser": "Njeje wužiwar z mjenom \"$1\".\nWužiwarske mjena wobkedźbuja wulkopisanje.\nPřepruwuj swój prawopis abo [[Special:CreateAccount|wutwor nowe konto]].",
+       "nosuchuser": "Njeje wužiwar z mjenom \"$1\".\nWužiwarske mjena dźiwaja na wulkopisanje.\nPřepruwuj swój prawopis abo [[Special:CreateAccount|załož nowe konto]].",
        "nosuchusershort": "Wužiwarske mjeno „$1” njeeksistuje. Prošu skontroluj prawopis.",
        "nouserspecified": "Dyrbiš wužiwarske mjeno podać",
        "login-userblocked": "Tutón wužiwar je zablokowany. Přizjewjenje njedowolene.",
        "noemail": "Za wužiwarja \"$1\" žana e-mejlowa adresa podata njeje.",
        "noemailcreate": "Dyrbiš płaćiwu e-mejlowa adresu podać",
        "passwordsent": "Nowe hesło bu na e-mejlowu adresu zregistrowanu za wužiwarja „$1” pósłane.\nProšu přizjew so znowa, po tym zo sy je přijał.",
-       "blocked-mailpassword": "Twoja IP-adresa je přećiwo wobdźěłowanju zablokowana, a tohodla njeje dowolene, funkciju za wobnowjenje hesłow wužiwać, zo by znjewužiwanju zadźěwało.",
+       "blocked-mailpassword": "Twoja IP-adresa je přećiwo wobdźěłowanju zablokowana. Zo by znjewužiwanju zadźěwało, njeje dowolene, funkciju za wobnowjenje hesłow z tuteje IP-adresy wužiwać.",
        "eauthentsent": "Wobkrućenska e-mejlka je so na podatu e-mejlowu adresu pósłała.\nPrjedy hač so druha e-mejlka na konto pósćele, dyrbiš so po instrukcijach w e-mejlce měć, zo by wobkrućił, zo konto woprawdźe tebi słuša.",
        "throttled-mailpassword": "E-mejl za anulowanje hesło je so za {{PLURAL:$1|poslednju hodźinu|poslednjej $1 hodźinje|poslednje $1 hodźiny|poslednich $1 hodźin}} pósłała. Zo by znjewužiwanju zadźěwało, so jenož jedna e-mejl za anulowanje hesła na {{PLURAL:$1|hodźinu|$1 hodźinje|$1 hodźiny|$1 hodźin}} pósćele.",
        "mailerror": "Zmylk při słanju e-mejlki: $1",
        "createaccount-title": "Wutworjenje wužiwarskeho konta za {{SITENAME}}",
        "createaccount-text": "Něchtó je wužiwarske konto za twoju e-mejlowu adresu na {{SITENAME}} ($4) z mjenom \"$2\" z hesłom \"$3\" wutworił. Ty měł so nětko přizjewić a swoje hesło změnić.\n\nMóžeš tutu zdźělenku ignorować, jeli so wužiwarske konto zmylnje wutworiło.",
        "login-throttled": "Sy přehusto spytał so přizjewić. Počakaj prošu $1, prjedy hač hišće raz spytaš.",
-       "login-abort-generic": "Twoje přizjewjenje njebě wuspěšne - přetorhnjene",
+       "login-abort-generic": "Twoje přizjewjenje je so nimokuliło - přetorhnjene",
        "login-migrated-generic": "Waše konto je so přesunyło, a waše wužiwarske mjeno na tutym wikiju hižo njeeksistuje.",
        "loginlanguagelabel": "Rěč: $1",
        "suspicious-userlogout": "Twoje naprašowanje za wotzjewjenje bu wotpokazane, dokelž zda so, jako by so přez wobškodźeny wobhladowak abo pufrowacy proksy pósłało",
        "newpassword": "Nowe hesło:",
        "retypenew": "Nowe hesło wospjetować:",
        "resetpass_submit": "Hesło posrědkować a so přizjewić",
-       "changepassword-success": "Twoje hesło je so wuspěšnje změniło!",
+       "changepassword-success": "Twoje hesło je so změniło!",
        "changepassword-throttled": "Sy přehusto spytał so přizjewić. Počakaj prošu $1, prjedy hač hišće raz spytaš.",
        "resetpass_forbidden": "Hesła njedadźa so změnić.",
        "resetpass-no-info": "Dyrbiš so přizjewić, zo by direktny přistup na tutu stronu měł.",
        "resetpass-submit-loggedin": "Hesło změnić",
        "resetpass-submit-cancel": "Přetorhnyć",
-       "resetpass-wrong-oldpass": "Njepłaćiwe nachwilne abo aktualne hesło.\nSnano sy swoje hesło hižo wuspěšnje změnił abo nowe nachwilne hesło požadał.",
+       "resetpass-wrong-oldpass": "Njepłaćiwe nachwilne abo aktualne hesło.\nSnano sy swoje hesło hižo změnił abo nowe nachwilne hesło požadał.",
        "resetpass-recycled": "Prošu staj swoje hesło na druhe hesło hač twoje aktualne hesło.",
        "resetpass-temp-emailed": "Sy so z nachwilnym e-mejlowym kodom přizjewił.\nZo by přizjewjenje skónčił, dyrbiš tu nowe hesło postajić:",
        "resetpass-temp-password": "Nachwilne hesło:",
        "passwordreset-emailtext-ip": "Něchtó (najskerje ty, z IP-adresu $1) je anulowanje hesła za {{GRAMMAR:akuzatiw|{{SITENAME}}}} požadał ($4).  {{PLURAL:$3|Slědowace wužiwarske konto je|Slědowacej wužiwarskej konće stej|Slědowace wužiwarske konta su}} z tutej e-mejlowej adresu {{PLURAL:$3|zwjazane|zwjazanej|zwjazane}}:\n\n$2\n\n{{PLURAL:$3|Tute nachwilne hesło spadnje|Tutej nachwilnej hesle spadnjetej|Tute nachwilne hesła spadnu}} za {{PLURAL:$5|jedyn dźeń|$5 dnjej|$5 dny|$5 dnjow}}.\nTy měł so nětko přizjewić a nowe hesło wubrać. Jeli něchtó druhi je tute naprašowanje pósłał, abo jeli sy so zaso na prěnjotne hesło dopomnił a wjace nochceš jo změnić, móžeš tutu zdźělenku ignorować a swoje stare hesło dale wužiwać.",
        "passwordreset-emailtext-user": "Wužiwar $1 na {{GRAMMAR:lokatiw|{{SITENAME}}}} je anulowanje twojeho hesła za {{GRAMMAR:akuzatiw|{{SITENAME}}}} požadał ($4).  {{PLURAL:$3|Slědowace wužiwarske konto je|Slědowacej wužiwarskej konće stej|Slědowace wužiwarske konta su}} z tutej e-mejlowej adresu {{PLURAL:$3|zwjazane|zwjazanej|zwjazane}}:\n\n$2\n\n{{PLURAL:$3|Tute nachwilne hesło spadnje|Tutej nachwilnej hesle spadnjetej|Tute nachwilne hesła spadnu}} za {{PLURAL:$5|jedyn dźeń|$5 dnjej|$5 dny|$5 dnjow}}.\nTy měł so nětko přizjewić a nowe hesło wubrać. Jeli něchtó druhi je tute naprašowanje pósłał, abo jeli sy so zaso na prěnjotne hesło dopomnił a wjace nochceš jo změnić, móžeš tutu zdźělenku ignorować a swoje stare hesło dale wužiwać.",
        "passwordreset-emailelement": "Wužiwarske mjeno: \n$1\n\nNachwilne hesło: \n$2",
-       "passwordreset-emailsentemail": "E-mejl za anulowanje hesło je so pósłała.",
+       "passwordreset-emailsentemail": "Jeli tuta e-mejlowa adresa je z wašim kontom zwjazana, so mejlka za wróćostajenje hesła pósćele.",
        "passwordreset-emailsent-capture": "E-mejl za anulowanje hesła je so pósłała, kotraž so deleka pokazuje.",
        "passwordreset-emailerror-capture": "E-mejl za anulowanje hesła je so wutworiła, kotraž so deleka pokazuje, ale słanje {{GENDER:$2|wužiwarjej|wužiwarce}} je so njeporadźiło: $1",
        "changeemail": "E-mejlowu adresu změnić abo wotstronić",
-       "changeemail-header": "Kontowu e-mejlowu adresu změnić",
+       "changeemail-header": "Wupjelń tutón formular, zo by swoju e-mejlowu adresu změnił. Jeli chceš zwisk e-mejloweje adresy ze swijim kontom wotstronić,  wostaj polo e-mejloweje adresy prózdne, hdyž formular preč sćeleš.",
        "changeemail-no-info": "Dyrbiš so přizjewić, zo by direktny přistup na tutu stronu měł.",
        "changeemail-oldemail": "Aktualna e-mejlowa adresa:",
        "changeemail-newemail": "Nowa e-mejlowa adresa:",
        "sig_tip": "Twoja signatura z časowym kołkom",
        "hr_tip": "Wodoruna linija (zrědka wužiwać!)",
        "summary": "Zjeće:",
-       "subject": "Tema/Nadpismo:",
+       "subject": "Tema:",
        "minoredit": "Snadna změna",
        "watchthis": "Stronu wobkedźbować",
        "savearticle": "Stronu składować",
        "anonpreviewwarning": "''Njejsy přizjewjeny. Składowanje přenošuje twoju IP-adresu do wobdźěłowanskeje historije tuteje strony.''",
        "missingsummary": "'''Kedźbu:''' Njejsy žane zjeće zapodał. Jeli hišće raz na \"{{int:savearticle}}\" kliknješ, budźe so twoja změna bjez njeho składować.",
        "missingcommenttext": "Prošu zapodaj komentar.",
-       "missingcommentheader": "'''Kedźbu:''' Njejsy temu/nadpis za tutón komentar podał. Jeli na „{{int:savearticle}}” kliknješ, składuje so twoja změna bjez temy/nadpisa.",
+       "missingcommentheader": "<strong>Kedźbu:</strong> Njejsy temu za tutón komentar podał. Jeli na „{{int:savearticle}}” kliknješ, składuje so twoja změna bjez temy.",
        "summary-preview": "Přehlad zjeća:",
-       "subject-preview": "Přehlad temy/napisma:",
+       "subject-preview": "Přehlad temy:",
        "blockedtitle": "Wužiwar je zablokowany",
        "blockedtext": "'''Twoje wužiwarske mjeno bu zablokowane abo twoja IP-adresa bu zablokowana.'''\n\nBlokowar je $1.\nPodata přičina je ''$2''.\n\n* Spočatk blokowanja: $8\n* Kónc blokowanja: $6\n* Zablokowany wužiwar: $7\n\nMóžeš $1 abo druheho [[{{MediaWiki:Grouppage-sysop}}|administratora]] kontaktować, zo by wo blokowanju diskutował.\nNjemóžeš funkciju 'Tutomu wužiwarjej e-mejlować' wužiwać, chibazo sy płaćiwu e-mejlowu adresu w swojich [[Special:Preferences|kontowych nastajenjach]] podał a njebu přećiwo jeje wužiwanju zablokowany.\nTwoja tuchwilna IP-adresa je $3 a blokowanski ID je #$5. Prošu podaj wšě horjeka naspomnjene podrobnosće w swojich naprašowanjach.",
        "autoblockedtext": "Twoja IP-adresa bu awtomatisce blokowana, dokelž ju druhi wužiwar wužiwaše, kiž bu wot $1 zablokowany.\nPřičina blokowanja bě:\n\n:''$2''\n\n* Započatk blokowanja: $8\n* Kónc blokowanja: $6\n* Zablokowany wužiwar: $7\n\nMóžeš $1 abo jednoho z druhich [[{{MediaWiki:Grouppage-sysop}}|administratorow]] kontaktować, zo by blokowanje diskutował.\n\nWobkedźbuj, zo njemóžeš funkciju \"Wužiwarjej mejlku pósłać\" wužiwać, jeli nimaš płaćiwu e-mejlowu adresu, kotraž je w twojich [[Special:Preferences|wužiwarskich nastajenjach]] zregistrowana a njebi blokowany ju wužiwać.\n\nTwój aktualna adresa IP je $3 a ID blokowanja je #$5.\nProšu podaj wšě horjeka naspomnjene podrobnosće w naprašowanjach, kotrež činiš.",
        "accmailtext": "Připadnje spłodźene hesło za [[User talk:$1|$1]] bu na $2 pósłane. Daj so na stronje ''[[Special:ChangePassword|hesło změnić]]'' při přizjewjenju změnić.",
        "newarticle": "(Nowy)",
        "newarticletext": "Sy wotkaz k stronje slědował, kotraž hišće njeeksistuje. Zo by stronu wutworił, wupjelń slědowace tekstowe polo (hlej [$1 stronu pomocy] za dalše informacije). Jeli sy zmylnje tu, klikń prosće na tłóčatko <b>Wróćo</b> we swojim wobhladowaku.",
-       "anontalkpagetext": "---- ''To je diskusijna strona za anonymneho wužiwarja, kiž hišće konto wutworił njeje abo je njewužiwa. Dyrbimy tohodla numerisku IP-adresu wužiwać, zo bychmy jeho/ju identifikowali. Tajka IP-adresa hodźi so wot wjacorych wužiwarjow zhromadnje wužiwać. Jeli sy anonymny wužiwar a měniš, zo buchu irelewantne komentary k tebi pósłane, [[Special:CreateAccount|wutwor prošu konto]] abo [[Special:UserLogin|přizjew so]], zo by přichodnu šmjatańcu z anonymnymi wužiwarjemi wobešoł.''",
-       "noarticletext": "Tuchwilu tuta strona žadyn tekst njewobsahuje. Móžeš [[Special:Search/{{PAGENAME}}|tutón titul strony na druhich stronach pytać]], <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} wotpowědne protokole pytać] abo [{{fullurl:{{FULLPAGENAME}}|action=edit}} tutu stronu wobdźěłać]</span>.",
+       "anontalkpagetext": "---- \n<em>To je diskusijna strona za anonymneho wužiwarja, kiž hišće konto wutworił njeje abo je njewužiwa.</em>\nDyrbimy tohodla numerisku IP-adresu wužiwać, zo bychmy jeho/ju identifikowali.\nTajka IP-adresa hodźi so wot wjacorych wužiwarjow zhromadnje wužiwać. Jeli sy anonymny wužiwar a měniš, zo buchu irelewantne komentary k tebi pósłane, [[Special:CreateAccount|wutwor prošu konto]] abo [[Special:UserLogin|přizjew so]], zo by přichodnu šmjatańcu z anonymnymi wužiwarjemi wobešoł.",
+       "noarticletext": "Tuchwilu tuta strona žadyn tekst njewobsahuje. Móžeš [[Special:Search/{{PAGENAME}}|tutón titul strony na druhich stronach pytać]], <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} wotpowědne protokole pytać] abo [{{fullurl:{{FULLPAGENAME}}|action=edit}} tutu stronu wutworić]</span>.",
        "noarticletext-nopermission": "Tuchwilu žadyn tekst na tutej stronje njeje.\nMóžeš [[Special:Search/{{PAGENAME}}|tutón titul strony]] na druhich stronach pytać abo <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pytaj wotpowědne protokole]</span>, ale nimaš prawo, strou wutworić.",
        "missing-revision": "Wersija #$1 strony z mjenom \"{{FULLPAGENAME}}\" njeeksistuje.\n\nPřičina je zwjetša zestarjeny wotkaz w stawiznach k stronje, kotraž je so zhašała.\nPodrobnosće móžeš w  [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protokolu wušmórnjenjow] namakać.",
        "userpage-userdoesnotexist": "Wužiwarske konto „$1“ njeje zregistrowane. Prošu pruwuj, hač chceš tutu stronu woprawdźe wutworić/wobdźěłać.",
        "userpage-userdoesnotexist-view": "Wužiwarske konto \"$1\" njeje zregistrowane.",
        "blocked-notice-logextract": "Tutón wužiwar je tuchwilu zablokowany. Najnowši protokolowy zapisk so deleka jako referenca podawa:",
-       "clearyourcache": "'''Kedźbu: Po składowanju dyrbiš snano pufrowak swojeho wobhladowaka wuprózdnić, zo by změny widźał.''' \n* '''Firefox/Safari:''' Tłóč na ''Umsch'' kliknjo na ''Znowa'' abo tłóč ''Strg-F5'' abo ''Strg-R'' (''⌘-R'' na Macintosh);\n* '''Google Chrome:''' Tłóč na ''Strg-Umsch-R'' (''⌘-Umsch-R'' na Mac)\n* '''Internet Explorer:''' Dźěrź ''Strg'' tłóčeny kliknjo na ''Znowa,'' abo tłóč ''Strg-F5''.\n* '''Opera:''' Wuprózdń pufrowak w ''Extras → Einstellungen'';",
+       "clearyourcache": "<strong>Kedźbu:</strong> Po składowanju dyrbiš snano pufrowak swojeho wobhladowaka wuprózdnić, zo by změny widźał.\n* <strong>Firefox/Safari:</strong> Dźerž tastu <em>Umsch</em> tłóčenu a klikń na <em>Znowa</em> abo tłóč pak <em>Strg-F5</em> abo <em>Strg-R</em> (<em>⌘-R</em> na Mac);\n* <strong>Google Chrome:</strong> Tłóč na <em>Strg-Umsch-R</em> (<em>⌘-Umsch-R</em> na Mac)\n* <strong>Internet Explorer:</strong> Dźěrź tastu <em>Strg</em> tłóčen a klikń na <em>Znowa</em> abo tłóč <em>Strg-F5</em>.\n* <strong>Opera:</strong> Dźi k <em>Menü → Einstellungen</em> (<em>Opera → Einstellungen</em> na Mac) a potom k <em>Datenschutz & Sicherheit → Browserdaten löschen → Gespeicherte Bilder und Dateien</em>.",
        "usercssyoucanpreview": "'''Pokiw:''' Wužij tłóčku '{{int:showpreview}}', zo by swój nowy css do składowanja testował.",
        "userjsyoucanpreview": "'''Pokiw:''' Wužij tłóčatko \"{{int:showpreview}}\", zo by swój nowy JavaScript do składowanja testował.",
        "usercsspreview": "'''Wobkedźbujće, zo sej jenož přehlad swojeho wužiwarskeho CSS wobhladuješ. Hišće njeje składowany!'''",
        "revdelete-unsuppress": "Wobmjezowanja za wobnowjene wersije zběhnyć",
        "revdelete-log": "Přičina:",
        "revdelete-submit": "Na {{PLURAL:$1|wubranu wersiju|wubranej wersiji|wubrane wersije|wubrane wersije}} nałožować",
-       "revdelete-success": "'''Widźomnosć wersije bu wuspěšnje zaktualizowana.'''",
+       "revdelete-success": "Widźomnosć wersije je so zaktualizowała.",
        "revdelete-failure": "'''Wersijowa widźomnosć njeda so aktualizować:'''\n$1",
-       "logdelete-success": "Widźomnosć zapiska bu wuspěšnje změnjena.",
+       "logdelete-success": "Widźomnosć protokola je so změniła.",
        "logdelete-failure": "'''Protokolowa widźomnosć njeda so nastajić:'''\n$1",
        "revdel-restore": "Widźomnosć změnić",
        "pagehist": "Stawizny strony",
        "mergehistory-go": "Zjednoćujomne změny pokazać",
        "mergehistory-submit": "Wersije zjednoćić",
        "mergehistory-empty": "Njehodźa so žane wersije zjednoćeć.",
-       "mergehistory-done": "$3 {{PLURAL:$3|wersija|wersiji|wersije|wersijow}} wot $1 wuspěšnje z [[:$2]] {{PLURAL:$3|zjednoćena|zjednoćenej|zjednoćene|zjednoćene}}.",
+       "mergehistory-done": "$3 {{PLURAL:$3|wersija|wersiji|wersije|wersijow}} wot $1 z [[:$2]] {{PLURAL:$3|zjednoćena|zjednoćenej|zjednoćene}}.",
        "mergehistory-fail": "Njeje móžno zjednócenje stawiznow přewjesć, prošu přepruwuj stronu a časowe parametry.",
        "mergehistory-no-source": "Žórłowa strona $1 njeeksistuje.",
        "mergehistory-no-destination": "Cilowa strona $1 njeeksistuje.",
        "prefs-watchlist-token": "Marka wobkedźbowankow:",
        "prefs-misc": "Wšelake nastajenja",
        "prefs-resetpass": "Hesło změnić",
-       "prefs-changeemail": "E-mejl změnić",
+       "prefs-changeemail": "E-mejlowu adresu změnić abo wotstronić",
        "prefs-setemail": "E-mejlowu adresu postajić",
        "prefs-email": "E-mejlowe opcije",
        "prefs-rendering": "Napohlad",
        "rows": "Rjadki:",
        "columns": "Stołpiki:",
        "searchresultshead": "Pytać",
-       "stub-threshold": "Wotkazowe formatowanje <a href=\"#\" class=\"stub\">małych stronow</a> (w bajtach):",
+       "stub-threshold": "Wotkazowe formatowanje małych stronow ($1):",
        "stub-threshold-disabled": "Znjemóžnjeny",
        "recentchangesdays": "Ličba dnjow w lisćinje aktualnych změnow:",
        "recentchangesdays-max": "(Maksimalnje $1 {{PLURAL:$1|dźeń|dnjej|dny|dnjow}})",
        "userrights": "Zrjadowanje wužiwarskich prawow",
        "userrights-lookup-user": "Wužiwarske skupiny zrjadować",
        "userrights-user-editname": "Wužiwarske mjeno:",
-       "editusergroup": "Wužiwarske skupiny wobdźěłać",
-       "editinguser": "Změni wužiwarske prawa wužiwarja '''[[User:$1|$1]]''' $2",
+       "editusergroup": "{{GENDER:$1|Wužiwarske}} skupiny wobdźěłać",
+       "editinguser": "Změni wužiwarske prawa {{GENDER:$1|wužiwarja|wužiwarki}} <strong>[[User:$1|$1]]</strong> $2",
        "userrights-editusergroup": "Wužiwarske skupiny wobdźěłać",
-       "saveusergroups": "Wužiwarske skupiny składować",
+       "saveusergroups": "{{GENDER:$1|Wužiwarske}} skupiny składować",
        "userrights-groupsmember": "Čłon wot:",
        "userrights-groupsmember-auto": "Implicitny čłon wot:",
        "userrights-groups-help": "Móžeš skupiny změnić, w kotrychž wužiwar je.\n* Markěrowany kašćik woznamjenja, zo wužiwar je w tej skupinje.\n* Njemarkěrowany kašćik woznamjenja, zo wužiwar w tej skupinje njeje.\n* \"*\" podawa, zo njemóžeš skupinu wotstronić, tak ruče kaž sy ju přidał abo nawopak.",
        "userrights-changeable-col": "Skupiny, kotrež móžeš změnić",
        "userrights-unchangeable-col": "Skupiny, kotrež njemóžeš změnić",
        "userrights-conflict": "Konflikt změnow wužiwarskich prawow! Prošu přepruwuj a wobkruć swoje změny.",
-       "userrights-removed-self": "Sy swoje prawa wuspěšnje wotstronił. Tohodla nimaš hižo přistup na tutu stronu měć.",
+       "userrights-removed-self": "Sy swoje prawa wotstronił. Tohodla nimaš hižo přistup na tutu stronu měć.",
        "group": "Skupina:",
        "group-user": "wužiwarjo",
        "group-autoconfirmed": "Awtomatisce potwjerdźeni wužiwarjo",
        "group-bot": "Boty",
        "group-sysop": "Administratorojo",
        "group-bureaucrat": "Běrokraća",
-       "group-suppress": "dohladowarjo",
+       "group-suppress": "Potłóčowarjo",
        "group-all": "(wšě)",
        "group-user-member": "{{GENDER:$1|wužiwar|wužiwarka}}",
        "group-autoconfirmed-member": "{{GENDER:$1|awtomatisce potwjerdźeny wužiwar|awtomatisce potwjerdźena wužiwarka}}",
        "group-bot-member": "{{GENDER:$1|bot}}",
        "group-sysop-member": "{{GENDER:$1|administrator|administratorka}}",
        "group-bureaucrat-member": "{{GENDER:$1|běrokrat|běrokratka}}",
-       "group-suppress-member": "{{GENDER:$1|dohladowar|dohladowarka}}",
+       "group-suppress-member": "{{GENDER:$1|potłóčowar|potłóčowarka}}",
        "grouppage-user": "{{ns:project}}:Wužiwarjo",
        "grouppage-autoconfirmed": "{{ns:project}}:Awtomatisce potwjerdźeni wužiwarjo",
        "grouppage-bot": "{{ns:project}}:Boćiki",
        "grouppage-sysop": "{{ns:project}}:Administratorojo",
        "grouppage-bureaucrat": "{{ns:project}}:Běrokraća",
-       "grouppage-suppress": "{{ns:project}}:Dohladowanje",
+       "grouppage-suppress": "{{ns:project}}:Potłóčowarjo",
        "right-read": "Strony čitać",
        "right-edit": "Strony wobdźěłać",
        "right-createpage": "Strony wutworić (kotrež diskusijne strony njejsu)",
        "right-override-export-depth": "Strony inkluziwnje wotkazanych stronow hač do hłubokosće 5 eksportować",
        "right-sendemail": "Druhim wužiwarjam e-mejl pósłać",
        "right-passwordreset": "E-mejlki za wróćostajenje hesłow sej wobhladać",
-       "right-managechangetags": "[[Special:Tags|markěrowanja]] wutworić a z datoweje banki zhašeć",
+       "right-managechangetags": "[[Special:Tags|Markěrowanja]] wutworić a z(nje)móžnić",
        "right-applychangetags": "[[Special:Tags|Markěrowanja]] hromadźe ze změnami nałožować",
        "newuserlogpage": "Protokol nowych wužiwarjow",
        "newuserlogpagetext": "To je protokol wutworjenja nowych wužiwarskich kontow.",
        "rightslogtext": "To je protokol změnow wužiwarskich prawow.",
        "action-read": "tutu stronu čitać",
        "action-edit": "tutu stronu wobdźěłać",
-       "action-createpage": "strony wutworić",
-       "action-createtalk": "diskusijne strony wutworić",
+       "action-createpage": "tutu stronu wutworić",
+       "action-createtalk": "tutu diskusijnu stronu wutworić",
        "action-createaccount": "wužiwarske konto załožić",
        "action-history": "historiju tuteje strony pokazać",
        "action-minoredit": "tutu změnu jako snadnu markěrować",
        "action-viewmyprivateinfo": "twoje priwatne informacije sej wobhladać",
        "action-editmyprivateinfo": "twoje priwatne informacije wobdźěłać",
        "action-editcontentmodel": "wobsahowy model strony wobdźěłać",
-       "action-managechangetags": "markěrowanja wutworić a z datoweje banki zhašeć",
+       "action-managechangetags": "markěrowanja wutworić a z(nje)móžnić",
        "action-applychangetags": "markěrowanja hromadźe z wašimi změnami nałožować",
        "nchanges": "$1 {{PLURAL:$1|změna|změnje|změny|změnow}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|wot poslednjeho wopyta}}",
        "boteditletter": "B",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|wobkedźbowacy wužiwar|wobkedźbowacaj wužiwarjej|wobkedźbowacy wužiwarjo|wobkedźbowacych wužiwarjow}}]",
        "rc_categories": "Jenož kategorije (dźělene z \"|\")",
-       "rc_categories_any": "wšě",
+       "rc_categories_any": "Někajka z wubranych",
        "rc-change-size": "$1 {{PLURAL:$1|bajt|bajtaj|bajty|bajtow}}",
        "rc-change-size-new": "$1 {{PLURAL:$1|bajt|bajtaj|bajty|bajtow}} po změnje",
        "newsectionsummary": "Nowy wotrězk: /* $1 */",
        "backend-fail-read": "Dataja $1 njeda so čitać",
        "backend-fail-create": "Dataja $1 njeda so pisać.",
        "backend-fail-maxsize": "Dataja $1 njeda so pisać, dokelž je wjetša hač {{PLURAL:$2|jedyn bajt|$2 bajtaj|$2 bajty|$2 bajtow}}.",
-       "backend-fail-readonly": "Składowanski backend \"$1\" da so tuchwilu jenož čitać. Přičina je była: \"$2\"",
+       "backend-fail-readonly": "Składowanski backend \"$1\" da so tuchwilu jenož čitać. Přičina je: <em>$2</em>",
        "backend-fail-synced": "Dataja \"$1\" je znutřka interneho składowanskeho backenda w inkonsistentnym stawje",
        "backend-fail-connect": "Zwisk z datajowym składowanskim backendom \"$1\" móžno njeje.",
        "backend-fail-internal": "W składowanskim backendźe \"$1\" je njeznaty zmylk wustupił.",
        "uploadstash-summary": "Tuta strona zmóžnja přistup k datajam, kotrež su nahrate (abo so nahrawaja), ale hišće njejsu do wikija wozjejwene. Tute dataje  za nikoho widźomne njejsu, jenož za wužiwarja, kiž je je nahrał.",
        "uploadstash-clear": "Schowane nahrate dataje zhašeć",
        "uploadstash-nofiles": "Nimaš žane schowane nahrate dataje.",
-       "uploadstash-badtoken": "Wuwjedźenje teje akcije je so njeporadźiło, snano dokelž twoje wobdźěłowanske daty su spadnjene. Spytaj hišće raz.",
-       "uploadstash-errclear": "Wotstronjenje datajow je so njeporadźiło.",
+       "uploadstash-badtoken": "Wuwjedźenje teje akcije njeje so poradźiło, snano dokelž twoje wobdźěłowanske daty su spadnjene. Spytaj prošu hišće raz.",
+       "uploadstash-errclear": "Wotstronjenje datajow njeje so poradźiło.",
        "uploadstash-refresh": "Lisćinu datajow aktualizować",
        "invalid-chunk-offset": "Njepłaćiwy startowy dypk",
        "img-auth-accessdenied": "Přistup wotpokazany",
        "nopagetext": "Cilowa strona, kotruž sće podał, njeeksistuje.",
        "pager-newer-n": "{{PLURAL:$1|nowši 1|nowšej $1|nowše $1|nowšich $1}}",
        "pager-older-n": "{{PLURAL:$1|starši 1|staršej $1|starše $1|staršich $1}}",
-       "suppress": "Dohladowanje",
+       "suppress": "Potłóčować",
        "querypage-disabled": "Tuta specialna strona je z wukonowych přičinow znjemóžnjena.",
        "apihelp": "API-pomoc",
        "apihelp-no-such-module": "Modul \"$1\" njeje so namakał.",
        "apisandbox-intro": "Wužij tutu stronu, zo by z '''websłužbu Mediawiki API''' eksperimentował.\nHlej [https://www.mediawiki.org/wiki/API:Main_page API-dokumentaciju] za dalše podrobnosće za wužiwanje API. Přikład: [https://www.mediawiki.org/wiki/API#A_simple_example Wobsah hłowneje strony wotwołać]. Wubjer akciju, zo by dalše přikłady widźał.\n\nDźiwaj na to, zo, hačrunjež to je hrajkanišćo, akcije, kotrež na tutej stronje přewjedźeš, móhli wiki změnić.",
        "apisandbox-submit": "Naprašowanje přewjesć",
        "apisandbox-reset": "Wuprózdnić",
-       "apisandbox-examples": "Přikład",
-       "apisandbox-results": "Wuslědk",
+       "apisandbox-examples": "Přikłady",
+       "apisandbox-results": "Wuslědki",
        "apisandbox-request-url-label": "URL naprašowanja:",
-       "apisandbox-request-time": "Naprašowanski čas: $1",
+       "apisandbox-request-time": "Traće naprašowanja: {{PLURAL:$1|$1 milisekunda|$1 milisekundźe|$1 milisekundy|$1 milisekundow}}",
        "booksources": "Pytanje po ISBN",
        "booksources-search-legend": "Žórła za knihi pytać",
        "booksources-search": "Pytać",
        "booksources-text": "To je lisćina wotkazow k druhim sydłam, kotrež nowe a trjebane knihi předawaja. Tam móžeš tež dalše informacije wo knihach dóstać, kotrež pytaš:",
        "booksources-invalid-isbn": "Podate ISBN-čisło njezda so płaćiwe być; přepruwuj za zmylkami, z tym zo z orginialneho žórła kopěruješ.",
        "specialloguserlabel": "Wukonjer:",
-       "speciallogtitlelabel": "Cil (titul abo wužiwar):",
+       "speciallogtitlelabel": "Cil (titul abo {{ns:user}}:wužiwarske mjeno za wužiwarja):",
        "log": "Protokole",
        "all-logs-page": "Wšě zjawne protokole",
        "alllogstext": "Kombinowane zwobraznjenje wšěch k dispozicij stejacych protokolow w {{GRAMMAR:lokatiw|{{SITENAME}}}}. Móžeš napohlad wobmjezować, wuběrajo typ protokola, wužiwarske mjeno (dźiwajo na wulkopisanje) abo potrjechu stronu (tež dźiwajo na wulkopisanje).",
        "wlheader-showupdated": "Strony, kotrež su so po twojim poslednim wopyće změnili, so '''tučne''' pokazuja.",
        "wlnote": "Deleka {{PLURAL:$1|je poslednja změna|stej poslednjej <strong>$1</strong> změnje|su poslednje <strong>$1</strong> změny|je poslednich <strong>$1</strong> změnow}} za {{PLURAL:$2|poslednju hodźinu|poslednje <strong>$2</strong> hodźinje|poslednje <strong>$2</strong> hodźiny|poslednich <strong>$2</strong> hodźin}}, staw : $3, $4.",
        "wlshowlast": "Změny zańdźenych $1 hodźin, $2 dnjow, pokazać",
-       "wlshowtime": "Pokazaj změny zašłych",
+       "wlshowtime": "Perioda, kotraž ma so pokazać:",
        "watchlist-options": "Opcije wobkedźbowankow",
        "watching": "Wobkedźbuju…",
        "unwatching": "Njewobkedźbuju…",
        "deletepage": "Stronu zhašeć",
        "confirm": "Wobkrućić",
        "excontent": "wobsah běše: '$1'",
-       "excontentauthor": "wobsah bě: '$1' (a jenički wobdźěłowar bě '[[Special:Contributions/$2|$2]]')",
+       "excontentauthor": "wobsah bě: „$1“, a jenički wobdźěłar bě „[[Special:Contributions/$2|$2]]“ ([[User talk:$2|diskusija]])",
        "exbeforeblank": "wobsah do wuprózdnjenja běše: '$1'",
        "delete-confirm": "„$1“ wušmórnyć",
        "delete-legend": "Wušmórnyć",
        "delete-toobig": "Tuta strona ma z wjace hač $1 {{PLURAL:$1|wersiju|wersijomaj|wersijemi|wersijemi}} wulke wobdźěłanske stawizny. Wušmórnjenje tajkich stronow bu wobmjezowane, zo by připadne přetorhnjenje {{SITENAME}} wobešło.",
        "delete-warning-toobig": "Tuta strona ma z wjace hač $1 {{PLURAL:$1|wersiju|wersijomaj|wersijemi|wersijemi}} wulke wobdźěłanske stawizny. Wušmórnjenje móže operacije datoweje banki {{SITENAME}} přetorhnyć; pokročuj z kedźbliwosću.",
        "deleteprotected": "Njemóžeš tutu stronu zhašeć, dokelž je so škitała.",
-       "deleting-backlinks-warning": "'''Warnowanje:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Druhe strony]] wotkazuja k stronje abo strona je druhdźe zapřijata, kotruž chceš zhašeć.",
+       "deleting-backlinks-warning": "<strong>Warnowanje:</strong> [[Special:WhatLinksHere/{{FULLPAGENAME}}|Druhe strony]] wotkazuja k stronje abo strona je druhdźe zapřijata, kotruž chceš zhašeć.",
        "rollback": "Změny cofnyć",
        "rollbacklink": "Cofnyć",
        "rollbacklinkcount": "$1 {{PLURAL:$1|změnu|změnje|změny|změnow}} cofnyć",
        "protect-locked-blocked": "Njemóžeš škit strony změnič, dokelž twoje konto je zablokowane. Tu widźiš aktualne škitne nastajenja za stronu'''„$1“:'''",
        "protect-locked-dblock": "Datowa banka je zawrjena, tohodla njemóžeš škit strony změnić. Tu widźiš aktualne škitne nastajenja za stronu'''„$1“:'''",
        "protect-locked-access": "Nimaš trěbne prawa, zo by škit strony změnił. Tu widźiš aktualne škitne nastajenja za stronu'''„$1“:'''",
-       "protect-cascadeon": "Tuta strona je tuchwilu škitana, dokelž je w {{PLURAL:$1|slědowacej stronje|slědowacych stronach}} zapřijata, {{PLURAL:$1|kotraž je|kotrež su}} přez kaskadowu opciju {{PLURAL:$1|škitana|škitane}}. Změny na škitnym schodźenku tuteje strony njebudu kaskadowy škit wobwliwować.",
+       "protect-cascadeon": "Tuta strona je tuchwilu škitana, dokelž je w {{PLURAL:$1|slědowacej stronje|slědowacymaj stronomaj|slědowacych stronach}} zapřijata, {{PLURAL:$1|kotraž je|kotrejž stej|kotrež su}} přez kaskadowu opciju {{PLURAL:$1|škitana|škitanej|škitane}}. Změny na škitnym schodźenku tuteje strony njebudu kaskadowy škit wobwliwować.",
        "protect-default": "Wšěm wužiwarjam dowolić",
        "protect-fallback": "Jenož wužiwarjow z prawom \"$1\" dowolić",
        "protect-level-autoconfirmed": "Jenož awtomatisce wobkrućenym wužiwarjam dowolić",
        "undeletepagetext": "{{PLURAL:$1|Slědowaca strona bu wušmórnjena, ale je|Slědowacej $1 stronje buštej wušmórnjenej, ale stej|Slědowace $1 strony buchu wušmórnjene, ale su|Slědowacych $1 bu wušmórnjene, ale je}} hišće w archiwje a {{PLURAL:$1|da so|datej so|dadźa so|da so}} wobnowić.\nArchiw da so periodisce wuprózdnić.",
        "undelete-fieldset-title": "Wersije wobnowić",
        "undeleteextrahelp": "Zo by wšě stawizny strony wobnowił, wostaj prošu wšě kontrolowe kašćiki njewubrane a klikń na '''''{{int:undeletebtn}}'''''.\nZo by selektiwne wobnowjenje přewjedł, wubjer kašćiki, kotrež wersijam wotpowěduja, kotrež maja so wobnowić, a klikń na '''''{{int:undeletebtn}}'''''.",
-       "undeleterevisions": "$1 {{PLURAL:$1|wersija|wersiji|wersije|wersijow}} {{PLURAL:$1|archiwowana|archiwowanej|archiwowane|archiwowane}}",
+       "undeleterevisions": "$1 {{PLURAL:$1|wersija|wersiji|wersije|wersijow}} {{PLURAL:$1|zhašana|zhašanej|zhašane|zhašanych}}",
        "undeletehistory": "Jeli tutu stronu wobnowiš, so wšě (tež prjedy wušmórnjene) wersije zaso do stawiznow wobnowja. Jeli bu po wušmórnjenju nowa strona ze samsnym mjenom wutworjena, budu so wobnowjene wersije w prjedawšich stawiznach jewić.",
        "undeleterevdel": "Wobnowjenje so njepřewjedźe, jeli je najwyša strona docpěta abo datajowa wersija budźe so zdźěla wušmórnje.\nW tutym padźe dyrbiš najnowšu wušmórnjenu wersiju znjemóžnić abo pokazać.",
        "undeletehistorynoadmin": "Strona bu wušmórnjena. Přičina za wušmórnjenje so deleka w zjeću pokazuje, zhromadnje z podrobnosćemi wužiwarjow, kotřiž běchu tutu stronu do zničenja wobdźěłali. Tuchwilny wobsah strony je jenož administratoram přistupny.",
        "contributions": "Přinoški {{GENDER:$1|wužiwarja|wužiwarki}}",
        "contributions-title": "Wužiwarske přinoški wot „$1“",
        "mycontris": "Přinoški",
+       "anoncontribs": "Přinoški",
        "contribsub2": "Za {{GENDER:$3|$1}} ($2)",
        "contributions-userdoesnotexist": "Wužiwarske konto \"$1\" njeje zregistrowane.",
        "nocontribs": "Žane změny, kotrež podatym kriterijam wotpowěduja.",
        "whatlinkshere-next": "{{PLURAL:$1|přichodny|přichodnej|přichodne|přichodne $1}}",
        "whatlinkshere-links": "← wotkazy",
        "whatlinkshere-hideredirs": "Daleposrědkowanja $1",
-       "whatlinkshere-hidetrans": "Zapřijeća $1",
+       "whatlinkshere-hidetrans": "Transkluzije $1",
        "whatlinkshere-hidelinks": "Wotkazy $1",
        "whatlinkshere-hideimages": "Datajowe wotkazy $1",
        "whatlinkshere-filters": "Filtry",
        "cant-move-to-user-page": "Nimaš prawo stronu do wužiwarskeje strony přesunyć (z wuwzaćom do wužiwarskeje podstrony).",
        "cant-move-category-page": "Nimaš prawo, zo by kategorijowe strony přesunył.",
        "cant-move-to-category-page": "Nimaš prawo, stronu do kategorijoweje strony přesunyć.",
-       "newtitle": "pod nowe hesło",
+       "newtitle": "Nowy titul:",
        "move-watch": "Stronu wobkedźbować",
        "movepagebtn": "Stronu přesunyć",
        "pagemovedsub": "Přesunjenje wuspěšne",
        "javascripttest": "JavaScriptowy test",
        "javascripttest-pagetext-unknownaction": "Njeznata akcija \"$1\"",
        "javascripttest-qunit-intro": "Hlej [$1 testowansku dokumentaciju] na mediawiki.org.",
-       "tooltip-pt-userpage": "Twoja wužiwarska strona",
+       "tooltip-pt-userpage": "{{GENDER:|Twoja wužiwarska}} strona",
        "tooltip-pt-anonuserpage": "Wužiwarska strona IP-adresy, z kotrejž tuchwilu dźěłaš",
-       "tooltip-pt-mytalk": "Twoja diskusijna strona",
+       "tooltip-pt-mytalk": "{{GENDER:|Twoja}} diskusijna strona",
        "tooltip-pt-anontalk": "Diskusija wo změnach z tuteje IP-adresy",
-       "tooltip-pt-preferences": "moje nastajenja",
+       "tooltip-pt-preferences": "{{GENDER:|Twoje}} nastajenja",
        "tooltip-pt-watchlist": "lisćina stronow, kotrež wobkedźbuješ",
-       "tooltip-pt-mycontris": "Lisćina twojich přinoškow",
+       "tooltip-pt-mycontris": "Lisćina {{GENDER:|twojich}} přinoškow",
        "tooltip-pt-login": "Móžeš so woměrje přizjewić, to pak zawjazowace njeje.",
        "tooltip-pt-logout": "so wotzjewić",
        "tooltip-pt-createaccount": "Pozbudźujemy će, konto załožić a so přizjewić; njeje wšak nuznje trěbne",
        "tooltip-t-recentchangeslinked": "aktualne změny w stronach, na kotrež tuta strona wotkazuje",
        "tooltip-feed-rss": "RSS-feed za tutu stronu",
        "tooltip-feed-atom": "Atom-feed za tutu stronu",
-       "tooltip-t-contributions": "přinoški tutoho wužiwarja wobhladać",
-       "tooltip-t-emailuser": "wužiwarjej mejlku pósłać",
+       "tooltip-t-contributions": "Lisćina přinoškow {{GENDER:$1|tutoho wužiwarja|tuteje wužiwarki}}",
+       "tooltip-t-emailuser": "{{GENDER:$1|Tutomu wužiwarjej|Tutej wužiwarce}} mejlku pósłać",
        "tooltip-t-info": "Dalše informacije wo tutej stronje",
        "tooltip-t-upload": "Dataje nahrać",
        "tooltip-t-specialpages": "lisćina wšěch specialnych stronow",
        "lastmodifiedatby": "Strona bu dnja $1 w $2 hodź. wot $3 změnjena.",
        "othercontribs": "Bazěruje na dźěle wužiwarja $1.",
        "others": "druhich",
-       "siteusers": " {{PLURAL:$2|wužiwarja|wužiwarjeju|wužiwarjow|wužiwarjow}} $1 na {{GRAMMAR:lokatiw|{{SITENAME}}}}",
+       "siteusers": " {{PLURAL:$2|{{GENDER:$1|wužiwarja|wužiwarki}}|wužiwarjow|wužiwarkow}} $1 na {{GRAMMAR:lokatiw|{{SITENAME}}}}",
        "anonusers": " {{PLURAL:$2|anonymny wužiwar|anonymnaj wužiwarjej|anonymni wužiwarjo|anonymnych wužiwarjow}} $1 na {{GRAMMAR:lokatiw|{{SITENAME}}}}",
        "creditspage": "Dźak awtoram",
        "nocredits": "Za tutu stronu žane informacije wo zasłužbach njejsu.",
        "scarytranscludefailed-httpstatus": "[Wotwołanje předłohi za $1 je so njeporadźiło: HTTP $2]",
        "scarytranscludetoolong": "[URL je předołhi]",
        "deletedwhileediting": "'''Kedźbu''': Tuta strona bu wušmórnjena, po tym zo sy započał ju wobdźěłać!",
-       "confirmrecreate": "Wužiwar [[User:$1|$1]] ([[User talk:$1|diskusija]]) je stronu wušmórnył, po tym zo sy započał ju wobdźěłać. Přičina:\n: ''$2''\nProšu potwjerdź, zo chceš tutu stronu woprawdźe znowa wutworić.",
-       "confirmrecreate-noreason": "Wužiwar [[User:$1|$1]] ([[User talk:$1|diskusija]]) je tutu stronu zhašał, po tym zo sće wobdźěłanje započał. Prošu wobkruć, zo woprawdźe chceš tutu stronu znowa wutworić.",
+       "confirmrecreate": "{{GENDER:$1|Wužiwar|Wužiwarka}} [[User:$1|$1]] ([[User talk:$1|diskusija]]) je stronu {{GENDER:$1|wušmórnył|wušmórnyła}}, po tym zo sy započał ju wobdźěłać. Přičina:\n: <em>$2</em>\nProšu potwjerdź, zo chceš tutu stronu woprawdźe znowa wutworić.",
+       "confirmrecreate-noreason": "{{GENDER:$1|Wužiwar|Wužiwarka}} [[User:$1|$1]] ([[User talk:$1|diskusija]]) je tutu stronu {{GENDER:$1|zhašał|zhašała}}, po tym zo sće wobdźěłowanje započał. Prošu wobkruć, zo woprawdźe chceš tutu stronu znowa wutworić.",
        "recreate": "Znowa wutworić",
        "confirm_purge_button": "W porjadku",
        "confirm-purge-top": "Pufrowak strony wuprózdnić?",
        "watchlistedit-raw-done": "Twoje wobkedźbowanki buchu składowane.",
        "watchlistedit-raw-added": "{{PLURAL:$1|1 zapisk bu dodaty|$1 zapiskaj buštej dodatej|$1 zapiski buchu dodate|$1 zapiskow buchu dodate}}:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 zapisk bu wotstronjeny|$1 zapiskaj buštej wotstronjenej|$1 zapiski buchu wotstronjene|$1 zapiskow buchu wotstronjene}}:",
-       "watchlistedit-clear-title": "Wotstronjene wobkedźbowanki",
+       "watchlistedit-clear-title": "Wobkedźbowanki zhašeć",
        "watchlistedit-clear-legend": "Wobkedźbowanki wotstronić",
        "watchlistedit-clear-explain": "Wšě titule budu so z twojich wobkedźbowankow wotstronjeć",
        "watchlistedit-clear-titles": "Titule:",
        "version-libraries": "Instalowane biblioteki",
        "version-libraries-library": "Biblioteka",
        "version-libraries-version": "Wersija",
-       "redirect": "Po datajowym mjenje, wužiwarju, stronje abo wersijowym ID dale sposrědkować",
+       "redirect": "Na dataju, wužiwarja, stronu abo wersiju abo protokolowy ID dale sposrědkować",
        "redirect-summary": "Tuta specialna strona so do dataje (datajowe mjeno je podate), strony (wersijowy ID abo ID strony je podaty) abo wužiwarskeje strony (numeriski wužiwarski ID je podaty) dale sposrědkuje. Wužiće:\n[[{{#Special:Redirect}}/file/Přikład.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] abo [[{{#Special:Redirect}}/user/101]].",
        "redirect-submit": "Los",
        "redirect-lookup": "Pytać:",
        "tags-deactivate-submit": "Znjemóžnić",
        "tags-edit-revision-selected": "{{PLURAL:$1|Wubrana wersija|Wubranej wersiji|Wubrane wersije}} wot [[:$2]]:",
        "tags-edit-logentry-selected": "{{PLURAL:$1|Wubrany protokolowy podawk|Wubranej protokolowej podawkaj|Wubrane protokolowe podawki}}",
-       "tags-edit-existing-tags-none": "\"Žadyn\"",
+       "tags-edit-existing-tags-none": "<em>Žadyn</em>",
        "tags-edit-reason": "Přičina:",
        "tags-edit-revision-submit": "Změny na {{PLURAL:$1|tutu wersiju|$1 wersiji|$1 wersije|$1 wersijow}} nałožić",
        "tags-edit-logentry-submit": "Změny na {{PLURAL:$1|tutón protokolowy zapisk|$1 protokolowej zapiskaj|$1 protokolowe zapiski|$1 protokolowych zapiskow}}",
-       "tags-edit-success": "Změny su so wuspěšnje nałožili.",
+       "tags-edit-success": "Změny su so nałožili.",
        "tags-edit-failure": "Změny njehodźa so nałožować:\n$1",
        "tags-edit-nooldid-title": "Njepłaćiwa cilowa wersija",
        "comparepages": "Strony přirunać",
        "logentry-newusers-create2": "$1 je wužiwarske konto $3 {{GENDER:$2|załožił|załožiła}}",
        "logentry-newusers-byemail": "$1 je wužiwarske konto $3 {{GENDER:$2|załožił|załožiła}} a hesło je so přez e-mejl pósłało.",
        "logentry-newusers-autocreate": "Wužiwarske konto $1 je so awtomatisce {{GENDER:$2|załožiło}}",
-       "logentry-rights-rights": "$1 je skupinske čłonstwo za $3 z $4 do $5 {{GENDER:$2|změnił|změniła}}",
+       "logentry-rights-rights": "$1 je skupinske čłonstwo za {{GENDER:$6|$3}} z $4 do $5 {{GENDER:$2|změnił|změniła}}",
        "logentry-rights-rights-legacy": "$1 je skupinske čłonstwo za $3 {{GENDER:$2|změnił|změniła}}",
        "logentry-rights-autopromote": "$1 je so awtomatisce wot $4 do $5 {{GENDER:$2|přirjadował|přirjadowała}}",
        "logentry-upload-upload": "$1 je $3 {{GENDER:$2|nahrał|nahrała}}",
        "api-error-badaccess-groups": "Nimaš prawo dataje do tutoho wikija nahrać.",
        "api-error-badtoken": "Nutřkowny zmylk: Wopačny token.",
        "api-error-copyuploaddisabled": "Nahrawanje přez URL je na tutym serwerje znjemóžnjene.",
-       "api-error-duplicate": "{{PLURAL:$1|Je|Stej|Su|Je}} hižo {{PLURAL:$1|druha dataja|druhej dataji|druhe dataje|druhich datajow}} ze samsnym wobsahom na sydle",
+       "api-error-duplicate": "{{PLURAL:$1|Je|Stej|Su}} hižo {{PLURAL:$1|druha dataja|druhej dataji|druhe dataje}} ze samsnym wobsahom na sydle.",
        "api-error-duplicate-archive": "{{PLURAL:$1|Bě druha dataja|Běštej druhej dataji|Běchu druhe dataje|Bě druhich datajow}} hižo na websydle ze samsnym wobsahom, ale {{PLURAL:$1|je so zhašała|stej so zhašałoj|su so zhašeli|je so zhašało}}.",
        "api-error-empty-file": "Dataja, kotruž sy nahrał, je prózdna.",
        "api-error-emptypage": "Wutworjenje nowych, prózdnych stronow njeje dowolene.",
        "expand_templates_generate_xml": "Analyzowy štom XML pokazać",
        "expand_templates_generate_rawhtml": "Hruby HTML pokazać",
        "expand_templates_preview": "Přehlad",
-       "pagelanguage": "Selektor rěče strony",
+       "pagelanguage": "Rěč strony změnić",
        "pagelang-name": "Strona",
        "pagelang-language": "Rěč",
        "pagelang-use-default": "Standardnu rěč wužiwać",
        "special-characters-title-minus": "minusowe znamješko",
        "mw-widgets-dateinput-placeholder-day": "JJJJ-MM-TT",
        "mw-widgets-dateinput-placeholder-month": "JJJJ-MM",
-       "api-error-blacklisted": "Prošu wubjer druhi, wuprajiwy titul.",
        "randomrootpage": "Připadna korjenjowa strona"
 }
index fc76250..37ad555 100644 (file)
        "createacct-another-realname-tip": "本名は省略できます。\n入力すると、その利用者の著作物の帰属表示に使われます。",
        "pt-login": "ログイン",
        "pt-login-button": "ログイン",
+       "pt-login-continue-button": "ログインを続行",
        "pt-createaccount": "アカウント作成",
        "pt-userlogout": "ログアウト",
        "php-mail-error-unknown": "PHPのmail()関数での不明なエラーです。",
        "savearticle": "ページを保存",
        "savechanges": "変更を保存",
        "publishpage": "ページを公開",
+       "publishchanges": "変更を公開",
        "preview": "プレビュー",
        "showpreview": "プレビューを表示",
        "showdiff": "差分を表示",
        "log-action-filter-protect-modify": "保護設定の変更",
        "log-action-filter-protect-unprotect": "保護解除",
        "log-action-filter-protect-move_prot": "保護設定の移動",
+       "log-action-filter-rights-rights": "手動変更",
+       "log-action-filter-rights-autopromote": "自動変更",
        "log-action-filter-suppress-event": "記録の秘匿",
        "log-action-filter-suppress-revision": "版の秘匿",
        "log-action-filter-suppress-delete": "ページの秘匿",
index 5359a0d..a3e63d5 100644 (file)
        "youhavenewmessagesmanyusers": "여러 사용자로부터의 $1가 있습니다. ($2)",
        "newmessageslinkplural": "{{PLURAL:$1|새 메시지|999=새 메시지}}",
        "newmessagesdifflinkplural": "마지막으로 {{PLURAL:$1|바뀐 내용|999=바뀐 내용}}",
-       "youhavenewmessagesmulti": "다른 사용자가 $1에 남긴 새 메시지가 있습니다",
+       "youhavenewmessagesmulti": "$1에 새 메시지가 있습니다",
        "editsection": "편집",
        "editold": "편집",
        "viewsourceold": "원본 보기",
        "formerror": "오류: 양식을 제출할 수 없습니다.",
        "badarticleerror": "이 명령은 이 문서에서 수행할 수 없습니다.",
        "cannotdelete": "\"$1\" 문서나 파일을 삭제할 수 없습니다.\n이미 삭제되었을 수도 있습니다.",
-       "cannotdelete-title": "\"$1\" 문서를 삭제할 수 없습니다.",
+       "cannotdelete-title": "\"$1\" 문서를 삭제할 수 없습니다",
        "delete-hook-aborted": "훅이 삭제를 중단했습니다.\n아무런 설명도 주어지지 않았습니다.",
        "no-null-revision": "\"$1\" 문서에 대한 빈 판을 새로 만들 수 없습니다.",
        "badtitle": "잘못된 제목",
        "myprivateinfoprotected": "내 개인 정보를 편집할 권한이 없습니다.",
        "mypreferencesprotected": "내 환경 설정을 편집할 권한이 없습니다.",
        "ns-specialprotected": "특수 문서는 편집할 수 없습니다.",
-       "titleprotected": "[[User:$1|$1]] 사용자가 문서 만들기를 금지했습니다.\n이유는 다음과 같습니다. <em>$2</em>",
+       "titleprotected": "[[User:$1|$1]]님이 문서 만들기를 보호했습니다.\n이유는 다음과 같습니다. <em>$2</em>",
        "filereadonlyerror": "\"$2\" 파일 저장소가 읽기 전용이기 때문에 \"$1\" 파일을 바꿀 수 없습니다.\n\n파일 저장소를 잠근 시스템 관리자가 다음과 같은 설명을 남겼습니다: \"$3\".",
        "invalidtitle-knownnamespace": "제목 오류: \"$2\" 이름공간과 \"$3\" 텍스트",
        "invalidtitle-unknownnamespace": "제목 오류: 알 수 없는 $1 이름공간 번호와 \"$2\" 텍스트",
        "userlogin-resetpassword-link": "비밀번호를 잊으셨나요?",
        "userlogin-helplink2": "로그인에 대한 도움말",
        "userlogin-loggedin": "이미 {{GENDER:$1|$1}} 사용자로 로그인되어 있습니다.\n다른 사용자로 로그인하려면 아래의 양식을 사용하세요.",
-       "userlogin-reauth": "사용자가 $1임을 확인하려면 다시 로그인해야 합니다.",
+       "userlogin-reauth": "당신이 {{GENDER:$1|$1}}임을 검증하려면 다시 로그인해야 합니다.",
        "userlogin-createanother": "다른 계정 만들기",
        "createacct-emailrequired": "이메일 주소",
        "createacct-emailoptional": "이메일 주소 (선택 사항)",
        "password-login-forbidden": "이 사용자 계정 이름과 비밀번호는 사용할 수 없습니다.",
        "mailmypassword": "비밀번호 재설정",
        "passwordremindertitle": "{{SITENAME}}의 새 임시 비밀번호",
-       "passwordremindertext": "$1 IP 주소에서 당신일 수도 있는 누군가가 {{SITENAME}} ($4)의 새 비밀번호를 요청했습니다.\n\"$2\" 사용자의 임시 비밀번호는 \"$3\"로 설정되었습니다. 이것이 자신이 의도한 바라면\n지금 로그인하여 새로운 비밀번호를 만드세요.\n임시 비밀번호는 {{PLURAL:$5|1일|$5일}} 후에 만료됩니다.\n\n이 요청을 다른 사람이 했거나 이전 비밀번호를 기억해 내서 바꿀 필요가 없으면\n이 메시지를 무시하고 이전 비밀번호를 계속 사용할 수 있습니다.",
+       "passwordremindertext": "당신일 수도 있는 $1 IP 주소를 사용하는 사용자가 {{SITENAME}} ($4)의 새 비밀번호를 요청했습니다.\n\"$2\" 사용자의 임시 비밀번호는 \"$3\"로 설정되었습니다. 이것이 자신이 의도한 바라면\n지금 로그인하여 새로운 비밀번호를 만드세요.\n임시 비밀번호는 {{PLURAL:$5|1일|$5일}} 후에 만료됩니다.\n\n이 요청을 다른 사람이 했거나 이전 비밀번호를 기억해 내서 바꿀 필요가 없으면\n이 메시지를 무시하고 이전 비밀번호를 계속 사용할 수 있습니다.",
        "noemail": "\"$1\" 사용자는 이메일 주소를 등록하지 않았습니다.",
        "noemailcreate": "올바른 이메일 주소를 제공해야 합니다.",
        "passwordsent": "\"$1\" 계정의 새로운 비밀번호를 이메일로 보냈습니다.\n비밀번호를 받고 다시 로그인해 주세요.",
        "botpasswords-label-delete": "삭제",
        "botpasswords-label-resetpassword": "비밀번호 재설정",
        "botpasswords-label-grants": "적용할 수 있는 부여:",
-       "botpasswords-help-grants": "ê°\9cê°\9cì\9d\98 ë¶\80ì\97¬ ê¸°ë\8a¥ì\9d\80 ì\82¬ì\9a©ì\9e\90 ê³\84ì \95ì\9d´ ì\9d´ë¯¸ ì\86\8cì\9c í\95\98ê³  ì\9e\88ë\8a\94 ì\82¬ì\9a©ì\9e\90 ê¶\8cí\95\9cì\97\90 ë\8c\80í\95\9c ì \91ê·¼ì\9d\84 ì \9cê³µí\95©ë\8b\88ë\8b¤. ì\9e\90ì\84¸í\95\9c ì\82¬í\95­ì\9d\80 [[Special:ListGrants|ë¶\80ì\97¬ ëª©ë¡\9d]]ì\9d\84 í\99\95ì\9d¸í\95´ ì£¼ì\8b­ì\8b\9cì\98¤.",
+       "botpasswords-help-grants": "ê°\81ê°\81 ë¶\80ì\97¬ë\90\9c ê°\92ì\9d\80 ëª©ë¡\9dì\97\90ì\84\9c ì\82¬ì\9a©ì\9e\90 ê³\84ì \95ì\9d\84 ì\9d´ë¯¸ ê°\96ê³  ì\9e\88ë\8a\94 ì\82¬ì\9a©ì\9e\90 ê¶\8cí\95\9cì\97\90 ì \91ê·¼í\95  ì\88\98 ì\9e\88ë\8a\94 ê¶\8cí\95\9cì\9d\84 ì¤\8dë\8b\88ë\8b¤. ì\9e\90ì\84¸í\95\9c ì \95ë³´ë\8a\94 [[Special:ListGrants|ë¶\80ì\97¬ í\91\9c]]ì\9d\84 ë³´ì\84¸ì\9a\94.",
        "botpasswords-label-restrictions": "사용 제한:",
        "botpasswords-label-grants-column": "승인됨",
        "botpasswords-bad-appid": "\"$1\"이라는 봇 이름은 유효하지 않습니다.",
        "passwordreset-capture-help": "이 상자에 체크하면 이메일이 발송된 즉시 임시 비밀번호가 담긴 이메일을 볼 수 있습니다.",
        "passwordreset-email": "이메일 주소:",
        "passwordreset-emailtitle": "{{SITENAME}} 계정에 대한 자세한 정보",
-       "passwordreset-emailtext-ip": "당신일 수도 있는 $1 IP 주소를 사용하는 사용자가 {{SITENAME}} ($4)의 비밀번호 재설정을 요청하였습니다.\n이 이메일 주소와 연관된 {{PLURAL:$3|계정}}의 목록입니다:\n\n$2\n\n{{PLURAL:$3|이 임시 비밀번호}}는 {{PLURAL:$5|1일|$5일}} 후에 만료됩니다.\n이 비밀번호로 로그인한 후 비밀번호를 바꾸십시오. 만약 당신이 아닌 다른 사람이 요청하였거나,\n원래의 비밀번호를 기억해냈다면, 이 메시지를 무시하고\n이전의 비밀번호를 계속 사용할 수 있습니다.",
+       "passwordreset-emailtext-ip": "당신일 수도 있는 $1 IP 주소를 사용하는 사용자가 {{SITENAME}} ($4)의 비밀번호 재설정을 요청하였습니다.\n이 이메일 주소와 연관된 사용자 {{PLURAL:$3|계정}}의 목록입니다:\n\n$2\n\n{{PLURAL:$3|이 임시 비밀번호}}는 {{PLURAL:$5|1일|$5일}} 후에 만료됩니다.\n이 비밀번호로 로그인한 후 비밀번호를 바꾸십시오. 만약 당신이 아닌 다른 사람이 요청하였거나,\n원래의 비밀번호를 기억해냈다면, 이 메시지를 무시하고\n이전의 비밀번호를 계속 사용할 수 있습니다.",
        "passwordreset-emailtext-user": "{{SITENAME}} ($4)의 사용자 $1이 비밀번호 재설정을 요청하였습니다.\n이 이메일 주소와 연관된 {{PLURAL:$3|계정}}의 목록입니다:\n\n$2\n\n{{PLURAL:$3|이 임시 비밀번호}}는 {{PLURAL:$5|$5일}} 후에 만료됩니다.\n이 비밀번호로 로그인한 후 비밀번호를 바꾸십시오. 만약 당신이 아닌 다른 사람이 요청하였거나,\n원래의 비밀번호를 기억해냈다면, 이 메시지를 무시하고\n이전의 비밀번호를 계속 사용할 수 있습니다.",
        "passwordreset-emailelement": "사용자 이름: \n$1\n\n임시 비밀번호: \n$2",
        "passwordreset-emailsentemail": "당신의 계정과 연결된 이메일 주소가 있다면, 비밀번호 재설정 메일이 전해질 것입니다.",
        "showpreview": "미리 보기",
        "showdiff": "차이 보기",
        "blankarticle": "<strong>경고:</strong> 만들려는 문서가 비어 있습니다.\n\"{{int:savearticle}}\"을 다시 클릭하면, 아무 내용 없이 문서가 만들어집니다.",
-       "anoneditwarning": "<strong>경고:</strong> 로그인을 하고 있지 않습니다. 편집을 하면 IP 주소가 공개적으로 보이게 됩니다. <strong>[$1 로그인]</strong>하거나 <strong>[$2 계정을 생성하면]</strong>, 편집 시에 사용자 이름이 표시되며 더불어 다른 혜택들도 누릴 수 있습니다.",
+       "anoneditwarning": "<strong>경고:</strong> 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. <strong>[$1 로그인]</strong>하거나 <strong>[$2 계정을 생성하면]</strong> 편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.",
        "anonpreviewwarning": "<em>로그인하고 있지 않습니다. 문서를 저장하면 당신의 IP 주소가 문서의 편집 역사에 남게 됩니다.</em>",
        "missingsummary": "'''알림:''' 편집 요약을 적지 않았습니다.\n이대로 \"{{int:savearticle}}\"을 클릭하면 편집 요약 없이 저장됩니다.",
        "selfredirect": "<strong>경고:</strong> 자기 자신으로 문서를 넘겨주고 있습니다.\n넘겨줄 대상을 잘못 입력했거나, 잘못된 문서를 편집하고 있을 수 있습니다.\n\"{{int:savearticle}}\"을 입력하면, 넘겨주기 문서가 생성될 것입니다.",
        "previewerrortext": "변경사항을 미리보기하는 도중 오류가 발생했습니다.",
        "blockedtitle": "사용자가 차단됨",
        "blockedtext": "'''사용자 계정 또는 IP 주소가 차단되었습니다.'''\n\n차단한 사람은 $1입니다.\n차단한 이유는 다음과 같습니다: $2\n\n* 차단이 시작된 시간: $8\n* 차단이 끝나는 시간: $6\n* 차단된 사용자: $7\n\n$1 또는 [[{{MediaWiki:Grouppage-sysop}}|다른 관리자]]에게 차단에 대해 문의할 수 있습니다.\n[[Special:Preferences|계정 환경 설정]]에 올바른 이메일 주소가 있어야만 '이메일 보내기' 기능을 사용할 수 있습니다. 또 이메일 보내기 기능이 차단되어 있으면 이메일을 보낼 수 없습니다.\n현재 당신의 IP 주소는 $3이고, 차단 ID는 #$5입니다.\n문의할 때에 이 정보를 같이 알려주세요.",
-       "autoblockedtext": "당신의 IP 주소는 $1님이 차단한 사용자가 사용했던 IP이기 때문에 자동으로 차단되었습니다.\n차단된 이유는 다음과 같습니다:\n\n:$2\n\n* 차단이 시작된 시간: $8\n* 차단이 끝나는 시간: $6\n* 차단된 사용자: $7\n\n$1 또는 [[{{MediaWiki:Grouppage-sysop}}|다른 관리자]]에게 차단에 대해 문의할 수 있습니다.\n\n[[Special:Preferences|계정 환경 설정]]에 올바른 이메일 주소가 있어야만 \"이메일 보내기\" 기능을 사용할 수 있습니다. 또한 이메일 보내기 기능이 차단되어 있으면 이메일을 보낼 수 없습니다.\n\n현재 IP 주소는 $3이고, 차단 ID는 #$5입니다.\n문의할 때에 이 정보를 같이 알려주세요.",
+       "autoblockedtext": "당신의 IP 주소는 $1님이 차단한 사용자가 사용했던 IP이기 때문에 자동으로 차단되었습니다.\n차단된 이유는 다음과 같습니다:\n\n:$2\n\n* 차단이 시작된 시간: $8\n* 차단이 끝나는 시간: $6\n* 차단된 사용자: $7\n\n$1 또는 [[{{MediaWiki:Grouppage-sysop}}|다른 관리자]]에게 차단에 대해 문의할 수 있습니다.\n\n[[Special:Preferences|사용자 환경 설정]]에 올바른 이메일 주소가 있어야만 \"이메일 보내기\" 기능을 사용할 수 있습니다. 또한 이메일 보내기 기능이 차단되어 있으면 이메일을 보낼 수 없습니다.\n\n현재 IP 주소는 $3이고, 차단 ID는 #$5입니다.\n문의할 때에 이 정보를 같이 알려주세요.",
        "blockednoreason": "이유를 입력하지 않음",
        "whitelistedittext": "문서를 편집하기 전에 $1해야 합니다.",
        "confirmedittext": "문서를 고치려면 이메일 인증 절차가 필요합니다.\n[[Special:Preferences|사용자 환경 설정]]에서 이메일 주소를 입력하고 이메일 주소 인증을 해주시기 바랍니다.",
        "editingold": "<strong>경고: 이 문서의 오래된 판을 편집하고 있습니다.</strong>\n이것을 저장하면, 이 판 이후로 바뀐 모든 편집이 사라집니다.",
        "yourdiff": "차이",
        "copyrightwarning": "{{SITENAME}}에서의 모든 기여는 $2 라이선스로 배포된다는 점을 유의해 주세요 (자세한 내용에 대해서는 $1 문서를 읽어주세요).\n만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.<br />\n또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.\n<strong>저작권이 있는 내용을 허가 없이 저장하지 마세요!</strong>",
-       "copyrightwarning2": "{{SITENAME}}에서의 모든 기여는 다른 사용자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요.\n만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.<br />\n또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 내용에 대해서는 $1 문서를 읽어 주세요).\n'''저작권이 있는 내용을 허가 없이 저장하지 마세요!'''",
+       "copyrightwarning2": "{{SITENAME}}에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요.\n만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.<br />\n또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 사항은 $1 문서를 보세요).\n<strong>저작권이 있는 내용을 허가 없이 저장하지 마세요!</strong>",
        "editpage-cannot-use-custom-model": "이 문서의 콘텐츠 모델은 변경될 수 없습니다.",
        "longpageerror": "'''오류: 문서의 크기가 {{PLURAL:$1|$1킬로바이트}}로 최대 크기인 {{PLURAL:$2|$2킬로바이트}}보다 큽니다.'''\n저장할 수 없습니다.",
        "readonlywarning": "<strong>경고: 데이터베이스가 관리를 위해 잠겨 있습니다. 따라서 문서를 편집한 내용을 지금 저장할 수 없습니다.</strong>\n편집 내용을 복사하여 붙여넣기 등을 사용하여 일단 다른 곳에 저장한 후, 나중에 다시 시도해 주세요.\n\n데이터베이스를 잠근 시스템 관리자가 남긴 설명은 다음과 같습니다: $1",
        "content-failed-to-parse": "$1 모델에 대한 $2 내용을 구문 분석하는 데 실패했습니다: $3",
        "invalid-content-data": "잘못된 내용 데이터입니다",
        "content-not-allowed-here": "\"$1\" 내용은 [[$2]] 문서예 허용하지 않습니다",
-       "editwarning-warning": "이 페이지에서 벗어나면 저장하지 않은 바뀜이 모두 사라집니다.\n로그인을 했다면, 환경 설정의 \"{{int:편집 상자}}\"에서 이 경고를 띄우지 않도록 설정할 수 있습니다.",
+       "editwarning-warning": "이 페이지에서 벗어나면 저장하지 않은 바뀜이 모두 사라집니다.\n로그인을 했다면, 환경 설정의 \"{{int:prefs-editing}}\"에서 이 경고를 띄우지 않도록 설정할 수 있습니다.",
        "editpage-notsupportedcontentformat-title": "지원하지 않는 내용 형식",
        "editpage-notsupportedcontentformat-text": "내용 형식 $1은(는) $2 내용 모델에서 지원하지 않습니다.",
        "content-model-wikitext": "위키텍스트",
        "undo-summary-username-hidden": "숨겨진 사용자가 $1 판을 되돌림",
        "cantcreateaccounttitle": "계정을 만들 수 없습니다",
        "cantcreateaccount-text": "현재 IP 주소('''$1''')는 [[User:$3|$3]] 사용자에 의해 계정 만들기가 차단되었습니다.\n\n차단 이유는 다음과 같습니다: $2",
-       "cantcreateaccount-range-text": "당신의 IP 주소(<strong>$4</strong>)가 속해 있는 <strong>$1</strong> 대역에서의 계정 생성을 [[User:$3|$3]] 사용자가 차단하였습니다.\n\n$3 사용자가 제시한 이유는 \"$2\"입니다.",
+       "cantcreateaccount-range-text": "당신의 IP 주소(<strong>$4</strong>)가 속해 있는 <strong>$1</strong> 대역에서의 계정 만들기를 [[User:$3|$3]]님이 차단했습니다.\n\n$3님이 제시한 이유는 \"$2\"입니다.",
        "viewpagelogs": "이 문서의 기록 보기",
        "nohistory": "이 문서는 편집 역사가 없습니다.",
        "currentrev": "최신판",
        "mergehistory-comment": "[[:$1]] 문서를 [[:$2]] 문서로 합침: $3",
        "mergehistory-same-destination": "원본 문서 이름과 대상 문서 이름은 같을 수 없습니다",
        "mergehistory-reason": "이유:",
-       "mergelog": "합치기 기록",
+       "mergelog": "병합 기록",
        "revertmerge": "합치기 해제",
-       "mergelogpagetext": "다음은 한 문서의 역사를 다른 문서의 역사와 í\95©ì¹\9c ìµ\9cê·¼ ê¸°ë¡\9dì\9e\85ë\8b\88ë\8b¤.",
+       "mergelogpagetext": "다음은 한 문서의 역사를 다른 문서의 역사와 ë³\91í\95©í\95\9c ìµ\9cê·¼ ê¸°ë¡\9dì\9e\85ë\8b\88ë\8b¤.",
        "history-title": "\"$1\"의 편집 역사",
        "difference-title": "\"$1\"의 두 판 사이의 차이",
        "difference-title-multipage": "\"$1\" 문서와 \"$2\" 문서 사이의 차이",
        "prefs-changeemail": "이메일 주소를 바꾸거나 제거하기",
        "prefs-setemail": "이메일 주소 설정하기",
        "prefs-email": "이메일 설정",
-       "prefs-rendering": "문서 보이기 설정",
+       "prefs-rendering": "문서 보이기",
        "saveprefs": "저장",
        "restoreprefs": "(모든 부분에서) 모두 기본 설정으로 되돌리기",
-       "prefs-editing": "편집 상자",
+       "prefs-editing": "편집",
        "rows": "줄 수:",
        "columns": "열 수:",
        "searchresultshead": "검색",
        "email": "이메일",
        "prefs-help-realname": "실명은 선택 사항입니다.\n실명을 입력하면 당신의 기여에 대한 저작자 표시에 쓰이게 될 수 있습니다.",
        "prefs-help-email": "이메일 주소 입력은 선택 사항입니다. 다만 비밀번호를 잊었을 때 비밀번호를 재설정하기 위해 필요합니다.",
-       "prefs-help-email-others": "자신의 문서나 토론 문서에 있는 이메일 보내기 링크로 다른 사용자가 연락할 수 있게 할 수도 있습니다.\n이 경우에도 이메일 주소는 다른 사용자가 연락할 때 공개되지 않습니다.",
+       "prefs-help-email-others": "자신의 사용자 문서나 토론 문서에 있는 이메일 보내기 링크로 다른 사용자가 연락할 수 있게 할 수도 있습니다.\n이 경우에도 이메일 주소는 다른 사용자가 연락할 때 공개되지 않습니다.",
        "prefs-help-email-required": "이메일 주소가 필요합니다.",
        "prefs-info": "기본 정보",
        "prefs-i18n": "언어 설정",
        "right-move-rootuserpages": "최상위 사용자 문서 이동",
        "right-move-categorypages": "분류 문서 이동",
        "right-movefile": "파일 이동",
-       "right-suppressredirect": "문ì\84\9c를 ì\98®ê¸¸ 때 원래 문서 이름으로 된 넘겨주기를 만들지 않기",
+       "right-suppressredirect": "문ì\84\9c를 ì\9d´ë\8f\99í\95  때 원래 문서 이름으로 된 넘겨주기를 만들지 않기",
        "right-upload": "파일 올리기",
        "right-reupload": "이미 존재하는 파일을 다시 올리기",
        "right-reupload-own": "자신이 이미 올린 파일 덮어쓰기",
        "booksources-text": "아래의 목록은 새 책이나 중고 책을 판매하는 바깥 사이트로, 원하는 책의 정보를 얻을 수 있습니다.",
        "booksources-invalid-isbn": "입력한 ISBN이 올바르지 않은 것으로 보입니다. 원본과 대조해 문제가 있는지 확인해보세요.",
        "specialloguserlabel": "작업 수행자:",
-       "speciallogtitlelabel": "ë\8c\80ì\83\81 (ì \9c목 ë\98\90ë\8a\94 {{ns:user}}:ì\82¬ì\9a©ì\9e\90\9d´ë¦\84 ì\9c¼ë¡\9c ì\82¬ì\9a©ì\9e\90):",
+       "speciallogtitlelabel": "ë\8c\80ì\83\81 (ì\82¬ì\9a©ì\9e\90ê³\84ì \95ì\97\90 ë\8c\80í\95\9c ì \9c목 ë\98\90ë\8a\94 {{ns:user}}:ì\82¬ì\9a©ì\9e\90ì\9d´ë¦\84):",
        "log": "기록 목록",
        "logeventslist-submit": "보기",
        "all-logs-page": "모든 공개 기록",
        "linksearch-error": "와일드카드는 주소의 처음 부분에만 사용될 수 있습니다.",
        "listusersfrom": "다음으로 시작하는 사용자 보기:",
        "listusers-submit": "보기",
-       "listusers-noresult": "해당 사용자가 없습니다.",
+       "listusers-noresult": "사용자를 찾을 수 없습니다.",
        "listusers-blocked": "(차단됨)",
        "activeusers": "활동하는 사용자 목록",
        "activeusers-intro": "다음은 최근 $1{{PLURAL:$1|일}} 동안 활동한 사용자의 목록입니다.",
        "activeusers-from": "다음으로 시작하는 사용자를 보기:",
        "activeusers-hidebots": "봇을 숨기기",
        "activeusers-hidesysops": "관리자를 숨기기",
-       "activeusers-noresult": "사용자 없습니다.",
+       "activeusers-noresult": "사용자를 찾을 수 없습니다.",
        "activeusers-submit": "활동하고 있는 사용자 보이기",
        "listgrouprights": "사용자 권한 목록",
        "listgrouprights-summary": "다음은 이 위키에 있는 사용자 권한 그룹의 목록입니다.\n각각의 권한에 대해서는 [[{{MediaWiki:Listgrouprights-helppage}}|추가 정보]]를 참조하세요.",
        "watcherrortext": "\"$1\" 문서에 대한 주시 여부를 바꾸는 중 오류가 발생했습니다.",
        "enotif_reset": "모든 문서를 방문한 것으로 표시하기",
        "enotif_impersonal_salutation": "{{SITENAME}} 사용자",
-       "enotif_subject_deleted": "{{SITENAME}} $1 문서를 $2 사용자가 {{GENDER:$2|삭제했습니다}}",
-       "enotif_subject_created": "{{SITENAME}} $1 문서를 $2 사용자가 {{GENDER:$2|만들었습니다}}",
-       "enotif_subject_moved": "{{SITENAME}} $1 문서를 $2 사용자가 {{GENDER:$2|이동하였습니다}}",
-       "enotif_subject_restored": "{{SITENAME}} $1 문서를 $2 사용자가 {{GENDER:$2|되살렸습니다}}",
+       "enotif_subject_deleted": "{{SITENAME}} $1 문서를 $2님이 {{GENDER:$2|삭제했습니다}}",
+       "enotif_subject_created": "{{SITENAME}} $1 문서를 $2님이 {{GENDER:$2|만들었습니다}}",
+       "enotif_subject_moved": "{{SITENAME}} $1 문서를 $2님이 {{GENDER:$2|이동팼습니다}}",
+       "enotif_subject_restored": "{{SITENAME}} $1 문서를 $2님이 {{GENDER:$2|되살렸습니다}}",
        "enotif_subject_changed": "{{SITENAME}} $1 문서를 $2님이 {{GENDER:$2|바꾸었습니다}}",
-       "enotif_body_intro_deleted": "{{SITENAME}} $1 문서를 $PAGEEDITDATE에 $2 사용자가 {{GENDER:$2|삭제했으며}} $3 에서 볼 수 있습니다.",
-       "enotif_body_intro_created": "{{SITENAME}} $1 문서를 $PAGEEDITDATE에 $2 사용자가 {{GENDER:$2|만들었으며}} 현재 판은 $3 에서 볼 수 있습니다.",
-       "enotif_body_intro_moved": "{{SITENAME}} $1 문서를 $PAGEEDITDATE에 $2 사용자가 {{GENDER:$2|이동하였으며}} 현재 판은 $3 에서 볼 수 있습니다.",
-       "enotif_body_intro_restored": "{{SITENAME}} $1 문서를 $PAGEEDITDATE에 $2 사용자가 {{GENDER:$2|되살렸으며}} 현재 판은 $3 에서 볼 수 있습니다.",
-       "enotif_body_intro_changed": "{{SITENAME}} $1 문서를 $PAGEEDITDATE에 $2 사용자가 {{GENDER:$2|바꾸었으며}} 현재 판은 $3 에서 볼 수 있습니다.",
+       "enotif_body_intro_deleted": "{{SITENAME}} $1 문서를 $PAGEEDITDATE에 $2님이 {{GENDER:$2|삭제했으며}} $3 에서 볼 수 있습니다.",
+       "enotif_body_intro_created": "{{SITENAME}} $1 문서를 $PAGEEDITDATE에 $2님이 {{GENDER:$2|만들었으며}} 현재 판은 $3 에서 볼 수 있습니다.",
+       "enotif_body_intro_moved": "{{SITENAME}} $1 문서를 $PAGEEDITDATE에 $2님이 {{GENDER:$2|이동하였으며}} 현재 판은 $3 에서 볼 수 있습니다.",
+       "enotif_body_intro_restored": "{{SITENAME}} $1 문서를 $PAGEEDITDATE에 $2님이 {{GENDER:$2|되살렸으며}} 현재 판은 $3 에서 볼 수 있습니다.",
+       "enotif_body_intro_changed": "{{SITENAME}} $1 문서를 $PAGEEDITDATE에 $2님이 {{GENDER:$2|바꾸었으며}} 현재 판은 $3 에서 볼 수 있습니다.",
        "enotif_lastvisited": "마지막으로 방문한 뒤 생긴 모든 바뀜을 보려면 $1을 보세요.",
        "enotif_lastdiff": "이 바뀜을 보려면 $1을 보세요.",
        "enotif_anon_editor": "익명 사용자 $1",
        "rollbacklinkcount-morethan": "{{PLURAL:$1|편집}} $1회 이상 되돌리기",
        "rollbackfailed": "되돌리기 실패",
        "rollback-missingparam": "요청에 필요한 변수가 존재하지 않습니다.",
-       "cantrollback": "í\8e¸ì§\91ì\9d\84 ë\90\98ë\8f\8c릴 ì\88\98 ì\97\86ì\8aµë\8b\88ë\8b¤.\n문ì\84\9c를 í\8e¸ì§\91í\95\9c ì\82¬ì\9a©자가 한 명뿐입니다.",
+       "cantrollback": "í\8e¸ì§\91ì\9d\84 ë\90\98ë\8f\8c릴 ì\88\98 ì\97\86ì\8aµë\8b\88ë\8b¤.\n문ì\84\9c를 í\8e¸ì§\91í\95\9c ì \80자가 한 명뿐입니다.",
        "alreadyrolled": "[[:$1]]에서 [[User:$2|$2]] ([[User talk:$2|토론]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]])의 편집을 되돌릴 수 없습니다.\n누군가가 이미 문서를 고치거나 되돌렸습니다.\n\n마지막으로 이 문서를 편집한 사용자는 [[User:$3|$3]] ([[User talk:$3|토론]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]])입니다.",
        "editcomment": "편집 요약: <em>$1</em>",
        "revertpage": "[[Special:Contributions/$2|$2]]([[User talk:$2|토론]])의 편집을 [[User:$1|$1]]의 마지막 판으로 되돌림",
        "logentry-contentmodel-change-revert": "되돌리기",
        "protectlogpage": "문서 보호 기록",
        "protectlogtext": "아래의 목록은 문서 보호에 관한 바뀜에 대한 기록입니다.\n현재 보호된 문서의 목록에 대해서는 [[Special:ProtectedPages|보호된 문서 목록]]을 참조하세요.",
-       "protectedarticle": "사용자가 \"[[$1]]\" 문서를 보호했습니다",
-       "modifiedarticleprotection": "사용자가 \"[[$1]]\" 문서의 보호 설정을 바꿨습니다",
-       "unprotectedarticle": "사용자가 \"[[$1]]\" 문서를 보호 해제했습니다",
-       "movedarticleprotection": "사용자가 문서의 보호 설정을 \"[[$2]]\"에서 \"[[$1]]\"(으)로 이동했습니다",
+       "protectedarticle": "님이 \"[[$1]]\" 문서를 보호했습니다",
+       "modifiedarticleprotection": "님이 \"[[$1]]\" 문서의 보호 설정을 바꿨습니다",
+       "unprotectedarticle": "님이 \"[[$1]]\" 문서를 보호 해제했습니다",
+       "movedarticleprotection": "님이 문서의 보호 설정을 \"[[$2]]\"에서 \"[[$1]]\"(으)로 이동했습니다",
        "protect-title": "\"$1\" 보호하기",
        "protect-title-notallowed": "\"$1\" 문서의 보호 수준 보기",
-       "prot_1movedto2": "[[$1]] ë¬¸ì\84\9c를 [[$2]] ë¬¸ì\84\9cë¡\9c ì\98®ê¹\80",
+       "prot_1movedto2": "[[$1]] ë¬¸ì\84\9c를 [[$2]] ë¬¸ì\84\9cë¡\9c ì\9d´ë\8f\99í\95¨",
        "protect-badnamespace-title": "보호할 수 없는 이름공간",
        "protect-badnamespace-text": "이 이름공간에 있는 문서는 보호할 수 없습니다.",
        "protect-norestrictiontypes-text": "이 문서는 제한 유형을 사용할 수 없음으로 보호할 수 없습니다.",
        "ipb-confirm": "차단 확인",
        "badipaddress": "잘못된 IP 주소",
        "blockipsuccesssub": "차단 완료",
-       "blockipsuccesstext": "[[Special:Contributions/$1|$1]] 사용자가 차단되었습니다.<br />\n차단된 사용자 목록은 [[Special:BlockList|여기]]에서 볼 수 있습니다.",
+       "blockipsuccesstext": "[[Special:Contributions/$1|$1]]님이 차단되었습니다.<br />\n차단된 사용자 목록은 [[Special:BlockList|여기]]에서 볼 수 있습니다.",
        "ipb-blockingself": "자기 자신을 차단하려고 합니다! 정말로 실행할까요?",
        "ipb-confirmhideuser": "사용자를 차단하면서 \"사용자 숨기기\" 설정을 선택했습니다. 모든 기록에서 이 사용자의 사용자 이름을 숨기게 됩니다. 정말로 계정을 숨기시겠습니까?",
        "ipb-confirmaction": "그것을 정말로 하기 원한다면 아래에 있는 \"{{int:ipb-confirm}}\" 부분에 체크하세요",
        "unblocked": "[[User:$1|$1]] 사용자의 차단을 해제했습니다.",
        "unblocked-range": "$1 대역이 차단 해제되었습니다.",
        "unblocked-id": "$1 차단이 해제되었습니다.",
-       "unblocked-ip": "[[Special:Contributions/$1|$1]] 사용자가 차단 해제되었습니다.",
+       "unblocked-ip": "[[Special:Contributions/$1|$1]]님이 차단 해제되었습니다.",
        "blocklist": "차단된 사용자 목록",
        "ipblocklist": "차단된 사용자",
        "ipblocklist-legend": "차단된 사용자 찾기",
        "createaccountblock": "계정 만들기 금지됨",
        "emailblock": "이메일 차단됨",
        "blocklist-nousertalk": "자신의 토론 문서 편집 불가",
-       "ipblocklist-empty": "차단된 사용자가 없습니다.",
+       "ipblocklist-empty": "차단 목록이 비어 있습니다.",
        "ipblocklist-no-results": "요청한 IP 주소나 사용자는 차단되지 않았습니다.",
        "blocklink": "차단",
        "unblocklink": "차단 해제",
        "change-blocklink": "차단 설정 바꾸기",
        "contribslink": "기여",
        "emaillink": "이메일 보내기",
-       "autoblocker": "당신의 IP 주소는 최근에 \"[[User:$1|$1]]\" 사용자가 사용하였기 때문에 자동으로 차단되었습니다.\n$1님이 차단된 이유는 다음과 같습니다: \"$2\"",
+       "autoblocker": "당신의 IP 주소는 최근에 \"[[User:$1|$1]]\"님이 사용하였기 때문에 자동으로 차단되었습니다.\n$1님이 차단된 이유는 다음과 같습니다: \"$2\"",
        "blocklogpage": "차단 기록",
        "blocklog-showlog": "이 사용자는 과거에 차단된 기록이 있습니다.\n해당 사용자의 차단 기록은 다음과 같습니다:",
        "blocklog-showsuppresslog": "이 사용자는 과거에 차단된 적이 있으며, 그 기록이 숨겨져 있습니다.\n해당 사용자의 차단 기록은 다음과 같습니다:",
        "lockfilenotwritable": "데이터베이스 잠금 파일에 쓰기 권한이 없습니다.\n데이터베이스를 잠그거나 잠금 해제하려면, 웹 서버에서 이 파일의 쓰기 권한을 설정해야 합니다.",
        "databaselocked": "데이터베이스가 이미 잠겨 있습니다.",
        "databasenotlocked": "데이터베이스가 잠겨 있지 않습니다.",
-       "lockedbyandtime": "({{GENDER:$1|$1}} 사용자가 $2 $3에 잠금)",
+       "lockedbyandtime": "({{GENDER:$1|$1}}님이 $2 $3에 잠금)",
        "move-page": "$1 이동",
        "move-page-legend": "문서 이동",
-       "movepagetext": "ì\95\84ë\9e\98 ì\96\91ì\8b\9dì\9d\84 ì±\84ì\9b\8c ë¬¸ì\84\9cì\9d\98 ì\9d´ë¦\84ì\9d\84 ë°\94꾸고 ëª¨ë\93  ì\97­ì\82¬ë¥¼ ì\83\88 ì\9d´ë¦\84ì\9c¼ë¡\9c ë\90\9c ë¬¸ì\84\9cë¡\9c ì\98®ê¸¸ 수 있습니다.\n원래의 문서는 새 문서로 넘겨주는 링크로만 남게 되고,\n원래 이름을 가리키는 넘겨주기는 자동으로 갱신됩니다.\n만약 이 설정을 선택하지 않았다면 [[Special:DoubleRedirects|이중 넘겨주기]]와 [[Special:BrokenRedirects|끊긴 넘겨주기]]를 확인해주세요.\n당신은 링크와 가리키는 대상이 서로 일치하도록 해야 할 책임이 있습니다.\n\n만약 이미 있는 문서의 이름을 새 이름으로 입력했을 때는 그 문서가 넘겨주기 문서이고 문서 역사가 없어야만 이동이 됩니다. 그렇지 않을 경우에는 이동되지 <strong>않습니다</strong>.\n이것은 실수로 이동한 문서를 되돌릴 수는 있지만, 이미 존재하는 문서 위에 덮어씌울 수는 없다는 것을 의미합니다.\n\n<strong>주의!</strong>\n자주 사용하는 문서를 이동하면 해결하기 어려운 문제를 일으킬 수도 있습니다.\n이동하기 전에 반드시 이 문서를 이동해도 문제가 없는지 확인해주세요.",
-       "movepagetext-noredirectfixer": "ì\95\84ë\9e\98 ì\96\91ì\8b\9dì\9d\84 ì±\84ì\9b\8c ë¬¸ì\84\9cì\9d\98 ì\9d´ë¦\84ì\9d\84 ë°\94꾸고 ëª¨ë\93  ì\97­ì\82¬ë¥¼ ì\83\88 ì\9d´ë¦\84ì\9c¼ë¡\9c ë\90\9c ë¬¸ì\84\9cë¡\9c ì\9d´ë\8f\99í\95  ì\88\98 ì\9e\88ì\8aµë\8b\88ë\8b¤.\nì\9b\90ë\9e\98ì\9d\98 ë¬¸ì\84\9cë\8a\94 ì\83\88 ë¬¸ì\84\9cë¡\9c ë\84\98겨주ë\8a\94 ë§\81í\81¬ë¡\9cë§\8c ë\82¨ê²\8c ë\90©ë\8b\88ë\8b¤.\n[[Special:DoubleRedirects|ì\9d´ì¤\91 ë\84\98겨주기]]ì\99\80 [[Special:BrokenRedirects|ë\81\8a긴 ë\84\98겨주기]]를 í\99\95ì\9d¸í\95´ì£¼ì\84¸ì\9a\94.\në\8b¹ì\8b ì\9d\80 ë§\81í\81¬ì\99\80 ê°\80리í\82¤ë\8a\94 ë\8c\80ì\83\81ì\9d´ ì\84\9cë¡\9c ì\9d¼ì¹\98í\95\98ë\8f\84ë¡\9d í\95´ì\95¼ í\95  ì±\85ì\9e\84ì\9d´ ì\9e\88ì\8aµë\8b\88ë\8b¤.\n\në§\8cì\95½ ì\9d´ë¯¸ ì\9e\88ë\8a\94 ë¬¸ì\84\9cì\9d\98 ì\9d´ë¦\84ì\9d\84 ì\83\88 ì\9d´ë¦\84ì\9c¼ë¡\9c ì\9e\85ë ¥í\96\88ì\9d\84 ë\95\8cë\8a\94 ê·¸ ë¬¸ì\84\9cê°\80 ë\84\98겨주기 ë¬¸ì\84\9cì\9d´ê³  ë¬¸ì\84\9c ì\97­ì\82¬ê°\80 ì\97\86ì\96´ì\95¼ë§\8c ì\9d´ë\8f\99ì\9d´ ë\90©ë\8b\88ë\8b¤. ê·¸ë \87ì§\80 ì\95\8aì\9d\84 ê²½ì\9a°ì\97\90ë\8a\94 ì\9d´ë\8f\99ë\90\98ì§\80 <strong>ì\95\8aì\8aµë\8b\88ë\8b¤</strong>.\nì\9d´ê²\83ì\9d\80 ì\8b¤ì\88\98ë¡\9c ì\98®ê¸´ 문서를 되돌릴 수는 있지만, 이미 존재하는 문서 위에 덮어씌울 수는 없다는 것을 의미합니다.\n\n<strong>주의!</strong>\n자주 사용하는 문서를 이동하면 해결하기 어려운 문제를 일으킬 수도 있습니다.\n이동하기 전에 반드시 이 문서를 이동해도 문제가 없는지 확인해주세요.",
+       "movepagetext": "ì\95\84ë\9e\98 ì\96\91ì\8b\9dì\9d\84 ì±\84ì\9b\8c ë¬¸ì\84\9cì\9d\98 ì\9d´ë¦\84ì\9d\84 ë°\94꾸고 ëª¨ë\93  ì\97­ì\82¬ë¥¼ ì\83\88 ì\9d´ë¦\84ì\9c¼ë¡\9c ë\90\9c ë¬¸ì\84\9cë¡\9c ì\9d´ë\8f\99í\95  수 있습니다.\n원래의 문서는 새 문서로 넘겨주는 링크로만 남게 되고,\n원래 이름을 가리키는 넘겨주기는 자동으로 갱신됩니다.\n만약 이 설정을 선택하지 않았다면 [[Special:DoubleRedirects|이중 넘겨주기]]와 [[Special:BrokenRedirects|끊긴 넘겨주기]]를 확인해주세요.\n당신은 링크와 가리키는 대상이 서로 일치하도록 해야 할 책임이 있습니다.\n\n만약 이미 있는 문서의 이름을 새 이름으로 입력했을 때는 그 문서가 넘겨주기 문서이고 문서 역사가 없어야만 이동이 됩니다. 그렇지 않을 경우에는 이동되지 <strong>않습니다</strong>.\n이것은 실수로 이동한 문서를 되돌릴 수는 있지만, 이미 존재하는 문서 위에 덮어씌울 수는 없다는 것을 의미합니다.\n\n<strong>주의!</strong>\n자주 사용하는 문서를 이동하면 해결하기 어려운 문제를 일으킬 수도 있습니다.\n이동하기 전에 반드시 이 문서를 이동해도 문제가 없는지 확인해주세요.",
+       "movepagetext-noredirectfixer": "ì\95\84ë\9e\98 ì\96\91ì\8b\9dì\9d\84 ì±\84ì\9b\8c ë¬¸ì\84\9cì\9d\98 ì\9d´ë¦\84ì\9d\84 ë°\94꾸고 ëª¨ë\93  ì\97­ì\82¬ë¥¼ ì\83\88 ì\9d´ë¦\84ì\9c¼ë¡\9c ë\90\9c ë¬¸ì\84\9cë¡\9c ì\9d´ë\8f\99í\95  ì\88\98 ì\9e\88ì\8aµë\8b\88ë\8b¤.\nì\9b\90ë\9e\98ì\9d\98 ë¬¸ì\84\9cë\8a\94 ì\83\88 ë¬¸ì\84\9cë¡\9c ë\84\98겨주ë\8a\94 ë§\81í\81¬ë¡\9cë§\8c ë\82¨ê²\8c ë\90©ë\8b\88ë\8b¤.\n[[Special:DoubleRedirects|ì\9d´ì¤\91 ë\84\98겨주기]]ì\99\80 [[Special:BrokenRedirects|ë\81\8a긴 ë\84\98겨주기]]를 í\99\95ì\9d¸í\95´ì£¼ì\84¸ì\9a\94.\në\8b¹ì\8b ì\9d\80 ë§\81í\81¬ì\99\80 ê°\80리í\82¤ë\8a\94 ë\8c\80ì\83\81ì\9d´ ì\84\9cë¡\9c ì\9d¼ì¹\98í\95\98ë\8f\84ë¡\9d í\95´ì\95¼ í\95  ì±\85ì\9e\84ì\9d´ ì\9e\88ì\8aµë\8b\88ë\8b¤.\n\në§\8cì\95½ ì\9d´ë¯¸ ì\9e\88ë\8a\94 ë¬¸ì\84\9cì\9d\98 ì\9d´ë¦\84ì\9d\84 ì\83\88 ì\9d´ë¦\84ì\9c¼ë¡\9c ì\9e\85ë ¥í\96\88ì\9d\84 ë\95\8cë\8a\94 ê·¸ ë¬¸ì\84\9cê°\80 ë\84\98겨주기 ë¬¸ì\84\9cì\9d´ê³  ë¬¸ì\84\9c ì\97­ì\82¬ê°\80 ì\97\86ì\96´ì\95¼ë§\8c ì\9d´ë\8f\99ì\9d´ ë\90©ë\8b\88ë\8b¤. ê·¸ë \87ì§\80 ì\95\8aì\9d\84 ê²½ì\9a°ì\97\90ë\8a\94 ì\9d´ë\8f\99ë\90\98ì§\80 <strong>ì\95\8aì\8aµë\8b\88ë\8b¤</strong>.\nì\9d´ê²\83ì\9d\80 ì\8b¤ì\88\98ë¡\9c ì\9d´ë\8f\99í\95\9c 문서를 되돌릴 수는 있지만, 이미 존재하는 문서 위에 덮어씌울 수는 없다는 것을 의미합니다.\n\n<strong>주의!</strong>\n자주 사용하는 문서를 이동하면 해결하기 어려운 문제를 일으킬 수도 있습니다.\n이동하기 전에 반드시 이 문서를 이동해도 문제가 없는지 확인해주세요.",
        "movepagetalktext": "이 칸에 체크하면, 딸린 토론 문서가 자동으로 이동됩니다. 다만 비어있지 않은 토론 문서가 있다면 이동되지 않습니다.\n\n이러한 경우에는 수동으로 이동하거나 합쳐야 합니다.",
        "moveuserpage-warning": "<strong>경고:</strong> 사용자 문서를 이동하려고 하고 있습니다. 사용자 문서만 이동되며 사용자 이름이 바뀌지 <strong>않는다</strong>는 점을 참고하세요.",
        "movecategorypage-warning": "<strong>경고:</strong> 분류 문서를 이동하려고 합니다. 해당 문서만 이동되고 옛 분류에 있는 문서는 새 분류 안에 다시 분류되지 <em>않음</em>을 참고하세요.",
        "movenologintext": "문서를 이동하려면 [[Special:UserLogin|로그인]]해야 합니다.",
-       "movenotallowed": "문ì\84\9c를 ì\98®ê¸¸ 권한이 없습니다.",
-       "movenotallowedfile": "í\8c\8cì\9d¼ì\9d\84 ì\98®ê¸¸ 권한이 없습니다.",
-       "cant-move-user-page": "ì\82¬ì\9a©ì\9e\90 ë¬¸ì\84\9c를 ì\98®ê¸¸ 권한이 없습니다 (하위 문서는 예외).",
-       "cant-move-to-user-page": "문ì\84\9c를 ì\82¬ì\9a©ì\9e\90 ë¬¸ì\84\9cë¡\9c ì\98®ê¸¸ 권한이 없습니다 (하위 문서는 예외).",
-       "cant-move-category-page": "ë¶\84ë¥\98 ë¬¸ì\84\9c를 ì\98®ê¸¸ 권한이 없습니다.",
-       "cant-move-to-category-page": "문ì\84\9c를 ë¶\84ë¥\98 ë¬¸ì\84\9cë¡\9c ì\98®ê¸¸ 권한이 없습니다.",
+       "movenotallowed": "문ì\84\9c를 ì\9d´ë\8f\99í\95  권한이 없습니다.",
+       "movenotallowedfile": "í\8c\8cì\9d¼ì\9d\84 ì\9d´ë\8f\99í\95  권한이 없습니다.",
+       "cant-move-user-page": "ì\82¬ì\9a©ì\9e\90 ë¬¸ì\84\9c를 ì\9d´ë\8f\99í\95  권한이 없습니다 (하위 문서는 예외).",
+       "cant-move-to-user-page": "문ì\84\9c를 ì\82¬ì\9a©ì\9e\90 ë¬¸ì\84\9cë¡\9c ì\9d´ë\8f\99í\95  권한이 없습니다 (하위 문서는 예외).",
+       "cant-move-category-page": "ë¶\84ë¥\98 ë¬¸ì\84\9c를 ì\9d´ë\8f\99í\95  권한이 없습니다.",
+       "cant-move-to-category-page": "문ì\84\9c를 ë¶\84ë¥\98 ë¬¸ì\84\9cë¡\9c ì\9d´ë\8f\99í\95  권한이 없습니다.",
        "newtitle": "새 제목:",
        "move-watch": "원래 문서와 대상 문서를 주시하기",
        "movepagebtn": "문서 이동",
        "movepage-moved-redirect": "넘겨주기 문서를 만들었습니다.",
        "movepage-moved-noredirect": "넘겨주기 문서를 남기지 않았습니다.",
        "articleexists": "문서가 이미 존재하거나 이름이 올바르지 않습니다.\n다른 이름을 선택하세요.",
-       "cantmove-titleprotected": "ì\83\88ë¡\9cì\9a´ ì \9c목ì\9c¼ë¡\9c ë¬¸ì\84\9c를 ë§\8cë\93\9cë\8a\94 ê²\83ì\9d´ ê¸\88ì§\80ë\90\98ì\96´ ì\9e\88ì\96´ ë¬¸ì\84\9c를 ì\98®ê¸¸ ì\88\98 ì\97\86ì\8aµë\8b\88ë\8b¤",
+       "cantmove-titleprotected": "ì\83\88ë¡\9cì\9a´ ì \9c목ì\9c¼ë¡\9c ë¬¸ì\84\9c를 ë§\8cë\93\9cë\8a\94 ê²\83ì\9d´ ê¸\88ì§\80ë\90\98ì\96´ ì\9e\88ì\96´ ë¬¸ì\84\9c를 ì\9d´ë\8f\99í\95  ì\88\98 ì\97\86ì\8aµë\8b\88ë\8b¤.",
        "movetalk": "딸린 토론 문서도 이동하기",
        "move-subpages": "하위 문서도 이동 ($1개까지)",
        "move-talk-subpages": "토론 문서의 하위 문서도 이동하기 ($1개까지)",
        "movepage-page-exists": "$1 문서가 이미 존재하므로 자동으로 덮어쓸 수 없습니다.",
        "movepage-page-moved": "\"$1\" 문서를 \"$2\" 문서로 이동했습니다.",
-       "movepage-page-unmoved": "$1 ë¬¸ì\84\9c를 $2 ë¬¸ì\84\9cë¡\9c ì\98®ê¸¸ 수 없습니다.",
+       "movepage-page-unmoved": "$1 ë¬¸ì\84\9c를 $2 ë¬¸ì\84\9cë¡\9c ì\9d´ë\8f\99í\95  수 없습니다.",
        "movepage-max-pages": "{{PLURAL:$1|문서}}를 최대 $1개 이동했으며 나머지 문서는 자동으로 이동하지 않습니다.",
        "movelogpage": "이동 기록",
-       "movelogpagetext": "ì\95\84ë\9e\98ë\8a\94 ì\98®ê²¨ì§\84 모든 문서의 목록입니다.",
+       "movelogpagetext": "ì\95\84ë\9e\98ë\8a\94 ì\9d´ë\8f\99ë\90\9c 모든 문서의 목록입니다.",
        "movesubpage": "{{PLURAL:$1|하위 문서}}",
        "movesubpagetext": "이 문서에는 다음 {{PLURAL:$1|하위 문서}} $1개가 있습니다.",
        "movenosubpage": "이 문서에는 하위 문서가 존재하지 않습니다.",
        "delete_and_move_text": "== 삭제 필요 ==\n이동하려는 제목으로 된 \"[[:$1]]\" 문서가 이미 존재합니다.\n삭제하고 이동할까요?",
        "delete_and_move_confirm": "네. 문서를 삭제합니다",
        "delete_and_move_reason": "\"[[$1]]\"에서 문서를 이동하기 위해 삭제함",
-       "selfmove": "ì\9b\90ë\9e\98 ì \9c목과 ì\9d´ë\8f\99í\95\98ë ¤ë\8a\94 ì \9c목ì\9d´ ê°\99ì\8aµë\8b\88ë\8b¤.\nê°\99ì\9d\80 ì \9c목ì\9c¼ë¡\9cë\8a\94 ë¬¸ì\84\9c룰 ì\98®ê¸¸ 수 없습니다.",
+       "selfmove": "ì\9b\90ë\9e\98 ì \9c목과 ì\9d´ë\8f\99í\95\98ë ¤ë\8a\94 ì \9c목ì\9d´ ê°\99ì\8aµë\8b\88ë\8b¤.\nê°\99ì\9d\80 ì \9c목ì\9c¼ë¡\9cë\8a\94 ë¬¸ì\84\9c룰 ì\9d´ë\8f\99í\95  수 없습니다.",
        "immobile-source-namespace": "\"$1\" 이름공간에 속한 문서는 이동시킬 수 없습니다.",
        "immobile-target-namespace": "\"$1\" 이름공간에 속한 문서는 이동시킬 수 없습니다.",
-       "immobile-target-namespace-iw": "ì\9d¸í\84°ì\9c\84í\82¤ ë§\81í\81¬ë¥¼ ë\84\98ì\96´ ë¬¸ì\84\9c를 ì\98®ê¸¸ 수 없습니다.",
-       "immobile-source-page": "ì\9d´ ë¬¸ì\84\9cë\8a\94 ì\98®ê¸¸ 수 없습니다.",
-       "immobile-target-page": "새 이름으로 옮길 수 없습니다.",
+       "immobile-target-namespace-iw": "ì\9d¸í\84°ì\9c\84í\82¤ ë§\81í\81¬ë¥¼ ë\84\98ì\96´ ë¬¸ì\84\9c를 ì\9d´ë\8f\99í\95  수 없습니다.",
+       "immobile-source-page": "ì\9d´ ë¬¸ì\84\9cë\8a\94 ì\9d´ë\8f\99í\95  수 없습니다.",
+       "immobile-target-page": "목표 제목으로 이동할 수 없습니다.",
        "bad-target-model": "원하는 대상은 다른 내용 모델을 사용합니다. $1에서 $2로 변환할 수 없습니다.",
-       "imagenocrossnamespace": "í\8c\8cì\9d¼ì\9d\84 í\8c\8cì\9d¼ì\9d´ ì\95\84ë\8b\8c ì\9d´ë¦\84ê³µê°\84ì\9c¼ë¡\9c ì\98®ê¸¸ 수 없습니다.",
-       "nonfile-cannot-move-to-file": "í\8c\8cì\9d¼ì\9d´ ì\95\84ë\8b\8c ë¬¸ì\84\9c를 í\8c\8cì\9d¼ ì\9d´ë¦\84ê³µê°\84ì\9c¼ë¡\9c ì\98®ê¸¸ 수 없습니다.",
+       "imagenocrossnamespace": "í\8c\8cì\9d¼ì\9d\84 í\8c\8cì\9d¼ì\9d´ ì\95\84ë\8b\8c ì\9d´ë¦\84ê³µê°\84ì\9c¼ë¡\9c ì\9d´ë\8f\99í\95  수 없습니다.",
+       "nonfile-cannot-move-to-file": "í\8c\8cì\9d¼ì\9d´ ì\95\84ë\8b\8c ë¬¸ì\84\9c를 í\8c\8cì\9d¼ ì\9d´ë¦\84ê³µê°\84ì\9c¼ë¡\9c ì\9d´ë\8f\99í\95  수 없습니다.",
        "imagetypemismatch": "새 파일의 확장자가 원래의 확장자와 일치하지 않습니다.",
        "imageinvalidfilename": "새 파일 이름이 잘못되었습니다.",
        "fix-double-redirects": "원래 제목을 가리키는 넘겨주기를 새로 고침",
-       "move-leave-redirect": "ì\98®ê¸´ 뒤 넘겨주기를 남기기",
+       "move-leave-redirect": "ì\9d´ë\8f\99í\95\9c 뒤 넘겨주기를 남기기",
        "protectedpagemovewarning": "<strong>경고:</strong> 이 문서는 관리자만 이동할 수 있도록 보호되어 있습니다.\n최근 기록을 참조를 위해 아래에 제공합니다:",
        "semiprotectedpagemovewarning": "<strong>참고:</strong> 이 문서는 등록된 사용자만이 이동할 수 있도록 보호되어 있습니다.\n최근 기록 내용이 참조를 위해 아래에 제공됩니다:",
        "move-over-sharedrepo": "== 파일이 존재함 ==\n[[:$1]] 파일이 공용 저장소에 있습니다. 이 이름으로 파일을 이동하면 공용의 파일을 덮어쓰게 될 것입니다.",
        "tooltip-pt-anontalk": "현재 사용하는 IP 주소에 대한 토론 문서",
        "tooltip-pt-preferences": "{{GENDER:|사용자}} 환경 설정",
        "tooltip-pt-watchlist": "주시문서에 대한 바뀜 목록",
-       "tooltip-pt-mycontris": "{{GENDER:|내}} 기여 목록",
+       "tooltip-pt-mycontris": "{{GENDER:|내}} 기여 목록",
        "tooltip-pt-anoncontribs": "이 IP 주소의 편집 목록",
        "tooltip-pt-login": "꼭 로그인해야 하는 것은 아니지만, 로그인을 권장합니다.",
        "tooltip-pt-logout": "로그아웃",
        "logentry-protect-modify-cascade": "$1님이 $3 문서의 보호 수준을 {{GENDER:$2|바꾸었습니다}} $4 [연쇄적]",
        "logentry-rights-rights": "$1님이 {{GENDER:$6|$3}}님의 권한을 $4에서 $5(으)로 {{GENDER:$2|바꾸었습니다}}",
        "logentry-rights-rights-legacy": "$1님이 $3 사용자의 권한을 {{GENDER:$2|바꾸었습니다}}",
-       "logentry-rights-autopromote": "$1님이 권한을 자동적으로 $4에서 $5로 {{GENDER:$2|바꾸었습니다}}",
+       "logentry-rights-autopromote": "$1님이 권한을 자동적으로 $4에서 $5(으)로 {{GENDER:$2|바꾸었습니다}}",
        "logentry-upload-upload": "$1님이 $3 파일을 {{GENDER:$2|올렸습니다}}",
        "logentry-upload-overwrite": "$1님이 $3의 새 판을 {{GENDER:$2|올렸습니다}}",
        "logentry-upload-revert": "$1님이 $3 파일을 {{GENDER:$2|올렸습니다}}",
        "log-name-managetags": "태그 관리 기록",
        "log-description-managetags": "이 문서는 [[Special:Tags|태그]]에 관한 관리 작업의 목록입니다. 이 기록에는 관리자가 직접 실행한 동작만이 기록되며, 위키 소프트웨어에 의해 태그가 생성 및 삭제되는 경우는 기록되지 않습니다.",
        "logentry-managetags-create": "$1님이 \"$4\" 태그를 {{GENDER:$2|만들었습니다}}",
-       "logentry-managetags-delete": "$1ë\8b\98ì\9d´ \"$4\" í\83\9c그를 ì\82­ì \9cí\95\98ì\98\80습니다 ($5개 {{PLURAL:$5|판 및 기록}}에서 {{GENDER:$2|제거되었습니다}})",
+       "logentry-managetags-delete": "$1ë\8b\98ì\9d´ \"$4\" í\83\9c그를 ì\82­ì \9cí\96\88습니다 ($5개 {{PLURAL:$5|판 및 기록}}에서 {{GENDER:$2|제거되었습니다}})",
        "logentry-managetags-activate": "$1님이 \"$4\" 태그를 사용자나 봇이 사용하도록 {{GENDER:$2|활성화시켰습니다}}",
        "logentry-managetags-deactivate": "$1님이 \"$4\" 태그를 사용자나 봇이 사용하지 못하도록 {{GENDER:$2|비활성화시켰습니다}}",
        "log-name-tag": "태그 기록",
        "logentry-tag-update-add-logentry": "$1님이 $3 문서의 기록 항목 $5에 $6 {{PLURAL:$7|태그}}를 {{GENDER:$2|추가했습니다}}",
        "logentry-tag-update-remove-revision": "$1님이 $3 문서의 $4판에서 $8 {{PLURAL:$9|태그}}를 {{GENDER:$2|제거했습니다}}",
        "logentry-tag-update-remove-logentry": "$1님이 $3 문서의 기록 항목 $5에서 $8 {{PLURAL:$9|태그}}를 {{GENDER:$2|제거했습니다}}",
-       "logentry-tag-update-revision": "$1님이 $3 문서의 $4 판에서 태그를 {{GENDER:$2|업데이트했습니다}} ($6 {{PLURAL:$7|추가함}}; $8 {{PLURAL:$9|제거함}})",
+       "logentry-tag-update-revision": "$1님이 $3 문서의 $4판에서 태그를 {{GENDER:$2|업데이트했습니다}} ($6 {{PLURAL:$7|추가함}}; $8 {{PLURAL:$9|제거함}})",
        "logentry-tag-update-logentry": "$1님이 $3 문서의 기록 항목 $5에 있는 태그를 {{GENDER:$2|업데이트했습니다}} ($6 {{PLURAL:$7|추가함}}; $8 {{PLURAL:$9|제거함}})",
        "rightsnone": "(없음)",
        "revdelete-summary": "편집 요약",
index 907f767..d3c0687 100644 (file)
        "databaseerror-query": "Opdraach: $1",
        "databaseerror-function": "Fonxjuhn: $1",
        "databaseerror-error": "Fähler: $1",
+       "transaction-duration-limit-exceeded": "Domedd et Dahtebangk-Koppehre zoh doll henger her hengk, ham_mer heh dä Vörjang affjebroche, weijl dä met $1 de zweijte Jräns vun $2 övverschredde hät.\n\nWann De vill Saache op eijmohl aam Änndere bes, versöhk ens schtatt dämm en Aanzahl kleijnere Ännderonge.",
        "laggedslavemode": "<strong>Opjepass:</strong> Künnt sin, dat heh nit dä neuste Stand vun dä Sigg aanjezeich weed.",
        "readonly": "De Daatebank es jesperrt",
        "enterlockreason": "Jevv aan, woröm un för wie lang dat de Daatebank jesperrt wääde soll",
-       "readonlytext": "De Daatebank es jesperrt. Neu Saache dren avspeichere jeiht jrad nit, un ändere och nit. Dä Jrund: „$1“",
+       "readonlytext": "De Dahtebangk es jeschpächt. Neu Saache dren avschpeijschere jeiht jrahd nit, un et Ändere och nit. Künnt sin wähje en rutihnemähßejje Waadong, un dernoh es alles widder zerögg op Nommahl.\n\nDä Verantwootlesche doför hät beim Deeschmaache als Jrond aanjejovve: „$1“.",
        "missing-article": "Dä Tex för de Sigg „$1“ $2 kunnte mer nit en de Daatebank fenge.\nDe Sigg es velleisch fottjeschmeße udder ömjenannt woode.\nWann dat nidd esu sin sullt, dann had_Der velleich ene Fähler em Projramm vum Wikke jefonge.\nVerzälld et enem [[Special:ListUsers/sysop|Wiki_Köhbeß]],\nun doht em och dä <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Uniform Ressource Locator\">URL</i> vun dä Sigg heh sare.",
        "missingarticle-rev": "(Väsjohn Numero: $1)",
        "missingarticle-diff": "(Ongerscheed zwesche de Versione $1 un $2)",
        "readonly_lag": "De Daatebank es för en koote Zigg automattesch jesperrt, för de Daate vun de ongerjeodente Rääschner mem Houprääschner avzejliiche.",
+       "nonwrite-api-promise-error": "Di Kopp-Reihj „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Promise-Non-Write-API-Action</code>“ wood mem <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"HyperText Transfer Protocol\">HTTP</i> jeschek, ävver di Aanfrohch jingk aan e <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i>-Moduhl zom Schrihve.",
        "internalerror": "De Wiki-Soffwär hät ene Fähler jefunge",
        "internalerror_info": "Enne ennere Fäähler en de ẞoffwäer es opjetrodde: $1",
        "internalerror-fatal-exception": "Ene schlemme Fähler vun dä Zoot „$1“ es opjetrodde.",
        "mypreferencesprotected": "Do häs nit dat Rääsch, Ding Enschtällonge ze verändere.",
        "ns-specialprotected": "{{int:nstab-special}}e künne mer nit ändere.",
        "titleprotected": "Di Övverschreff för en Sigg eß fum [[User:$1|$1]] verbodde woode, un der Jrond wohr: „$2“",
-       "filereadonlyerror": "Mer künne di Dattei „$1“ nit ändere, weil dä Dateijebeshtand „$2“ bloß för ze Lässe doh es.\n\nDä Verantwootlesche doför hät beim Deeschmaache als Jrond aanjejovve: „$3“",
+       "filereadonlyerror": "Mer künne di Dattei „$1“ nit ändere, weil dä Dateijebeschtand „$2“ för bloß ze Lässe ennjeschtalld es.\n\nDä Verantwootlesche doför hät beim Deeschmaache als Jrond aanjejovve: „$3“.",
        "invalidtitle-knownnamespace": "„$3“ es en onjöltijje Övverschreff för em Appachtemang „$2“",
        "invalidtitle-unknownnamespace": "„$2“ es sn onjöltijje Övverschreff em onbikannte Appachtemang met dä Nommer $1",
        "exception-nologin": "Nit enjelogg",
        "createacct-email-ph": "Jiv Ding Addräß för de <i lang=\"en\">e-mail</i> en!",
        "createacct-another-email-ph": "Jivv en Addräß för de <i lang=\"en\" xml:lang=\"en\">e-mail</i> aan",
        "createaccountmail": "Scheck mer en <i lang=\"en\">e-mail</i> met enem neu ußjedaachte Paßwood op Zick",
+       "createaccountmail-help": "Kammer ennsäzze, öm ene Zohjang föe ene Anndere Metmaacher aanzelähje, der ohne dat Paßwoot känne ze lihre.",
        "createacct-realname": "Dinge börjerlesche Nahme, kans De och fott lohße",
        "createaccountreason": "Jrond:",
        "createacct-reason": "Der Jrond udder Aanlaß",
        "createacct-reason-ph": "Woröm deihs De noch ene Zohjang aanlääje?",
+       "createacct-reason-help": "Wadd em Logbohch för et Zohjäng Aanlähje schtonn sull",
        "createacct-submit": "Lohß Jonn!",
        "createacct-another-submit": "Donn jäz enne zohsäzlejje Zohjang aanlääje",
        "createacct-continue-submit": "Wigger maache mem Aanmällde",
        "nocookieslogin": "{{ucfirst:{{GRAMMAR:Nominativ|{{SITENAME}}}}}} bruch <i lang=\"en\">cookies</i> för et Enlogge. Et süht esu us, als hätts De de <i lang=\"en\">cookies</i> avjeschalt. Dun se aanschalte un dann versök et noch ens. Odder söök Der ene Brauser, dä et kann.",
        "nocookiesfornew": "Et wood keine Zohjang opjemaat, weil mer nit jeweß sin künne, woh de Daate her kohme.\nDinge Brauser moß <i lang=\"en\">cookies</i> enjeschalldt han.\nDonn dat prööfe, donn heh di Sigg norr_ens neu laade, un dann versöhk et norr_ens.",
        "nocookiesforlogin": "{{int:nocookieslogin}}",
+       "createacct-loginerror": "Dä Zohjang es aanjelaat, ävver mer kunnts Desch nit automattesch  enlogge. Be sesu jood un jangk mohm [[Special:UserLogin|Ennlogge vun Hand]].",
        "noname": "Dat jeiht nit als ene Metmaacher Name. Jetz muss De et noch ens versöke.",
        "loginsuccesstitle": "Enjelogg",
        "loginsuccess": "'''Do bes jetz enjelogg {{GRAMMAR:en|{{SITENAME}}}}, un Dinge Name als ene Metmaacher es „$1“.'''",
        "noemail": "Dä Metmaacher „$1“ hät en dämm sing Ennschtällonge kein <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i>-Adräß aanjejovve.",
        "noemailcreate": "Do moß en jöltijje Adräß för Ding <i lang=\"en\">e-mail</i> aanjävve",
        "passwordsent": "E neu Passwood es aan de E-Mail Adress vun däm Metmaacher „$1“ ungerwähs. Meld dich domet aan, wann De et häs. Dat ahle Passwood bliev erhalde un kann och noch jebruch wääde, bes dat De Dich et eetste Mol met däm Neue enjelogg häs.",
-       "blocked-mailpassword": "Ding IP Adress es blockeet.",
+       "blocked-mailpassword": "Ding IP Adress es blockeet, Änderonge em Wikki sin verbodde. Öm nix aanbränne ze lohße, es ed och verbode, vun heh dä <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräß et Passwoot affrohe ze lohße.",
        "eauthentsent": "En <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i> es jäz ungerwähs aan di Adräß en de Enschtällonge. Ih dat mih <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mails</i> verschek wääde künne, moß mer maache, wat en dä <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i> dren schteiht, öm ze beschtähteje, dat di Adräß schtemmp.",
        "throttled-mailpassword": "En Erennerung för di Passwood es alld ongerwähs, un mieh wi eimol en {{PLURAL:$1|der Schtond|$1 Schtonde|nidd ens ener Schtond}} dommer kein schecke.",
        "mailerror": "Fähler beim E-Mail Verschecke: $1.",
        "changepassword-success": "Et Paßwood es jeändert.",
        "changepassword-throttled": "Do häs zoh öff versöhk, enzelogge. Waat $1 Ih dat De es widder probeers.",
        "botpasswords": "Bot-Paßwööter",
+       "botpasswords-summary": "<strong>Bot-Paßwööter</strong> lohße ene Zohjreff obb enem Metmaacher singem Zohjang övver de <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i> zoh, ohne dem Houp-Zohjang sing Dahte bwnözze ze möße.\nDi Rääschte, di mer kritt, wam_mer med enem Bot-Paßwood ennlogg, künnte beschängk sin.\n\nWam_mer nit weijß, woröm mer dat donn sullt, sullt mer et wascheijnlesch nit donn. Opjepaß: Keijne sulld jehmohls welle, dat De eijn dervon oplähschß, öm ed em dann wiggerzejävve.",
        "botpasswords-disabled": "Bot-Paßwööter sin ußjeschallt",
        "botpasswords-no-central-id": "Öm Bot-Paßwööter bruche ze künne, moß De övve en jemeinsamme Aanmälldong ennjelogg sin.",
        "botpasswords-existing": "Vörhande Bot-Paßwööter",
        "botpasswords-label-cancel": "Ophüre",
        "botpasswords-label-delete": "Fottschmiiße",
        "botpasswords-label-resetpassword": "Paßwoot neu säze",
+       "botpasswords-label-grants": "Aanwändba Rääschte:",
+       "botpasswords-help-grants": "Jehde Ennwellejong deihjd e Räsch wigger jävve, wad enem Metmaacher övver singe Zohjang alld zohschteihjt.\nLoor op de Sigg met de [[Special:ListGrants|Tabäll met de Rääschde un Enwellejonge]], wann De mih weße wells.",
        "botpasswords-label-restrictions": "Beschränkonge:",
        "botpasswords-label-grants-column": "Zohjelohße",
        "botpasswords-bad-appid": "„$1“ es keine jölltejje Nahme för ene Bot.",
        "botpasswords-updated-body": "Dat Bot-Paßwoot för dä Bot „$1“ {{GENDER:$2|vum|vum|vumm Metmaacher|vun dä|vum}} „$2“ wood veränndert.",
        "botpasswords-deleted-title": "Dat Bot-Paßwood es fott",
        "botpasswords-deleted-body": "Dat Bot-Paßwoot för dä Bot „$1“ {{GENDER:$2|vum|vum|vumm Metmaacher|vun dä|vum}} „$2“ wood fott jeschmeße.",
+       "botpasswords-newpassword": "Et neuje Passwoot zom Ennlogge met <strong>$1</strong> es <strong>$2</strong>. Bes esu johd, dat för de Zohkonnef faßzehallde.",
+       "botpasswords-restriction-failed": "Beschrängkonge för em Bot sing Paßwoot maache et Ennlogge onmüjjelesch.",
+       "botpasswords-invalid-name": "En äm aanjejovve Nahme vum Metmaacher fähld et Trännzeijsche „$1“ för dem Bot sing Paßwoot.",
        "botpasswords-not-exist": "Dä Metmaacher „$1“ kät keijn Paßwoot „$2“ för ene Bot.",
        "resetpass_forbidden": "E Passwoot kann nit jeändert wääde.",
        "resetpass_forbidden-reason": "Paßwööter kam_mer nit änndere: $1",
        "passwordreset-emailtext-ip": "Do künns et sällver jewääse sin, öhnswää em Internet hät vun dä IP-Adräß $1 öm\ne neu Paßwoot jefrooch, för Dinge Zohjäng op {{GRAMMAR:Akkusativ|{{SITENAME}}}}\n$4\nHeh {{PLURAL:$3|dä Metmaacher hät|di Metmaacher han|hät keine Metmaacher}} Ding e-mail Addräß:\n\n$2\n\n{{PLURAL:$3|Dat Zweschepaßwoot leuf|Di Zweschepaßwööter loufe|Kein Zweschepaßwoot leuf}} en {{PLURAL:$5|enem Daach|$5 Dääsch|keinem Daach}} uß.\nDonn Desch jäz enlogge, un e neu Paßwoot faßlääje. Wann ene Andere wi\nDo dat heh aanjestüßße hät, udder wann De Desch widder aan Ding Paßwoot\nentsenne kanns, un et nimmih ändere wells, udder es suwwisu weiß, dann\nmoß De jäz jaa nix donn, un kanns Ding Paßwoot wigger bruche.",
        "passwordreset-emailtext-user": "Dä Metmaacher $1 vun {{GRAMMAR:Dativ|{{SITENAME}}}} hät öm e neu Paßwoot jefrooch,\nför Dinge Zohjäng op {{GRAMMAR:Akkusativ|{{SITENAME}}}}\n$4\nHeh {{PLURAL:$3|dä Metmaacher hät|di Metmaacher han|hät keine Metmaacher}} Ding e-mail Addräß:\n\n$2\n\n{{PLURAL:$3|Dat Zweschepaßwoot leuf|Di Zweschepaßwööter loufe|Kein Zweschepaßwoot leuf}} en {{PLURAL:$5|enem Daach|$5 Dääsch|keinem Daach}} uß.\nDonn Desch jäz enlogge, un e neu Paßwoot faßlääje. Wann ene Andere wi\nDo dat heh aanjestüßße hät, udder wann De Desch widder aan Ding Paßwoot\nentsenne kanns, un et nimmih ändere wells, udder es suwwisu weiß, dann\nmoß De jäz jaa nix donn, un kanns Ding Paßwoot wigger bruche.",
        "passwordreset-emailelement": "Metmaacher Name: \n$1\n\nEijmohl-Paßwoot: \n$2",
-       "passwordreset-emailsentemail": "Wann dat en ennjedrahre <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i>-Adräß vun Der es, dann weed en <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i> för der Zohjang heh verschek, öm e neu Paßwoot ze krijje.",
+       "passwordreset-emailsentemail": "Wann dat en <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i>-Adräß vun Der es, dann weed en <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i> för Dinge Zohjang verschek, öm e neu Paßwoot ze krijje.",
+       "passwordreset-emailsentusername": "Wann heh dä Metmaacher en <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i>-Adräß hät, dann weed en <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i> verschek, öm e neu Paßwoot ze krijje.",
        "passwordreset-emailsent-capture": "En <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i> met Aanjahbe zom neue Paßwoot för der Zohjang heh es verschek woode. Heh dronger kanns De se lässe.",
        "passwordreset-emailerror-capture": "En <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i> met Aanjahbe zom neue Paßwoot för der Zohjang heh sullt verschek wääde, ävver dat Verscheke aan {{GENDER:$2|dä|dat|dä Metmaacher|de|dat}} $2 hät nit jeflup: $1",
+       "passwordreset-emailsent-capture2": "{{PLURAL:$1|En <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i> es|De <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i>s sin|Nix es}} verschek woode, öm e neu Paßwoot ze krijje. {{PLURAL:$1|Dä Nahme vum Metmaacher un dat Paßwood|Di Leß met dä Nahme un Paßwööter|Nix weed}} heh noh aanjezeijsch.",
+       "passwordreset-emailerror-capture2": "{{GENDER:$2|Däm|Däm|Däm Metmaacher|Dä|Däm}} $1 en <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i> ze scheke hät nit jeflupp: {{PLURAL:$3|Dä Nahme vum Metmaacher un dat Paßwood|Di Leß met dä Nahme un Paßwööter|Nix weed}} heh noh aanjezeijsch.",
+       "passwordreset-nocaller": "Entärne Fähler: Ene Oprohfer moß aanjejovve sin.",
+       "passwordreset-nosuchcaller": "Entärne Fähler: Dä Oprohfer „$1“ känne mer nit.",
        "passwordreset-invalideamil": "Dat es en onjöltejje Addräß fö de <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i>",
        "passwordreset-nodata": "Keine Metmaacher_Nahme un kein Adräß för de <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i> es aanjejovve woode.",
        "changeemail": "Donn en Adräß för de <i lang=\"en\">e-mail</i> ändere udder fott schmiiße",
        "accmailtext": "En automattesch un zofällesch neu ußjewörfelt Passwood för dä\nMetmaacher „[[User talk:$1|$1]]“ es noh „$2“ jescheck woode.\n\nDat Passwoot för dä neue Zojang kanns De op dä {{int:Specialpage}} zom\n„[[Special:ChangePassword|{{int:resetpass}}]]“ ändere,\nwann De wider enjelogg bes.",
        "newarticle": "(Neu)",
        "newarticletext": "Ene Link op en Sigg, wo noch nix drop steiht, weil et se noch jar nit jitt, hät Dich noh heh jebraht.\nÖm di Sigg aanzelähje, schriev heh unge en dat Feld eren, un dun dat dann avspeichere.\nLuur op de [$1 Sigge met Hölp] noh, wann De mih doh drövver weßße wells.\nWann De jar nit heh hen kumme wollts, dann jangk zeröck op di Sigg, wo De herjekumme bes, Dinge Brauser hät ene Knopp doför.",
-       "anontalkpagetext": "----\n<i>Dat heh es de Klaaf Sigg för ene namenlose Metmaacher. Dä hät sich noch keine Metmaacher Name jejovve un\nenjerich, ov deit keine bruche. Dröm bruche mer sing IP Adress öm It oder In en uns Lisste fasszehalde.\nSu en IP Adress kann vun janz vill Metmaacher jebruch wääde, un eine Metmaacher kann janz flöck\nzwesche de ungerscheidlichste IP Adresse wähßele, womöchlich ohne dat hä et merk. Wann Do jetz ene namenlose\nMetmaacher bes, un fings, dat heh Saache an Dich jeschrevve wääde, wo Do jar nix met am Hot häs, dann bes Do\nwahrscheinlich och nit jemeint. Denk villeich ens drüvver noh, datte Dich [[Special:CreateAccount|anmelde]] deis,\ndomet De dann donoh nit mieh met esu en Ömständ ze dun häs, wie de andere namenlose Metmaacher heh. Wann de aanjemelldt bes un deis [[Special:UserLogin|enlogge]], dann kam_mer Desch och fun alle andere Metmaacher ongerschejde.</i>",
+       "anontalkpagetext": "----\n<strong>Dat heh es de Klaaf Sigg för ene nahmelohse Metmaacher. Dä hät sich noch keine Metmaacher Name jejovve un enjerich, ov deit keine bruche.</strong> Dröm bruche mer sing \n<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräß, öm It oder In en uns Lisste faßßzehalde.\nSu en <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräß kann vun janz vill Metmaacher jebruch wääde, un eine Metmaacher kann flöck zwesche de ungerscheidleschste <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräßw ähßele, womöchlich ohne dat hä et merk. Wann Do jetz ene nahmelohse Metmaacher bes, un fengs, dat heh Saache an Desch jeschrevve wääde, wo Do jar nix med am Hoht häs, dann bes Do\nwahrscheinlich och nit jemeijnt. Dängk velleisch ens drövver noh, datte Dich [[Special:CreateAccount|anmelds]],\ndomet De dann donoh nit mih met esu en Ömständ ze don häs, wi de andere namenlose Metmaacher heh. Wann de aanjemälldt bes un deis [[Special:UserLogin|enlogge]], dann kam_mer Desch och fun alle andere Metmaacher ongerscheijde.",
        "noarticletext": "<span class=\"plainlinks\">Em Momang es keine Täx op heh dä Sigg. Jangk en de Täxte vun ander Sigge [[Special:Search/{{PAGENAME}}|noh däm Titel söhke]], udder [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} donn en de Logböscher donoh loore], udder [{{FULLURL:{{FULLPAGENAME}}|action=edit}} fang di Sigg aan] ze schrieve, udder jangk zeröck woh De heer kohms. Do hät Dinge Brauser ene Knopp för.</span>",
        "noarticletext-nopermission": "Op dä Sigg es em Momang nix drop.\nDo kanns noh däm Tittel vun heh dä Sigg [[Special:Search/{{PAGENAME}}|em Tex op ander Sigge söhke]],\nudder en dä zopaß <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} Logbööscher nohloore]</span>.",
        "missing-revision": "En Version $1 vun dä Sigg „{{FULLPAGENAME}}“ jidd_et nit.\n\nEsu jät kütt för jewöhnlesch, wam_mer enem övverhollte Lengk ob en Sigg follesch, di zweschedren fottjeschmeße woode es.\nMih doh drövver fengk mer em [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Logbooch vum Sigge Fottschmiiße].",
        "previewnote": "<strong>Heh kütt blohß en Aanseesch vöraff — Ding Änderonge sin noch nidd em Wikki faßjehallde!</strong>",
        "continue-editing": "Jangk tiräk nohm Plaz zom Schrieve",
        "previewconflict": "Heh di Vör_Aanseesch zeisch dä Enhald vum bovvere Täxfäld.\nEsu wööd di Sigg ußsinn, wann De se jäz afschpeijschere dähts.",
-       "session_fail_preview": "<strong>Schahd: Met Dinge Änderonge kunnte mer su nix aanfange.\nVersöhk et jrahd noch ens.\nWann dat widder nit flupp, dann versöhk et ens met [[Special:UserLogout|Ußlogge]] un widder Enlogge.</strong>",
-       "session_fail_preview_html": "'''Schad: Ding Änderunge kunnte mer su nix met aanfange. De Daate vun Dinge Login-Säschen sin nit öntlich erüvver jekumme, oder einfach ze alt.'''\n\n''Dat Wiki heh hät rüh HTML zojelooße, dröm weed de Vör-Aansich nit jezeich. Domet solls De jeschötz wääde - hoffe mer - un Aanjreffe met Java_Skripp jäje Dinge Kompjuter künne Der nix aandun.''\n\n'''Falls för Dich söns alles jod ussüht, versök et jrad noch ens. Wann dat widder nit flupp, dann versök et ens met [[Special:UserLogout|Uslogge]] un widder Enlogge.'''",
+       "session_fail_preview": "Schahd: Met Dinge Änderonge kunnte mer su nix aanfange. De Sezongsdahte sin verschött jejange.\nDo künnts ußjelogg wohde sin.\n<strong>Bes sescher, dat De verhaftesc noch ennjelogg bes un dann versöhk et jrahd noch ens.</strong>\nWann dat widder nit flupp, dann versöhk et ens met [[Special:UserLogout|Ußlogge]] un widder Enlogge,\nun pröhf, dat Dinge Brauser <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„Plätzjer“\">cookies</i> vum Wikki aannemmp.",
+       "session_fail_preview_html": "<strong>Schahd: Ding Änderonge kunnte mer su nix met aanfange. De Daate vun Dinge Login-Swzong sin nit öntlich erövver jekumme, udder einfach zoh ahl un affjeloufe.</strong>\n\nDat Wiki heh hät rüh HTML zohjelohße, dröm weed de Vör-Aansesch nit aanjezeisch. Domet solls De jeschötz wääde - hoffe mer - un Aanjreffe met Java_Skripp jäje Dinge Kompjuter künne Der nix aandon.\n\n<strong>Falls för Dich söns alles jod ussüht, versök et jrad noch ens.</strong>\nWann dat widder nit flupp, dann versök et ens met [[Special:UserLogout|Uslogge]] un widder Enlogge,\nun pröhf, dat Dinge Brauser <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„Plätzjer“\">cookies</i> vum Wikki aannemmp.",
        "token_suffix_mismatch": "'''Ding Änderong ham_mer nit övvernomme. Dinge Brauser hät Sazzeijsche en dä verschtoche Makkehrong för et Ändere versout. Dat paßehrt och ens, wann enne <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„ene ẞööver en de Nohberschaff, ene Zweschedrääjer udder Zwescheschpeijscher, ene Vermeddelongsrääschner“\">proxy</i>-ẞööver nit fungkßjeneet. Et Affschpeischere wöhr doh jefährlesch, do künnt dä Sigge_Enhaldt kapott bei jon.'''",
        "edit_form_incomplete": "<strong>Ene Aandeil vun dämm Fommolaa es nit reeschtesch om ẞööver aanjekumme. Donn Ding Ennjahbe pröhve, reparehre, un versöhg et norrens.</strong>",
        "editing": "De Sigg „$1“ ändere",
        "content-model-json": "<i lang=\"en\" xml:lang=\"en\" title=\"JavaScript Object Notation\">JSON</i>",
        "content-json-empty-object": "Nix dren",
        "content-json-empty-array": "Nix dren",
+       "deprecated-self-close-category": "Sigge med onjölltejje <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"HyperText Markup Language\">HTML</i>-Befähle, di en sesch sällf ze Äng jonn.",
+       "deprecated-self-close-category-desc": "De Sigg hädd onjölltejje <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"HyperText Markup Language\">HTML</i>-Befähle, di en sesch sällf ze Äng jonn. Beijshpelle sin <code>&lt;b/></code> udder <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">&lt;span/></code>. Wat di donn, weed bahl esu verännert, dat se mem <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"HyperText Markup Language Version 5\">HTML5</i> zesamme paße, woh mer se en Wikkitäx it bruche sullt.",
        "duplicate-args-warning": "<strong>Opjepaß:</strong> [[:$1]] röhf [[:$2]] met mih wi eijnem Wäät för der Parramehter „$3“ op. Blohß der läzde Wäät vun dänne weed opjenumme un jebruch.",
        "duplicate-args-category": "Sigge met dubbelt aanjejovve Parramehtere för Schablohne.",
        "duplicate-args-category-desc": "Sigge met Oprohve vun Schablohne met dubbelt aanjejovve Parramehtere dren, alsu esu jät wi <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> un <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "upload-too-many-redirects": "Zoh vill Ömleitunge en däm <i lang=\"en\">URL</i>",
        "upload-http-error": "Ene <i lang=\"en\">HTTP</i>-Fäähler es opjetrodde: $1",
        "upload-copy-upload-invalid-domain": "Fun dä Domain künne mer nix noh heh huh laade. Di es nit zohjelohße.",
+       "upload-foreign-cant-upload": "Heh dat Wikki es nit esu ennjeschtallt, dat mer Datteije en dat jewönschte Repposetohrejom vun Datteije ußerhallef vum Wikki huhlahde künnt.",
+       "upload-foreign-cant-load-config": "Mer kunnte de Enschtälonge för et Datteije-Huhlahde en e Repposetohrejom vun Datteije ußerhallef vum Wikki nit lahde.",
+       "upload-dialog-disabled": "Op heh däm Wähsch Datteije huhzelahe es heh em Wikki affjeschalldt.",
        "upload-dialog-title": "Dateij huhlahde",
        "upload-dialog-button-cancel": "Ophühre!",
        "upload-dialog-button-done": "Jedonn",
        "upload-dialog-button-upload": "Lohß Jonn!",
        "upload-form-label-infoform-title": "Eijnzelheijte",
        "upload-form-label-infoform-name": "Nahme",
+       "upload-form-label-infoform-name-tooltip": "En eijndeutejje Titel för di Datei, di se beschrihv un als Dattejnahme dehnt. Mer kan jewöhnlejje Schprohch met Zweschreum zwesche de Wööter nämme. Donn keine Datteijnahme-Zohsaz derbeij.",
        "upload-form-label-infoform-description": "Äkliehrong",
+       "upload-form-label-infoform-description-tooltip": "Donn koot beschrihve, wat vun Belang es för dat Wärk.\nFör e Fotto, schrihv de Houpsaache op, di affjebelld sin, de Zigg un Jelähjeheid un der Plaz.",
        "upload-form-label-usage-title": "Der Jebruch",
        "upload-form-label-usage-filename": "Dä Dattei iehre Nahme",
        "upload-form-label-own-work": "Dat es ming eije Wärk",
        "upload-form-label-infoform-categories": "Saachjroppe",
        "upload-form-label-infoform-date": "Dattum",
+       "upload-form-label-own-work-message-generic-local": "Esch beschtähtejjen, dadd esch heh di Dattei aam Huhlahde ben un derbeij de Bedengonge för der Dehns un de Rähjelle för de Lezänze {{GRAMMAR:em|{{ucfirst:{{SITENAME}}}}}} ennhallden.",
        "upload-form-label-not-own-work-message-generic-local": "Wann De di Dattei nit en de jemeinsamme Sammlong vun Datteule huh lahde kanns un derbei och de Rähjelle {{GRAMMAR:vun|{{ucfirst:{{SITENAME}}}}}} ennhalde, dann maach heh nit wigger, un probehr ene anndere Wähsch.",
        "upload-form-label-not-own-work-local-generic-local": "Do künnts edd och ens met dä [[Special:Upload|Schtandatt-Sigg zom Huhlahde]] versöhke welle.",
        "upload-form-label-own-work-message-generic-foreign": "Esch verschtonn, dadd esch en en jemeinsamme Sammlong huh aam lahde ben un dadd sesch dat met dä Bedengonge un de Lezänzbedengonge heh verdräht.",
        "apisandbox-api-disabled": "Dat <i lang=\"en\">API</i> es en heh dämm Wiki afjeschalldt.",
        "apisandbox-intro": "Op heh dä Sigg kanns De met dä <strong><i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i> vum MehdijaWikki singem Wäbdehns</strong> eröm schpelle.\nBeloor Der de Einzelheijte, un wi di jebruch weed, op dä iere [[mw:API:Main_page Sigg met de Verklieronge]].\nE Beischpell: [https://www.mediawiki.org/wiki/API#A_simple_example De Houpsigg holle].\nSöhk ene {{int:Apisb-label-action}} uß, öm mih Beischpelle aanjezeisch ze krijje.\nOch wann dat heh nor zom Ußprobehre es, kann dat, wat De heh mähß, et Wikki veränndere.",
        "apisandbox-fullscreen": "Om jannze Scherrem zeije",
+       "apisandbox-fullscreen-tooltip": "Maach de Sandkeß esu jruhß wi et jannze Brauser-Finster.",
        "apisandbox-unfullscreen": "De Sigg nommahl aanzeije",
+       "apisandbox-unfullscreen-tooltip": "Maach de Sandkeß kleijner, esu dat dem Mehdijawikki sing Navvijazjuhns-Lengks zohjänglesch wähde.",
        "apisandbox-submit": "Lohß jonn!",
        "apisandbox-reset": "Läddesch maache",
        "apisandbox-retry": "Norr_ens versöhke",
        "apisandbox-loading": "Ben de Ennfommazjuhne för et Moduhl „$1“ vun de <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i> aam lahde&nbsp;&hellip;",
+       "apisandbox-load-error": "Ene Fähler es opjetrodde beim Lahde vun Enfommazjuhne för et \n<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i>-Moduhl „$1“: $2",
+       "apisandbox-no-parameters": "Heh dat <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i>Moduhl hät kein Parramehtere.",
        "apisandbox-helpurls": "Lengks för Hölp",
        "apisandbox-examples": "Bäijshpelle",
        "apisandbox-dynamic-parameters": "Zohsäzlejje Parrameetere",
        "apisandbox-dynamic-error-exists": "Ne Parramehter mem Nahme „$1“ ham_mer ald.",
        "apisandbox-deprecated-parameters": "Övverhollte Parramehtere",
        "apisandbox-submit-invalid-fields-title": "Paa Flder sin nit jöltesch",
+       "apisandbox-submit-invalid-fields-message": "Donn de makkehrte Fällder bereeschtejje un versöhg et norr_ens.",
        "apisandbox-results": "Erus jekumme:",
+       "apisandbox-sending-request": "Ben en Aanfrohch aan et <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i> aam schecke&nbsp;&hellip;",
+       "apisandbox-loading-results": "Ben en Antwoot vum <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i> aam krijje&nbsp;&hellip;",
+       "apisandbox-results-error": "Ene Fähler es opjetrodde beim Lahde vun dä Antwoot ob de Aanfrohch aan et <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i>: $1.",
        "apisandbox-request-url-label": "Dä <i lang=\"en\">URL</i> vun dä Aanfrooch:",
-       "apisandbox-request-time": "De Zigg vum Afroof: $1",
+       "apisandbox-request-time": "De Dooer vun däm Afroof: {{PLURAL:$1|ein Millisekond|$1 Millisekonde|kein Millisekond}}.",
        "apisandbox-alert-page": "Heh op dä Sigg sin onjölltejje Aanjahbe.",
        "apisandbox-alert-field": "Dä Wääd en dämm Fäld heh es onjölltesch.",
        "booksources": "Böcher",
        "log-title-wildcard": "Sök noh Titelle, di aanfange met …",
        "showhideselectedlogentries": "Ußjesöhk Endrääsch verschteische udder zeije",
        "log-edit-tags": "Donn de Makehronge vun de ußjesöhk Enndrähsch em Logbohch beärbeide",
+       "checkbox-select": "Söhk us: $1",
        "checkbox-all": "Alle",
        "checkbox-none": "Keine",
        "checkbox-invert": "Ußwahl ömdrihje",
        "listgrouprights-namespaceprotection-header": "Beschrängkonge för Appachtemangs",
        "listgrouprights-namespaceprotection-namespace": "Appachtemang",
        "listgrouprights-namespaceprotection-restrictedto": "Rääsch(de) zom Verändere",
+       "listgrants": "Berääschtejonge",
+       "listgrants-grant": "Berääschtejong",
        "listgrants-rights": "Rääschte",
        "trackingcategories": "Saachjroppe för täschnsche Saache ze verfollje.",
        "trackingcategories-summary": "Op hee dä {{int:nstab-special}} sin Saachjroppe opjeleß, di automattesch vum Wikki jevöllt wähde. Dä iehr Nahme künne övver Veränderonge aan beschtemmpte Täxte em Appachtemang {{ns:8}} faßjelaat wäde.",
        "trackingcategories-msg": "Saachjropp för täschnsche Saache ze verfollje.",
        "trackingcategories-name": "Dä Nohreesch udder däm Täxschtöck singe Nahme",
        "trackingcategories-desc": "Bedengonge för enjeschloße ze sin",
+       "restricted-displaytitle-ignored": "Sigge met övverjange „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">{<nowiki />{DISPLAYTITLE}}</code>“-Befähle",
+       "restricted-displaytitle-ignored-desc": "Dä Sigg iere „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">{<nowiki />{DISPLAYTITLE}}</code>“-Befähl weed övverjange. Hä kütt nit zopaß met dä aktoälle Övverschreff vun dä Sigg.",
        "noindex-category-desc": "Di Sigg sull vun de Wäbkrauler Robots un de Söhkmaschihne nit opjenumme wähde, weil dat Zauberwoot <code><nowiki>__NOINDEX__</nowiki></code> dren schteiht un se en enem Appachemang es, woh dat zohjelohße es.",
        "index-category-desc": "Di Sigg sull vun de Wäbkrauler Robots un de Söhkmaschihne opjenumme wähde, weil dat Zauberwoot <code><nowiki>__INDEX__</nowiki></code> dren schteiht un se en enem Appachemang es, woh dat zohjelohße es, un wat nommahlerwihs nit vun de Robots dorschsöhk weed.",
        "post-expand-template-inclusion-category-desc": "Nohdämm a paa Schablohne enjesaz woode sen, hät di Sigg mieh Dahte wi <code xml:lang=\"en\" lang=\"en\">$wgMaxArticleSize</code> zohlöhß. Et sin nit alle Oprohve vun Schablohne opjelöhß.",
        "wlnote": "{{PLURAL:$1|Hee es de läzde Änderong uß|Hee sin de läzde <strong>$1</strong> Änderonge uß|Mer han kein Änderonge en}} de läzde {{PLURAL:$2|Stund|<strong>$2</strong> Stunde|<strong>noll</strong> Stunde}} zigg em $3 öm $4 Uhr.",
        "wlshowlast": "Zeisch de läzde $1 Schtunde, $2 Dähsch aan.",
        "watchlist-hide": "Verschtisch",
+       "watchlist-submit": "Aanzeije!",
+       "wlshowtime": "De Aandeijl vun e Zigg zom Aanzeije:",
        "wlshowhideminor": "klein Minni-Änderonge",
        "wlshowhidebots": "de Bots ehr Änderonge",
        "wlshowhideliu": "de ennjeloggte Metmaacher ier Änderonge",
        "wlshowhideanons": "de nahmelohse Metmaacher ier Änderonge",
        "wlshowhidepatr": "de nohjelohrte Änderonge",
        "wlshowhidemine": "ming eije Änderonge",
+       "wlshowhidecategorization": "de Sigge ier Ennohdenong",
        "watchlist-options": "Eijeschaffte fun de Oppassless",
        "watching": "Drobb oppaßße…",
        "unwatching": "Nimmih drobb oppaßße",
        "delete-confirm": "„$1“ fottschmieße",
        "delete-legend": "Fottschmieße",
        "historywarning": "<strong>Opjepass:</strong> Di Sigg, di De fott schmiiße wells, hät {{PLURAL:$1|ein ällder Väsjohn|ald $1 ällder Väsjohne|jaa kein ällder Väsjohne}}.",
+       "historyaction-submit": "Aanzeije!",
        "confirmdeletetext": "Do bes koot dovör, en Sigg för iiwich fottzeschmiiße. Dobei verschwind och de janze Verjangeheit vun dä Sigg us de Dahtebangk, met all ehr Änderonge un Metmaacher Nahme, un all dä Opwand, dä do dren stich. Do moß heh jäz beschtähteje, dat de verschteihs, wat dat bedügg, un dat De weiß, wat Do do mähs.\n<strong>Dun et blohß, wann dat met de [[{{MediaWiki:Policy-url}}|Rääjelle]] verhaftech zosamme jeiht!</strong>",
        "actioncomplete": "Jedonn!",
        "actionfailed": "Dat es donevve jejange",
        "rollbacklinkcount": "{{PLURAL:$1|Ein Änderong|$1 Änderonge|Kein Änderonge}} schtantepee retuur nämme",
        "rollbacklinkcount-morethan": "{{PLURAL:$1|Mih wi ein Änderong|Övver $1 Änderonge|Kein Änderonge}} schtantepee retuur nämme",
        "rollbackfailed": "Dat Zeröcknemme jingk scheiv",
+       "rollback-missingparam": "Doh fähle nühdejje Parramehtere",
        "cantrollback": "De läzde Änderong zeröckzenemme es nit müjjelich. Dä läzde Schrihver es dä eijnzeje, dä aan dä Sigg heh jht jedonn hät!",
        "alreadyrolled": "Mer künne de letzte Änderonge vun dä Sigg „[[:$1]]“ vum Metmaacher „[[User:$2|$2]]“ ([[User talk:$2|Klaaf]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) nimieh zeröcknemme, dat hät ene Andere enzwesche ald jedon, udder de Sigg ömjeändert.\n\nDe Neuste Änderong aan dä Sigg es jetz vun däm Metmaacher „[[User:$3|$3]]“ ([[User talk:$3|Klaaf]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
        "editcomment": "Bei dä Änderong schtundt: „$1“.",
        "revertpage": "Änderunge vun däm Metmaacher „[[Special:Contributions/$2|$2]]“ ([[User talk:$2|däm sing Klaafsigg]]) fottjeschmeße, un doför de lätzde Väsjohn vum „[[User:$1|$1]]“ widder zeröckjehollt",
        "revertpage-nouser": "Änderunge vun enem Metmaacher, däm singe Name vershtoche es, retuur jemaat op de letzte Version {{GENDER:$1|vum|vum|vumm Metmaacher|vun dä|vum}} [[User:$1|$1]]",
        "rollback-success": "De Änderungen vum $1 zeröckjenumme, un dobei de letzte Version vum $2 widder jehollt.",
+       "rollback-success-notify": "Änderonge {{GENDER:$1|vum|vum|vumm Metmaacher|vun dä|vum}} „$1“ sin zerök jenumme un di Sigg es op der Schtand vun doför {{GENDER:$2|vum|vum|vumm Metmaacher|vun dä|vum}} „$2“ jesaz. [$3 Belohr, wat derbeij veränndert wood]",
        "sessionfailure-title": "Fähler met dä Daate vum Enlogge",
        "sessionfailure": "Et jov wall e täschnesch Problehm met Dingem Login. Dröm ham_mer dat us Vörseesch jäz nix jemaht, domet mer nit velleich Ding Änderong däm verkihrte Metmaacher ongerjubele. Jangk zeröck un versöhk et noch ens.",
        "changecontentmodel": "Et Modäll vum Ennhald vun ene Sigg verändere",
        "block-log-flags-hiddenname": "Däm Metmaacher singe Name es för de Öffentleschkeit vershtoche",
        "range_block_disabled": "Adresse Jebeede ze sperre, es nit erlaub.",
        "ipb_expiry_invalid": "De Duur es Dress. Jevv se richtich aan.",
+       "ipb_expiry_old": "Di Zick för ed Ußloufe es ald eröm.",
        "ipb_expiry_temp": "Sperre för Metmaacher met verschtoche Nahme mößße för ihwish dohre.",
        "ipb_hide_invalid": "Mer künne dä Metmaacher nit verschteische. Dä hät övver {{PLURAL:$1|ein Änderong|$1 Änderong|kein Änderong}} jemaat.",
        "ipb_already_blocked": "„$1“ es ald jesperrt",
        "lockdbsuccesstext": "{{ucfirst:{{GRAMMAR:Genitive sing|{{SITENAME}}}}}} Daatebank jetz jesperrt.<br /> Dun se widder [[Special:UnlockDB|freijevve]], wann Ding Waadung eröm es.",
        "unlockdbsuccesstext": "De Daatebank es jetz freijejovve.",
        "lockfilenotwritable": "De Datei, wo de Daatebank met jesperrt wääde wööd, künne mer nit aanläje, oder nit dren schrieve. Esu ene Dress! Dat mööt dä Websörver ävver künne! Verzäll dat enem Verantwortliche för de Installation vun däm ẞööver oder repareer et selvs, wann De et kanns.",
+       "databaselocked": "De Dahtebangk es ald jeschpächt.",
        "databasenotlocked": "<strong>Opjepass:</strong> De Daatebank es <strong>nit</strong> jesperrt.",
        "lockedbyandtime": "(aam $2 öm $3 Uhr vum $1)",
        "move-page": "De Sigg „$1“ ömnenne",
        "move-page-legend": "Sigg Ömnenne",
-       "movepagetext": "Heh kanns De en Sigg ömnenne.\nDomet kritt di Sigg ene neue Name, un all vörherije Versione vun dä Sigg och.\nUnger däm ahle Tittel weed automatisch en Ömleidong op dä neue Tittel enjedrare.\n\nDo kannß dat Höksche säze domet Ömleidonge automattesch aanjepaß wääde, di op dä ahle Tittel zeije — dat weet ävver nur allmählesch pö a pö hengerher jemaat.\nLinks op dä ahle Tittel blieve ävver wi se wore, wann De dat Höksche nit säz.\nDat heiß, dann moß De selver nohluure, of do jäz [[Special:DoubleRedirects|dubbelde Ömleidonge]] udder [[Special:BrokenRedirects|kapodde Ömleiduoge]] bei eruskumme.\nWann De en Sigg ömnenne deis, häs Do och doför ze sorje, dat de betroffene Links do henjonn, wo se hen jonn solle.\nAlsu holl Der de Liss „Wat noh heh link“ fun dä Sigg heh un jangk se dorsch!\n\nDe Sigg weed '''nit''' ömjenannt, wann et met däm neue Name ald en Sigg jitt, '''ußer''' et es en Ömleidong un se es noch nie jeändert woode.\nEsu kam_mer en Sigg jlich widder zeröck ömbenänne, wam_mer sich bem Ömbenänne verdonn hät, un mer kann och kein Sigge kapottmaache, wo ald jet drop schteiht.\n\n'''Oppjepass!'''\nWat beim Ömnenne erus kütt, künnt en opfällije un villeisch stüürende Änderong aam Wiki sin, besönders bei öff jebruchte Sigge.\nAlsu bes secher, dat De verschteihs, wat De heh am maache bes, ih dat De et mähs!",
+       "movepagetext": "Heh kanns De en Sigg ömnenne.\nDomet kritt di Sigg ene neue Name, un all vörherije Versione vun dä Sigg och.\nUnger däm ahle Tittel weed automatisch en Ömleidong op dä neue Tittel enjedrare.\n\nDo kannß dat Höksche säze domet Ömleidonge automattesch aanjepaß wääde, di op dä ahle Tittel zeije — dat weet ävver nur allmählesch pö a pö hengerher jemaat.\nLinks op dä ahle Tittel blieve ävver wi se wore, wann De dat Höksche nit säz.\nDat heiß, dann moß De selver nohluure, of do jäz [[Special:DoubleRedirects|dubbelde Ömleidonge]] udder [[Special:BrokenRedirects|kapodde Ömleiduoge]] bei eruskumme.\nWann De en Sigg ömnenne deis, häs Do och doför ze sorje, dat de betroffene Links do henjonn, wo se hen jonn solle.\nAlsu holl Der de Liss „Wat noh heh link“ fun dä Sigg heh un jangk se dorsch!\n\nDe Sigg weed <strong>nit</strong> ömjenannt, wann et met däm neue Name ald en Sigg jitt, <strong>ußer</strong> et es en Ömleidong un se es noch nie jeändert woode.\nEsu kam_mer en Sigg jlich widder zeröck ömbenänne, wam_mer sich bem Ömbenänne verdonn hät, un mer kann och kein Sigge kapottmaache, wo ald jet drop schteiht.\n\n<strong>Oppjepass!</strong>\nWat beim Ömnenne erus kütt, künnt en opfällije un villeisch stüürende Änderong aam Wiki sin, besönders bei öff jebruchte Sigge.\nAlsu bes secher, dat De verschteihs, wat De heh am maache bes, ih dat De et mähs!",
        "movepagetext-noredirectfixer": "Heh kanns De en Sigg ömnenne.\nDomet kritt di Sigg ene neue Nahme, un all vörherije Väsjohne vun dä Sigg och.\nOnger däm ahle Tittel weed automattesch en Ömleidong op dä neue Tittel enjedrare.\n\nLenks op dä ahle Tittel bliive ävver, wie se wohre.\nDat heiß, Do moß selver nohloore, ov doh jetz [[Special:DoubleRedirects|dubbelde]] oder [[Special:BrokenRedirects|kapodde Ömleidonge]] bei eruskumme.\nWann De en Sigg ömnenne deiß, häs Do och doför ze sorje, dat de betroffe Links doh henjonn, wo se hen jonn solle.\nAlsu holl Der di Liss „Wat noh heh link“ fun dä Sigg heh un jangk se dorsch!\n\nDi Sigg weed '''nit''' ömjenannt, wann et met däm neue Tittel ald en Sigg jitt, '''ußer''' doh es nix drop, oder et es en Ömleijdong un se es noch nie jeändert woode.\nEsu kam_mer en Sigg jlich widder retuur ömnänne, wam_mer sich mem Ömnänne verdonn hät, un mer kann och kein Sigge kapottmaache, wo ald jet drop schteiht.\n\n<strong>Oppjepaß!</strong>\nWat beim Ömnänne erus kütt, künnt en opfällije un velleijsch stührende Änderong aam Wikki sin, besönders bei öff jebruchte Sigge.\nAlsu bes secher, dat De verschteihs, wat De heh am maache bes, ih dat De et mähs!",
        "movepagetalktext": "Wam_mer en däm Kääsje e Höhksche määt, weed heh di Sigg automattesch ömjenannd op di neuje Övverschreff, ußer wann en Klaafsigg met dä neuje Övverschrev ald do es, un et steiht och jet drop.\n\nEn dämm Fall mpß De Der dä Enhald vun dä Klaafsigge selvs vörnemme, un eröm kopeere wat De bruchs.",
        "moveuserpage-warning": "'''Opjepaß:''' Do wells en Metmaachersigg ömnänne, domet weed ävver dä Metmaacher sellver ''nit'' met ömjenannt.",
        "movenosubpage": "Di Sigg hät kei Ongersigge.",
        "movereason": "Aanlass:",
        "revertmove": "Et Ömnänne zerök_nämme",
-       "delete_and_move_text": "== Dä! Dubbelte Name ==\nDi Sigg „[[:$1]]“ jitt et ald. Wollts De se fottschmieße, öm heh di Sigg ömnenne ze künne?",
+       "delete_and_move_text": "Di Sigg „[[:$1]]“ jitt et ald. Wollts De se fottschmieße, öm heh di Sigg ömnenne ze künne?",
        "delete_and_move_confirm": "Jo, dun di Sigg fottschmieße.",
        "delete_and_move_reason": "Fottjeschmeße, öm di Sigg „[[$1]]“ ömbenänne ze künne.",
        "selfmove": "Du Doof! - dä ahle Name un dä neue Name es däselve - do hät et Ömnenne winnich Senn.",
        "move-leave-redirect": "Donn en Ömleidong doför ennreschte",
        "protectedpagemovewarning": "'''Opjepaß:''' Heh di Sigg es jespert su dat blooß de Wiki-Kööbeße se ömnänne künne.\nHeh kütt der neuste Enndrach em Logbooch doh drövver:",
        "semiprotectedpagemovewarning": "'''Opjepaß:''' Heh di Sigg es jespert su dat blooß aanjemeldte Metmaacher se ömnänne künne.\nHeh kütt der neuste Enndrach em Logbooch doh drövver:",
-       "move-over-sharedrepo": "==Di Dattei jidd_et ald==\nEn Dattei [[:$1]] jidd_et ald en enem jemeinsame Beschtand. En annder Dattei op dä Name ömzenänne sorresch doför, dat mer aan di Dattei em jemeinsame Beschtand vun heh uß donoh nit mieh draan kütt.",
+       "move-over-sharedrepo": "En Dattei [[:$1]] jidd_et ald en enem jemeinsame Beschtand. En annder Dattei op dä Name ömzenänne sorresch doför, dat mer aan di Dattei em jemeinsame Beschtand vun heh uß donoh nit mieh draan kütt.",
        "file-exists-sharedrepo": "Dinge Nahme för di Dattei weed ald jebruch, un zwa en enem jemeinsame Beschtand vun Dateije.\nDröm söhk ene andere Nahme uß.",
        "export": "Sigge Exporteere",
        "exporttext": "Heh exportees De dä Tex un de Eijeschaffte vun ener Sigg, oder vun enem Knubbel Sigge, de aktuelle Version, met oder ohne ehr ählere Versione.\nDat Janze es enjepack en XML.\nDat kam_mer en en ander Wiki — wann et och met dä MediaWiki-Soffwär läuf — övver de Sigg „[[Special:Import|Import]]“ do widder empotehre.\n\nSchriev de Titele vun dä Sigge en dat Feld för Tex enzejevve, unge, eine Titel en jede Reih.\nDann dun onoch ussöke, ov De all de vörherije Versione vun dä Sigge han wells, oder nor de aktuelle met dä Informazjuhne vun de läzde Änderong.\n\nEn däm Fall künns De, för en einzelne Sigg, och ene tirekte Link bruche, zom Beispill „[[{{#Special:Export}}/{{MediaWiki:Mainpage}}]]“ för de Sigg „[[{{MediaWiki:Mainpage}}]]“ ze exporteere.",
        "tooltip-pt-preferences": "De eije Ennschtällonge{{GENDER:|}}",
        "tooltip-pt-watchlist": "De Leß met de Sigge en Dinge eije Oppaßleß",
        "tooltip-pt-mycontris": "En Leß met Dinge eije Beijdrähsch{{GENDER:|}}",
+       "tooltip-pt-anoncontribs": "En Leß met de Verännderong, di vun heh dä <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräß uß jemaat wode sin.",
        "tooltip-pt-login": "Do moß Desch nit Enlogge, kannz_E ävver jähn maache!",
        "tooltip-pt-logout": "Ußlogge",
        "tooltip-pt-createaccount": "mer schlonn vör, dat De Desch aanmällde deihs un ennloggs, ävver müüdesch es et nit.",
        "tooltip-feed-rss": "Dä RSS-Abonnomang-Kannal (Feed) för heh di Sigg",
        "tooltip-feed-atom": "Dä Atom-Abonnomang-Kannal (Feed) för heh di Sigg",
        "tooltip-t-contributions": "Donn en Leß met dä Bedrähsch {{GENDER:$1|vun heh däm|vun heh dämm|vun heh dämm Metmaacher|vun heh dä|vun heh däm}} belohre",
-       "tooltip-t-emailuser": "Scheck en E-Mail aan dä Metmaacher",
+       "tooltip-t-emailuser": "Scheck en E-Mail aan {{GENDER:$1|dä Metmaacher|de Metmaacherėn|dä Metmaacher|de Metmaacherėn|dä Metmaacher}}",
        "tooltip-t-info": "Mih Aanjahbe övver heh di Sigg",
        "tooltip-t-upload": "Dateie huhlade",
        "tooltip-t-specialpages": "Leß met de {{int:nstab-special}}e",
        "lastmodifiedatby": "Di Sigg heh wohd et läz aam $1 öm $2 Uhr vum $3 jeändert.",
        "othercontribs": "Bout op et Werk vun $1 op.",
        "others": "ander",
-       "siteusers": "{{PLURAL:$2|däm|de|keine}} {{PLURAL:$2|Metmaacher|Metmaachere|Metmaacher}} $1 aan {{GRAMMAR:Dat|{{SITENAME}}}}",
+       "siteusers": "{{PLURAL:$2|däm Metmaacher|dä Metmaacher|keijnem Metmaacher}} $1 {{GRAMMAR:vum|{{ucfirst:{{SITENAME}}}}}}",
        "anonusers": "{{PLURAL:$2|dä|de|keine}} nameloose Metmaacher $1 vun de translatewiki.net",
        "creditspage": "Övver de Metmaacher un dänne ehr Beijdrähsch för heh di Sigg",
        "nocredits": "För di Sigg ham_mer nix en de Leß.",
        "pageinfo-category-files": "De Aanzahl Dateie",
        "markaspatrolleddiff": "Nohjeluurt. Dun dat fasshallde.",
        "markaspatrolledtext": "De Änderong es nohjeluhrt, don dat faßhallde",
+       "markaspatrolledtext-file": "Makkehr heh di Väsjohn vun dä Dateij als nohjekik.",
        "markedaspatrolled": "Et Kennzeiche „Nohjeluurt“ speichere",
        "markedaspatrolledtext": "Et es jetz fassjehallde, dat de usjewählte Version vun dä Sigg „[[:$1]]“ nohjeluurt sin.",
        "rcpatroldisabled": "Et Nohluure vun de letzte Änderunge es avjeschalt",
        "newimages-legend": "Ußwähle",
        "newimages-label": "Dä Dattei ier Name udder e Stöck dofun:",
        "newimages-showbots": "Zeisch, wat de Bots huhjelaade han.",
+       "newimages-hidepatrolled": "Donn de nohjekik huhjelahde Dateije ußblännde.",
        "noimages": "Kein Dateie jefunge.",
        "ilsubmit": "Söhk",
        "bydate": "nohm Datum",
        "exif-compression-34712": "<i lang=\"en\">JPEG</i>2000",
        "exif-copyrighted-true": "Häd_en Urhävverrääsch",
        "exif-copyrighted-false": "Nix övver et Urhävverrääsch jesaat",
+       "exif-photometricinterpretation-1": "Schwazz un Wiiß (Schwazz es 0)",
        "exif-photometricinterpretation-2": "RJB",
        "exif-photometricinterpretation-6": "<i lang=\"en\">YCbCr</i>",
        "exif-unknowndate": "Dattum onbikannt",
        "confirmemail_body_set": "Künnt johd sin, Do wors et sällver. Vun dä IP-Adräß $1 hät op\njede Fall einer för dä Metmaacher \"$2\" op {{GRAMMAR:Akk bet|{{SITENAME}}}}\nheh di Adräß för däm sing e-mail aanjejovve.\n\nÖm jäz kloh ze kreje, dat di neu Adräß un dä Metmaacher och\nzosamme jehühre, un öm de e-mail op {{GRAMMAR:Akk bet|{{SITENAME}}}}\naanzschallde, moß dä Metmaacher en singem Brauser dä Lengk:\n\n$3\n\nopmaache. Noch för em $6 öm $7 Uhr. Alsu dun dat, wann dat sing\nReeschteschkeijt hät.\n\nWann nit Doh, sönders söns wä Ding Addräß för de e-Mail aanjejovve hät, bruchs\nDe jar nix ze don. Di Adräß weed nit jebruch, wann se nit beschtähtesch es.\nDo kanns ävver och op heh dä Lengk jon:\n\n$5\n\nDomet deiß De tirek vermällde, dat De di Adräß nit beschtähteje wells.",
        "confirmemail_invalidated": "Et Beschtähtejje för di <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i>-Adräß es afjebroche wohde, un di Adräß es '''nit''' beschtähtesch.",
        "invalidateemail": "E-Mail-Adress nit bestätich",
+       "notificationemail_subject_changed": "{{SITENAME}} - De Addräß för de e-mail wood veränndert.",
+       "notificationemail_subject_removed": "{{SITENAME}} - De Addräß för de e-mail wood fott jeschmeße.",
+       "notificationemail_body_changed": "Velleijsch wohß De_t sällver. Eijne hät vun dä <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräß $1 us {{ucfirst:{{GRAMMAR:em|{{ucfirst:{{SITENAME}}}}}}}} de \n<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i>-Adräß {{GENDER:$2|vum|vum|vumm Metmaacher|vun dä|vum}} „$2“ op „<code>$3</code>“ ömjeschtallt.\n\nWann De et nit sällver wohs, saach tirägg enem Verantwootlijje för di Wäbßait bescheijd!",
+       "notificationemail_body_removed": "Velleijsch wohß De_t sällver. Eijne hät vun dä <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräß $1 us {{ucfirst:{{GRAMMAR:em|{{ucfirst:{{SITENAME}}}}}}}} de \n<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i>-Adräß {{GENDER:$2|vum|vum|vumm Metmaacher|vun dä|vum}} „$2“ fott jenumme.\n\nWann De et nit sällver wohs, saach tirägg enem Verantwootlijje för di Wäbßait bescheijd!",
        "scarytranscludedisabled": "[Et Enbinge per Interwiki es avjeschalt]",
        "scarytranscludefailed": "[De Schablohn „$1“ enzebenge hät nit jeflupp]",
        "scarytranscludefailed-httpstatus": "[De Schablohn „$1“ enzebenge hät nit jeflupp. Dä HTTP-Fähler es: $2]",
        "confirm-unwatch-button": "Lohß Jonn!",
        "confirm-unwatch-top": "Sulle mer di Sigg uß Dinger Oppaßleß erußnämme?",
        "confirm-rollback-button": "Lohß Jonn!",
+       "confirm-rollback-top": "Ännderonge aan dä Sigg heh zerök nämme?",
        "semicolon-separator": ";",
        "word-separator": "&#32;",
        "ellipsis": "&nbsp;…",
        "watchlistedit-raw-done": "Ding Oppaßßleß es fassjehallde.",
        "watchlistedit-raw-added": "{{PLURAL:$1|Ein Övverschreffför en Sigge wood|<strong>$1</strong> Övverschreffte för Sigge woodte|Kein Övverschreffte för Sigge}} dobeijedonn:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|Eine Endrach es eruß jefloore:|<strong>$1</strong> Endräsh es eruß jefloore:|Keine Endrach es eruß jefloore.}}",
-       "watchlistedit-clear-title": "Oppaßleß läddesch jemaad",
+       "watchlistedit-clear-title": "Oppaßleß läddesch maache",
        "watchlistedit-clear-legend": "Oppaßleß läddesch maache",
        "watchlistedit-clear-explain": "Alle vun heh dä Siggetettelle fleeje uß dä Oppaßless eruß.",
        "watchlistedit-clear-titles": "Siggetettelle",
        "expand_templates_generate_xml": "Och dä XML-Parser-Boum zeije",
        "expand_templates_generate_rawhtml": "Donn de Röh HTML Ußjaav aanzeije",
        "expand_templates_preview": "Vör-Aansich",
-       "expand_templates_preview_fail_html": "<em>Weil et Wiki rüh <i xml:lang=\"en\" title=\"HyperText Markup Language\" lang=\"en\">HTML</i> zohlöht un de Sezongsdahte verschött jejange sin, dom_mer de {{int:preview}} uß Vörseesch nit aanzeije, öm Aanjreffe övver JavaSkrep zevör ze kumme.</em>\n\n<strong>Wann dat heh en Ohdenong es, bes esu johd un versöhg et norr_ens.</strong>\nwann dat nix hellef, versöhg ens [[Special:UserLogout|ußzelogge]] un neu enzelogge.",
+       "expand_templates_preview_fail_html": "<em>Weil et Wiki rüh <i xml:lang=\"en\" title=\"HyperText Markup Language\" lang=\"en\">HTML</i> zohlöht un de Sezongsdahte verschött jejange sin, dom_mer de {{int:preview}} uß Vörseesch nit aanzeije, öm Aanjreffe övver JavaSkrep zevör ze kumme.</em>\n\n<strong>Wann dat heh en Ohdenong es, bes esu johd un versöhg et norr_ens.</strong>\nwann dat nix hellef, versöhg ens [[Special:UserLogout|ußzelogge]] un neu enzelogge, un donn pröhve dat Dinge Brauser <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„Plätzjer“\">cookies</i> vun heh däm Wikki aannemmp.",
        "expand_templates_preview_fail_html_anon": "<em>Weil et Wiki rüh <i xml:lang=\"en\" title=\"HyperText Markup Language\" lang=\"en\">HTML</i> zohlöht un Do nit ennjelogg bes, dom_mer de {{int:preview}} uß Vörseesch nit aanzeije, öm Aanjreffe övver JavaSkrep zevör ze kumme.</em>\n\n<strong>Wann dat heh en Ohdenong es, bes esu johd un donn [[Special:UserLogin|enlogge]] un versöhg et norr_ens.</strong>",
        "expand_templates_input_missing": "Mer mß winnischsdrens jät Täx ennjävve.",
        "pagelanguage": "De Schprohch för di Sigg faßlääje",
        "log-name-pagelang": "Logbohch vum Tuusche vun Sige iehr Schprohche",
        "log-description-pagelang": "Dat heh es et Logbohch vun de Veränderonge aan de Schprohch vun de Sigge.",
        "logentry-pagelang-pagelang": "{{GENDER:$2|Dä|Dat|Dä Metmaacher|De|Dat}} $1 hät de Schprohch vun dä Sigg „$3“ vun $4 op $5 verändert.",
-       "default-skin-not-found": "De schtandattmähßejje Bedehnbovverfläsch <code>$1</code> för et Wikki es nit ze fenge. Se weed övver dä Enndrahch <code lang=\"en\" xml:lang=\"en\">$wgDefaultSkin</code> en dä Dattei <code lang=\"en\" xml:lang=\"en\">LocalSettings.php</code> om ẞööver faßjelaat.\n\n{{PLURAL:$4|Heh di Bedehnbovverfläsch es|Heh di Bedehnbovverfläsche sin|Kein Bedehnbovverfläsche sin}} doh:\n\n$2\n\nLohr och en et [https://www.mediawiki.org/wiki/Manual:Skin_configuration/de Handbohch övver et Enschtälle vun Bedehnbovverfläsche].\n\n*'''Falls dat heh e fresch enjereesch MehdijaWikki es:'''\n*: MehdijaWikki wood velleisch övver <i lang=\"en\" xml:lang=\"en\">Git</i> enschtallehrt, udder der Quälltäx wood tiräk obb_en ander Manier enschtallehrt. Met däm Problehm heh wohr ze rääschne. Donn winneschßdens eine vun dä Bovverfläsche uss_em [https://www.mediawiki.org/wiki/Category:All_skins Verzeischneß vun de Bedehnbovverfläsche vum MehdijaWikki] enschtallehre. Dat jeihd, endämm dat De:\n*:* einzel veröffentleschte Bovverfläsche us [https://www.mediawiki.org/wiki/Special:SkinDistributor MediaWiki.org] erongerlähds un en et Verzeischneß <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">skins/</code> vun dä MehdijaWikki_Enschtallazuhn holls,\n*:* winneschsdens eins vun dä Verzeischneße us <code lang=\"en\" xml:lang=\"en\">mediawiki/skins/*</code> met <i lang=\"en\" xml:lang=\"en\">Git</i> en et Verzeischneß <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">skins/</code> vun Dinge MehdijaWikki_Enschtallazuhn holls,\n*:* de [https://www.mediawiki.org/wiki/Download Dattei vum MehdijaWikki] erongerlähds, woh ongerscheidlejje Bedehnbovverfläsche dren sin un Zohsäz derzoh. Uß däm Verzeischneß doh dren kam_mer Saache en et Verzeischneß <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">skins/</code> vun dä MehdijaWikki_Enschtallazuhn holle.\n*: Dat sullt sesch nit met Dingem <i lang=\"en\" xml:lang=\"en\">git</i>-Verzeischneß schtühre, falls De och ene Äntweckler vum MehdijaWikki bes.\n*'''Falls dat MehdijaWikki heh jrahd obb ene neue Schtand jebraht wood:'''\n*: Bei MehdijaWikki en dä Väsjohn 1.24 un hüüter wääde de enschtallehrte Bedehnbovverfläsche nit mieh automattesch alle aanjemaat; süsch och em [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Handbohch] dernoh. Do kanns heh di {{PLURAL:$5|Reih|Reihje|kein Reihje}} en de Dattei <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">LocalSettings.php</code> eren koppehre, öm {{PLURAL:$5|di enschtallehrte Bedehnbovverfläsch|alle enschtallehrte Bedehnbovverfläsche|kein Bedehnbovverfläsch}} aanzeschallde:\n<pre lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$3</pre>\n* '''Falls de jrahd aan dä Dattei <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">LocalSettings.php</code> jät geändert häs:'''\n*: Donn de Nahme vun de Bedehnbovverfläsche en dä Dattei pröhve. Se künnte verhehrt jeschrevve sin.",
+       "default-skin-not-found": "De schtandattmähßejje Bedehnbovverfläsch <code>$1</code> för et Wikki es nit ze fenge. Se weed övver dä Enndrahch <code dir=\"ltr\">$wgDefaultSkin</code> en dä Dattei <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">LocalSettings.php</code> om ẞööver faßjelaat.\n\n{{PLURAL:$4|Heh di Bedehnbovverfläsch es|Heh di Bedehnbovverfläsche sin|Kein Bedehnbovverfläsche sin}} doh:\n\n$2\n\nLohr och en et [https://www.mediawiki.org/wiki/Manual:Skin_configuration/de Handbohch övver et Enschtälle vun Bedehnbovverfläsche].\n\n; Falls dat heh e fresch enjereesch MehdijaWikki es:\n: MehdijaWikki wood velleisch övver <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Git</i> enschtallehrt, udder der Quälltäx wood tiräk obb_en ander Manier enschtallehrt. Met däm Problehm heh wohr ze rääschne. Donn winneschßdens eine vun dä Bovverfläsche uss_em [https://www.mediawiki.org/wiki/Category:All_skins Verzeischneß vun de Bedehnbovverfläsche vum MehdijaWikki] enschtallehre. Dat jeihd, endämm dat De:\n:* einzel veröffentleschte Bovverfläsche us [https://www.mediawiki.org/wiki/Special:SkinDistributor MediaWiki.org] erongerlähds un en et Verzeischneß <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">skins/</code> vun dä MehdijaWikki_Enschtallazuhn holls,\n:* winneschsdens eins vun dä Verzeischneße us <code lang=\"en\" xml:lang=\"en\">mediawiki/skins/*</code> met <i lang=\"en\" xml:lang=\"en\">Git</i> en et Verzeischneß <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">skins/</code> vun Dinge MehdijaWikki_Enschtallazuhn holls,\n:* de [https://www.mediawiki.org/wiki/Download Dattei vum MehdijaWikki] erongerlähds, woh ongerscheidlejje Bedehnbovverfläsche dren sin un Zohsäz derzoh. Uß däm Verzeischneß doh dren kam_mer Saache en et Verzeischneß <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">skins/</code> vun dä MehdijaWikki_Enschtallazuhn holle.\n: Dat sullt sesch nit met Dingem <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\">git</i>-Verzeischneß schtühre, falls De och ene Äntweckler vum MehdijaWikki bes.\n\n;Falls dat MehdijaWikki heh jrahd obb ene neue Schtand jebraht wood:\n: Bei MehdijaWikki en dä Väsjohn 1.24 un hüüter wääde de enschtallehrte Bedehnbovverfläsche nit mih automattesch alle aanjemaat; süsch och em [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Handbohch] dernoh. Do kanns heh di {{PLURAL:$5|Reih|Reihje|kein Reihje}} en de Dattei <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">LocalSettings.php</code> eren koppehre, öm {{PLURAL:$5|di enschtallehrte Bedehnbovverfläsch|alle enschtallehrte Bedehnbovverfläsche|kein Bedehnbovverfläsch}} aanzeschallde:\n\n<pre lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$3</pre>\n\n;Falls de jrahd aan dä Dattei <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">LocalSettings.php</code> jät geändert häs:\n: Donn de Nahme vun de Bedehnbovverfläsche en dä Dattei pröhve. Se künnte verhehrt jeschrevve sin.",
        "default-skin-not-found-no-skins": "De schtandattmähßejje Bedehnbovverfläsch <code>$1</code> för et Wikki es nit ze fenge. Se weed övver dä Enndraach <code lang=\"en\" xml:lang=\"en\">$wgDefaultSkin</code> en dä Dattei <code lang=\"en\" xml:lang=\"en\">LocalSettings.php</code> om ẞööver faßjelaat.\n\nEt sinn_er kein Bedehnbovverfläsche doh.\n\n*'''Falls dat heh e fresch enjereesch MehdijaWikki, es udder jrahd obb ene neue Schtand jebraht wood:'''\n*: MehdijaWikki wood velleisch övver <i lang=\"en\" xml:lang=\"en\">Git</i> enschtallehrt, udder der Quälltäx wood tiräk obb_en ander Manier enschtallehrt. Met däm Problehm heh wohr ze rääschne. Bei MehdijaWikki en dä Väsjohn 1.24 un hüüter sin kein Bedehnbovverfläsche mieh automattesch derbei. Donn winneschßdens eine vun dä Bovverfläsche uss_em [https://www.mediawiki.org/wiki/Category:All_skins Verzeischneß vun de Bedehnbovverfläsche] enschtallehre. Dat jeihd, endämm dat De:\n*:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins <i lang=\"en\" xml:lang=\"en\">Git</i> nemms, öm de Bedehnbovverfläsche eronger ze lahde].\n*:* einzel veröffentleschte Bovverfläsche us [https://www.mediawiki.org/wiki/Special:SkinDistributor MediaWiki.org] erongerlähds un en et Verzeischneß <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">skins/</code> vun Dinge MehdijaWikki_Enschtallazuhn holls,\n*:* de [https://www.mediawiki.org/wiki/Download Dattei vum MehdijaWikki] erongerlähds, woh ongerscheidlejje Bedehnbovverfläsche dren sin un Zohsäz derzoh. Uß däm Verzeischneß doh dren kam_mer Saache en et Verzeischneß <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">skins/</code> vun Dinge vun dä MehdijaWikki_Enschtallazuhn holle.\n*: Dat sullt sesch nit met Dingem <i lang=\"en\" xml:lang=\"en\">Git</i>-Verzeischneß schtühre, falls De och ene Äntweckler vum MehdijaWikki bes. Lohr em [https://www.mediawiki.org/wiki/Manual:Skin_configuration Handbohch] dernoh, wi mer Bedehnbovverfläsche aanmääd un ene Schtandatt faßlähsch.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (enjeschalldt)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 (<strong>ußjeschalldt</strong>)",
        "special-characters-group-ipa": "IPA, et engernazjonal foneetesch Alfabeet",
        "special-characters-group-symbols": "Symbole",
        "special-characters-group-greek": "Jriischesch",
+       "special-characters-group-greekextended": "Jrihschesch met Zohsäz",
        "special-characters-group-cyrillic": "Kyrillesch",
        "special-characters-group-arabic": "Arabesch",
        "special-characters-group-arabicextended": "Araabesch met Extras",
        "mw-widgets-dateinput-no-date": "Kein Dattom es ußjewählt",
        "mw-widgets-titleinput-description-new-page": "di Sigg jidd_et noch nit",
        "mw-widgets-titleinput-description-redirect": "ömleijde op „$1“",
+       "sessionprovider-generic": "Sezonge övver $1",
+       "sessionprovider-mediawiki-session-cookiesessionprovider": "<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„Plätzjer“\">cookies</i>",
+       "sessionprovider-nocookies": "<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„Plätzjer“\">Cookies</i> künnte affjeschalld sin. Schtäl sescher, dat se ennjeschalld sin un fang norr_ens aan.",
        "randomrootpage": "Zofällige Aanfangs-Sigg",
+       "log-action-filter-block": "Zoot vun Spärr",
+       "log-action-filter-delete": "Zoot vum Fottschmiiße:",
+       "log-action-filter-import": "Zoot vum Emmpoot:",
+       "log-action-filter-managetags": "Zoot vun Verwalldongsaxjuhn",
+       "log-action-filter-move": "Zoot vum Ömnänne:",
+       "log-action-filter-newusers": "Zoot vum Zohjang aanlähje:",
+       "log-action-filter-patrol": "Zoot vum Nohlohre:",
+       "log-action-filter-protect": "Zoot vum Schoz:",
        "log-action-filter-rights": "De Zoot Ännderong aan de Rääschte:",
        "log-action-filter-suppress": "De Zoot Ongerdrökong:",
+       "log-action-filter-upload": "Zoot vum Huhlahde:",
        "log-action-filter-all": "Alle",
        "log-action-filter-block-block": "Schpärre",
+       "log-action-filter-block-reblock": "Änderung vun ener Schpärr",
        "log-action-filter-block-unblock": "Sperr ophävve",
        "log-action-filter-delete-delete": "En Sigg wohd fott jeschmeße",
+       "log-action-filter-delete-restore": "Sigge-Zerökholle",
+       "log-action-filter-delete-event": "Logbohch-Fottschmiiße",
+       "log-action-filter-delete-revision": "Väsjohn-Fottschmiiße",
+       "log-action-filter-import-interwiki": "Emmpood us enem anndre Wikki",
+       "log-action-filter-import-upload": "Empood uß ene huhjelade <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Extensible Markup Language\">XML</i>-Datteij",
+       "log-action-filter-managetags-create": "Makkehrong aanjelaat",
+       "log-action-filter-managetags-delete": "Makkehrong fottjeschmeße",
+       "log-action-filter-managetags-activate": "Makkehrong aanjeschalldt",
+       "log-action-filter-managetags-deactivate": "Makkehrong affjeschalldt",
+       "log-action-filter-move-move": "Ömjenannt ohne en Ömleijdong ze övverschrihve",
+       "log-action-filter-move-move_redir": "Ömjenannt obb en övverschrihve Ömleijdong",
+       "log-action-filter-newusers-create": "Aanjelaat vun enem Nahmelohse",
+       "log-action-filter-newusers-create2": "Aanjelaat vun enem ennjelogg Metmaacher",
+       "log-action-filter-newusers-autocreate": "Aumattesch-Aanlähje",
+       "log-action-filter-newusers-byemail": "Aanjelaat mem Paßwood pä <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i> jescheck",
+       "log-action-filter-patrol-patrol": "Vun Hand Nohjelohrt",
+       "log-action-filter-patrol-autopatrol": "Automattesch Nohjelohrt",
+       "log-action-filter-protect-protect": "Schoz",
+       "log-action-filter-protect-modify": "Schoz-Ännderong",
+       "log-action-filter-protect-unprotect": "Schoz-Ophävve",
+       "log-action-filter-protect-move_prot": "Schoz jähje et Ömbenänne",
+       "log-action-filter-rights-rights": "Vun Hand veränndert",
+       "log-action-filter-rights-autopromote": "Automattesch veränndert",
+       "log-action-filter-suppress-event": "Logbohch ongerdrök",
+       "log-action-filter-suppress-revision": "Väsjohn ongerdrök",
+       "log-action-filter-suppress-delete": "Sigg ongerdrök",
+       "log-action-filter-suppress-block": "Metmaacher ongerdrök pä Schpärr",
+       "log-action-filter-suppress-reblock": "Metmaacher ongerdrök pä Wider-Schpärr",
+       "log-action-filter-upload-upload": "Neu huhjelahde",
+       "log-action-filter-upload-overwrite": "Neu huhlahde",
+       "authmanager-authn-autocreate-failed": "Automattesch ene Zojang för heh et Wikki hät nit jeflup: $1",
        "authmanager-create-disabled": "Neu Aanmelde es afjeschalldt",
        "authmanager-create-from-login": "Öm Der ene Zohjang aanzelähje, bes esu johd, un föll heh di Fällder us:",
        "authmanager-authplugin-setpass-failed-title": "Dat Paßwoot ze änndere hät nit jeflupp",
+       "authmanager-authplugin-setpass-bad-domain": "Onjöltijje Domäijn",
+       "authmanager-autocreate-noperm": "Automattesch Zohjäng aanzelähje es nit zohjelohße.",
+       "authmanager-autocreate-exception": "Automattesch Zohjäng aanzelähje es wähje verjange Fähler för en Zigg nit zohjelohße.",
        "authmanager-userdoesnotexist": "Ene Metmaacher mem Nahme „$1“ es nit ennjedrahre.",
+       "authmanager-username-help": "Der Metmaacher_Nahme för et Enlloge.",
+       "authmanager-password-help": "Et Paßwootför et Enlogge.",
        "authmanager-domain-help": "De Domäijn för de Zohjangsdaht vun ußerhallef beschtähtech ze krijje.",
        "authmanager-retype-help": "Norr_ens dat Paßwoot zom beschähtejje",
        "authmanager-email-label": "<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i>",
        "authmanager-email-help": "De Addräß för de <i lang=\"en\">e-mail</i>",
        "authmanager-realname-label": "Der „reeschteje“ Nahme",
+       "authmanager-realname-help": "Der ääschte Nahme vun däm Metmaaacher",
        "authmanager-provider-temporarypassword": "Zweschepasswood:",
+       "authprovider-confirmlink-request-label": "De Zohjäng, di verlengk wähde sulle",
+       "authprovider-confirmlink-success-line": "$1 es jäz verbonge.",
        "authprovider-confirmlink-failed": "Et Zohjang-Verlengke hät nit kumplätt jeflupp: $1",
+       "authprovider-confirmlink-ok-help": "Maach wigger nohdämm Fählernohreeschte övver et verbenge ußjejovve woode sin.",
        "authprovider-resetpass-skip-label": "Övverjonn",
+       "authprovider-resetpass-skip-help": "Övverjangk et Paßwood zerök ze säzze.",
+       "authform-nosession-login": "Et Ennlogge hät jeflupp, ävver Dinge Brauser kunnt sesch nit draan „äntsenne“, enjelogg ze sin.\n\n$1",
+       "authform-nosession-signup": "Dä Zohjang es ennjereescht, ävver Dinge Brauser kunnt sesch nit draan „äntsenne“, enjelogg ze sin.\n\n$1",
        "authform-newtoken": "Keij CSRF Makkehrong:FUZZY!!$1",
        "authform-notoken": "Keij CSRF Makkehrong!FUZZY!!",
        "specialpage-securitylevel-not-allowed-title": "Nit zohjelohße",
+       "authpage-cannot-login": "Mer künne et Ennlogge nit bejenne.",
+       "authpage-cannot-login-continue": "Mer kunnte mem Ennlogge nit wigger maache. Ding Sezong weed ußjeloufe sinn.",
+       "authpage-cannot-create": "Mer künne et Aanlähje vun enem Zohjang nit bejenne.",
+       "authpage-cannot-create-continue": "Mer kunnte mem Aanlähje vun däm Zohjang nit wigger maache. Ding Sezong weed ußjeloufe sinn.",
+       "authpage-cannot-link": "Mer künne mem Zohjang Verbenge nit bejenne.",
+       "authpage-cannot-link-continue": "Mer kunnte mem Zohjang Verbenge nit wigger maache. Ding Sezong weed ußjeloufe sinn.",
        "cannotauth-not-allowed-title": "Zohjang verbodde.",
        "cannotauth-not-allowed": "Do häs nit dat Rääsch, he di Sigg ze bruche.",
        "changecredentials-submit": "Ändere",
-       "removecredentials-submit": "Fott nämme"
+       "removecredentials-submit": "Fott nämme",
+       "credentialsform-account": "Der Nahme för der Zohjang:",
+       "cannotlink-no-provider-title": "Mer han kein zweij Zohjäng, di mer verbenge künnt.",
+       "cannotlink-no-provider": "Mer han kein zweij Zohjäng, di mer verbenge künnt.",
+       "linkaccounts": "Zohjäng verbenge",
+       "linkaccounts-success-text": "Der Zohjang es jäz verbonge.",
+       "linkaccounts-submit": "Lohß jonn!",
+       "unlinkaccounts": "Zohjäng tränne",
+       "unlinkaccounts-success": "De Zohjäng sin jäz jetrännt."
 }
index 1b1e725..ef6e3ba 100644 (file)
        "userlogin-resetpassword-link": "Hutt Dir Äert Passwuert vergiess?",
        "userlogin-helplink2": "Hëllef beim Aloggen",
        "userlogin-loggedin": "Dir sidd schonn als {{GENDER:$1|$1}} ageloggt.\nBenotzt de Formulaire hei drënner fir Iech als een anere Benotzer anzeloggen.",
+       "userlogin-reauth": "Dir musst Iech nach emol aloggen fir z'iwwerpréiwen datt Dir {{GENDER:$1|$1}} sidd.",
        "userlogin-createanother": "Maacht een anere Benotzerkont op",
        "createacct-emailrequired": "E-Mail-Adress",
        "createacct-emailoptional": "E-Mailadress (fakultativ)",
        "createacct-email-ph": "Gitt Är E-Mail-Adress an",
        "createacct-another-email-ph": "E-Mailadress aginn",
        "createaccountmail": "En temporäert zoufällegt Passwuert benotzen an et per E-Mail un déi spezifizéiert E-Mailadress schécken",
+       "createaccountmail-help": "Ka benotzt gi fir e Benotzerkont fir eng aner Persoun unzeleeën ouni d'Passwuert gewuer ze ginn.",
        "createacct-realname": "Richtegen Numm (fakultativ)",
        "createaccountreason": "Grond:",
        "createacct-reason": "Grond",
        "upload-too-many-redirects": "Et waren zevill Viruleedungen fir d'URL do",
        "upload-http-error": "Et ass en HTTP-Feeler geschitt: $1",
        "upload-copy-upload-invalid-domain": "Vun dësem Domain ass d'Eropluede vu Kopien net méiglech.",
+       "upload-foreign-cant-upload": "Dës Wiki ass net agestallt fir Fichieren an den ugefrote frieme Repertoire fir Fichieren eropzelueden.",
        "upload-dialog-disabled": "D'Eropluede vu Fichieren mat dësem Dialog ass op dëser Wiki desaktivéiert.",
        "upload-dialog-title": "Fichier eroplueden",
        "upload-dialog-button-cancel": "Ofbriechen",
        "listgrouprights-namespaceprotection-header": "Limitatioune vum Nummraum",
        "listgrouprights-namespaceprotection-namespace": "Nummraum",
        "listgrouprights-namespaceprotection-restrictedto": "Recht(er), déi dem Benotzer d'Änneren erlaben",
+       "listgrants": "Autorisatiounen",
+       "listgrants-grant": "Autorisatioun",
        "listgrants-rights": "Rechter",
        "trackingcategories": "Tracking-Kategorien",
        "trackingcategories-msg": "Tracking-Kategorie",
        "log-action-filter-patrol-autopatrol": "Automatesch Kontroll",
        "log-action-filter-protect-protect": "Spär",
        "log-action-filter-protect-modify": "Spär-pÄnnerung",
+       "log-action-filter-protect-unprotect": "Spär ophiewen",
        "log-action-filter-protect-move_prot": "Geréckelt Spär",
        "log-action-filter-rights-rights": "Manuell Ännerung",
        "log-action-filter-rights-autopromote": "Automatesch Ännerung",
index bdb0a1d..e22617c 100644 (file)
@@ -37,7 +37,7 @@
        "tog-previewonfirst": "Veddi l'anteprimma a-o primmo cangiamento",
        "tog-enotifwatchlistpages": "Famme savéi via e-mail quande 'na paggina o in file inti mæ osservæ a ven cangiâ.",
        "tog-enotifusertalkpages": "Màndime un'e-mail se gh'é de modìffiche inta mæ pagina de discuscion.",
-       "tog-enotifminoredits": "Inviami una email pe e modifiche menoî ascì de pagine e di file",
+       "tog-enotifminoredits": "Mandime una email ascì pe e modifiche menoî de pagine e di file",
        "tog-enotifrevealaddr": "Mostra o mæ addresso inte e-mail de notiffica",
        "tog-shownumberswatching": "Mostra o numero di utenti che tegnan d'oeuggio sta pagina",
        "tog-oldsig": "Firma attuale:",
@@ -67,8 +67,8 @@
        "editfont-sansserif": "Carattere sans-serif",
        "editfont-serif": "Carattere serif",
        "sunday": "Domenega",
-       "monday": "Lunedì",
-       "tuesday": "Martedì",
+       "monday": "Lunesdì",
+       "tuesday": "Matesdì",
        "wednesday": "Mäcordì",
        "thursday": "Zeuggia",
        "friday": "Venardì",
        "talkpage": "Paggina de discuscion",
        "talkpagelinktext": "Ciæti",
        "specialpage": "Pagina speçiâ",
-       "personaltools": "Strùmenti personâli",
+       "personaltools": "Strumenti personâli",
        "articlepage": "Veddi a voxe",
        "talk": "Discuscion",
        "views": "Vìxite",
        "cannotloginnow-text": "Quande s'adoeuvia $1 no se poeu intrâ.",
        "yourdomainname": "Indirisso do scito:",
        "password-change-forbidden": "No ti peu cangiâ poula segretta in questa wiki.",
-       "externaldberror": "Gh'è stæto un aro co-ol server de autenticaçion esterno, oppû no ti g'hæ i aotorizzaçioin pe aggiornâ o to accesso esterno.",
+       "externaldberror": "Gh'è stæto un aro co-o server de aotenticaçion esterno, oppû no ti g'hæ i aotorizzaçioin pe aggiornâ o to accesso esterno.",
        "login": "Intra",
        "login-security": "Veifica a to identitæ",
        "nav-login-createaccount": "Intra / Registrate",
        "nouserspecified": "Ti g'hæ da specificâ un nomme utente.",
        "login-userblocked": "St'utente o l'è bloccou. Accesso negou.",
        "wrongpassword": "Ti gh'æ scrîo 'na paròlla d'ordine sbaliâ. Tenta torna.",
-       "wrongpasswordempty": "No ti g'hæ scrîo nisciûnn-a paròlla d'ordine. Tenta torna.",
+       "wrongpasswordempty": "No ti g'hæ scrîto nisciûnn-a paròlla d'ordine. Ritenta.",
        "passwordtooshort": "E password devan aveighe aomanco {{PLURAL:$1|1 carattere|$1 caratteri}}.",
        "passwordtoolong": "A poula segretta a no peu contegnî ciù de {{PLURAL:$1|1 carattere|$1 caratteri}}.",
        "passwordtoopopular": "No se peu deuviâ de paole segrette troppo ordenaie. Pe piaxei çernitene un-a ciu particolâ.",
        "passwordremindertext": "Quarchedûn (probabilmente ti, con addresso IP $1) o l'ha domandòu l'invîo de 'na nêuva poula segretta pe l'accesso a {{SITENAME}} ($4).\nA poula segretta temporannia pe l'utente \"$2\" a l'è stæta impostâ a \"$3\".\nSe l'è questo che ti voeivi, intra òua e cangia subbito a poula segretta. A poula segretta temporannia a descazziâ doppo {{PLURAL:$5|un giorno|$5 giorni}}.\n\nSe no t'ê stæto ti a fâ 'sta recesta, oppûre se ti t'ê aregordòu da teu poula segretta e no ti veu ciu cangiâla , ti peu ignorâ sto messaggio e andâ avanti deuviando a vegia poula segretta.",
        "noemail": "No gh'è nisciûn indirisso e-mail registròu pe l'ûtente \"$1\".",
        "noemailcreate": "Ti devi dâ un addresso e-mail vallido.",
-       "passwordsent": "Ûnn-a nêuva paròlla d'ordine a l'è stæta inviâa a l'indirisso e-mail registròu pe l'ûtente \"$1\".\nPe piaxei, fa 'n accesso appenn-a ti a ghe reçeivi.",
+       "passwordsent": "Ûnn-a nêuva paròlla d'ordine a l'è stæta inviâ a l'indirisso e-mail registròu pe l'ûtente \"$1\".\nPe piaxei, fa 'n accesso appenn-a ti a riçeivi.",
        "blocked-mailpassword": "O teu addresso IP o l'è bloccòu a-e modiffiche, pe prevegnî di abuxi non se peu doeuviâ a fonçion de recuppero da pòula segretta da queseto addresso IP.",
        "eauthentsent": "Un messaggio e-mail de conferma o l'è stæto inviòu a l'addresso indicòu.\nPe abilitâ l'invîo de messaggi e-mail pe quest'utensa, se deve seguî e instrussioin indicæ, pe confermâ che ti t'ê o legittimo propietâio de l'utensa.",
        "throttled-mailpassword": "Un'e-mail de reimpostassione da poula segretta a l'è zà stæta inviâ da meno de {{PLURAL:$1|1 oa|$1 oe}}.\nPe prevegnî di abuxi, a fonsion de reimpostassion da poula segretta a peu vese deuviâ solo che 'na votta ogni {{PLURAL:$1|oa|$1 oe}}.",
        "blockedtext": "''''O to nomme utente ò adresso IP o l'è stæto bloccòu.'''\n\nO blòcco o l'è stæto fæto da $1. A raxon dæta a l'è ''$2''.\n\n* Iniçio do blocco: $8\n* Fin do blocco: $6\n* Utente blocou: $7\n\nL'è poscibbile contattâ $1 o un âtro [[{{MediaWiki:Grouppage-sysop}}|amministratô]] pe discûtte inscio blòcco.\nNo ti poeu doeuviâ o comando \"Manda un'e-mail a st'ûtente\" se no ti g'hæ 'n adresso e-mail registròu inte to [[Special:Preferences|preferençe]] e se no t'ê stæto bloccòu ascì.\nO to adresso IP o l'è $3, e o to blòcco ID o l'è #$5.\nPe piaxei, pe domandâ informaçioin, speçifficali tutti doî.",
        "autoblockedtext": "O teu addresso IP o l'è stæto bloccòu outomaticamente perché o l'ea za usòu da 'n âtro utente, bloccòu da $1.\nA raxon dæta a l'è stæta:\n\n:''$2''\n\n* Prinsippio do blòcco: $8\n* Fin do blòcco: $6\n\nTi peu contattâ $1 ò un âtro\n[[{{MediaWiki:Grouppage-sysop}}|amministratô]] pe discutte o blòcco.\n\nDanni a mente a che no ti pêu ûsâ o comando \"manda 'na e-mail a sto utente\" se non ti g'hæ 'n addresso de posta elettronega registròu in te têu [[Special:Preferences|preferense]] e se ti no t'ê stæto bloccòu ascì.\n\nO to adresso IP o l'è $3, e o to blòcco ID o l'è #$5. Pe piaxei, pe domandâ informaçioin, speçifficali tutti doî.",
        "blockednoreason": "nisciun-a motivaçion dæta",
-       "whitelistedittext": "Pe cangia sta pagina devvi $1.",
+       "whitelistedittext": "Pe modificâ e paggine l'è necessaio $1.",
        "confirmedittext": "Pe ese abilitæ a-a modiffica de paggine bezeugna confermâ o proppio addresso e-mail. Pe impostâ e confermâ l'adresso servîse de [[Special:Preferences|preferençe]].",
        "nosuchsectiontitle": "Imposcibbile trovâ a seçion",
        "nosuchsectiontext": "T'hæ çercòu de modificâ una seçion inexistente.\nA porriæ ese stæta mesciâ ò eliminâ mentre ti t'amiavi a paggina.",
        "loginreqtitle": "Besêugna registrâse primma de modificâ 'sta paggina.",
-       "loginreqlink": "intra",
+       "loginreqlink": "intrâ",
        "loginreqpagetext": "Pe amiâ di atre paggine gh'è da $1",
        "accmailtitle": "Pòula segretta spedïa",
        "accmailtext": "Una poula segretta generâ abrettio pe [[User talk:$1|$1]] a l'è stæta mandâ a $2.\n\nSta poula segretta a peu ese cangiâ inta paggina pe ''[[Special:ChangePassword|cangiâ a poula segretta]]'' subbito doppo l'accesso.",
        "userpage-userdoesnotexist": "L'utensa \"$1\" a no corisponde a un utente registròu.\nTi veu davei creâ o modificâ sta paggina?",
        "userpage-userdoesnotexist-view": "L'utensa \"$1\" a no l'è registrâ.",
        "blocked-notice-logextract": "St'utente o l'è attualmente bloccòu.\nL'urtimo elemento into registro di blocchi o l'è riportòu chì appreuvo pe informassion:",
-       "clearyourcache": "<strong>Notta:</strong> doppo avei sarvou, poriæ ese necessaio nettezâ a cache do proppio navegatô pe vedde i cangiamenti. \n*<strong>Firefox / Safari:</strong> tegnî sciacou o tasto de maiuscole <em>Shift</em> e cliccâ <em>Riecarrega</em>, oppû premme <em>Ctrl-F5</em> ò <em>Ctrl-R</em> (<em>⌘-R</em> insce Mac)\n*<strong>Google Chrome:</strong> premme <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> insce un Mac)\n*<strong>Internet Explorer:</strong> tegnî sciacou o tasto <em>Ctrl</em> e cliccâ <em>Aggiorna</em>, oppû premme <em>Ctrl-F5</em>\n*<strong>Opera:</strong> svuâ completamente a cache da-o menu <em>Strumenti → Preferençe</em>",
+       "clearyourcache": "<strong>Notta:</strong> doppo avei salrvou, poriæ ese necessaio netezâ a cache do proppio browser pe vedde i cangiamenti. \n*<strong>Firefox / Safari:</strong> tegni sciacou o tasto de maiuscole <em>Shift</em> e clicca <em>Recarega</em>, oppû sciacca <em>Ctrl-F5</em> ò <em>Ctrl-R</em> (<em>⌘-R</em> su Mac)\n*<strong>Google Chrome:</strong> sciacca <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> insce un Mac)\n*<strong>Internet Explorer:</strong> tegni sciacou o tasto <em>Ctrl</em> e clicca <em>Aggiorna</em>, oppû sciacca <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Vanni into <em>Menu → Impostaçioin</em> (<em>Opera → Preferençe</em> insce 'n Mac) e dapoeu inte <em>Privacy & segueçça → Nettezza dæti do browser → Inmaggine e file inta cache</em>.",
        "usercssyoucanpreview": "'''Suggerimento:''' adeuvia o pomello 'Amia l'anteprimma' per provâ o to neuvo CSS primma de sarvâlo.",
        "userjsyoucanpreview": "'''Suggerimento:''' adeuvia o pomello 'Amia l'anteprimma' per provâ o to neuvo JavaScript primma de sarvâlo.",
        "usercsspreview": "'''Questa a l'è solo un'anteprimma do proppio CSS personâ. E modiffiche no son ancon stæte sarvæ!'''",
        "previewnote": "'''Questa chì a l'è solo 'n'anteprimma; i cangiamenti no son ancon stæti sarvæ!'''",
        "continue-editing": "Vanni a l'area de modiffica",
        "previewconflict": "L'anteprimma a mostra o scrito presente inta casella de modiffica de d'ato coscì comme o l'apaiâ se ti çerni de sarvalo òua.",
-       "session_fail_preview": "Spiaxenti. No Ã¨ støto poscibile elaboâ a modifica perché son andæti persci i dæti relativi a-a sescion.\n\nFoscia t'ê stæto disconnesso. <strong>Verifica d'ese ancon collegou e riproeuva</strong>.\nSe o problema o persciste, ti poeu provâ a [[Special:UserLogout|scollegate]] e effettuâ un nuoeuvo accesso, controllando che o to browser o l'açette i cookie da questo scito.",
+       "session_fail_preview": "Spiaxenti. No Ã¨ stæto poscibile elaboâ a modifica perché son andæti persci i dæti relativi a-a sescion.\n\nFoscia t'ê stæto disconnesso. <strong>Verifica d'ese ancon collegou e riproeuva</strong>.\nSe o problema o persciste, ti poeu provâ a [[Special:UserLogout|scollegate]] e effettuâ un nuoeuvo accesso, controllando che o to browser o l'açette i cookie da questo scito.",
        "session_fail_preview_html": "Spiaxenti. No è stæto poscibbile elaboâ a modifica perché son anæti persci i dæti relativi a-a sescion.\n\n<em>Scicomme {{SITENAME}} o g'ha de l'HTML sgroeuzzo attivou e gh'è stæto una perdia di dæti da sescion, l'anteprimma a l'è ascosa comme precaoçion contra i attacchi JavaScript.</em>\n\n<strong>Se se tratta de un normale tentativo d'anteprimma, riproeuva.</strong> \nSe o problema o persciste, ti poeu provâ a [[Special:UserLogout|scollegati]] e effettuâ un noeuvo accesso, controllando che o to browser o l'açette i cookie da questo scito.",
        "token_suffix_mismatch": "'''A modiffica a no l'è stæta sarvâ perché o to client o l'ha mostrou de gestî in moddo errou i carattei de puntezatua into token associou a-a mæxima. Pe evitâ una poscibile corruçion do testo da pagina, l'è stæto refuou l'intrega modiffica. Questa scituaçion a poeu veificase, de votte, quande s'adoeuvia di serviççi de proxy anonnimi via web che presentan di bug.'''",
        "edit_form_incomplete": "'''De parte do formulaio de modiffica n'han razonto o server; controlla che e modiffiche seggian intatte e ripreuva.'''",
        "duplicate-args-warning": "<strong>Avvertensa:</strong> [[:$1]] o ciamma [[:$2]] con ciù de un valô pe-o parammetro \"$3\".  Solo l'urtimo valô fornio o saiâ deuviou.",
        "duplicate-args-category": "Paggine che ciamman i template deuviando di parammetri duplicæ",
        "duplicate-args-category-desc": "A paggina a conten de ciamæ a di template ch'adeuvian di argomenti duplicæ, comme presempio <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> ò <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
-       "expensive-parserfunction-warning": "'''Attençion:''' Questa paggina a conten troppe ciamæ a-e fonçioin de parser .\n\nA doviæ aveighene meno de $2, a-o momento ghe n'è $1.",
+       "expensive-parserfunction-warning": "'''Attençion:''' Questa paggina a conten troppe ciamæ a-e fonçioin de parser .\n\nA doviæ aveighene meno de $2, a-o momento ghe {{PLURAL:$1|n'è $1}}.",
        "expensive-parserfunction-category": "Paggine con troppe ciamæ a-e fonçioin de parser .",
        "post-expand-template-inclusion-warning": "'''Atento:''' a dimensción di template che t'æ misso a l'é tròppo grande.\nQuarchedun di teu template o no saiâ incluzo.",
        "post-expand-template-inclusion-category": "Pàgine con di template che gh'àn a dimensción ciù âta do limite mascimo",
        "revdelete-show-file-confirm": "T'ê seguo de voei amiâ a verscion scassâ do file \"<nowiki>$1</nowiki>\" do $2 a $3?",
        "revdelete-show-file-submit": "Sci",
        "revdelete-selected-text": "{{PLURAL:$1|Verscion seleçionâ|Verscioin seleçionæ}} de [[:$2]]:",
-       "revdelete-selected-file": "{{PLURAL:$1|Verscion seleçionata|Verscioin seleçionæ}} do file [[:$2]]:",
+       "revdelete-selected-file": "{{PLURAL:$1|Verscion seleçionâ|Verscioin seleçionæ}} do file [[:$2]]:",
        "logdelete-selected": "{{PLURAL:$1|Evento do registro seleçionou|Eventi do registro seleçionou}}:",
        "revdelete-text-text": "E verscioin scassæ apparian ancon inta cronologia da pagina, ma parte do so contegnuo o saiâ inaccescibile a-o pubbrico.",
        "revdelete-text-file": "E verscioin di file scassæ apparian ancon inta cronologia do file, ma parte do so contegnuo a saiâ inaccescibile a-o pubbrico.",
        "diff-multi-otherusers": "({{PLURAL:$1|Una verscion intermedia|$1 De verscioin intermedie}} de {{PLURAL:$2|'n atro utente|$2 utenti}} {{PLURAL:$1|a no l'è mostrâ|no son mostræ}})",
        "diff-multi-manyusers": "({{PLURAL:$1|Una verscion intermedia|$1 verscioin intermedie}} de ciu che $2 {{PLURAL:$2|utente|utenti}} non {{PLURAL:$1|mostrâ|mostræ}})",
        "difference-missing-revision": "{{PLURAL:$2|Una verscion|$2 verscioin}} de questa differença ($1) {{PLURAL:$2|a no l'è stæta atrovâ|no son stæte atrovæ}}.\n\nQuesto succede a l'uso se inta stoia ti sciacchi un vegio ingancio a una paggina scassâ.\n\nI dettaggi ti-i peu attrovâ into [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de scançellaçioin].",
-       "searchresults": "Resultati da reçerca",
-       "searchresults-title": "Rezoltati da riçerca de \"$1\"",
+       "searchresults": "Risultæ da riçerca",
+       "searchresults-title": "Risultæ da riçerca de \"$1\"",
        "titlematches": "Corispondençe into tittolo de paggine",
        "textmatches": "Corispondençe into scrito de paggine",
        "notextmatches": "Nisciun-a corispondença into scrito de paggine",
        "prev-page": "paggina precedente",
        "next-page": "paggina succesciva",
        "prevn-title": "{{PLURAL:$1|rezoltato precedénte|rezoltati precedénti}}",
-       "nextn-title": "Pròscimo $1 {{PLURAL:$1|rezoltato|rezoltati}}",
+       "nextn-title": "{{PLURAL:$1|Risultou succescivo|$1 risultæ succescivi}}",
        "shown-title": "Fanni védde {{PLURAL:$1|in rizoltato|$1 rizoltati}} pe pàgina",
        "viewprevnext": "Veddi ($1 {{int:pipe-separator}} $2) ($3).",
        "searchmenu-exists": "'''Inte questa wiki gh'è za 'na pàgina co-o nómme \"[[:$1]]\"'''",
        "searchmenu-new": "<strong>Crea a paggina \"[[:$1]]\" insce questo wiki!</strong> {{PLURAL:$2|0=|Amia ascì a paggina trovâ co-a teu riçerca|Amia ascì i risultæ da riçerca}}",
-       "searchprofile-articles": "Pàgina di contegnûi",
+       "searchprofile-articles": "Pàgina de contegnûi",
        "searchprofile-images": "Moltimedia",
        "searchprofile-everything": "Tùtto",
        "searchprofile-advanced": "Avansæ",
        "timezoneregion-europe": "Euiropa",
        "timezoneregion-indian": "Oçeano Indian",
        "timezoneregion-pacific": "Oçeano Paxiffego",
-       "allowemail": "Permitti a posta elettronega da ätri utenti",
+       "allowemail": "Permetti a posta elettronega da di ätri utenti",
        "prefs-searchoptions": "Çerca",
        "prefs-namespaces": "Namespace:",
        "default": "Predefinïo",
        "enhancedrc-history": "cronologia",
        "recentchanges": "Ùrtimi cangiamenti",
        "recentchanges-legend": "Opçioin di ùrtimi cangiaménti",
-       "recentchanges-summary": "Questa pàgina a g'ha di càngi ciù reçenti a-i contegnûi do scîto.",
+       "recentchanges-summary": "Questa pagina a te mostra i cangiamenti ciu reçenti a-i contegnui do scito.",
        "recentchanges-noresult": "Nisciun-a modiffica durante o periodo inseio ch'a soddisfe sti critei.",
-       "recentchanges-feed-description": "Questo feed o g'ha di cangiaménti ciù reçenti a-i contegnûi do scîto.",
+       "recentchanges-feed-description": "Questo feed o te mostra i cangiamenti ciu reçenti a-i contegnui do scito.",
        "recentchanges-label-newpage": "Sto cangiaménto o l'à creòu 'na pàgina nêuva",
        "recentchanges-label-minor": "Cangiamento minô (m)",
        "recentchanges-label-bot": "Sto cangiaménto o l'à fæto in bot",
        "recentchanges-submit": "Fanni vedde",
        "rcnotefrom": "Chì sotta gh'è {{PLURAL:$5|o cangiamento|i cangiamenti}} a partî da <strong>$3, $4</strong> (scin a '''$1''').",
        "rclistfrom": "Fanni vedde e modiffiche apportæ partindo da $3 $2",
-       "rcshowhideminor": "$1 cangiaménti minoi",
+       "rcshowhideminor": "$1 cangiaménti minoî",
        "rcshowhideminor-show": "Fanni vedde",
        "rcshowhideminor-hide": "Ascondi",
        "rcshowhidebots": "$1 bot",
        "reuploaddesc": "Torna a-o moddulo pe-o caregamento.",
        "upload-tryagain": "Invia a descrission do file modificou",
        "uploadnologin": "No t'ê introu",
-       "uploadnologintext": "Pe caregaâ  di file bezoeugna $1.",
+       "uploadnologintext": "Pe caregâ  di file bezoeugna $1.",
        "upload_directory_missing": "A directory de upload ($1) a no l'existe e a no poeu ese creâ da-o server web.",
        "upload_directory_read_only": "O server web o no l'è in graddo de scrive inta directory de upload ($1).",
        "uploaderror": "Errô into caregamento",
        "upload-http-error": "S'è verificou un errô HTTP: $1",
        "upload-copy-upload-invalid-domain": "No l'è consentio o caregamento de coppie da questo dominnio.",
        "upload-foreign-cant-upload": "Questo wiki o no l'è configuou pe caregâ i file into repository de file esterno domandou.",
+       "upload-foreign-cant-load-config": "Imposcibbile caregâ a configuaçion pe-i upload de file inti file repository esterni.",
        "upload-dialog-disabled": "O caregamento di file tramite questo barcon de dialogo o l'è disabilitou inte questo wiki.",
        "upload-dialog-title": "Carrega file",
        "upload-dialog-button-cancel": "Anulla",
        "listfiles_search_for": "Çerca pe nomme de l'imàgine:",
        "listfiles-userdoesnotexist": "L'utença \"$1\" a no l'è registrâ.",
        "imgfile": "file",
-       "listfiles": "Lista d'archivvi",
+       "listfiles": "Lista di file",
        "listfiles_thumb": "Miniatua",
        "listfiles_date": "Dæta",
        "listfiles_name": "Nomme",
        "filehist-nothumb": "Nisciun-a miniatua",
        "filehist-user": "Utente",
        "filehist-dimensions": "Dimenscioin",
-       "filehist-filesize": "Dimension de l'archivvio",
+       "filehist-filesize": "Dimenscion do file",
        "filehist-comment": "Coménti",
        "imagelinks": "Ûzo do file",
        "linkstoimage": "{{PLURAL:$1|A segoente pàgina a contegne|E segoenti $1 pàgine contegnan}} colegaménti a-o file:",
        "listduplicatedfiles": "Lista di file doggi",
        "listduplicatedfiles-summary": "Questo o l'è un elenco di file, donde a verscion ciù reçente de 'n file a l'è un dupricou da verscion ciù reçente de 'n atro file. Se piggia in  conscideraçion solo che i file locali.",
        "listduplicatedfiles-entry": "[[:File:$1|$1]] o g'ha [[$3|{{PLURAL:$2|un duplicou|$2 duplicæ}}]].",
-       "unusedtemplates": "Template no ûtilissæ",
+       "unusedtemplates": "Template no ûtilizæ",
        "unusedtemplatestext": "Inte sta pagina l'è elencou e pagine do namespace {{ns:template}} che no son incluse inte nisciun-a pagina. Primma de scassâle l'è öportun veificâ che i scingoli template no g'aggian di atri collegamenti intranti.",
        "unusedtemplateswlh": "atri collegamenti",
        "randompage": "Pagina a brettìo",
        "randomincategory-category": "Categoria:",
        "randomincategory-legend": "Pagina a brettio inta categoria",
        "randomincategory-submit": "Vanni",
-       "randomredirect": "Ûn rindirissamento a brettîo",
+       "randomredirect": "Ûn rindirissamento a brettio",
        "randomredirect-nopages": "Into namespace \"$1\" redirect no ghe n'è.",
        "statistics": "Statistiche",
        "statistics-header-pages": "Statistiche de pagine",
        "brokenredirects-edit": "cangia",
        "brokenredirects-delete": "scassa",
        "withoutinterwiki": "Paggine sensa interwiki",
-       "withoutinterwiki-summary": "'Ste paggine chì inzû no g'han nisciûn collegamento co-e verscioîn in âtre lengoe:",
+       "withoutinterwiki-summary": "E paggine chì de sotta no g'han nisciûn collegamento a-e verscioin in âtre lengoe:",
        "withoutinterwiki-legend": "Prefisso",
        "withoutinterwiki-submit": "Mostra",
-       "fewestrevisions": "Voxi con meno revixoîn",
+       "fewestrevisions": "Pagine con meno revixoin",
        "nbytes": "$1 {{PLURAL:$1|byte|byte}}",
        "ncategories": "$1 {{PLURAL:$1|categoria|categorie}}",
        "ninterwikis": "$1 {{PLURAL:$1|interwiki}}",
        "uncategorizedcategories": "Categorîe sensa categorîa",
        "uncategorizedimages": "Immaggini sensa categorîa",
        "uncategorizedtemplates": "Template sensa categorîa",
-       "unusedcategories": "Categorîe no ûtilissæ",
-       "unusedimages": "Archivvi no ûtilissæ",
+       "unusedcategories": "Categorie voeue",
+       "unusedimages": "File inutilizæ",
        "wantedcategories": "Categorîe domandæ",
        "wantedpages": "Paggine domandæ",
        "wantedpages-summary": "Lista de paggine inexistente co-o ciu gran nummero de collegamenti a lô, escludendo e pagine ch'han solo che i rendiriççi che-e collegan. Pe 'n elenco de pagine inexistente che g'han di rendriççi che-e collegan, amia [[{{#special:BrokenRedirects}}|a lista di rendriççi erræ]].",
        "mostlinked": "Paggine ciû collegæ",
        "mostlinkedcategories": "Categorîe ciû collegæ",
        "mostlinkedtemplates": "Paggine ciu incluse",
-       "mostcategories": "Voxi con ciû categorîe",
+       "mostcategories": "Voxe con ciû categorîe",
        "mostimages": "Immaggini con ciû collegamenti",
        "mostinterwikis": "Paggine con ciu interwiki",
-       "mostrevisions": "Voxi con ciû revixoîn",
+       "mostrevisions": "Voxe con ciû revixoin",
        "prefixindex": "Indiçe arfabetico de voxe",
        "prefixindex-namespace": "Tutte e paggine co-o prefisso do namespace $1",
        "prefixindex-submit": "Mostra",
        "defemailsubject": "Messaggio da {{SITENAME}} da l'utente \"$1\"",
        "usermaildisabled": "e-mail utente disabilitâ",
        "usermaildisabledtext": "No l'è poscibbile inviâ de e-mail a di atri utenti insce questo wiki",
-       "noemailtitle": "Nisciûn conto e-mail",
+       "noemailtitle": "Nisciun adreççoo e-mail",
        "noemailtext": "Questo utente o no l'ha indicou un adreçço e-mail vallido.",
        "nowikiemailtext": "Questo utente o l'ha scerto de no riçeive messaggi de posta elettronica da-i atri utenti.",
        "emailnotarget": "Nomme utente do destinataio inexistente o non vallido.",
        "emailccme": "Mandame unn-a copia do messagio co unn-a lettìa elettronega.",
        "emailccsubject": "Coppia do messaggio inviou a $1: $2",
        "emailsent": "Lettìa elettronega spèdïa",
-       "emailsenttext": "A teua lettìa elettronega a l'è stæta spèdïa.",
+       "emailsenttext": "A teu lettìa elettronega a l'è stæta spedïa.",
        "emailuserfooter": "Questa email a l'è stæta {{GENDER:$1|inviâ}} da $1 a {{GENDER:$2|$2}} a traverso a fonçion \"{{int:emailuser}}\" insce {{SITENAME}}.",
        "usermessage-summary": "Messaggio de scistema",
        "usermessage-editor": "Messaggê de scistema",
        "watchlistfor2": "Pe $1 $2",
        "nowatchlist": "A lista di öservæ speciali a l'è voeua.",
        "watchlistanontext": "Pe vixualizzâ e modificâ l'elenco di öservæ l'è necessaio eseguî l'accesso.",
-       "watchnologin": "Non ti t'æ entroö",
+       "watchnologin": "Accesso non effettuou",
        "addwatch": "Azonzi a-a lista sotta öservaçion",
        "addedwatchtext": "\"[[:$1]]\" e a so paggina de discuscion son stæte azonte a-a proppia [[Special:Watchlist|lista di öservæ]].",
        "addedwatchtext-short": "A pagina \"$1\" a l'è stæata azonta a-a proppia lista di öservæ.",
        "reblock-logentry": "o l'ha cangiou e impostaçioin do blocco pe [[$1]] co-ina scadença de $2 $3",
        "blocklogtext": "De sotta gh'è 'n registro di açioin de blocco e sblocco utenti.\nI adreççi IP bloccæ aotomaticamente no son elencæ.\nConsurta l'[[Special:BlockList|elenco di blocchi]] pe l'elenco di bandi o blocchi attoalmente opiativi.",
        "unblocklogentry": "o l'ha sbloccou $1",
-       "block-log-flags-anononly": "Utenti anonimmi soö",
+       "block-log-flags-anononly": "solo utenti anonnimi",
        "block-log-flags-nocreate": "Neuve registrascioin non son permisse",
        "block-log-flags-noautoblock": "O blocco automatego o non l'è attïvo",
        "block-log-flags-noemail": "A posta elettronega a non l'è attïva",
        "ipb_expiry_invalid": "Scadença non vallida.",
        "ipb_expiry_old": "Scadença za trascorsa.",
        "ipb_expiry_temp": "I blocchi di nommi utenti ascoxi devan ese permanenti.",
+       "ipb_hide_invalid": "Imposcibbile soprimme questa utença; a gha ciù de {{PLURAL:$1|'na modiffica|$1 modiffiche}}.",
+       "ipb_already_blocked": "L'utente \"$1\" o l'è za bloccou",
+       "ipb-needreblock": "L'utente $1 o l'è za bloccou. Ti voeu miga cangiâ e impostaçioin?",
+       "ipb-otherblocks-header": "{{PLURAL:$1|Atro blocco|Atri blocchi}}",
+       "unblock-hideuser": "No ti poeu sbloccâ questo utente, perché o so nomme utente o l'è stæto ascoso.",
+       "ipb_cant_unblock": "Errô: Imposcibbile trovâ o blocco con ID $1. O blocco o poriæ ese za stæto rimosso.",
+       "ipb_blocked_as_range": "Errô: L'adreçço IP $1 o no l'è soggetto a blocco individoale e o no poeu ese sbloccou. O blocco o l'è invece attivo a livello de l'intervallo $2, ch'o poeu ese sbloccou.",
+       "ip_range_invalid": "Intervallo d'adreççi IP non vallido.",
+       "ip_range_toolarge": "No l'è poscibbile bloccâ de range supeioî a-o /$1",
+       "proxyblocker": "Blocco di proxy averti",
+       "proxyblockreason": "Questo adreçço IP o l'è stæto bloccou perché o l'è un proxy averto. Se prega de contattâ o proppio fornitô d'accesso a Internet ò o supporto tecnico e informâli de questo grave problema de segueça.",
+       "sorbsreason": "Questo adreçço IP o l'è elencou comme proxy averto inta lista DNSBL doeuviâ da {{SITENAME}}.",
+       "sorbs_create_account_reason": "No l'è poscibbile creâ de noeuve utençe con questo adreçço IP perché o l'è elencou comme proxy averto inta lista DNSBL doeuviâ da {{SITENAME}}.",
+       "xffblockreason": "Un adreçço IP presente inte l'intestaçion X-Forwarded-For, toeu ò do server proxy che ti doeuvi, o l'è stæto bloccou. A raxon originâ do blocco a l'è: $1",
+       "cant-see-hidden-user": "L'utente che ti çerchi de bloccâ o l'è stæto za bloccou e ascoso. Scicomme no ti g'hæ o permisso \"hideuser\", no l'è poscibbile vixualizâ ò modificâ o blòcco de l'utente.",
+       "ipbblocked": "No ti poeu bloccâ ò sbloccâ di atri utenti, perché ti mæximo t'ê bloccou",
+       "ipbnounblockself": "No ti poeu sbloccâ ti mæximo",
+       "lockdb": "Blocca o database",
+       "unlockdb": "Sblocca o database",
+       "lockdbtext": "O blocco do database o comporta l'interruçion, pe tutti i utenti, da poscibilitæ de modificâ e paggine o de creâne de noeuve, de cangiâ e preferençe e modificâ e liste di öservæ speciali, e in generâ de tutte i opiaçioin pe-e quæ öcore de modiffiche a-o database. Pe cortexia, conferma che questo l'è proppio quello che t'intendi de fâ e che a-a fin da manutençion ti provediæ a-o sblocco do database.",
+       "unlockdbtext": "O sblocco do database o consente torna a tutti i utenti de modificâ e paggine o de creâne de noeuve, de cangiâ e preferençe e modificâ le liste di öservæ speciali, e in generâ de compî tutte i öpiaçioin pe-e quæ öcore de modiffiche a-o database. Pe cortexia, conferma che questo l'è proppio quello che t'intendi de fâ.",
+       "lockconfirm": "Scì, intendo effettivamente bloccâ o database.",
+       "unlockconfirm": "Scì, intendo effettivamente sbloccâ o database.",
+       "lockbtn": "Blocca o database",
+       "unlockbtn": "Sblocca o database",
+       "locknoconfirm": "No t'hæ marcou a casella de conferma.",
+       "lockdbsuccesssub": "Blocco do database eseguio",
+       "unlockdbsuccesssub": "Sblocco do database eseguio",
+       "lockdbsuccesstext": "O database o l'è stæto bloccou.<br />\nAregordite de [[Special:UnlockDB|levâ o blocco]] doppo d'avei terminou i opiaçioin de manutençion.",
+       "unlockdbsuccesstext": "O database o l'è stæto sbloccou.",
+       "lockfilenotwritable": "Imposcibbile scrive in sciô file de ''lock'' do database. Pe bloccâ e sbloccâ il database l'è necessaio l'accesso in scrittua a questo file da parte do server web .",
+       "databaselocked": "O database o l'è za bloccou.",
        "databasenotlocked": "O database o no l'è bloccòu.",
+       "lockedbyandtime": "(da $1 o $2 a $3)",
+       "move-page": "Stramuo de $1",
        "move-page-legend": "Mescia a paggina",
-       "movepagetext": "Chì o se pêu dâ 'n nêuvo nomme a 'na paggina, stramûando tûtta a sêu cronologîa a-o nêuvo nomme.\nA paggina attuâle a fa outomaticamente 'n rindirissamento a-o nêuvo tittolo.\nI collegamenti escistenti no sajàn aggiornæ; veriffica che 'sto stramûo o no l'agge creòu doggi rindirissamenti ò rindirissamenti sballiæ.\nA responsabilitæ pe tegnî i collegamenti sempre donde deivan andâ a l'è têu.\n\nA paggina a '''no''' sajà stramûâa se ghe foisse zà ûnn-a co-o nêuvo nomme, a meno c'a no segge vêua ò fæta solo da 'n rindirissamento a-a vegia e a no l'agge verscioîn preçedenti.\nIn caso de stramûo sballiòu o se pêu tornâ sûbbito a-o vegio tittolo, e o no l'è poscibbile sorvescrive pe errô 'na paggina zà escistente.\n\n'''ATTENSION:'''\n'N cangiamento coscì grande o porieiva creâ di controtempi e problemmi, sorvetûtto pe-e paggine ciû viscitæ.\nPensa ben e conseguense de 'sto stramûo primma d'andâ avanti!",
+       "movepagetext": "Questo moddulo o consente de rinominâ una pagina, mesciando tutta a so cronologia a-o noeuvo nomme. A paggina attoale a vegniâ aotomaticamente un redirect a-o noeuvo tittolo. Controlla che o stramuo o no l'abbia creou di [[Special:DoubleRedirects|doggi redirect]] ò di [[Special:BrokenRedirects|redirect erræ]]. L'onere de garantî che i collegamenti a-a pagina arestan corretti o speta a chi a mescia.\n\nNotta che a pagina a <strong>no</strong> saiâ mesciaa se n'existe za un-a co-o noeuvo nomme, a meno che a no segge costituia solo che da un redirect e a segge priva de verscioin precedente. In caxo de stramuo errou se poeu tornâ subbito a-o vegio tittolo, e no l'è poscibbile soviascrive pe sballio una pagina za existente.\n\n<strong>Nota:</strong>\nUn cangiamento coscì drastego o poeu creâ di contrattempi e di problemi, soviatutto pe-e paggine ciù vixitæ. Asseguite d'avei valutou e conseguençe primma de procede.",
+       "movepagetext-noredirectfixer": "Questo moddulo o consente de rinominâ una pagina, mesciando tutta a so cronologia a-o noeuvo nomme. A paggina attoale a vegniâ aotomaticamente un redirect a-o noeuvo tittolo. Controlla che o stramuo o no l'abbia creou di [[Special:DoubleRedirects|doggi redirect]] ò di [[Special:BrokenRedirects|redirect erræ]]. L'onere de garantî che i collegamenti a-a pagina arestan corretti o speta a chi a mescia.\n\nNotta che a pagina a <strong>no</strong> saiâ mesciaa se n'existe za un-a co-o noeuvo nomme, a meno che a no segge costituia solo che da un redirect e a segge priva de verscioin precedente. In caxo de stramuo errou se poeu tornâ subbito a-o vegio tittolo, e no l'è poscibbile soviascrive pe sballio una pagina za existente.\n\n<strong>Nota:</strong>\nUn cangiamento coscì drastego o poeu creâ di contrattempi e di problemi, soviatutto pe-e paggine ciù vixitæ. Asseguite d'avei valutou e conseguençe do stramuo primma de procede.",
        "movepagetalktext": "Se ti seleçion-i questa casella, a corispondente paggina de discuscion a saiâ mesciâ aotomaticamente a-o neuvo tittolo, a meno che existe zà una paggina de discuscion ch'a no segge veua.\n\nInte sti caxi, ti doviæ mesciâ o unî manoalmente a paggina, se proppio ti veu.",
-       "newtitle": "Nêuvo tittolo:",
+       "moveuserpage-warning": "'''Attençione:''' Ti stæ pe mesciâ una pagina utente. Notta che solo a pagina a saiâ mesciâ. L'utente o ''no'' saiâ rinominou.",
+       "movecategorypage-warning": "<strong>Attençione:</strong> ti stæ pe mesciâ una categoria. Notta che solo sta paggina a saiâ mesciâ e tutte e pagine inta vegia categoria <em>no</em> saian inseie inta noeuva.",
+       "movenologintext": "O stramuo dee paggine o l'è consentio solo che a-i utenti registræ ch'han eseguio l'[[Special:UserLogin|accesso]] a-o scito.",
+       "movenotallowed": "No ti g'hæ o permisso pe mesciâ de paggine.",
+       "movenotallowedfile": "No ti g'hæ o permisso pe mesciâ di file.",
+       "cant-move-user-page": "No ti g'hæ o permisso pe mesciâ de pagine utente (escluse e sottopagine).",
+       "cant-move-to-user-page": "No ti g'hæ o permisso pe mesciâ a pagina insce 'na pagina utente (escluse e sottopagine utente).",
+       "cant-move-category-page": "No ti g'hæ o permisso pe mesciâ de categorie.",
+       "cant-move-to-category-page": "No ti g'hæ o permisso pe mesciâ a pagina insce 'na categoria.",
+       "newtitle": "Noeuvo tittolo:",
        "move-watch": "Azzonze a li osservæ speçiâli",
        "movepagebtn": "Stramûâ a paggina",
        "pagemovedsub": "Remescio fæto",
-       "articleexists": "Ghe n'æmmo zà 'na paggina con 'sto nomme, oppûre quello che ti g'hæ scelto o no l'è permisso. Cangia nomme.",
+       "movepage-moved": "'''\"$1\" a l'è stæta mesciâ a \"$2\"'''",
+       "movepage-moved-redirect": "L'è stæto creou un redirect.",
+       "movepage-moved-noredirect": "A creaçion de un redirect a l'è stæta sopressa.",
+       "articleexists": "Una paggina con sto nomme ghe l'emmo za, oppûre quello che t'hæ çernuo o no l'è vallido. Pe piaxei çerni 'n atro nomme.",
+       "cantmove-titleprotected": "O stramuo da paggina o no l'è poscibbile in quante o noeuvo tittolo o l'è stæto protezuo pe impedîne a creaçion.",
        "movetalk": "Mescia a paggina de discuscion ascì.",
+       "move-subpages": "Mescia e sottopaggine (scin a $1)",
+       "move-talk-subpages": "Mescia e sottopaggine de discuscion (scin a $1)",
+       "movepage-page-exists": "A paggina $1 a l'existe za e a no poeu ese aotomaticamente soviascrita.",
+       "movepage-page-moved": "A paggina $1 a l'è stæta mesciaa a $2.",
+       "movepage-page-unmoved": "A paggina $1 a no poeu ese mesciâ a $2.",
+       "movepage-max-pages": "L'è stæto mesciou o nummero mascimo de $1 {{PLURAL:$1|paggina|paggine}}: aotomaticamente no ne saiâ mesciou ciu.",
        "movelogpage": "Lista di stramûi",
+       "movelogpagetext": "De sotta una lista de tutti i stramui de paggina.",
+       "movesubpage": "{{PLURAL:$1|Sottopagina|Sottopagine}}",
+       "movesubpagetext": "Questa pagina a g'ha $1 {{PLURAL:$1|sottopagina mostrâ|sottopagine mostræ}} chì de sotta.",
+       "movenosubpage": "Questa pagina a no g'ha de sottopagine.",
        "movereason": "Raxon",
        "revertmove": "Ristorâ",
+       "delete_and_move_text": "A pagina specificâ comme destinaçion \"[[:$1]]\" a l'existe za. Ti voeu miga scassâla pe fâ röso pe-o stramuo?",
        "delete_and_move_confirm": "Scì, scassa a pagina",
-       "delete_and_move_reason": "Levoö pe fâ röso pe un remescio",
+       "delete_and_move_reason": "Scassâ pe fâ röso pe un stramuo da \"[[$1]]\"",
+       "selfmove": "O tittolo de destinaçion o l'è pægio de quello de proveniença, no l'è poscibbile mesciâ una paggina insce lê mæxima.",
+       "immobile-source-namespace": "No l'è poscibbile mesciâ de pagine do namespace \"$1\"",
+       "immobile-target-namespace": "No l'è poscibbile mesciâ de paggine into namespace \"$1\"",
+       "immobile-target-namespace-iw": "Un collegamento interwiki o no l'è una destinaçion vallida pe'n stramuo de paggina.",
+       "immobile-source-page": "Questa pagina a no poeu ese mesciâ.",
+       "immobile-target-page": "No l'è poscibbile fâ o stramuo inte quello tittolo de destinaçion.",
+       "bad-target-model": "A destinaçion dexidiâ a l'adoeuvia un modello de contegnui despægio. No l'è poscibbile convertî da $1 a $2.",
+       "imagenocrossnamespace": "No l'è poscibbile mesciâ un file foeua da-o relativo namespace.",
+       "nonfile-cannot-move-to-file": "No l'è poscibbile mesciâ un file foeua da-o relativo namespace.",
+       "imagetypemismatch": "A noeuva estenscion do file a no corisponde a-o so tipo.",
+       "imageinvalidfilename": "O nomme de l'immaggine o no l'è vallido",
+       "fix-double-redirects": "Aggiorna tutti i redirect ch'apontan a-o tittolo originâ",
+       "move-leave-redirect": "Lascighe derê un redirect",
+       "protectedpagemovewarning": "'''Attençion: questa paggina a l'è stæta bloccâ de moddo che solo i utenti co-i privileggi d'amministratô possan modificâla.'''\nL'urtimo elemento do registro o l'è riportou chì sotta pe referença:",
+       "semiprotectedpagemovewarning": "'''Notta:''' Questa paggina a l'è stæta bloccä de moddo che solo i utenti registræ possan mesciâla.\nL'urtimo elemento do registro o l'è riportou chì sotta pe referensa:",
+       "move-over-sharedrepo": "[[:$1]] a l'existe za inte 'n archivvio condiviso. O stramuo de 'n file a questo tittolo o comportiâ a soviascritua do file condiviso.",
+       "file-exists-sharedrepo": "O nomme che t'hæ çernuo pe-o file o l'è za in doeuvia.\nPe piaxei, çerni un atro nomme.",
        "export": "Espòrta pàgine",
+       "exporttext": "L'è poscibbile esportâ o testo e a cronologia de modiffiche de una paggina ò de un groppo de pagine in formato XML pe importâle inte di atri sciti ch'adoeuvian o software MediaWiki, a traverso a [[Special:Import|paggina de importaçioin]].\n\nPe esportâ e paggine indica i tittoli inta casella de testo sottostante, un pe riga, e speciffica se ti dexiddei d'ötegnî l'urtima verscion e tutte e verscioin precedente, co-i dæti da cronologia da paggina, oppû soltanto l'urtima verscion e i dæti corispondenti a l'urtima modiffica.\n\nIn quest'urtimo caxo ti poeu doeuviâ ascì un collegamento, presempio [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] pe esportâ \"[[{{MediaWiki:Mainpage}}]]\".",
+       "exportall": "Esporta tutte e pagine",
+       "exportcuronly": "Includdi solo a verscion attoâ, non l'intrega cronologia",
+       "exportnohistory": "----\n'''Notta:''' l'esportaçion de l'intrega cronologia de paggine a traverso questa interfaccia a l'è stæta disattivâ pe di motivi ligæ a-e prestaçioin do scistema.",
+       "exportlistauthors": "Inciodi l'elenco completo di contributoî pe ogni paggina",
+       "export-submit": "Esporta",
+       "export-addcattext": "Azonzi pagine da-a categoria:",
+       "export-addcat": "Azonzi",
+       "export-addnstext": "Azonzi paggine da-o namespace:",
+       "export-addns": "Azonzi",
+       "export-download": "Sarva comme file",
+       "export-templates": "Inciodi i template",
+       "export-pagelinks": "Includdi paggine colegæ scin a 'na profonditæ de:",
+       "export-manual": "Azonzi paggine manoalmente:",
        "allmessages": "Messaggi do scistemma",
        "allmessagesname": "Nomme",
        "allmessagesdefault": "Testo predefinio",
        "allmessagescurrent": "Testo corrente",
-       "allmessagestext": "Sta chie a l'è unn-a lista de messaggi do scistema in ta MediaWiki.",
+       "allmessagestext": "Sta chie a l'è a lista de tutti i messaggi de scistema disponibili into namespace MediaWiki.\nVixita [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation MediaWiki Localisation] e [https://translatewiki.net translatewiki.net] se ti voeu contribuî a-a localizzaçion generrica de MediaWiki.",
        "allmessagesnotsupportedDB": "'''{{ns:special}}:Allmessages''' o non ti te peu vedde, perchè '''$wgUseDatabaseMessages''' o non l'è attivo.",
+       "allmessages-filter-legend": "Filtro",
+       "allmessages-filter": "Filtra pe stato de modiffica:",
+       "allmessages-filter-unmodified": "Non modificæ",
+       "allmessages-filter-all": "Tutti",
+       "allmessages-filter-modified": "Modificæ",
+       "allmessages-prefix": "Filtra pe prefisso:",
        "allmessages-language": "Lengua:",
+       "allmessages-filter-submit": "Vanni",
+       "allmessages-filter-translate": "Traduxi",
        "thumbnail-more": "Ciù grande",
        "filemissing": "O file o no gh'è!",
        "thumbnail_error": "Errô inta creassion da miniatûa: $1",
-       "thumbnail_invalid_params": "Parametri da a imàginetta non validi",
+       "thumbnail_error_remote": "Messaggio de errô da $1:\n$2",
+       "djvu_page_error": "Nummero de paggina DjVu errou",
+       "djvu_no_xml": "Imposcibbile ötegnî l'XML pe-o file DjVu",
+       "thumbnail-temp-create": "Imposcibbile creâ o file temporannio de miniatue",
+       "thumbnail-dest-create": "Imposcibbile sarvâ a miniatua inta destinaçion",
+       "thumbnail_invalid_params": "Parammetri da miniatua non vallidi",
+       "thumbnail_toobigimagearea": "File con de dimenscioin maggioe de $1",
+       "thumbnail_dest_directory": "Imposcibbile creâ a directory de destinaçion",
+       "thumbnail_image-type": "Tipo de immagine non supportou",
+       "thumbnail_gd-library": "Configuaçion incompleta da libraia GD: fonçion $1 mancante",
+       "thumbnail_image-missing": "Pâ ch'amanche o file: $1",
+       "thumbnail_image-failure-limit": "Gh'è stæto troppi tentativi reçenti fallii ($1 ò ciù) de generâ questa miniatua. Riproeuva ciù tardi.",
+       "import": "Importa pagine",
+       "importinterwiki": "Importaçion da un atro wiki",
+       "import-interwiki-text": "Seleçion-a un progetto wiki e o titolo da paggina da importâ.\nE dæte de pubbricaçion e i nommi di aotoî de varrie verscioin saian conservæ.\nTutte i opiaçioin de importaçion da di atri wiki son registræ into [[Special:Log/import|registro de importaçion]].",
+       "import-interwiki-sourcewiki": "Wiki de origgine:",
+       "import-interwiki-sourcepage": "Paggina d'origgine:",
+       "import-interwiki-history": "Coppia l'intrega cronologia de questa paggina",
+       "import-interwiki-templates": "Inciodi tutti i template",
+       "import-interwiki-submit": "Importa",
+       "import-mapping-default": "Importa inte destinaçioin predefinie",
+       "import-mapping-namespace": "Importa inte 'n namespace:",
+       "import-mapping-subpage": "Importa comme sottopaggine da paggina seguente:",
+       "import-upload-filename": "Nomme do file:",
+       "import-comment": "Coménti:",
+       "importtext": "Se prega de esportâ o file da-o scito wiki de origgine co-a [[Special:Export|fonçion de esportaçion]], sarvâlo in sciô proppio disco e dapoeu caregâlo chie.",
+       "importstart": "Importaçion de paggine in corso...",
+       "import-revision-count": "$1 {{PLURAL:$1|revixon|revixoin}}",
+       "importnopages": "Nisciun-a paggina da importâ.",
+       "imported-log-entries": "Importou $1 {{PLURAL:$1|voxe}} de registro.",
+       "importfailed": "Importaçion no ariescia: <nowiki>$1</nowiki>",
+       "importunknownsource": "Tipo de sorgente d'importaçion sconosciuo",
+       "importcantopen": "Imposcibbile arvî o file d'importaçion.",
+       "importbadinterwiki": "Collegamento inter-wiki errou",
+       "importsuccess": "Importaçion ariescia.",
+       "importnosources": "No l'è stæto definio una wiki da chi importâ e i uploads diretti da cronologia no son attivi.",
+       "importnofile": "No l'è stæto caregou nisciun file pe l'importaçion.",
+       "importuploaderrorsize": "Caregamento do file pe l'importaçion fallio. O file o suppera e dimenscioin mascime consentie pe l'upload.",
+       "importuploaderrorpartial": "Caregamento do file pe l'importaçion fallio. O file o l'è stæto caregou solo in parte.",
+       "importuploaderrortemp": "Caregamento do file pe l'importaçion fallio. Manca 'na cartella tempoannia.",
+       "import-parse-failure": "Errô d'anallixi inte l'importaçion XML",
+       "import-noarticle": "Paggine da importâ no ghe n'è!",
+       "import-nonewrevisions": "Nisciun-a verscion importâ (ean zà tutte presente, ò satæ pe via di erroî)",
+       "xml-error-string": "$1 a-a riga $2, colonna $3 (byte $4): $5",
+       "import-upload": "Carrega dæti XML",
+       "import-token-mismatch": "I dæti relativi a-a sescion son anæti persci. Riproeuva.\nFoscia t'ê stæto disconnesso. <strong>Verifica d'ese ancon collegou e riproeuva</strong>.\nSe o problema o persciste, ti poeu provâ a [[Special:UserLogout|scollegate]] e effettuâ un nuoeuvo accesso, controllando che o to browser o l'açette i cookie da questo scito.",
+       "import-invalid-interwiki": "Imposcibbile importâ da-o progetto wiki indicou.",
+       "import-error-edit": "A paggina \"$1\" a no l'è stæta importâ perché no t'ê aotorizzou a modificâla.",
+       "import-error-create": "A paggina \"$1\" a no l'è stæta importâ perché no t'ê aotorizzou a creâla.",
+       "import-error-interwiki": "A paggina \"$1\" a no l'è stæta importâ perché o so nomme o l'è riservou pe-o collegamento esterno (interwiki).",
+       "import-error-special": "A pagina \"$1\" a no l'è stæta importâ perché a l'apparten a un namespace speciale ch'o no permette de pagine.",
+       "import-error-invalid": "A paggina \"$1\" a no l'è stæta importâ perché o nomme a-o quæ a saiæ stæta importâ o no l'è vallido insce questo wiki.",
+       "import-error-unserialize": "A verscion $2 da paggina \"$1\" a no poeu ese de-serializzâ. A verscion a l'è stæta segnalâ pe doeuviâ o modello de contegnuo $3 serializzou comme $4.",
+       "import-error-bad-location": "A verscion $2 a l'adoeuvia un modello de contegnuo $3 ch'o no poeu ese memorizzou in \"$1\" de questo wiki, da-o momento che a paggina a no suporta questo modello.",
+       "import-options-wrong": "{{PLURAL:$2|Opçion sbaliâ|Opçioin sbaliæ}}: <nowiki>$1</nowiki>",
+       "import-rootpage-invalid": "A paggina prinçipâ fornia a no l'è un tittolo vallido.",
+       "import-rootpage-nosubpage": "O namespace \"$1\" da paggina prinçipâ o no permette d'avei de sottopagine.",
        "importlogpage": "Importassioîn",
+       "importlogpagetext": "Importaçioin aministrative de paggine da di atre wiki complete de cronologia.",
+       "import-logentry-upload-detail": "{{PLURAL:$1|una verscion importâ|$1 verscioin importæ}}",
+       "import-logentry-interwiki-detail": "{{PLURAL:$1|una verscion importâ|$1 verscioin importæ}} da $2",
+       "javascripttest": "Sperimentaçion JavaScript",
+       "javascripttest-pagetext-unknownaction": "Açion sconosciua \"$1\".",
+       "javascripttest-qunit-intro": "Amia insce mediawiki.org a [$1 documentaçion riguardante i test].",
        "tooltip-pt-userpage": "A {{GENDER:|to}} pagina utente",
+       "tooltip-pt-anonuserpage": "A paggina utente de questo adreçço IP che t'ê aproeuvo a modificâ comme",
        "tooltip-pt-mytalk": "A {{GENDER:|to}} paggina de discuscion",
+       "tooltip-pt-anontalk": "Discuscioin insce e modiffiche fæte da questo adreçço IP",
        "tooltip-pt-preferences": "E {{GENDER:|to}} preferençe",
        "tooltip-pt-watchlist": "A lista de pagine che ti g'hæ sotta osservaçion",
        "tooltip-pt-mycontris": "A lista de {{GENDER:|to}} contribuçioin",
+       "tooltip-pt-anoncontribs": "Un elenco de modiffiche fæte da questo adreçço IP",
        "tooltip-pt-login": "Consegemmo a registraçión, ma a no l'è obrigatoia.",
        "tooltip-pt-logout": "Sciorti",
        "tooltip-pt-createaccount": "Se conseggia de registrase e de intrâ, sciben che no segge obligatoio",
        "tooltip-ca-viewsource": "'Sta pagina a l'è protetta, ma ti peu védde o sêu còdice sorgente.",
        "tooltip-ca-history": "Verscioìn précedenti da pàgina",
        "tooltip-ca-protect": "Protezi 'sta paggina",
+       "tooltip-ca-unprotect": "Càngia a proteçión de sta paggina",
        "tooltip-ca-delete": "Scancella sta pàgina",
+       "tooltip-ca-undelete": "Ripristina a paggina com'a l'ea primma da scancelaçion",
        "tooltip-ca-move": "Mescia 'sta paggina (cangia tittolo)",
        "tooltip-ca-watch": "Azónzi 'sta pagina a-a teu lista d'oservaçion",
        "tooltip-ca-unwatch": "Leva sta pàgina da sott'oservaçion.",
        "tooltip-search": "Çerca {{SITENAME}}",
        "tooltip-search-go": "Vànni inte 'na pàgina con sto tìtolo, s'a l'existe",
-       "tooltip-search-fulltext": "Çerca sto testo in scie pàgine",
+       "tooltip-search-fulltext": "Çerca sto testo in sce pàgine",
        "tooltip-p-logo": "Vìxita a pàgina prinçipâ",
        "tooltip-n-mainpage": "Vìxita a pagina prinçipâ",
        "tooltip-n-mainpage-description": "Vìxita a pàgina prinçipâ",
        "tooltip-n-help": "Pagine d'agiùtto",
        "tooltip-t-whatlinkshere": "Lista de tùtte e pagine che son colegæ a sta chì.",
        "tooltip-t-recentchangeslinked": "Ùrtimi càngi de pàgine colegæ a quésta",
+       "tooltip-feed-rss": "Feed RSS pe questa paggina",
        "tooltip-feed-atom": "Feed Atom pe sta pàgina",
        "tooltip-t-contributions": "Lista de contribûssioin de {{GENDER:$1|questo|questa}} utente",
-       "tooltip-t-emailuser": "Invia 'n messaggio e-mail a quest'utente",
+       "tooltip-t-emailuser": "Invia un messaggio email a {{GENDER:$1|questo|questa}} utente",
+       "tooltip-t-info": "Urteioî informaçioin insce questa pagina",
        "tooltip-t-upload": "Carrega di file murtimediali",
        "tooltip-t-specialpages": "Lista de tùtte e pagine speçiâli",
-       "tooltip-t-print": "Versción da stànpa pe sta pàgina",
+       "tooltip-t-print": "Verscion stanpabbile de sta paggina",
        "tooltip-t-permalink": "Colegaménto fisso a sta revixión da pàgina",
        "tooltip-ca-nstab-main": "Véddi a vôxe",
        "tooltip-ca-nstab-user": "Veddi a pàgina d'utente",
+       "tooltip-ca-nstab-media": "Veddi a paggina do file murtimediâ",
        "tooltip-ca-nstab-special": "Sta chi l'è 'na pàgina speciâle e a no peu êse cangiâ",
        "tooltip-ca-nstab-project": "Veddi a paggina de servissio",
        "tooltip-ca-nstab-image": "Veddi a paggina do file",
+       "tooltip-ca-nstab-mediawiki": "Veddi o messaggio de scistema",
        "tooltip-ca-nstab-template": "Veddi o template",
        "tooltip-ca-nstab-help": "Veddi a paggina d'agiûtto",
        "tooltip-ca-nstab-category": "Veddi a paggina da categorîa",
        "tooltip-minoredit": "Marchilo comme cangiaménto minô",
        "tooltip-save": "Sarva i cangiaménti",
+       "tooltip-publish": "Pubbrica e to modiffiche",
        "tooltip-preview": "Anteprimma de modiffiche (fannila, primma de sarvâ!)",
        "tooltip-diff": "Ammîa e modiffiche che t'æ fæto a-o testo.",
        "tooltip-compareselectedversions": "Amia e diferense tra e doê verscioìn seleçionæ de sta paggina chì.",
-       "tooltip-watch": "Azónzi sta pàgina a-a têu lista d'osservæ speçiâli",
+       "tooltip-watch": "Azónzi sta pàgina a-a têu lista di öservæ speçiâli",
+       "tooltip-watchlistedit-normal-submit": "Leva i tittoli",
+       "tooltip-watchlistedit-raw-submit": "Aggiorna a lista di öservæ speciali",
+       "tooltip-recreate": "Ricrea a pagina sciben ch'a segge stæta scassâ",
+       "tooltip-upload": "Comença o caregamento",
        "tooltip-rollback": "\"Rollback\" annulla e modiffiche a sta pagina de l'urtimo contributô co-in solo clic.",
        "tooltip-undo": "\"Anùlla\" o permette de anulâ sto cangiaménto e o l'arve o modulo de cangiaménto inta modalitæ anteprìmma. Ti peu ascì métte a raxón inte l'ogetto do cangiaménto.",
+       "tooltip-preferences-save": "Sarva e preferençe",
        "tooltip-summary": "Scrîvi 'na scintexi",
        "common.css": "/** i stili css scriti chie se applicana tutte e skin */",
-       "anonymous": "Utente anonimmo de {{SITENAME}}",
+       "anonymous": "{{PLURAL:$1|Utente anonnimo|Utenti anonnimi}} de {{SITENAME}}",
+       "siteuser": "$1, utente de {{SITENAME}}",
+       "anonuser": "$1, utente anonnimo de {{SITENAME}}",
        "lastmodifiedatby": "Sta pagina a l'è stæta cangiâ l'urtima votta a e $2 do $1 da $3.",
+       "othercontribs": "O testo attoale o l'è basou in sciô travaggio de $1.",
+       "others": "atri",
+       "siteusers": "$1, {{PLURAL:$2|{{GENDER:$1|utente}}|utenti}} de {{SITENAME}}",
+       "anonusers": "$1, {{PLURAL:$2|utente anonnimo|utenti anonnimi}} de {{SITENAME}}",
+       "creditspage": "Aotoî da paggina",
+       "nocredits": "Nisciun-a informaçion in scî aotoî disponibbile pe questa paggina.",
+       "spamprotectiontitle": "Filtro anti-spam",
+       "spamprotectiontext": "A pagina che s'è tentou dr sarvâ  a l'è stæta bloccâ da-o filtro anti-spam. Questo l'è probabilmente dovuo a-a presença de 'n collegamento a 'n scito esterno presente inta blacklist.",
+       "spamprotectionmatch": "O filtro anti-spam o l'è stæto attivou da-o seguente scrito: $1",
+       "spambot_username": "MediaWiki - scistema de netezzo do spam",
+       "spam_reverting": "Ripristinata l'urtima verscion priva de collegamenti a $1",
+       "spam_blanking": "Paggina svuâ, tutte e verscioin contegnivan di collegamenti a $1",
+       "spam_deleting": "Paggina scassâ, tutte e verscioin contegnivan di collegamenti a $1",
        "simpleantispam-label": "Controllo anti-spam.\n<strong>NO</strong> impîlo!",
+       "pageinfo-title": "Informaçioin pe \"$1\"",
+       "pageinfo-not-current": "Spiaxente, ma l'è imposcibbile fornî quest'informaçion pe de vege verscioin.",
+       "pageinfo-header-basic": "Informaçion de base",
+       "pageinfo-header-edits": "Cronologia de modiffiche",
+       "pageinfo-header-restrictions": "Proteçion da paggina",
+       "pageinfo-header-properties": "Propietæ da paggina",
+       "pageinfo-display-title": "Tittolo vixualizzou",
+       "pageinfo-default-sort": "Criteio d'ordenamento predefinio",
+       "pageinfo-length": "Longheçça da paggina (in byte)",
+       "pageinfo-article-id": "ID da paggina",
        "pageinfo-language": "Lengua do contegnuo da paggina",
+       "pageinfo-content-model": "Modello do contegnuo da paggina",
+       "pageinfo-robot-policy": "Indiçizzaçion pe-i robot",
+       "pageinfo-robot-index": "Consentio",
+       "pageinfo-robot-noindex": "Non consentio",
+       "pageinfo-watchers": "Nummero di utenti che g'han a paggina in öservaçion",
+       "pageinfo-visiting-watchers": "Nummero di öservatoî da paggina ch'han vixitou e modiffiche reçente",
+       "pageinfo-few-watchers": "Meno de $1 {{PLURAL:$1|öservatô|öservatoî}}",
+       "pageinfo-few-visiting-watchers": "Ghe poriæ ese ò meno di öservatoî ch'han vixitou e modiffiche reçente",
+       "pageinfo-redirects-name": "Nummero de redirect a questa paggina",
+       "pageinfo-subpages-name": "Sottopaggine de questa paggina",
+       "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|redirect}}; $3 {{PLURAL:$3|non redirect}})",
+       "pageinfo-firstuser": "Creatô da paggina",
+       "pageinfo-firsttime": "Dæta de creaçion da paggina",
+       "pageinfo-lastuser": "Urtimo contributô",
+       "pageinfo-lasttime": "Dæta de l'urtima modiffica",
+       "pageinfo-edits": "Nummero totale de modiffiche",
+       "pageinfo-authors": "Nummero totale di aotoî distinti",
+       "pageinfo-recent-edits": "Nummero de modiffiche reçente (inti urtimi $1)",
+       "pageinfo-recent-authors": "Nummero di aotoî distinti reçenti",
+       "pageinfo-magic-words": "{{PLURAL:$1|Paola maggica|Paole maggiche}} ($1)",
+       "pageinfo-hidden-categories": "{{PLURAL:$1|Categoria ascosa|Categorie ascose}} ($1)",
+       "pageinfo-templates": "Template {{PLURAL:$1|incluso|incluxi}} ($1)",
+       "pageinfo-transclusions": "{{PLURAL:$1|Paggina inta|Paggine inte}} quæ l'è incluso ($1)",
        "pageinfo-toolboxlink": "Informassioin in sciâ paggina",
+       "pageinfo-redirectsto": "Rendiriçça a",
+       "pageinfo-redirectsto-info": "info",
+       "pageinfo-contentpage": "Contezâ comme una paggina de contegnuo",
        "pageinfo-contentpage-yes": "Sci",
+       "pageinfo-protect-cascading": "Proteçioin ricorscive da chie",
        "pageinfo-protect-cascading-yes": "Sci",
+       "pageinfo-protect-cascading-from": "Proteçioin ricorscive ereditæ da",
+       "pageinfo-category-info": "Informaçion in sciâ categoria",
+       "pageinfo-category-total": "Nummero totale di membri",
+       "pageinfo-category-pages": "Nummero de paggine",
+       "pageinfo-category-subcats": "Nummio de sottacategorie",
+       "pageinfo-category-files": "Nummero di file",
+       "markaspatrolleddiff": "Marca comme controlâ",
+       "markaspatrolledtext": "Marca sta paggina comme controlâ",
+       "markaspatrolledtext-file": "Marca a verscion de sto file comme controlâ",
+       "markedaspatrolled": "Marcâ comme controlâ",
+       "markedaspatrolledtext": "A modiffica de [[:$1]] seleçionâ a l'è stæta marcâ comme veificâ.",
+       "rcpatroldisabled": "A verifica di urtime modiffiche a l'è disattivâ",
+       "rcpatroldisabledtext": "A fonçion de controllo di urtime cangiamenti pe-o momento a no l'è attiva.",
+       "markedaspatrollederror": "Imposcibbile marcâ a voxe comme controlâ",
+       "markedaspatrollederrortext": "Ocore specificâ una revixon da marcâ comme controlâ.",
+       "markedaspatrollederror-noautopatrol": "No ti poeu marcâ e toeu modiffiche comme controllæ.",
+       "markedaspatrollednotify": "A modifica a $1 a l'è stæta contrassegnâ comme veificâ.",
+       "markedaspatrollederrornotify": "Errô durante a veifica.",
+       "patrol-log-page": "Modiffiche controlæ",
+       "patrol-log-header": "Questo o l'è 'n registro de revixoin controlæ.",
+       "log-show-hide-patrol": "$1 registro di controlli",
+       "log-show-hide-tag": "$1 registro di etichette",
+       "deletedrevision": "Scassou a vegia verscion de $1.",
+       "filedeleteerror-short": "Errô inta scassatua do file: $1",
+       "filedeleteerror-long": "Gh'è stæto di erroî into tentativo de scassâ o file:\n\n$1",
+       "filedelete-missing": "Imposcibbile scassâ o file \"$1\" perchè o no l'existe.",
+       "filedelete-old-unregistered": "A verscion do file indicâ, \"$1\", a no l'è contegnua into database.",
+       "filedelete-current-unregistered": "O file specificou, \"$1\", o no l'è contegnuo into database.",
+       "filedelete-archive-read-only": "O server web o no l'è in graddo de scrive inta directory d'archivvio ($1).",
        "previousdiff": "← Diferensa precedénte",
        "nextdiff": "Pròscima diferensa →",
-       "thumbsize": "Dimescion da a imàginetta:",
+       "mediawarning": "'''Attençione''': Questo file o poriæ contegnî un codiçe maligno. A so esecuçion a poriæ dannezzâ o to scistema.",
+       "imagemaxsize": "Dimenscion mascima de ibmaggine:<br />''(pe-e paggine de descriçion do file)''",
+       "thumbsize": "Dimescion de l'imaginetta:",
+       "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|paggina|paggine}}",
+       "file-info": "dimenscion do file: $1, tipo MIME: $2",
        "file-info-size": "$1 × $2 pixel, dimenscioîn: $3, tippo MIME: $4",
+       "file-info-size-pages": "$1 × $2 pixel, dimenscion do file: $3, tipo MIME: $4, $5 {{PLURAL:$5|paggina|paggine}}",
        "file-nohires": "No ghe son verscioìn a rezoluçion ciù âta.",
        "svg-long-desc": "file in formato SVG, dimenscioìn nominâli $1 × $2 pixel, dimenscioin do file: $3",
+       "svg-long-desc-animated": "file in formato SVG animou, dimenscion nominale $1 × $2 pixel, dimenscion do file: $3",
+       "svg-long-error": "File SVG non vallido: $1",
        "show-big-image": "File originâ",
        "show-big-image-preview": "Dimenscioin de questa anteprimma: $1.",
+       "show-big-image-preview-differ": "Dimension de questa anteprimma $3 pe questo file $2: $1.",
        "show-big-image-other": "{{PLURAL:$2|Atra risolussion|Atre risolussioin}}: $1.",
        "show-big-image-size": "$1 × $2 pixel",
-       "newimages": "Gallerîa de nêuvi archivvi",
+       "file-info-gif-looped": "cicclico",
+       "file-info-gif-frames": "$1 {{PLURAL:$1|frame}}",
+       "file-info-png-looped": "cicclico",
+       "file-info-png-repeat": "ripetuo $1 {{PLURAL:$1|votta|votte}}",
+       "file-info-png-frames": "$1 {{PLURAL:$1|frame}}",
+       "file-no-thumb-animation": "'''Notta: pe de limitaçioin tecniche, e miniatue de questo file no saian animæ.'''",
+       "file-no-thumb-animation-gif": "'''Notta: pe de limitaçioin tecniche, e miniatue de immaggine GIF a ata risoluçion comme questa no saian animæ.'''",
+       "newimages": "Galleria di nêuvi file",
+       "imagelisttext": "A lista presentâ chì de sotta, costituia da {{PLURAL:$1|un file|'''$1''' file}}, a l'è amerçâ $2.",
+       "newimages-summary": "Questa pagina speciale a mostra i urtimi file caregæ.",
+       "newimages-legend": "Filtro",
+       "newimages-label": "Nomme do file (o una parte de questo):",
+       "newimages-showbots": "Mostra i caregamenti fæti dai bot",
+       "newimages-hidepatrolled": "Ascondi i caregamenti controlæ",
+       "noimages": "No gh'è ninte da vedde.",
        "ilsubmit": "Çerca",
        "bydate": "pe dâta",
+       "sp-newimages-showfrom": "Mostra i file ciù reçenti a partî da-e oe $2 do $1",
+       "seconds": "{{PLURAL:$1|un segondo|$1 segondi}}",
+       "minutes": "{{PLURAL:$1|un menuto|$1 menuti}}",
+       "hours": "{{PLURAL:$1|un'oa|$1 oe}}",
+       "days": "{{PLURAL:$1|$1 giorno|$1 giorni}}",
+       "weeks": "{{PLURAL:$1|$1 setteman-a|$1 setteman-e}}",
+       "months": "{{PLURAL:$1|$1 meise|$1 meixi}}",
+       "years": "{{PLURAL:$1|$1 anno|$1 anni}}",
+       "ago": "$1 fa",
+       "just-now": "proppio oua",
+       "hours-ago": "$1 {{PLURAL:$1|oa|oe}} fa",
+       "minutes-ago": "$1 {{PLURAL:$1|menuto|menuti}} fa",
+       "seconds-ago": "$1 {{PLURAL:$1|segondo|segondi}} fa",
        "monday-at": "Lunesdì a $1",
        "tuesday-at": "Matesdì a $1",
        "wednesday-at": "Mâcordì a $1",
        "metadata-expand": "Fâ vedde dettaggi",
        "metadata-collapse": "Asconde dettaggi",
        "metadata-fields": "I cànpi relativi a-i metadæti EXIF elencæ inte 'sto messaggio saiàn in sciâ pàgina de l'inmàgine quande a tabella di metadæti a saiâ inta forma cùrta. Cómme predefinîo, i âtri cànpi saiàn ascoxi.\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": "Largheçça",
+       "exif-imagelength": "Ateçça",
+       "exif-bitspersample": "Bit pe campion",
+       "exif-compression": "Meccanismo de comprescion",
+       "exif-photometricinterpretation": "Struttua di pixel",
        "exif-orientation": "Orientamento",
+       "exif-samplesperpixel": "Nummero di componenti",
+       "exif-planarconfiguration": "Dispoxiçion di dæti",
+       "exif-ycbcrsubsampling": "Rapporto de campionamento Y / C",
+       "exif-ycbcrpositioning": "Poxiçionamento di componenti Y e C",
        "exif-xresolution": "Risoluçion orizzontâ",
        "exif-yresolution": "Risoluçion verticâ",
+       "exif-stripoffsets": "Poxiçion di dæti de l'inmaggine",
+       "exif-rowsperstrip": "Nummero righe pe striscia",
+       "exif-stripbytecounts": "Nummero di byte pe striscia compressa",
+       "exif-jpeginterchangeformat": "Poxiçion byte SOI JPEG",
+       "exif-jpeginterchangeformatlength": "Nummero di byte di dæti JPEG",
+       "exif-whitepoint": "Coordinæ cromattiche do ponto de gianco",
+       "exif-primarychromaticities": "Coordinæ cromattiche di coî primai",
+       "exif-ycbcrcoefficients": "Coeffixenti de matrixe de transformaçion di spaççi de cô",
+       "exif-referenceblackwhite": "Cobbia di valoî de rifeimento (neigro e gianco)",
        "exif-datetime": "Dæta e öa da modiffica do file",
+       "exif-imagedescription": "Tittolo de l'inmaggine",
        "exif-make": "Produttô fotocamera",
        "exif-model": "Modello fotocamera",
        "exif-software": "Software",
        "exif-artist": "Autô",
        "exif-copyright": "Diritti d'autô de",
        "exif-exifversion": "Verscion do formato Exif",
+       "exif-flashpixversion": "Verscion Flashpix supportâ",
        "exif-colorspace": "Spassio di coî",
+       "exif-componentsconfiguration": "Scignificou de ogni componente",
+       "exif-compressedbitsperpixel": "Modalitæ de comprescion immaggine",
+       "exif-pixelxdimension": "Largheçça immaggine",
+       "exif-pixelydimension": "Ateçça immaggine",
+       "exif-usercomment": "Notte de l'utente",
+       "exif-relatedsoundfile": "File audio collegou",
        "exif-datetimeoriginal": "Dæta e oa de creassion di dæti",
        "exif-datetimedigitized": "Dæta e oa de digitalizzaçion",
+       "exif-subsectime": "Dæta e oa, fraçioin de segondo",
+       "exif-subsectimeoriginal": "Dæta e oa de creaçion, fraçioin de segondo",
+       "exif-subsectimedigitized": "Dæta e oa de digitalizzaçion, fraçioin dr segondo",
+       "exif-exposuretime": "Tempo de espoxiçion",
+       "exif-exposuretime-format": "$1 s ($2)",
+       "exif-fnumber": "Rapporto focâ",
+       "exif-exposureprogram": "Programma de espoxiçion",
+       "exif-spectralsensitivity": "Senscibilitæ spettrâ",
+       "exif-isospeedratings": "Senscibilitæ ISO",
+       "exif-shutterspeedvalue": "Veloçitæ de l'otturatô APEX",
+       "exif-aperturevalue": "Avertua APEX",
+       "exif-brightnessvalue": "Luminoxitæ APEX",
+       "exif-exposurebiasvalue": "Correçion espoxiçion",
+       "exif-maxaperturevalue": "Avertua mascima",
+       "exif-subjectdistance": "Distança do soggetto",
+       "exif-meteringmode": "Mettodo de mesuaçion",
+       "exif-lightsource": "Sorgente luminosa",
+       "exif-flash": "Caratteristeghe e stæto do flash",
+       "exif-focallength": "Distança focâ de l'obiettivo",
+       "exif-subjectarea": "Area inquadrante o soggetto",
+       "exif-flashenergy": "Potença do flash",
+       "exif-focalplanexresolution": "Risoluçion X in sciô cian focâ",
+       "exif-focalplaneyresolution": "Risoluçion Y in sciô cian focâ",
+       "exif-focalplaneresolutionunit": "Unitæ de mesua risoluçion in sciô cian focâ",
+       "exif-subjectlocation": "Poxiçion do soggetto",
+       "exif-exposureindex": "Senscibilitæ impostâ",
+       "exif-sensingmethod": "Mettodo de rilevaçion",
        "exif-filesource": "Origgine do file",
+       "exif-scenetype": "Tipo de inquadratua",
+       "exif-customrendered": "Elaboaçion personalizzâ",
+       "exif-exposuremode": "Modalitæ d'espoxiçion",
+       "exif-whitebalance": "Bançamento do gianco",
+       "exif-digitalzoomratio": "Rapporto zoom digitale",
+       "exif-focallengthin35mmfilm": "Longheçça focâ sciu peliccola 35 mm",
+       "exif-scenecapturetype": "Tipo de aquixiçion da scena",
+       "exif-gaincontrol": "Controllo inquadratua",
+       "exif-contrast": "Controllo contrasto",
+       "exif-saturation": "Controllo saturaçion",
+       "exif-sharpness": "Controllo nitideçça",
+       "exif-devicesettingdescription": "Descriçion de impostaçioin do dispoxitivo",
+       "exif-subjectdistancerange": "Scaa distança soggetto",
+       "exif-imageuniqueid": "ID univvoco immaggine",
+       "exif-gpsversionid": "Verscion di tag GPS",
+       "exif-gpslatituderef": "Latituddine nord/sud",
+       "exif-gpslatitude": "Latituddine",
+       "exif-gpslongituderef": "Lonxituddine est/ovest",
+       "exif-gpslongitude": "Lonxituddine",
+       "exif-gpsaltituderef": "Rifeimento pe l'ærtituddine",
+       "exif-gpsaltitude": "Ærtituddine",
+       "exif-gpstimestamp": "Oa GPS (reloeuio atommico)",
+       "exif-gpssatellites": "Satelliti doeuviæ pe-a mesuaçion",
+       "exif-gpsstatus": "Stato do riçevitô",
+       "exif-gpsmeasuremode": "Modalitæ de mesuaçion",
+       "exif-gpsdop": "Precixone da mezuaçion",
+       "exif-gpsspeedref": "Unitæ de mesua da veloçitæ",
+       "exif-gpsspeed": "Veloçitæ do riçevitô GPS",
+       "exif-gpstrackref": "Rifeimento pe-a direçion de movimento",
+       "exif-gpstrack": "Direçion do movimento",
+       "exif-gpsimgdirectionref": "Rifeimento pe-a direçion de l'immaggine",
+       "exif-gpsimgdirection": "Direçion de l'immaggine",
+       "exif-gpsmapdatum": "Rilevamento geodetico doeuviou",
+       "exif-gpsdestlatituderef": "Rifeimento pe-a latituddine da destinaçion",
+       "exif-gpsdestlatitude": "Latituddine da destinaçion",
+       "exif-gpsdestlongituderef": "Rifeimento pe-a lonxituddine da destinaçion",
+       "exif-gpsdestlongitude": "Lonxituddine da destinaçion",
+       "exif-gpsdestbearingref": "Rifeimento pe-a direçion da destinaçion",
+       "exif-gpsdestbearing": "Direçion da destinaçion",
+       "exif-gpsdestdistanceref": "Rifeimento pe-a distança da destinaçion",
+       "exif-gpsdestdistance": "Distança da destinaçion",
+       "exif-gpsprocessingmethod": "Nomme do mettodo de elaboaçion GPS",
+       "exif-gpsareainformation": "Nomme da zona GPS",
+       "exif-gpsdatestamp": "Data GPS",
+       "exif-gpsdifferential": "Correçion differençiâ GPS",
+       "exif-jpegfilecomment": "Commento do file JPEG",
+       "exif-keywords": "Paole ciave",
+       "exif-worldregioncreated": "Region do mondo donde l'è stæto scattou l'immaggine",
+       "exif-countrycreated": "Paise dovve l'è stæto scattou a foto",
+       "exif-countrycodecreated": "Codiçe do paise dovve l'è stæto scattou a foto",
+       "exif-provinceorstatecreated": "Provincia o stato dovve l'è stæto scattou a foto",
+       "exif-citycreated": "Çittæ dovve l'è stæto scattou a foto",
+       "exif-sublocationcreated": "Parte da çittæ donde l'è stæto scattou a foto",
+       "exif-worldregiondest": "Region do mondo vixualizzâ",
+       "exif-countrydest": "Naçion vixualizzâ",
+       "exif-countrycodedest": "Codiçe pe-o paise indicou",
+       "exif-provinceorstatedest": "Provincia o stato vixualizzou",
+       "exif-citydest": "Çittæ mostrâ",
+       "exif-sublocationdest": "Parte da çittæ visualizzâ",
+       "exif-objectname": "Tittolo curto",
+       "exif-specialinstructions": "Instruçioin speciale",
+       "exif-headline": "Tittolo",
+       "exif-credit": "Credditi",
+       "exif-source": "Fonte",
+       "exif-editstatus": "Stato d'ediçion de l'inmaggine",
+       "exif-urgency": "Urgença",
+       "exif-fixtureidentifier": "Nomme do rifeimento",
+       "exif-locationdest": "Localitæ raffiguâ",
+       "exif-locationdestcode": "Coddiçe do loeugo raffiguou",
+       "exif-objectcycle": "Parte do giorno a-o quæ o medium o l'è destinou",
+       "exif-contact": "Contatti",
+       "exif-writer": "Chi l'ha scrito",
        "exif-languagecode": "Lengua",
+       "exif-iimversion": "Verscion IIM",
+       "exif-iimcategory": "Categoria",
+       "exif-iimsupplementalcategory": "Categorie azontive",
+       "exif-datetimeexpires": "No doeuviâ doppo",
+       "exif-datetimereleased": "Pubricou o",
+       "exif-originaltransmissionref": "Coddiçe do loeugo de transmiscion originaia",
+       "exif-identifier": "Identificatô",
+       "exif-lens": "Obiettivo doeuviou",
+       "exif-serialnumber": "Nummero de serrie da fotocammia",
+       "exif-cameraownername": "Proprietaio da macchina fotograffica",
+       "exif-label": "Etichetta",
+       "exif-datetimemetadata": "Dæta inta quæ i metadata son stæti modificæ l'urtima votta",
+       "exif-nickname": "Nomme informale de l'immaggine",
+       "exif-rating": "Valutaçion (su 5)",
+       "exif-rightscertificate": "Çertificou de gestion di driti",
+       "exif-copyrighted": "Informaçioin in scî driti d'aotô:",
+       "exif-copyrightowner": "Detentô di driti d'aotô",
+       "exif-usageterms": "Termi d'utilizzo",
+       "exif-webstatement": "Deciaraçion online do copyright",
+       "exif-originaldocumentid": "ID univvoco do documento origin*a",
+       "exif-licenseurl": "URL pe-a liçença do copyright",
+       "exif-morepermissionsurl": "Informaçioin insce e liçençe alternative",
+       "exif-attributionurl": "Se quest'oeuvia ti l'adoeuvi torna, pe piaxei coleghite a",
+       "exif-preferredattributionname": "Se quest'oeuvia ti l'adoeuvi torna, pe piaxei attribuiscine a paternitæ a",
+       "exif-pngfilecomment": "Commento do file JPEG",
+       "exif-disclaimer": "Avertençe",
+       "exif-contentwarning": "Avviso in sciô contegnuo",
+       "exif-giffilecomment": "Commento do file GIF",
+       "exif-intellectualgenre": "Tipo d'elemento",
+       "exif-subjectnewscode": "Coddiçe de l'ögetto",
+       "exif-scenecode": "Coddiçe de scena IPTC",
+       "exif-event": "Evento raffiguou",
+       "exif-organisationinimage": "Organizzaçion raffiguâ",
+       "exif-personinimage": "Person-a raffiguâ",
+       "exif-originalimageheight": "Ateçça de l'inmaggine primma ch'a foise retagiâ",
+       "exif-originalimagewidth": "Largheçça de l'immaggine primma ch'a foise retagiâ",
+       "exif-compression-1": "Nisciun",
+       "exif-compression-2": "CCITT gruppo 3 monodimenscionâ - codifica run length di Huffman modificâ",
+       "exif-compression-3": "Codiffica fax CCITT Group 3",
+       "exif-compression-4": "Codiffica fax CCITT groppo 4",
+       "exif-copyrighted-true": "Protezuo da-o drito d'aotô",
+       "exif-copyrighted-false": "Stato do drito d'aotô non impostou",
+       "exif-photometricinterpretation-1": "Gianco e neigro (o neigro o l'è 0)",
+       "exif-unknowndate": "Dæta sconosciua",
        "exif-orientation-1": "Normale",
+       "exif-orientation-2": "Imbösòu orizontalmente",
+       "exif-orientation-3": "Curlou de 180°",
+       "exif-orientation-4": "Imbösòu verticalmente",
+       "exif-orientation-5": "Curlou 90° in senso antiorario e imbösòu verticalmente",
+       "exif-orientation-6": "Curlou di 90° in senso antioraio",
+       "exif-orientation-7": "Curlou 90° in senso oraio e imbosou verticalmente",
+       "exif-orientation-8": "Curlou di 90° in senso oraio",
+       "exif-planarconfiguration-1": "formato a tocchi",
+       "exif-planarconfiguration-2": "formato planare",
+       "exif-colorspace-65535": "Non calibrou",
+       "exif-componentsconfiguration-0": "assente",
+       "exif-exposureprogram-0": "Non definio",
+       "exif-exposureprogram-1": "Manoale",
+       "exif-exposureprogram-2": "Programma normale",
+       "exif-exposureprogram-3": "Prioritæ a-o diaframma",
+       "exif-exposureprogram-4": "Prioritæ a l'espoxiçion",
+       "exif-exposureprogram-5": "Artistego (orientou a-a profonditæ de campo)",
+       "exif-exposureprogram-6": "Sportivo (orientou a-a veloçitæ de ripreisa)",
+       "exif-exposureprogram-7": "Ritræto (soggetti vexin con sfondo sfocou)",
+       "exif-exposureprogram-8": "Panoramma (soggetti lonten con sfondo a foeugo)",
+       "exif-subjectdistance-value": "$1 metri",
+       "exif-meteringmode-0": "Sconosciuo",
+       "exif-meteringmode-1": "Meddia",
+       "exif-meteringmode-2": "Meddia pesâ into centro",
+       "exif-meteringmode-3": "Spot",
+       "exif-meteringmode-4": "Murti-Spot",
+       "exif-meteringmode-5": "Pattern",
+       "exif-meteringmode-6": "Parçiâ",
+       "exif-meteringmode-255": "Atro",
+       "exif-lightsource-0": "Sconosciua",
+       "exif-lightsource-1": "Luxe diurna",
+       "exif-lightsource-2": "Lampa a fluorescença",
+       "exif-lightsource-3": "Lampa a-o tungsteno (a incandescença)",
+       "exif-lightsource-4": "Flash",
+       "exif-lightsource-9": "Tempo bello",
+       "exif-lightsource-10": "Nuvio",
+       "exif-lightsource-11": "Ombra",
+       "exif-lightsource-12": "Diurno fluorescente (D 5700 - 7100K)",
+       "exif-lightsource-13": "Giorno gianco fluorescente (N 4600 - 5400K)",
+       "exif-lightsource-14": "Gianco freido fluorescente (W 3900 - 4500K)",
+       "exif-lightsource-15": "Gianco fluorescente (WW 3200 - 3700K)",
+       "exif-lightsource-17": "Luxe standard A",
+       "exif-lightsource-18": "Luxe standard B",
+       "exif-lightsource-19": "Luxe standard C",
+       "exif-lightsource-24": "Lampa da studdio ISO a-o tungsten",
+       "exif-lightsource-255": "Atra sorgente luminosa",
+       "exif-flash-fired-0": "O flash o no l'è scattou",
+       "exif-flash-fired-1": "O flash o l'è scattou",
+       "exif-flash-return-0": "nisciun-a fonçion de individuaçion do ritorno da luxe stroboscoppica",
+       "exif-flash-return-2": "luxe stroboscoppica de ritorno non individoâ",
+       "exif-flash-return-3": "luxe stroboscoppica de ritorno individoâ",
+       "exif-flash-mode-1": "attivaçion forçâ do flash",
+       "exif-flash-mode-2": "rimoçion forçâ do flash",
+       "exif-flash-mode-3": "modalitæ aotomattica",
+       "exif-flash-function-1": "Disattiva o flash",
+       "exif-flash-redeye-1": "modalitæ riduçion oeuggi rosci",
+       "exif-focalplaneresolutionunit-2": "polliçi",
+       "exif-sensingmethod-1": "Non definio",
+       "exif-sensingmethod-2": "Sensô area cô a 1 chip",
+       "exif-sensingmethod-3": "Sensô area cô a 2 chip",
+       "exif-sensingmethod-4": "Sensô area colô a 3 chip",
+       "exif-sensingmethod-5": "Sensô area cô sequençiale",
+       "exif-sensingmethod-7": "Sensô triliniare",
+       "exif-sensingmethod-8": "Sensô liniare de cô sequençiale",
+       "exif-filesource-3": "Fotocammia digitâ",
+       "exif-scenetype-1": "Fotografia diretta",
+       "exif-customrendered-0": "Processo normale",
+       "exif-customrendered-1": "Processo personalizzou",
+       "exif-exposuremode-0": "Espoxiçion aotomattica",
+       "exif-exposuremode-1": "Espoxiçion manoâ",
+       "exif-exposuremode-2": "Bracketing aotomattico",
+       "exif-whitebalance-0": "Bançamento do gianco aotomattico",
+       "exif-whitebalance-1": "Bançamento do gianco manoâ",
+       "exif-scenecapturetype-0": "Standard",
+       "exif-scenecapturetype-1": "Panorama",
+       "exif-scenecapturetype-2": "Ritræto",
+       "exif-scenecapturetype-3": "Notturna",
+       "exif-gaincontrol-0": "Nisciun",
+       "exif-gaincontrol-1": "Enfaxi pe basso guaagno",
+       "exif-gaincontrol-2": "Enfaxi pe ato guaagno",
+       "exif-gaincontrol-3": "Deenfaxi pe basso guaagno",
+       "exif-gaincontrol-4": "Deenfaxi pe ato guaagno",
+       "exif-contrast-0": "Normale",
+       "exif-contrast-1": "Ato contrasto",
+       "exif-contrast-2": "Basso contrasto",
+       "exif-saturation-0": "Normale",
+       "exif-saturation-1": "Bassa saturaçion",
+       "exif-saturation-2": "Ata saturaçion",
+       "exif-sharpness-0": "Normale",
+       "exif-sharpness-1": "Minô nitideçça",
+       "exif-sharpness-2": "Maggiô nitideçça",
+       "exif-subjectdistancerange-0": "Sconosciua",
+       "exif-subjectdistancerange-1": "Macro",
+       "exif-subjectdistancerange-2": "Soggetto vexin",
+       "exif-subjectdistancerange-3": "Soggetto lontan",
+       "exif-gpslatitude-n": "Latituddine nord",
+       "exif-gpslatitude-s": "Latituddine sud",
+       "exif-gpslongitude-e": "Lonxituddine est",
+       "exif-gpslongitude-w": "Lonxituddine ovest",
+       "exif-gpsaltitude-above-sealevel": "$1 {{PLURAL:$1|metro|metri}} in sciô livello do mâ",
+       "exif-gpsaltitude-below-sealevel": "$1 {{PLURAL:$1|metro|metri}} sotta o livello do mâ",
+       "exif-gpsstatus-a": "Mezuaçion in corso",
+       "exif-gpsstatus-v": "Mesuaçion interopiabile",
+       "exif-gpsmeasuremode-2": "Mesuaçion bidimenscionâ",
+       "exif-gpsmeasuremode-3": "Mesuaçion tridimenscionâ",
+       "exif-gpsspeed-k": "Chilommetri orai",
+       "exif-gpsspeed-m": "Miggia oraie",
+       "exif-gpsspeed-n": "Noeui",
+       "exif-gpsdestdistance-k": "Chilommetri",
+       "exif-gpsdestdistance-m": "Miggia",
+       "exif-gpsdestdistance-n": "Miggia naotiche",
+       "exif-gpsdop-excellent": "Eccelente ($1)",
+       "exif-gpsdop-good": "Bon ($1)",
+       "exif-gpsdop-moderate": "Moderâ ($1)",
+       "exif-gpsdop-fair": "Discreto ($1)",
+       "exif-gpsdop-poor": "Scarso ($1)",
+       "exif-objectcycle-a": "Solo a-a mattin",
+       "exif-objectcycle-p": "Solo a-a seia",
+       "exif-objectcycle-b": "Mattin e seia",
+       "exif-gpsdirection-t": "Direçion reale",
+       "exif-gpsdirection-m": "Direçion magnettica",
+       "exif-ycbcrpositioning-1": "Centrou",
+       "exif-ycbcrpositioning-2": "Co-scituou",
+       "exif-dc-contributor": "contributoî",
+       "exif-dc-coverage": "Ambito spaçiâ o tempoâ di meddia",
+       "exif-dc-date": "Dæta (e)",
+       "exif-dc-publisher": "Editô",
+       "exif-dc-relation": "File correlæ",
+       "exif-dc-rights": "Driti",
+       "exif-dc-source": "Fonte do file",
+       "exif-dc-type": "Tipologia do file",
+       "exif-rating-rejected": "Refuou",
+       "exif-isospeedratings-overflow": "Maggiô de 65535",
+       "exif-iimcategory-ace": "Arte, coltua e spetaccolo",
+       "exif-iimcategory-clj": "Crimmine e lezze",
+       "exif-iimcategory-dis": "Disastri e açidenti",
+       "exif-iimcategory-fin": "Economia e affæ",
+       "exif-iimcategory-edu": "Instruçion",
+       "exif-iimcategory-evn": "Ambiente",
+       "exif-iimcategory-hth": "Salute",
+       "exif-iimcategory-hum": "Interesse uman",
+       "exif-iimcategory-lab": "Travaggio",
+       "exif-iimcategory-lif": "Stile di vitta e tempo libbero",
+       "exif-iimcategory-pol": "Polittica",
+       "exif-iimcategory-rel": "Religion e fe'",
+       "exif-iimcategory-sci": "Sciença e tecnologia",
+       "exif-iimcategory-soi": "Questioin sociale",
+       "exif-iimcategory-spo": "Sport",
+       "exif-iimcategory-war": "Guæra, confliti e disordini",
+       "exif-iimcategory-wea": "Meteo",
+       "exif-urgency-normal": "Normale ($1)",
+       "exif-urgency-low": "Bassa ($1)",
+       "exif-urgency-high": "Ata ($1)",
+       "exif-urgency-other": "Prioritæ definie da l'utente ($1)",
        "namespacesall": "Tùtti",
        "monthsall": "tutti",
+       "confirmemail": "Conferma l'adreçço e-mail",
+       "confirmemail_noemail": "No t'hæ indicou un adreçço e-mail vallido inte to [[Special:Preferences|preferençe]].",
+       "confirmemail_text": "{{SITENAME}} o domanda a convallida de l'adreçço e-mail primma de poei doeouviâ e relative fonçioin. Sciacca o pulsante chì de sotta pe inviâ una recesta de conferma a-o proppio addreçço; into messaggio gh'è un collegamento ch'o conten un coddiçe. Vixita o collegamento co-o to navegatô pe confermâ che l'adreçço e-mail o l'è vallido.",
+       "confirmemail_pending": "O coddiçe de conferma o l'è za stæto spedio via posta eletronnica; se l'account o l'è stæto\ncreou de reçente, se prega de attende l'arivo do coddiçe pe quarche menuto primma\nde tentâ de domandâne un noeuvo.",
+       "confirmemail_send": "Invia un coddiçe de conferma via email.",
+       "confirmemail_sent": "Messaggio e-mail de conferma inviou.",
+       "confirmemail_oncreate": "Un coddiçe de conferma o l'è stæto spedio a l'adreçço de posta elettronnica indicou. O coddiçe o no l'è necessaio pe accede a-o scito,\nma l'è necessaio fornîlo pe poei abilitâ tutte e fonçioin do scito ch'adoeuvian a posta elettronnica.",
+       "confirmemail_sendfailed": "{{SITENAME}} o no poeu inviâ o messaggio e-mail de conferma. Controlla che o to adrçço e-mail o no contegne di caratteri non vallidi.\n\nMessaggio de errô do mailer: $1",
+       "confirmemail_invalid": "Coddiçe de conferma non vallido. O codiçe o poriæ ese descheito.",
+       "confirmemail_needlogin": "L'è necessaio $1 confermâ o to adreçço e-mail.",
+       "confirmemail_success": "L'adreçço e-mail o l'è stæto confermou. Oua ti poeu [[Special:UserLogin|intrâ]] e gödîte a wiki.",
+       "confirmemail_loggedin": "L'adreçço e-mail o l'è stæto confermou.",
+       "confirmemail_subject": "{{SITENAME}}: recesta de conferma de l'adreççoo",
+       "confirmemail_body": "Quarcun, foscia ti mæximo da l'adreçço IP $1, o l'ha registrou l'utença \"$2\" insce {{SITENAME}} indicando questo adreçço e-mail.\n\nPe confermâ che l'utença a t'apparten da vei e attivâ e fonçioin relative a l'invio di e-mail insce {{SITENAME}}, arvi o collegamento seguente co-o to navegatô:\n\n$3\n\nSe *no* t'ê stæto ti a registrâ l'utença, segui sto colegamento pe annulâ a conferma de l'adreçço e-mail:\n\n$5\n\nQuesto coddiçe de conferma o descaziâ aotomaticamente a $4.",
+       "confirmemail_body_changed": "Quarcun, foscia ti mæximo da l'adreçço IP $1, o l'ha modificou l'adreçço e-mail de l'utença \"$2\" insce {{SITENAME}} indicando questo adreçço e-mail.\n\nPe confermâ che l'utença a t'apparten da vei e riattivâ e fonçioin relative a l'invio di e-mail insce {{SITENAME}}, arvi o collegamento seguente co-o to navegatô:\n\n$3\n\nSe l'utença a *no* t'aparten, segui sto colegamento pe annulâ a conferma de l'adreçço e-mail:",
+       "confirmemail_body_set": "Quarcun, foscia ti mæximo da l'adreçço IP $1, o l'ha impostcou l'adreçço e-mail de l'utença \"$2\" insce {{SITENAME}} indicando questo adreçço e-mail.\n\nPe confermâ che l'utença a t'apparten da vei e attivâ e fonçioin relative a l'invio di e-mail insce {{SITENAME}}, arvi o collegamento seguente co-o to navegatô:\n\n$3\n\nSe l'utença a *no* t'aparten, segui sto colegamento pe annulâ a conferma de l'adreçço e-mail:",
+       "confirmemail_invalidated": "Recesta de conferma adreçço e-mail annulâ",
+       "invalidateemail": "Annulla a recesta de conferma e-mail",
+       "notificationemail_subject_changed": "L'adreçço de posta elettronica registrou insce {{SITENAME}} o l'è stæto modificou",
+       "notificationemail_subject_removed": "L'adreçço de posta elettronica registrou insce {{SITENAME}} o l'è stæto rimosso",
+       "notificationemail_body_changed": "Quarcun, foscia ti, da l'adreçço IP $1,\no l'ha modificou l'adreçço de posta elettronica de l'utenza \"$2\" in \"$3\" insce {{SITENAME}}.\n\nSe no t'ê stæto ti, contatta subbito un amministratô do scito.",
+       "notificationemail_body_removed": "Quarcun, foscia ti, da l'adreçço IP $1,\no l'ha levou l'adreçço de posta elettronica de l'utenza \"$2\" insce {{SITENAME}}.\n\nSe no t'ê stæto ti, contatta subbito un amministratô do scito.",
+       "scarytranscludedisabled": "[L'incluxone de paggine tra di sciti wiki a no l'è attiva]",
+       "scarytranscludefailed": "[Errô: Imposcibbile ötegnî o template $1]",
+       "scarytranscludefailed-httpstatus": "[Errô: imposcibbile ötegnî o template $1: HTTP $2]",
+       "scarytranscludetoolong": "[Errô: URL troppo longa]",
+       "deletedwhileediting": "'''Attençion''': questa pagina a l'è stæta scassâ doppo che t'hæ començou a modificâla!",
+       "confirmrecreate": "L'utente [[User:$1|$1]] ([[User talk:$1|discuscioin]]) o l'ha scassou sta pagina doppo che t'hæ començou a modificâla, pe-o seguente motivo: ''$2''\nPe piaxei, conferma che ti voeu da vei ricreâ sta paggina.",
+       "confirmrecreate-noreason": "L'utente [[User:$1|$1]] ([[User talk:$1|discuscioin]]){{GENDER:$1|o|a}} l'ha scassou sta pagina doppo che t'hæ començou a modificâla.\nPe piaxei, conferma che ti voeu da vei ricreâ sta paggina.",
+       "recreate": "Ricrea",
+       "confirm_purge_button": "OK",
+       "confirm-purge-top": "Ti voeu netezâ a cache de questa pagina?",
+       "confirm-purge-bottom": "O netezzo da cache de una pagina o consente de mostrâ a so verscion ciù aggiornâ.",
+       "confirm-watch-button": "OK",
+       "confirm-watch-top": "Azónze sta pàgina a-a têu lista di öservæ speçiâli?",
+       "confirm-unwatch-button": "OK",
+       "confirm-unwatch-top": "Leva sta paggina da-a to lista sott'oservaçion.",
+       "confirm-rollback-button": "OK",
+       "confirm-rollback-top": "Ripristinâ e modiffiche de questa paggina?",
+       "quotation-marks": "«$1»",
        "imgmultipageprev": "← Pagina de primma",
        "imgmultipagenext": "Proscima pagina →",
        "imgmultigo": "Vanni!",
+       "imgmultigoto": "Vanni a-a paggina $1",
+       "img-lang-default": "(lengua predefinia)",
+       "img-lang-info": "Converti questa immaggine in $1. $2",
+       "img-lang-go": "Vanni",
        "ascending_abbrev": "cresc",
+       "descending_abbrev": "decresc",
        "table_pager_next": "Proscima pagina",
        "table_pager_prev": "Pagina de primma",
        "table_pager_first": "Primma pagina",
        "table_pager_last": "Urtima pagina",
-       "table_pager_limit": "Fanni devve $1 elementi pe pagina",
+       "table_pager_limit": "Mostra $1 elementi pe paggina",
+       "table_pager_limit_label": "Elementi pe paggina:",
        "table_pager_limit_submit": "Vanni",
        "table_pager_empty": "Nisciun resultato",
        "autosumm-blank": "Pagina svuâ",
        "autosumm-replace": "Sostituçion da pagina con '$1'",
        "autoredircomment": "Reindirissoö a [[$1]]",
        "autosumm-new": "Paggina creâ con \"$1\"",
+       "autosumm-newblank": "Creou paggina voeua",
+       "lag-warn-normal": "E modifiche apportæ {{PLURAL:$1|inte l'urtimo segondo|inti urtimi $1 segondi}} porieivan no apparî inte questa lista.",
+       "lag-warn-high": "A caosa de un eccescivo ritardo inte l'aggiornamento do server de database, e modiffiche apportæ {{PLURAL:$1|inte l'urtimo segondo|inti urtimi $1 segondi}} porieivan no apparî inte questa lista.",
+       "watchlistedit-normal-title": "Modiffica a lista sotta oservaçion",
+       "watchlistedit-normal-legend": "Rimoeuvi di tittoli da-i öservæ speciali",
+       "watchlistedit-normal-explain": "De sotta l'è elencou tutte e pagine sott'öservaçion.\nPe levâ un-a o ciù paggine da-a lista, seleçion-a e caselle relative e clicca o pulsante \"{{int:Watchlistedit-normal-submit}}\" in fondo a l'elenco.\nTi poeu ascì [[Special:EditWatchlist/raw|modificâ a lista in formato testoâ]].",
+       "watchlistedit-normal-submit": "Leva di tittoli",
+       "watchlistedit-normal-done": "Da-a lista di öservæ speciali l'è stæto eliminou {{PLURAL:$1|una pagina|$1 pagine}}:",
+       "watchlistedit-raw-title": "Modiffica a lista sotta oservaçion in formato testo",
+       "watchlistedit-raw-legend": "Modiffica a lista sotta oservaçion in formato testo",
+       "watchlistedit-raw-explain": "De sotta l'è elencou tutte e pagine sott'öservaçion.\nPe cangiâ a lista, azonzi ò leva i rispetivi tittoli, un pe riga. Una votta terminou, clicca o pulsante \"{{int:Watchlistedit-raw-submit}}\" in fondo a l'elenco.\nTi poeu ascì [[Special:EditWatchlist|modificâ a lista co l'interfaccia standard]].",
+       "watchlistedit-raw-titles": "Tittoli:",
+       "watchlistedit-raw-submit": "Agiorna a lista di öservæ speciali",
+       "watchlistedit-raw-done": "A lista di öservæ speciali a l'è stæta aggiornâ.",
+       "watchlistedit-raw-added": "L'è stæto azonto {{PLURAL:$1|una paggina|$1 paggine}}:",
+       "watchlistedit-raw-removed": "L'è stæto eliminou {{PLURAL:$1|una paggina|$1 paggine}}:",
+       "watchlistedit-clear-title": "Svoeua a lista sott'öservaçion",
+       "watchlistedit-clear-legend": "Svoeua a lista sott'öservaçion",
+       "watchlistedit-clear-explain": "Tutti i tittoli saian rimossi da-i to öservæ speciali",
+       "watchlistedit-clear-titles": "Tittoli:",
+       "watchlistedit-clear-submit": "Svoeua a lista sott'öservaçion (Permanentemente!)",
+       "watchlistedit-clear-done": "A lista di öservæ speciali a l'è stæta svuâ.",
+       "watchlistedit-clear-removed": "L'è stæto eliminou {{PLURAL:$1|una paggina|$1 paggine}}:",
+       "watchlistedit-too-many": "Gh'è troppe paggine da visualizzâ chì.",
+       "watchlisttools-clear": "Svoeua a lista sott'öservaçion",
        "watchlisttools-view": "Veddi e modiffiche pertinenti",
        "watchlisttools-edit": "Veddi e modiffica a lista",
        "watchlisttools-raw": "Modiffica a lista in formato testo",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|discuscioin]])",
+       "timezone-local": "Locale",
        "duplicate-defaultsort": "Atençión: a ciâve de ordinaménto predefinîa \"$2\" a sostitoisce quella de primma \"$1\".",
+       "duplicate-displaytitle": "<strong>Attençion:</strong> o tittolo visualizzou \"$2\" o sostituisce o precedente tittolo \"$1\".",
+       "restricted-displaytitle": "<strong>Attençion:</strong> o titolo visualizzou \"$1\" o l'è stæto ignorou perché non equivalente a-o tittolo attoâ da paggina.",
+       "invalid-indicator-name": "<strong>Errô:</strong> l'attributo <code>name</code> di indicatoî do stato da paggina o no poeu ese voeuo.",
        "version": "Verscion",
+       "version-extensions": "Estenscioin installæ",
+       "version-skins": "Temi installæ",
+       "version-specialpages": "Paggine speciale",
+       "version-parserhooks": "Hook do parser",
+       "version-variables": "Variabbile",
+       "version-antispam": "Prevençion do spam",
+       "version-other": "Atro",
+       "version-mediahandlers": "Gestoî di contegnui murtimediæ",
+       "version-hooks": "Hook",
+       "version-parser-extensiontags": "Tag riconosciui da-o parser introduti da di estenscioin",
+       "version-parser-function-hooks": "Hook pe de fonçioin do parser",
+       "version-hook-name": "Nomme de l'hook",
+       "version-hook-subscribedby": "Sottoscriçioin",
+       "version-no-ext-name": "[sença nomme]",
+       "version-license": "Liçença MediaWiki",
+       "version-ext-license": "Liçença",
+       "version-ext-colheader-name": "Estenscion",
+       "version-skin-colheader-name": "Tema",
+       "version-ext-colheader-version": "Verscion",
+       "version-ext-colheader-license": "Liçença",
+       "version-ext-colheader-description": "Descriçion",
+       "version-ext-colheader-credits": "Aotoî",
+       "version-license-title": "Liçença pe $1",
+       "version-license-not-found": "Pe st'estenscion no l'è stæto atrovou arcun-a informaçion dettagiâ in sciâ liçença.",
+       "version-credits-title": "Credditi pe $1",
+       "version-credits-not-found": "Pe st'estenscion no l'è stæto atrovou arcun-a informaçion dettagiâ in scî credditi.",
+       "version-poweredby-credits": "Questo wiki o l'è realizou con '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+       "version-poweredby-others": "atri",
+       "version-poweredby-translators": "tradutoî de translatewiki.net",
+       "version-credits-summary": "A nostra riconoscença a-e seguente person-e pe avei contribuio a [[Special:Version|MediaWiki]].",
+       "version-license-info": "MediaWiki o l'è un software libbero; ti poeu redistribuîlo e/ò modificâlo segondo i termi da GNU General Public License, comme pubbricâ da-a Free Software Foundation; ò a verscion 2 da Liçença ò (a proppia scelta) qualunque verscion succesciva.\n\nMediaWiki o l'è distribuio inta spiança ch'a segge uttile, ma SENÇA ARCUN-A GARANÇIA; sença manco a garantia impliççita de NEGOÇIABILITÆ ò de APPRICABILITÆ PE 'N SCOPO PARTICOLÂ. Amia a GNU General Public License pe maggioî detaggi.\n\nQuesto programma o dev'ese distribuio assemme a  [{{SERVER}}{{SCRIPTPATH}}/COPYING 'na coppia da GNU General Public License]; in caxo contraio, se ne poeu ötegnî un-a scrivendo a-a Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA oppû [http://www.softwarelibero.it/gnudoc/gpl.it.txt lezila in sciâ re'].",
+       "version-software": "Software instalou",
+       "version-software-product": "Produto",
+       "version-software-version": "Verscion",
+       "version-entrypoints": "URL d'accesso",
+       "version-entrypoints-header-entrypoint": "Ponti d'accesso",
+       "version-entrypoints-header-url": "URL",
+       "version-libraries": "Libraie instalæ",
+       "version-libraries-library": "Libraia",
+       "version-libraries-version": "Verscion",
+       "version-libraries-license": "Liçença",
+       "version-libraries-description": "Descriçion",
+       "version-libraries-authors": "Aotoî",
+       "redirect": "Rendriçamento da file, utente, paggina, verscion ò ID registro",
+       "redirect-summary": "Questa pagina speciale a rendriçça a un file (specificando o nome do file), a una pagina (specificando un ID de verscion ò un ID pagina), a un utente (specificando un ID utente numerrico) ò a 'n elemento do registro (specificando l'ID registro).\nEsempi: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], [[{{#Special:Redirect}}/logid/186]].",
+       "redirect-submit": "Vanni",
+       "redirect-lookup": "Riçerca:",
+       "redirect-value": "Valô:",
+       "redirect-user": "ID utente",
+       "redirect-page": "ID da paggina",
+       "redirect-revision": "Verscion da paggina",
+       "redirect-file": "Nomme do file",
+       "redirect-logid": "ID registro",
+       "redirect-not-exists": "Valô non trovou",
+       "fileduplicatesearch": "Riçerca di file dupricæ",
+       "fileduplicatesearch-summary": "Riçerca di eventuali dupricæ do file in base a-o valô de ''hash''.",
+       "fileduplicatesearch-filename": "Nomme do file:",
+       "fileduplicatesearch-submit": "Çerca",
+       "fileduplicatesearch-info": "$1 × $2 pixel<br />Dimenscion do file: $3<br />Tipo MIME: $4",
+       "fileduplicatesearch-result-1": "Dupricæ identichi a-o file \"$1\" no ghe n'è.",
+       "fileduplicatesearch-result-n": "Existe {{PLURAL:$2|un dupricou identico|$2 dupricæ identichi}} a-o file \"$1\".",
+       "fileduplicatesearch-noresults": "Nisciun file de nomme \"$1\" trovou.",
        "specialpages": "Pagine speçiâli",
+       "specialpages-note-top": "Legenda",
+       "specialpages-note": "* Pagine speciali non riservæ.\n* <span class=\"mw-specialpagerestricted\">Pagine speciali riservæ a çerte categorie d'utenti.</span>",
+       "specialpages-group-maintenance": "Raporti de manutençion",
+       "specialpages-group-other": "Atre paggine speciale",
+       "specialpages-group-login": "Intra / Registrite",
+       "specialpages-group-changes": "Urtime modiffiche e registri",
+       "specialpages-group-media": "File murtimediæ - caregamento e reisoconti",
+       "specialpages-group-users": "Utenti e driti",
+       "specialpages-group-highuse": "Paggine a ato utilizzo",
+       "specialpages-group-pages": "Elenchi de paggine",
+       "specialpages-group-pagetools": "Strumenti pe-e paggine",
+       "specialpages-group-wiki": "Dæti e strumenti",
+       "specialpages-group-redirects": "Paggine speciale de rendriççamento",
+       "specialpages-group-spam": "Strumenti contra o spam",
+       "specialpages-group-developer": "Strumenti pe-i sviluppatoî",
+       "blankpage": "Paggina voeua",
+       "intentionallyblankpage": "Questa paggina a l'è stæta lasciâ voeua aposta.",
        "external_image_whitelist": " #Lascia sta riga comm'a l'é<pre>\n#Inseisci i pessi de esprescioìn regolari (sôlo a pàrte ch'a va fra e //) chì sotta\n#Ste chi saiàn misse a confronto co-i indirìssi URL de inmàgini esterne (hotlinked)\n#E corispondense saiàn mostræ cómme inmàgini, donca saiâ mostròu sôlo in colegaménto\n#E righe che començan con # son conscideræ coménti\n#A diferensa tra maioscole e minoscole a no l'è scignificatîva\n\n#Inseisci sovia sta rîga tùtti i frammenti de regex. Lascia sta rîga ezattamente comm'a l'é</pre>",
+       "tags": "Etichette de modiffiche vallide",
        "tag-filter": "Filtra pe [[Special:Tags|etichetta]]:",
+       "tag-filter-submit": "Filtro",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Etichetta|Etichette}}]]: $2)",
+       "tags-title": "Etichette",
+       "tags-intro": "Questa pagina a l'elenca i etichette che o software o poriæ associâ a 'na modiffica e o so scignificou.",
+       "tags-tag": "Nomme de l'etichetta",
+       "tags-display-header": "Aspetto inta lista de modiffiche",
+       "tags-description-header": "Descriçion completa do scignificou",
+       "tags-source-header": "Sorgente",
+       "tags-active-header": "Attivo?",
+       "tags-hitcount-header": "Modiffiche co l'etichetta",
+       "tags-actions-header": "Açioin",
+       "tags-active-yes": "Sci",
+       "tags-active-no": "No",
+       "tags-source-extension": "Definio da 'n'estenscion",
+       "tags-source-manual": "Appricou manoalmente da utenti e bot",
+       "tags-source-none": "No ciù in doeuvia",
+       "tags-edit": "cangia",
+       "tags-delete": "scassa",
+       "tags-activate": "attiva",
+       "tags-deactivate": "disattiva",
+       "tags-hitcount": "$1 {{PLURAL:$1|modiffica|modiffiche}}",
+       "tags-manage-no-permission": "No ti g'hæ a permiscion pe manezâ i cangi d'etichetta.",
+       "tags-manage-blocked": "No ti poeu manezâ i cangi d'etichetta dementre che t'ê blocou.",
+       "tags-create-heading": "Crea un noeuvo tag",
+       "tags-create-explanation": "Pe impostaçion predefinia, i tag apen-a creæ saian disponibbili pe l'utilizzo di utenti e di bot.",
+       "tags-create-tag-name": "Nomme de l'etichetta:",
+       "tags-create-reason": "Raxon:",
+       "tags-create-submit": "Crea",
+       "tags-create-no-name": "L'è necessaio specificâ un nomme d'etichetta.",
+       "tags-create-invalid-chars": "I nommi di etichette no devan contegnî de virgole (<code>,</code>) ò de bare (<code>/</code>).",
+       "tags-create-invalid-title-chars": "I nommi di etichette no devan contegnî di caratteri che no poeuan ese doeuviæ inti tirtoli de paggine.",
+       "tags-create-already-exists": "L'etichetta $1 a l'existe za.",
+       "tags-create-warnings-above": "L'è stæto rilevou {{PLURAl:$2|o seguente peigo|i seguenti peighi}} mentre se tentava de creâ l'etichetta \"$1\":",
+       "tags-create-warnings-below": "Ti dexiddei continoâ a creâ l'etichetta?",
+       "tags-delete-title": "Scassa l'etichetta",
+       "tags-delete-explanation-initial": "Ti stæ pe eliminâ o tag \"$1\" da-o database.",
+       "tags-delete-explanation-in-use": "A saiâ rimossa da {{PLURAL:$2|$2 verscioin ò voxe de registro| tutte e $2 verscioin e/ò voxe de registro}} dovv'a se troeuva oua.",
+       "tags-delete-explanation-warning": "Questa açion a l'è <strong>ireverscibbile</strong> e a <strong>no poeu ese annullâ</strong>, manco da di amministratoî de database. Asegûite che quest'o segge da vei o tag che t'intendi eliminâ.",
+       "tags-delete-explanation-active": "<strong> L'etichetta \"$1\" a l'è ancon attiva, e a-o restiâ in futuo. </strong> Pe disattivâla, vanni a fâlo da-e voxe de registro dovve l'etichetta a l'è in doeuvia.",
+       "tags-delete-reason": "Raxon:",
+       "tags-delete-submit": "Elimmina irreverscibilmente questo tag",
+       "tags-delete-not-allowed": "I tag definii da 'n'estenscion no poeuan ese eliminæ a meno che questo no segge specificamente permisso da l'estenscion.",
+       "tags-delete-not-found": "O tag \"$1\" o no l'existe.",
+       "tags-delete-too-many-uses": "O tag \"$1\" o l'è applicou a ciù de $2 {{PLURAL:$2|revixon|revixion}}, saieiv'a dî, ch'o no poeu ese eliminou.",
+       "tags-delete-warnings-after-delete": "L'etichetta \"$1\" a l'è stæta scassâ, ma fanni attençion {{PLURAL:$2|a-o seguente avviso|a-i seguenti avvixi}}:",
+       "tags-delete-no-permission": "No ti g'hæ a permiscion pe scassâ i cangi d'etichetta.",
+       "tags-activate-title": "Attiva tag",
+       "tags-activate-question": "Ti stæ pe attivâ o tag \"$1\".",
+       "tags-activate-reason": "Raxon:",
+       "tags-activate-not-allowed": "No l'è poscibbile attivâ o tag \"$1\".",
+       "tags-activate-not-found": "O tag \"$1\" o no l'existe.",
+       "tags-activate-submit": "attiva",
+       "tags-deactivate-title": "Disattiva o tag",
+       "tags-deactivate-question": "Ti stæ pe disattivâ o tag \"$1\".",
+       "tags-deactivate-reason": "Raxon:",
+       "tags-deactivate-not-allowed": "No l'è poscibbile disattivâ o tag \"$1\".",
+       "tags-deactivate-submit": "disattiva",
+       "tags-apply-no-permission": "No ti dispon-i de l'aotorizzaçion pe appricâ a modiffica di tag insemme a-e to modiffiche.",
+       "tags-apply-blocked": "No ti poeu appricâ i etichette a-e modiffiche mentre t'ê bloccou.",
+       "tags-apply-not-allowed-one": "L'etichetta \"$1\" a no poeu ese appricâ manoalmente.",
+       "tags-apply-not-allowed-multi": "{{PLURAL:$2|A seguente etichetta a no poeu ese appricâ|E seguente etichette no poeuan ese appricæ}} manoalmente: $1",
+       "tags-update-no-permission": "Non ti dispon-i de permiscioin necessaie pe azonze ò rimoeuve i etichette de modiffica da-e scingole verscioin ò voxe de registro.",
+       "tags-update-blocked": "No ti poeu rimoeuve i cangi d'etichetta dementre che t'ê blocou.",
+       "tags-update-add-not-allowed-one": "L'etichetta \"$1\" a no poeu ese azonta manoalmente.",
+       "tags-update-add-not-allowed-multi": "{{PLURAL:$2|A seguente etichetta a no poeu ese azonta|E seguente etichette no poeuan ese azonte}} manoalmente: $1",
+       "tags-update-remove-not-allowed-one": "L'etichetta \"$1\" a no poeu ese rimossa.",
+       "tags-update-remove-not-allowed-multi": "{{PLURAL:$2|A seguente etichetta a no poeu ese rimossa|E seguente etichette no poeuan ese rimosse}} manoalmente: $1",
+       "tags-edit-title": "Modiffica etichette",
+       "tags-edit-manage-link": "Gestisci etichette",
+       "tags-edit-revision-selected": "{{PLURAL:$1|Verscion seleçionâ|Verscioin seleçionæ}} de [[:$2]]:",
+       "tags-edit-logentry-selected": "{{PLURAL:$1|Evento do registro seleçionou|Eventi do registro seleçionæ}}:",
+       "tags-edit-revision-legend": "Azonzi ò rimoeuvi i etichette da {{PLURAL:$1|questa verscion|tutte $1 e verscioin}}",
+       "tags-edit-logentry-legend": "Azonzi ò rimoeuvi o etichette da {{PLURAL:$1|questa voxe de registro|tutte $1 e voxe de registro}}",
+       "tags-edit-existing-tags": "Etichette existente:",
+       "tags-edit-existing-tags-none": "<em>Nisciun-a</em>",
+       "tags-edit-new-tags": "Noeuve etichette:",
+       "tags-edit-add": "Azonzi queste etichette:",
+       "tags-edit-remove": "Rimoeuvi queste etichette:",
+       "tags-edit-remove-all-tags": "(leva tutti i tag)",
+       "tags-edit-chosen-placeholder": "Seleçion-a arcun-e etichette",
+       "tags-edit-chosen-no-results": "Nisciun tag corrispondente trovou",
+       "tags-edit-reason": "Raxon:",
+       "tags-edit-revision-submit": "Apprica e modiffiche a {{PLURAL:$1|questa verscion|$1 verscioin}}",
+       "tags-edit-logentry-submit": "Apprica e modiffiche a {{PLURAL:$1|questa voxe de registro|$1 voxe de registro}}",
+       "tags-edit-success": "E modifiche son stæte appricæ.",
+       "tags-edit-failure": "No l'è stæto poscibbile effettoâ e seguente modiffiche:\n$1",
+       "tags-edit-nooldid-title": "Verscion specificâ non vallida",
+       "tags-edit-nooldid-text": "No t'hæ specificou arcun-a verscion da paggina in sciâ quæ exeguî questa fonçion, oppû a verscion specificâ a no l'existe.",
+       "tags-edit-none-selected": "Pe piaxei, seleçion-a a-o manco un tag da azonzge ò da levâ.",
+       "comparepages": "Confronta e paggine",
+       "compare-page1": "Pagina 1",
+       "compare-page2": "Pagina 2",
+       "compare-rev1": "Verscion 1",
+       "compare-rev2": "Verscion 2",
+       "compare-submit": "Confronta",
+       "compare-invalid-title": "O tittolo che t'hæ specificou o no l'è vallido.",
+       "compare-title-not-exists": "O tittolo specificou o no l'existe.",
+       "compare-revision-not-exists": "A verscion che t'hæ specificou a no l'existe.",
+       "dberr-problems": "Spiaxenti! Questo scito o g'ha di problemi tecnichi.",
+       "dberr-again": "Proeuva a aspêtâ quarche menuto e recarrega.",
+       "dberr-info": "(Imposcibbile accede a-o database: $1)",
+       "dberr-info-hidden": "(Imposcibbile accede a-o database)",
+       "dberr-usegoogle": "Ti poeu provâ a çercâ insce Google into fratempo.",
+       "dberr-outofdate": "Notta che a so indiçizaçion di nostri contegnui a poriæ no ese agiornâ.",
+       "dberr-cachederror": "Questa a l'è una coppia cache dea paggina domandâ, e a poriæ no ese agiornâ.",
+       "htmlform-invalid-input": "Gh'è di problemi co-i dæti inseii.",
+       "htmlform-select-badoption": "O valô specificou a no l'è un'opçion vallida.",
+       "htmlform-int-invalid": "O valô specificou o no l'è un intrego.",
+       "htmlform-float-invalid": "O valô specificou o no l'è un nummero.",
+       "htmlform-int-toolow": "O valô specificou o l'è infeiô a-o minnimo de $1",
+       "htmlform-int-toohigh": "O valô specificou o l'è supeiô a-o mascimo de $1",
+       "htmlform-required": "Questo valô o l'è öbrigatoio.",
+       "htmlform-submit": "Invia",
+       "htmlform-reset": "Anulla e modiffiche",
+       "htmlform-selectorother-other": "Atro",
+       "htmlform-no": "No",
+       "htmlform-yes": "Sci",
+       "htmlform-chosen-placeholder": "Seleçion-a un'opçion",
+       "htmlform-cloner-create": "Azonzi de l'atro",
+       "htmlform-cloner-delete": "Leva",
+       "htmlform-cloner-required": "Ghe voeu a-o manco un valô.",
+       "htmlform-title-badnamespace": "[[:$1]] a no se troeuva into namespace \"{{ns:$2}}\".",
+       "htmlform-title-not-creatable": "\"$1\" o l'è o tittolo de una paggina non creabile",
+       "htmlform-title-not-exists": "$1 a no l'existe.",
+       "htmlform-user-not-exists": "'''$1''' o no l'existe.",
+       "htmlform-user-not-valid": "<strong>$1</strong> o no l'è un nomme utente vallido.",
+       "sqlite-has-fts": "$1 co-a poscibilitæ de riçerca completa into testo",
+       "sqlite-no-fts": "$1 sença a poscibilitæ de riçerca completa into testo",
        "logentry-delete-delete": "$1 {{GENDER:$2|o l'ha scassou}} a paggina $3",
+       "logentry-delete-restore": "$1 {{GENDER:$2|o|a}} l'ha ripristinou a paggina $3",
+       "logentry-delete-event": "$1 {{GENDER:$2|o|a}} l'ha modificou a vixibilitæ de {{PLURAL:$5|un'açion do registro|$5 açioin do registro}} de \"$3\": $4",
+       "logentry-delete-revision": "$1 {{GENDER:$2|o l'ha modificou}} a vixibilitæ pe {{PLURAL:$5|una verscion|$5 verscioin}} da paggina $3: $4",
+       "logentry-delete-event-legacy": "$1 {{GENDER:$2|o l'ha modificou}} a vixibilitæ de quarche açion do registro de $3",
+       "logentry-delete-revision-legacy": "$1 {{GENDER:$2|o l'ha modificou}} a vixibilitæ pe-e verscioin da paggina $3",
+       "logentry-suppress-delete": "$1 {{GENDER:$2|o l'ha soppresso}} a paggina $3",
+       "logentry-suppress-event": "$1 {{GENDER:$2|o l'ha segretamente modificou}} a vixibilitæ de {{PLURAL:$5|un'açion do registro|$5 açioin do registro}} de $3: $4",
+       "logentry-suppress-revision": "$1 {{GENDER:$2|o l'ha segretamente modificou}} a vixibilitæ de {{PLURAL:$5|una verscion|$5 verscioin}} da paggina $3: $4",
+       "logentry-suppress-event-legacy": "$1 {{GENDER:$2|o l'ha segretamente modificou}} a vixibilitæ de quarche açion do registro de $3",
+       "logentry-suppress-revision-legacy": "$1 {{GENDER:$2|o l'ha segretamente modificou}} a vixibilitæ de quarche verscion da pagina $3",
+       "revdelete-content-hid": "contegnuo ascoso",
+       "revdelete-summary-hid": "ögetto da modiffica ascoso",
+       "revdelete-uname-hid": "nomme utente ascoso",
+       "revdelete-content-unhid": "contegnuo ripristinou",
+       "revdelete-summary-unhid": "ögetto da modiffica ripristinou",
+       "revdelete-uname-unhid": "nomme utente ripristinou",
+       "revdelete-restricted": "limitaçioin a-i soli amministratoî attivæ",
+       "revdelete-unrestricted": "limitaçioin a-i soli amministratoî rimosse",
+       "logentry-block-block": "$1 {{GENDER:$2|o l'ha bloccou}} {{GENDER:$4|$3}} co-ina scadença de $5 $6",
+       "logentry-block-unblock": "$1 {{GENDER:$2|o l'ha sbroccou}} {{GENDER:$4|$3}}",
+       "logentry-block-reblock": "$1 {{GENDER:$2|o l'ha modificou}} e impostaçioin do blocco pe {{GENDER:$4|$3}} co-ina scadença de $5 $6",
+       "logentry-suppress-block": "$1 {{GENDER:$2|o l'ha bloccou}} {{GENDER:$4|$3}} co-ina scadença de $5 $6",
+       "logentry-suppress-reblock": "$1 {{GENDER:$2|o l'ha modificou}} e impostaçioin do blocco pe {{GENDER:$4|$3}} co-ina scadença de $5 $6",
+       "logentry-import-upload": "$1 {{GENDER:$2|o l'ha importou}} $3 trammite caregamento",
+       "logentry-import-upload-details": "$1 {{GENDER:$2|o l'ha importou}} $3 trammite caregamento de file ($4 {{PLURAL:$4|verscion|verscioin}})",
+       "logentry-import-interwiki": "$1 {{GENDER:$2|o l'ha importou}} $3 da un'atra wiki",
+       "logentry-import-interwiki-details": "$1 {{GENDER:$2|o l'ha importou}} $3 da $5 ($4 {{PLURAL:$4|verscione|verscioin}})",
+       "logentry-merge-merge": "$1 {{GENDER:$2|o l'ha unio}} $3 in $4 (verscioin scin a-o $5)",
        "logentry-move-move": "$1 {{GENDER:$2|o l'ha mesciou}} a paggina $3 a $4",
+       "logentry-move-move-noredirect": "$1 {{GENDER:$2|o l'ha mescioiu}} a paggina $3 a $4 sença lasciâ de redirect",
+       "logentry-move-move_redir": "$1 {{GENDER:$2|o l'ha mesciou}} a paggina $3 a $4 trammite redirect",
+       "logentry-move-move_redir-noredirect": "$1 {{GENDER:$2|o l'ha mesciou}} a paggina $3 a $4 a-o posto de 'n redirect sença lasciâ de redirect",
+       "logentry-patrol-patrol": "$1 {{GENDER:$2|o l'ha marcou}} a verscion $4 da paggina $3 comme controlâ",
+       "logentry-patrol-patrol-auto": "$1 {{GENDER:$2|o l'ha marcou}} aotomaticamente a verscion $4 da paggina $3 comme controlâ",
+       "logentry-newusers-newusers": "L'utensa $1 a l'è stæta {{GENDER:$2|creâ}}",
        "logentry-newusers-create": "L'utensa $1 a l'è stæta {{GENDER:$2|creâ}}",
+       "logentry-newusers-create2": "L'utença $3 a l'è stæta {{GENDER:$2|creâ}} da $1",
+       "logentry-newusers-byemail": "L'utença $3 a l'è stæta {{GENDER:$2|creâ}} da $1 e a password a l'è stæta inviâ via e-mail",
+       "logentry-newusers-autocreate": "L'utença $1 a l'è stæta {{GENDER:$2|creâ}} aotomaticamente",
+       "logentry-protect-move_prot": "$1 {{GENDER:$2|o l'ha mesciou}} e impostaçioin de proteçion da $4 a $3",
+       "logentry-protect-unprotect": "$1 {{GENDER:$2|o l'ha rimosso}} a proteçion da $3",
+       "logentry-protect-protect": "$1 {{GENDER:$2|o l'ha protezuo}} $3 $4",
+       "logentry-protect-protect-cascade": "$1 {{GENDER:$2|o l'ha protezuo}} $3 $4 [ricorsciva]",
+       "logentry-protect-modify": "$1 {{GENDER:$2|o l'ha modificou}} o livello de proteçion pe $3 $4",
+       "logentry-protect-modify-cascade": "$1 {{GENDER:$2|o l'ha modificou}} o livello de proteçion pe $3 $4 [ricorsciva]",
+       "logentry-rights-rights": "$1 {{GENDER:$2|o l'ha modificou}} l'appartenença de {{GENDER:$6|$3}} da-o groppo $4 a-o groppo $5",
+       "logentry-rights-rights-legacy": "$1 {{GENDER:$2|o l'ha modificou}} l'appartenença a di groppi de $3",
+       "logentry-rights-autopromote": "$1 o l'è {{GENDER:$2|stæto promosso|stæta promossa|stato/a promosso/a}} aotomaticamente da $4 a $5",
        "logentry-upload-upload": "$1 {{GENDER:$2|o l'ha caregou}} $3",
-       "searchsuggest-search": "Çerca"
+       "logentry-upload-overwrite": "$1 {{GENDER:$2|o l'ha caregou}} una noeuva verscion de $3.",
+       "logentry-upload-revert": "$1 {{GENDER:$2|o l'ha caregou}} $3",
+       "log-name-managetags": "Gestion etichette",
+       "log-description-managetags": "Questa paggina a l'elenca i açioin de gestion relative a-i [[Special:Tags|etichette]]. O registro o conten solo e açioin effettuæ manoalmente da 'n amministratoô; i etichette porieivan ese creæ ò scassæ da-o programma wiki sença che 'na voxe a segge registrâ chie.",
+       "logentry-managetags-create": "$1 {{GENERE:$2|o l'ha creou}}o tag \"$4\"",
+       "logentry-managetags-delete": "$1 {{GENDER:$2|o l'ha rimosso}} l'etichetta \"$4\" (da $5 {{PLURAL:$5|verscione ò voxe de registro|verscioin ò voxe de registro}})",
+       "logentry-managetags-activate": "$1 {{GENDER:$2|o l'ha inseio}} l'etichetta \"$4\" pe l'uso da parte d'utenti e bot",
+       "logentry-managetags-deactivate": "$1 {{GENDER:$2|o l'ha disattivou}} l'etichetta \"$4\" pe l'uso da parte d'utenti e bot",
+       "log-name-tag": "Etichette",
+       "log-description-tag": "Questa pagina a mostra quande i utenti han azonto ò rimosso di [[Special:Tags|etichette]] da de scingole verscioin ò voxe do registro. O registro o no l'elenca o etichettatue che avegnan co-ina modiffica, una cançelaçione ò un'atra açion scimmile.",
+       "logentry-tag-update-add-revision": "$1 {{GENDER:$2|o l'ha azonto}} {{PLURAL:$7|l'etichetta|i etichette}} $6 a-a verscion $4 da paggina $3",
+       "logentry-tag-update-add-logentry": "$1 {{GENDER:$2|o l'ha azonto}} {{PLURAL:$7|l'etichetta|i etichette}} $6 a-a voxe de registro $5 da paggina $3",
+       "logentry-tag-update-remove-revision": "$1 {{GENDER:$2|o l'ha rimosso}} {{PLURAL:$9|l'etichetta|i etichette}} $8 da-a verscion $4 da paggina $3",
+       "logentry-tag-update-remove-logentry": "$1 {{GENDER:$2|o l'ha rimosso}} {{PLURAL:$9|l'etichetta|i etichette}} $8 da-a voxe de registro $5 da paggina $3",
+       "logentry-tag-update-revision": "$1 {{GENDER:$2|o l'ha aggiornou}} i etichette da verscion $4 da paggina $3 ({{PLURAL:$7|azonta|azonte}} $6; {{PLURAL:$9|rimossa|rimosse}} $8)",
+       "logentry-tag-update-logentry": "$1 {{GENDER:$2|o l'ha aggiornou}} i etichette da voxe de registro $5 de paggina $3 ({{PLURAL:$7|azonta|azonte}} $6; {{PLURAL:$9|rimossa|rimosse}} $8)",
+       "rightsnone": "(nisciun)",
+       "revdelete-summary": "ögetto da modiffica",
+       "feedback-adding": "Inseimento do feedback inta paggina...",
+       "feedback-back": "Inderê",
+       "feedback-bugcheck": "Ottimo! Controlla solo ch'o no segge za fra-i [$1 bug conosciui].",
+       "feedback-bugnew": "Controllo effettuou. Segnalla un noeuvo bug",
+       "feedback-bugornote": "Se t'ê pronto a descrive o problema tecnico riscontrou de maibea precisa, [$1 segnalla o bug]. In alternativa, ti poeu doeuviâ o moddulo semplificou sottostante. O to commento inseio o saiâ azonto a-a paggina \"[$3 $2]\", insemme a-o to nomme utente.",
+       "feedback-cancel": "Anulla",
+       "feedback-close": "Fæto",
+       "feedback-external-bug-report-button": "Documenta un problema tecnico",
+       "feedback-dialog-title": "Invia un feedback",
+       "feedback-dialog-intro": "Doeuvia o moddulo sottostante pe inviâ o to feedback. O to commento o l'appariâ inta paggina \"$1\", assemme a-o to nomme utente.",
+       "feedback-error-title": "Errô",
+       "feedback-error1": "Errô: Da-a API l'è arrivou un risultou non riconosciuo",
+       "feedback-error2": "Errô: No l'è stæto poscibbile eseguî a modiffica",
+       "feedback-error3": "Errô: Nisciun-a risposta da-a API",
+       "feedback-error4": "Errô: imposcibbile inviâ o feedback a-o tittolo indicou",
+       "feedback-message": "Messaggio:",
+       "feedback-subject": "Sogetto:",
+       "feedback-submit": "Invia",
+       "feedback-terms": "Acapiscio che e mæ informaçioin insce l'user agent includdan de informaçioin in sciô mæ esatto navegatô e verscion do scistema operativo, che saian condivise pubricamente, assemme a-o mæ feedback.",
+       "feedback-termsofuse": "Accetto de fornî di feedback conformemente a-e Condiçioin d'Uso.",
+       "feedback-thanks": "Graççie! O to feedback o l'è stæto pubricou a-a paggina \"[$2 $1]\".",
+       "feedback-thanks-title": "Graççie!",
+       "feedback-useragent": "Agente utente:",
+       "searchsuggest-search": "Çerca",
+       "searchsuggest-containing": "ch'o conten...",
+       "api-error-autoblocked": "O to adreçço IP o l'è stæto bloccou aotomaticamente, perché o l'è stæto doeuviou da un utente bloccou.",
+       "api-error-badaccess-groups": "No t'ê aotorizzou a caregâ di file insce questa wiki.",
+       "api-error-badtoken": "Errô interno: token errou.",
+       "api-error-blocked": "T'ê stæto bloccou, no ti poeu fâ modiffiche.",
+       "api-error-copyuploaddisabled": "O caregamento trammite URL o l'è disabilitou insce questo server.",
+       "api-error-duplicate": "Gh'è za {{PLURAL:$1|un atro file|di atri files}} into scito co-o mæximo contegnuo.",
+       "api-error-duplicate-archive": "Gh'ea za {{PLURAL:$1|un atro file|di ltri file}} into scito co-o mæximo contegnuo, ma {{PLURAL:$1|o l'è stæto scassou|son stæti scassæ}}.",
+       "api-error-empty-file": "O file che t'hæ inviou o l'è voeuo.",
+       "api-error-emptypage": "A creaçion de noeuve pagine voeue a no l'è consentia.",
+       "api-error-fetchfileerror": "Errô interno: s'è verificou un problema durante o recuppero do file.",
+       "api-error-fileexists-forbidden": "Un file de nomme \"$1\" o l'existe za e o no poeu ese sorvescrito.",
+       "api-error-fileexists-shared-forbidden": "Un file de nomme \"$1\" o l'existe za into repository condiviso e o no poeu ese sorvescrito.",
+       "api-error-file-too-large": "O file che t'hæ inviou o l'ea troppo grande.",
+       "api-error-filename-tooshort": "O nomme do file o l'è troppo curto.",
+       "api-error-filetype-banned": "Questo tipo de file o l'è proibio.",
+       "api-error-filetype-banned-type": "\"$1\" {{PLURAL:$4|o no l'è un tipo de file consentio|no son di tipi de file consentii}}. {{PLURAL:$3|O tipo de file consentio o l'è|I tipi de file consentii son}} $2.",
+       "api-error-filetype-missing": "A-o file gh'amanca l'estenscion.",
+       "api-error-hookaborted": "A modiffica che t'hæ çercou de fâ a l'è stæta interrotta da un'estenscion.",
+       "api-error-http": "Errô interno: imposcibbile connettise a-o server.",
+       "api-error-illegal-filename": "O nomme do file o no l'è ammisso.",
+       "api-error-internal-error": "Errô interno: quarcosa o l'è anæto storto con l'elaboaçion do to caregamento in sciâ wiki.",
+       "api-error-invalid-file-key": "Errô interno: file non presente inta cartella di file temporannei.",
+       "api-error-missingparam": "Errô interno: parammetri da recesta mancanti.",
+       "api-error-missingresult": "Errô interno: imposcibbile determinâ se a coppia a l'è ariescîa.",
+       "api-error-mustbeloggedin": "Pe caregâ di file ti devi primma intrâ.",
+       "api-error-mustbeposted": "Errô interno: a recesta a richiede HTTP POST.",
+       "api-error-noimageinfo": "O caregamento o l'è ariescio, ma o server o no n'ha dæto arcun-a informaçion  in sciô file.",
+       "api-error-nomodule": "Errô interno: no l'è stæto impostou o moddulo de caregamento.",
+       "api-error-ok-but-empty": "Errô interno: nisciun-a risposta da-o server.",
+       "api-error-overwrite": "No l'è permisso soviascrive un file existente.",
+       "api-error-ratelimited": "Ti çerchi de caregâ ciù file in meno tempo de quante questo wiki o permette.\nRiproeuva tra pochi menuti.",
+       "api-error-stashfailed": "Errô interno: o server o no l'è ariescio a memorizzâ o documento temporannio.",
+       "api-error-publishfailed": "Errô interno: o server o no l'è ariescio a pubbricâ o documento temporannio.",
+       "api-error-stasherror": "S'è veificou un errô durante o caregamento do file inta stash.",
+       "api-error-stashedfilenotfound": "O file inta stash o no l'è stæto trovou durante o tentativo de caregâ da-a stash.",
+       "api-error-stashpathinvalid": "O percorso ch'o l'aviæ dovuo portâ a-o file inta stash o no l'ea vallido.",
+       "api-error-stashfilestorage": "S'è veificou un errô durante a memorizzaçion do file inta stash.",
+       "api-error-stashzerolength": "O server o no poeu insei o file inta stash, perché o g'ha longheçça zero.",
+       "api-error-stashnotloggedin": "Pe poei sarvâ di file inta stash de caregamento ti devi primma intrâ.",
+       "api-error-stashwrongowner": "O file a-o quæ ti çercavi d'accede inta stash o no t'apparten.",
+       "api-error-stashnosuchfilekey": "A ciave do file a-a quæ ti çercavi d'accede inta stash a no l'existe.",
+       "api-error-timeout": "O server o no l'ha risposto entro o tempo previsto.",
+       "api-error-unclassified": "Gh'è stæto un aro sconosciuo.",
+       "api-error-unknown-code": "Errô sconosciuo: \"$1\"",
+       "api-error-unknown-error": "Errô interno: quarcosa l'è anæto storto provando a caregâ o file.",
+       "api-error-unknown-warning": "Avviso sconosciuo: $1",
+       "api-error-unknownerror": "Errô sconosciuo: \"$1\"",
+       "api-error-uploaddisabled": "O caregamento o l'è disabilitou insce questa wiki.",
+       "api-error-verification-error": "Questo file o poriæ ese dannezou, o aveighe l'estenscion sbaliâ.",
+       "api-error-was-deleted": "Un file co-o mæximo nomme o l'è stæto precedentemente caregou e succescivamente eliminou.",
+       "duration-seconds": "$1 {{PLURAL:$1|segondo|segondi}}",
+       "duration-minutes": "$1 {{PLURAL:$1|menuto|menuti}}",
+       "duration-hours": "$1 {{PLURAL:$1|oa|oe}}",
+       "duration-days": "$1 {{PLURAL:$1|giorno|giorni}}",
+       "duration-weeks": "$1 {{PLURAL:$1|setteman-a|setteman-e}}",
+       "duration-years": "$1 {{PLURAL:$1|anno|anni}}",
+       "duration-decades": "$1 {{PLURAL:$1|deccade}}",
+       "duration-centuries": "$1 {{PLURAL:$1|seccolo|seccoli}}",
+       "duration-millennia": "$1 {{PLURAL:$1|milennio|milenni}}",
+       "rotate-comment": "Immaggine curlâ de $1 {{PLURAL:$1|grao|groei}} in senso oraio",
+       "limitreport-title": "Dæti de profî do parser:",
+       "limitreport-cputime": "Tempo de utilizzo CPU",
+       "limitreport-cputime-value": "$1 {{PLURAL:$1|segondo|segondi}}",
+       "limitreport-walltime": "Tempo de utilizzo reale",
+       "limitreport-walltime-value": "$1 {{PLURAL:$1|segondo|segondi}}",
+       "limitreport-ppvisitednodes": "Nummero di noeui do preprocessô vixitæ",
+       "limitreport-ppgeneratednodes": "Nummero di noeui do preprocessô generæ",
+       "limitreport-postexpandincludesize": "Dimenscion de incluxoin post-espanscion",
+       "limitreport-postexpandincludesize-value": "$1/$2 {{PLURAL:$2|byte}}",
+       "limitreport-templateargumentsize": "Dimenscion di parammetri do template",
+       "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|byte}}",
+       "limitreport-expansiondepth": "Mascima profonditæ d'espanscion",
+       "limitreport-expensivefunctioncount": "Nummero de fonçioin do parser dispendiose",
+       "expandtemplates": "Espanscion di template",
+       "expand_templates_intro": "Questa pagina speciale a l'elabboa un testo espandendo tutti i template presenti.\nA carcoa ascì o risultou de fonçioon supportæ da-o parser comme\n<code><nowiki>{{</nowiki>#language:…}}</code> e de variabbile de scistema quæ\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>,\nsaiv'a dî inta prattica tutto 'lo che s'attroeuva tra parentexi graffe dogge.",
+       "expand_templates_title": "Contesto (pe {{FULLPAGENAME}} eçç.):",
+       "expand_templates_input": "Testo da espande:",
+       "expand_templates_output": "Risultou",
+       "expand_templates_xml_output": "Output in formato XML",
+       "expand_templates_html_output": "Risultou HTML",
+       "expand_templates_ok": "OK",
+       "expand_templates_remove_comments": "Rimoeuvi i commenti",
+       "expand_templates_remove_nowiki": "Elimmina o tag <nowiki> into risultou",
+       "expand_templates_generate_xml": "Mostra l'ærbo scintattico XML",
+       "expand_templates_generate_rawhtml": "Mostra l'HTML sgroeuzzo",
+       "expand_templates_preview": "Anteprimma",
+       "expand_templates_preview_fail_html": "<em>Scicomme {{SITENAME}} o g'ha de l'HTML sgroeuzzo attivou e gh'è stæto una perdia di dæti da sescion, l'anteprimma a l'è ascosa comme precaoçion contra i attacchi JavaScript.</em>\n\n<strong>Se se tratta de 'n normale tentativo d'anteprimma, riproeuva.</strong> \nSe o problema o persciste, ti poeu provâ a [[Special:UserLogout|scollegate]] e effettoâ un noeuvo accesso, controllando che o to navegatô o l'açette i bescoeutti da questo scito.",
+       "expand_templates_preview_fail_html_anon": "<em>Scicomme {{SITENAME}} o g'ha de l'HTML sgroeuzzo attivou e ti no t'ê introu, l'anteprimma a l'è ascosa comme precaoçion contra i attacchi JavaScript.</em>\n\n<strong>Se se tratta de 'n normale tentativo d'anteprimma [[Special:UserLogin|intra]] e proeuvighe torna.</strong>",
+       "expand_templates_input_missing": "Quarcosa ti ghe-o devi scrive.",
+       "pagelanguage": "Cangia a lengua da paggina",
+       "pagelang-name": "Paggina",
+       "pagelang-language": "Lengua",
+       "pagelang-use-default": "Adoeuvia a lengua predefinia",
+       "pagelang-select-lang": "Seleçion-a a lengua",
+       "pagelang-submit": "Invia",
+       "right-pagelang": "Cangia a lengua da paggina",
+       "action-pagelang": "cangiâ a lengua da paggina",
+       "log-name-pagelang": "Registro di cangi de lengua",
+       "log-description-pagelang": "Questo o l'è un registro di cangiamenti de lengua de paggine.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|o l'ha modificou}} a lengua de $3 da $4 a $5",
+       "default-skin-not-found": "Oops! O tema predefinio pe-o to wiki, definio in <code dir=\"ltr\">$wgDefaultSkin</code> comme <code>$1</code>, o no l'è disponibbile.\n\nA to installaçion a pariæ includde {{PLURAL:$4|o seguente tema|i seguenti temi}}. Amia [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manuale: configuaçion do tema] pe de informaçioin insce comme {{PLURAL:$4|abilitâlo|abilitâli}} e çerne quello predefinio.\n\n$2\n\n; Se t'hæ appen-a installou MediaWiki:\n: Foscia ti l'hæ installou da git, o direttamente da-o codiçe sorgente doeuviando quarch'atro mettodo. Questo o l'ea previsto. Proeuva a installâ di temi da-a [https://www.mediawiki.org/wiki/Category:All_skins directory insce mediawiki.org], de ste mainee chì:\n:* Scaregando o [https://www.mediawiki.org/wiki/Download programma de installaçion tarball], ch'o l'è fornio con diversci temi e estenscioin. Ti poeu fâ o coppia e incolla da directory <code dir=\"ltr\">skins/</code> da lì.\n:* Scaregando di tarball di scingoli temi da [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Doeuviando Git pe scaregâ i temi].\n: In questo moddo no doviæ interfei co-o to repository git se t'ê un sviluppatô MediaWiki.\n\n; Se t'hæ appen-a aggiornou MediaWiki:\n: MediaWiki 1.24 e verscioin succescive no abillitan ciù aotomaticamente i temi installæ (amia [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manoale: rilevamento aotomattico di temi]). Ti poeu copiâ {{PLURAL:$5|a seguente linnia|e seguente linne}} into <code>LocalSettings.php</code> pe abilitâ {{PLURAL:$5|o tema installou|tutti i temi installæ}}:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Se t'hæ appen-a modificou <code>LocalSettings.php</code>:\n: Ricontrolla i nommi di temi pe di ari de battitua.",
+       "default-skin-not-found-no-skins": "Oops! O tema predefinio pe-o to wiki, definio in <code>$wgDefaultSkin</code> comme <code>$1</code>, o no l'è disponibbile.\n\nTemi installæ no ti ghe n'hæ.\n\n; Se t'hæ appen-a installou ò aggiornou MediaWiki:\n: Foscia ti l'hæ installou da git, ò direttamente da-o coddiçe sorgente doeuviando quarch'atro mettodo. Questo o l'ea previsto. MediaWiki 1.24 e e verscioin succescive no includdan arcun tema into repository prinçipâ. Proeuva a installâ di temi da-a [https://www.mediawiki.org/wiki/Category:All_skins directory insce mediawiki.org], inte sti moddi:\n:* Scaregando o [https://www.mediawiki.org/wiki/Download programma de instalaçion tarball], ch'o l'è fornio con diversci temi e estenscioin. Ti poeu fâ o coppia e incolla da directory <code>skins/</code> da lì.\n:* Scaregando tarball di scingoli temi da [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Doeuviando Git pe scaregâ i temi].\n: Sto moddo o no doviæ interfei co-o to repository git se t'ê un sviluppatô MediaWiki. Amia [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manoale: configuaçion di temi] pe informaçioin insce comme abilitâle e scellie quello predefinio.",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (abilitâ)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 (<strong>disabilitâ</strong>)",
+       "mediastatistics": "Statistiche relative a-i file murtimediæ",
+       "mediastatistics-summary": "Statistiche in scî tipi de file caregæ. L'è incluso solo che a verscion ciù reçente de 'n file. E verscioin vege ò scassæ di file son escluse.",
+       "mediastatistics-nbytes": "{{PLURAL:$1|$1 byte}} ($2; $3%)",
+       "mediastatistics-bytespertype": "Dimenscione totâ di file pe questa seçion: {{PLURAL:$1|$1 byte}} ($2; $3%).",
+       "mediastatistics-allbytes": "Dimenscion totâ de tutti i file: {{PLURAL:$1|$1 byte}} ($2).",
+       "mediastatistics-table-mimetype": "Tipo MIME",
+       "mediastatistics-table-extensions": "Poscibbile estenscioin",
+       "mediastatistics-table-count": "Nummero di file",
+       "mediastatistics-table-totalbytes": "Dimenscion combinâ",
+       "mediastatistics-header-unknown": "Sconosciuo",
+       "mediastatistics-header-bitmap": "Immaggine bitmap",
+       "mediastatistics-header-drawing": "Disegni (immaggine vettoiæ)",
+       "mediastatistics-header-audio": "Audio",
+       "mediastatistics-header-video": "Video",
+       "mediastatistics-header-multimedia": "Contegnui murtimediæ",
+       "mediastatistics-header-office": "Öfiççio",
+       "mediastatistics-header-text": "Testoale",
+       "mediastatistics-header-executable": "File exeguibbili",
+       "mediastatistics-header-archive": "Formati compresci",
+       "mediastatistics-header-total": "Tutti i file",
+       "json-warn-trailing-comma": "$1 {{PLURAL:$1|virgola finâ a l'è stæta rimossa|virgole finæ son stæte rimosse}} da-o JSON",
+       "json-error-unknown": "Gh'è stæto un problema co-o JSON. Errô: $1",
+       "json-error-depth": "A profonditæ mascima do stack a l'è stæta superâ",
+       "json-error-state-mismatch": "JSON non vallido ò mäformou",
+       "json-error-ctrl-char": "Errô into carattere de controllo, poscibbile codiffica errâ",
+       "json-error-syntax": "Errô de scintasci",
+       "json-error-utf8": "Caratteri UTF-8 non vallidi, poscibbile codiffica errâ",
+       "json-error-recursion": "Un o ciù rifeimenti ricorscivi into valô da codificâ",
+       "json-error-inf-or-nan": "Un ò ciu valoî NAN o INF into valô da codificâ",
+       "json-error-unsupported-type": "L'è stæto fornio un valô de un tipo ch'o no poeu ese codificou",
+       "headline-anchor-title": "Colegamento a questa seçion",
+       "special-characters-group-latin": "Latin",
+       "special-characters-group-latinextended": "Latin esteiso",
+       "special-characters-group-ipa": "IPA",
+       "special-characters-group-symbols": "Scimboli",
+       "special-characters-group-greek": "Grego",
+       "special-characters-group-greekextended": "Grego esteiso",
+       "special-characters-group-cyrillic": "Çirillico",
+       "special-characters-group-arabic": "Arrabo",
+       "special-characters-group-arabicextended": "Arrabo esteiso",
+       "special-characters-group-persian": "Perscian",
+       "special-characters-group-hebrew": "Ebraico",
+       "special-characters-group-bangla": "Bengaleise",
+       "special-characters-group-tamil": "Tamil",
+       "special-characters-group-telugu": "Telugu",
+       "special-characters-group-sinhala": "Scingaleise",
+       "special-characters-group-gujarati": "Gujarati",
+       "special-characters-group-devanagari": "Devanagari",
+       "special-characters-group-thai": "Thailandeise",
+       "special-characters-group-lao": "Laotian",
+       "special-characters-group-khmer": "Khmer",
+       "special-characters-title-endash": "linieta enne",
+       "special-characters-title-emdash": "linieta emme",
+       "special-characters-title-minus": "segno meno",
+       "mw-widgets-dateinput-no-date": "Niscun-a dæta seleçionâ",
+       "mw-widgets-titleinput-description-new-page": "questa paggina o no l'existe ancon",
+       "mw-widgets-titleinput-description-redirect": "rendriçamento a $1",
+       "sessionmanager-tie": "No l'è poscibbile combinâ ciù tipi de receste de aotenticaçion: $1.",
+       "sessionprovider-generic": "sescioin $1",
+       "sessionprovider-mediawiki-session-cookiesessionprovider": "sescioin basæ in scî cookie",
+       "sessionprovider-nocookies": "I cookie poeuan ese disattivæ. Assegûite d'aveighe i cookie abilitæ e ricomença.",
+       "randomrootpage": "Paggina reixe a brettio",
+       "log-action-filter-block": "Tipo de blocco:",
+       "log-action-filter-contentmodel": "Tipo de modiffica do modello de contegnuo:",
+       "log-action-filter-delete": "Tipo de scassatua:",
+       "log-action-filter-import": "Tipo de importaçion:",
+       "log-action-filter-managetags": "Tipo d'açion de gestion d'etichetta:",
+       "log-action-filter-move": "Tipo de stramuo:",
+       "log-action-filter-newusers": "Tipo de creaçion d'utença:",
+       "log-action-filter-patrol": "Tipo de controllo:",
+       "log-action-filter-protect": "Tipo de proteçion:",
+       "log-action-filter-rights": "Tipo de modiffica di driti:",
+       "log-action-filter-suppress": "Tipo de soprescion:",
+       "log-action-filter-upload": "Tipo de caregamento:",
+       "log-action-filter-all": "Tutto",
+       "log-action-filter-block-block": "Blocco",
+       "log-action-filter-block-reblock": "Modiffica do blocco",
+       "log-action-filter-block-unblock": "Sblocco",
+       "log-action-filter-contentmodel-change": "Modiffica do modello do contegnuo",
+       "log-action-filter-contentmodel-new": "Creaçion de paggina con modello de contenuto non standard",
+       "log-action-filter-delete-delete": "Scancellaçion paggina",
+       "log-action-filter-delete-restore": "Ripristino paggina",
+       "log-action-filter-delete-event": "Scancellaçion registro",
+       "log-action-filter-delete-revision": "Scancellaçion verscion",
+       "log-action-filter-import-interwiki": "Importaçion transwiki",
+       "log-action-filter-import-upload": "Importaçion da XML caregou",
+       "log-action-filter-managetags-create": "Creaçion etichetta",
+       "log-action-filter-managetags-delete": "Scancellaçion etichetta",
+       "log-action-filter-managetags-activate": "Attivaçion etichetta",
+       "log-action-filter-managetags-deactivate": "Disattivaçion etichetta",
+       "log-action-filter-move-move": "Stramuo sença soviascrive di rendriçamenti",
+       "log-action-filter-move-move_redir": "Stramuo con soviascritua di rendriçamenti",
+       "log-action-filter-newusers-create": "Creaçion da utente anonnimo",
+       "log-action-filter-newusers-create2": "Creaçion da utente registrou",
+       "log-action-filter-newusers-autocreate": "Creaçion aotomattica",
+       "log-action-filter-newusers-byemail": "Creaçion con password inviâ via e-mail",
+       "log-action-filter-patrol-patrol": "Controllo manoâ",
+       "log-action-filter-patrol-autopatrol": "Cotrollo aotomattico",
+       "log-action-filter-protect-protect": "Proteçion",
+       "log-action-filter-protect-modify": "Modiffica proteçion",
+       "log-action-filter-protect-unprotect": "Desproteçion",
+       "log-action-filter-protect-move_prot": "Proteçion mesciâ",
+       "log-action-filter-rights-rights": "Modiffica manoâ",
+       "log-action-filter-rights-autopromote": "Modiffica aotomattica",
+       "log-action-filter-suppress-event": "Sopprescion de registro",
+       "log-action-filter-suppress-revision": "Sopprescion de verscion",
+       "log-action-filter-suppress-delete": "Sopprescion de paggina",
+       "log-action-filter-suppress-block": "Sopprescion utente da blocco",
+       "log-action-filter-suppress-reblock": "Sopprescion utente da re-blocco",
+       "log-action-filter-upload-upload": "Noeuvo caregamento",
+       "log-action-filter-upload-overwrite": "Ricaregamento",
+       "authmanager-authn-not-in-progress": "L'aotenticaçion a no l'è in corso ò i dæti da sescion son anæti persci. Se prega de recomençâ da cavo.",
+       "authmanager-authn-no-primary": "E credençiæ fornie no poeuan ese aotenticæ.",
+       "authmanager-authn-no-local-user": "E credençiæ fornie no son associæ a nisciun utente de questo wiki.",
+       "authmanager-authn-no-local-user-link": "E credençiæ fornie son vallide ma no son associæ a nisciun utente de questa wiki. Accedi inte 'n atro moddo ò crea un noeuvo utente, e ti gh'aviæ 'n'opçion pe collegâ e to credençiæ precedente a quell'utença.",
+       "authmanager-authn-autocreate-failed": "Creaçion aotomattica de 'n'utença locale fallia: $1",
+       "authmanager-change-not-supported": "E credençiæ fornie no poeuan ese modificæ, dæto che no saieivan doeuviæ da ninte.",
+       "authmanager-create-disabled": "A creaçion di utençe a l'è disabilitâ.",
+       "authmanager-create-from-login": "Pe creâ a to utença, completa i campi chì de sotta.",
+       "authmanager-create-not-in-progress": "A creaçion de un'utença a no l'è in corso ò i dæti da sescion son anæti perdui. Se prega de recomençâ da cavo.",
+       "authmanager-create-no-primary": "E credençiæ fornie no poeuan ese doeuviæ pe-a creaçion de l'utença.",
+       "authmanager-link-no-primary": "E credençiæ fornie no poeuan ese doeuviæ pe-o colegamento de l'utença.",
+       "authmanager-link-not-in-progress": "O colegamento de l'utença o no procede ò i dæti da sescion so-anæti perdui. Se prega de recomençâ da cavo.",
+       "authmanager-authplugin-setpass-failed-title": "Modiffica da password fallia",
+       "authmanager-authplugin-setpass-failed-message": "O plugin d'aotenticaçion o l'ha impedio a modiffica da password.",
+       "authmanager-authplugin-create-fail": "O plugin d'aotenticaçion o l'ha impedio a creaçion de l'utença.",
+       "authmanager-authplugin-setpass-denied": "O plugin d'aotenticaçion o no consente de cangiâ e password.",
+       "authmanager-authplugin-setpass-bad-domain": "Dominnio non vallido.",
+       "authmanager-autocreate-noperm": "A creaçion aotomattica del'utença a no l'è permissa.",
+       "authmanager-autocreate-exception": "A creaçion aotomattica di utençe a l'è temporaniamente disabilitâ a caosa di erroî precedenti.",
+       "authmanager-userdoesnotexist": "L'utença \"$1\" a no l'è registrâ.",
+       "authmanager-userlogin-remembermypassword-help": "Se a password a dev'ese aregordâ ciù a longo rispetto a-a duata da sescion.",
+       "authmanager-username-help": "Nome utente pe l'aotenticaçion.",
+       "authmanager-password-help": "Password pe l'aotenticaçion.",
+       "authmanager-domain-help": "Dominnio pe l'aotenticaçion esterna.",
+       "authmanager-retype-help": "Conferma torna a password.",
+       "authmanager-email-label": "E-mail",
+       "authmanager-email-help": "Addreçço e-mail:",
+       "authmanager-realname-label": "Nomme vêo:",
+       "authmanager-realname-help": "Nomme reale de l'utente",
+       "authmanager-provider-password": "Aotenticaçion basâ in sciâ password",
+       "authmanager-provider-password-domain": "Aotenticaçion con password ò con dominnio",
+       "authmanager-provider-temporarypassword": "Password temporannia",
+       "authprovider-confirmlink-message": "Basandose insce di reçenti tentativi d'accesso, e seguente utençe poeuan ese collegæ a-o to account wiki. Collegandole ti poeu effettuâ l'accesso con quelle ascì. Se prega de seleçionâ quelle che devan ese collegæ.",
+       "authprovider-confirmlink-request-label": "Utençe che dovieivan ese collegæ",
+       "authprovider-confirmlink-success-line": "$1: collegou correttamente.",
+       "authprovider-confirmlink-failed": "O collegamento de l'utença o no l'è pin-amente ariescio: $1",
+       "authprovider-confirmlink-ok-help": "Continnoa doppo a visualizzaçion di messaggi de errô de collegamento.",
+       "authprovider-resetpass-skip-label": "Sata",
+       "authprovider-resetpass-skip-help": "Sata a rempostaçion da password.",
+       "authform-nosession-login": "L'aotenticaçion a l'ha avuo successo, ma o to navegatô o no l'è in graddo de \"aregordâ\" che t'ê collegou.\n\n$1",
+       "authform-nosession-signup": "L'utença a l'è stæta creâ, ma o to navegatô o no l'è in graddo de \"aregordâ\" che t'ê collegou.\n$1",
+       "authform-newtoken": "Token mancante. $1",
+       "authform-notoken": "Token mancante",
+       "authform-wrongtoken": "Token errou",
+       "specialpage-securitylevel-not-allowed-title": "Non consentio",
+       "specialpage-securitylevel-not-allowed": "Spiaxenti, no t'ê aotorizzou a doeuviâ questa paggina perché a to identitæ a no poeu ese veificâ.",
+       "authpage-cannot-login": "Imposcibbile començâ co l'accesso.",
+       "authpage-cannot-login-continue": "Imposcibbile continoâ co l'accesso. L'è probabbile che a to sescion a segge descheita.",
+       "authpage-cannot-create": "Imposcibbile comença a creaçion de l'utença.",
+       "authpage-cannot-create-continue": "Imposcibbile continoâ co-a creaçion de l'utença. L'è probabbile che a to sescion a segge descheita.",
+       "authpage-cannot-link": "Imposcibbile inandiâ o collegamento de l'utença.",
+       "authpage-cannot-link-continue": "Imposcibbile continoâ co-o collegamento de l'utença. L'è probabbile che a to sescion a segge descheita.",
+       "cannotauth-not-allowed-title": "Permisso negou",
+       "cannotauth-not-allowed": "No t'ê aotorizou a doeuviâ questa paggina",
+       "changecredentials": "Modiffica credençiæ",
+       "changecredentials-submit": "Modiffica credençiæ",
+       "changecredentials-invalidsubpage": "$1 o no l'è 'na tipologia de credençiale vallida.",
+       "changecredentials-success": "E to credençiale son stæte modificæ.",
+       "removecredentials": "Rimoeuvi credençiæ",
+       "removecredentials-submit": "Rimoeuvi credençiæ",
+       "removecredentials-invalidsubpage": "$1 o no l'è 'na tipologia de credençiale vallida.",
+       "removecredentials-success": "E to credençiale son stæte rimosse.",
+       "credentialsform-provider": "Tipo de credençiale:",
+       "credentialsform-account": "Nomme utença:",
+       "cannotlink-no-provider-title": "Utençe collegabbile no ghe n'è",
+       "cannotlink-no-provider": "Utençe colegabbile no ghe n'è.",
+       "linkaccounts": "Collega utençe",
+       "linkaccounts-success-text": "L'utença a l'è stæta colegâ.",
+       "linkaccounts-submit": "Collega utençe",
+       "unlinkaccounts": "Scollega utençe",
+       "unlinkaccounts-success": "L'utença a l'è stæta scollegâ.",
+       "authenticationdatachange-ignored": "O cangiamento da dæta d'aotenticaçion o no l'è passou. Foscia che no gh'ea un provider configuou?"
 }
index 39466e0..b3339da 100644 (file)
@@ -7,7 +7,8 @@
                        "Mjbmr",
                        "Macofe",
                        "Huji",
-                       "Miladrahimi"
+                       "Miladrahimi",
+                       "Ebraminio"
                ]
        },
        "tog-underline": "کڕ(خط)کیشائن ژێر پیوندەل:",
index 4afc969..dbffff9 100644 (file)
        "password-change-forbidden": "Jus negalite keisti slaptažodžių šioje wiki.",
        "externaldberror": "Yra arba išorinė autorizacijos duomenų bazės klaida arba jums neleidžiama atnaujinti jūsų išorinės paskyros.",
        "login": "Prisijungti",
+       "login-security": "Patvirtinkite savo tapatybę",
        "nav-login-createaccount": "Prisijungti / sukurti paskyrą",
        "userlogin": "Prisijungti / sukurti paskyrą",
        "userloginnocreate": "Prisijungti",
        "createacct-reason-ph": "Kodėl kuriate kitą paskyrą",
        "createacct-submit": "Sukurkite savo paskyrą",
        "createacct-another-submit": "Sukurti paskyrą",
+       "createacct-continue-submit": "Tęsti paskyros kūrimą",
+       "createacct-another-continue-submit": "Tęsti paskyros kūrimą",
        "createacct-benefit-heading": "{{SITENAME}} sukurtas žmonių kaip jūs.",
        "createacct-benefit-body1": "{{PLURAL:$1|keitimas|keitimai|keitimų}}",
        "createacct-benefit-body2": "{{PLURAL:$1|puslapis|puslapiai}}",
        "createacct-another-realname-tip": "Tikrojo vardo nurodyti nebūtina.\nJei pasirinksite jį nurodyti, jis bus naudojamas parodymui, kas atliko straipsnio papildymus.",
        "pt-login": "Prisijungti",
        "pt-login-button": "Prisijungti",
+       "pt-login-continue-button": "Tęsti prisijungimą",
        "pt-createaccount": "Sukurti paskyrą",
        "pt-userlogout": "Atsijungti",
        "php-mail-error-unknown": "Nežinoma klaida PHP mail() funkcijoje",
        "newpassword": "Naujas slaptažodis:",
        "retypenew": "Pakartokite naują slaptažodį:",
        "resetpass_submit": "Nustatyti slaptažodį ir prisijungti",
-       "changepassword-success": "Jūsų slaptažodis pakeistas sėkmingai!",
+       "changepassword-success": "Jūsų slaptažodis buvo pakeistas!",
        "changepassword-throttled": "Jūs pastaruoju metu atlikote pernelyg daug bandymų prisijungti. Prašome luktelėti $1 prieš bandant iš naujo.",
        "botpasswords": "Boto slaptažodžiai",
        "botpasswords-summary": "<em>Boto slaptažodžiai</em> leidžia pasiekti naudotojo paskyrą per API, nenaudojant paskyros pagrindinio prisijungimo įgaliojimų. Naudotojo teisės prieinamos būnant prisijungus su boto slaptažodžiu gali būti apribotos.\n\nJeigu nežinote kodėl galite norėti tai daryti, jūs tikriausiai neturėtumėte to daryti. Niekas jūsų neturėtų prašyti sugeneruoti vieno ir perduoti jiems.",
        "botpasswords-invalid-name": "Nurodytame naudotojo varde nėra boto slaptažodžio skirtuko (\"$1\").",
        "botpasswords-not-exist": "Naudotojas \"$1\" neturi boto \"$2\" slaptažodžio.",
        "resetpass_forbidden": "Slaptažodžiai negali būti pakeisti",
+       "resetpass_forbidden-reason": "Slaptažodžiai negali būti pakeisti: $1",
        "resetpass-no-info": "Jūs turite būti prisijungęs, kad pasiektumėte puslapį tiesiogiai.",
        "resetpass-submit-loggedin": "Keisti slaptažodį",
        "resetpass-submit-cancel": "Atšaukti",
        "passwordreset-emailsentusername": "Jeigu buvo el. paštas susietas su šiuo naudotojo vardu, tai slaptažodžio atkūrimo el. laiškas bus išsiųstas.",
        "passwordreset-emailsent-capture": "Slaptažodžio priminimo laiškas bus išsiųstas, toks koks parodytas.",
        "passwordreset-emailerror-capture": "Priminimo elektroninis laiškas buvo sukurtas, toks, koks parodytas žemiau, bet pasiuntimas naudotojui buvo nesėkmingas: $1",
+       "passwordreset-invalideamil": "Neteisingas el. pašto adresas",
+       "passwordreset-nodata": "Vartotojo vardas ir el. paštas buvo nepateikti",
        "changeemail": "Pakeisti ar pašalinti el. pašto adresą",
        "changeemail-header": "Užpildykite šią formą, kad pakeistumėte savo el. pašto adresą. Jeigu norite pašalinti bet kurio el. pašto adreso susiejimą su savo paskyra, palikite naujojo el. pašto adreso lauką tuščią, kai pateiksite formą.",
        "changeemail-passwordrequired": "Jums reikės įvesti savo slaptažodį, kad patvirtintumėte šį pakeitimą.",
        "mergehistory-empty": "Versijos negali būti sujungtos",
        "mergehistory-done": "$3 $1 {{PLURAL:$3|versija|versijos|versijų}} sėkmingai {{PLURAL:$3|sujungta|sujungtos|sujungta}} su [[:$2]].",
        "mergehistory-fail": "Nepavyksta atlikti istorijų sujungimo, prašome patikrinti puslapio ir laiko parametrus.",
+       "mergehistory-fail-bad-timestamp": "Laiko nuoroda negalima.",
+       "mergehistory-fail-invalid-source": "Šaltinio puslapis negalima.",
        "mergehistory-fail-invalid-dest": "Paskirties puslapis yra neteisingas.",
+       "mergehistory-fail-permission": "Nepakanka teisių istorijai sujungti.",
+       "mergehistory-fail-self-merge": "Šaltinio ir tikslo puslapiai yra vienodi",
        "mergehistory-fail-toobig": "Nepavyksta sulieti istorijos, nes būtina pernešti daugiau, nei leidžia $1 riba, {{PLURAL:$1|versijos|versijų}}.",
        "mergehistory-no-source": "Šaltinio puslapis $1 neegzistuoja.",
        "mergehistory-no-destination": "Rezultato puslapis $1 neegzistuoja.",
        "userrights-changeable-col": "Grupės, kurias galite keisti",
        "userrights-unchangeable-col": "Grupės, kurių negalite keisti",
        "userrights-conflict": "Naudotojo teisių konfliktas! Prašome dar kartą taikyti savo keitimus.",
-       "userrights-removed-self": "Jūs sėkmingai panaikinote savo paties teises. Taigi, daugiau nebegalite pasiekti šio puslapio.",
+       "userrights-removed-self": "Jūs pašalinote savo paties teises. Taigi, nebegalite pasiekti šio puslapio.",
        "group": "Grupė:",
        "group-user": "Naudotojai",
        "group-autoconfirmed": "Automatiškai patvirtinti naudotojai",
        "right-override-export-depth": "Eksportuoti puslapius įtraukiant susietus puslapius iki 5 lygio gylio",
        "right-sendemail": "Siųsti el. laišką kitiems naudotojams",
        "right-passwordreset": "Peržiūrėti slaptažodžio pakeitimo e-mail laiškus",
-       "right-managechangetags": "Kurti ir ištrinti [[Special:Tags|žymes]] iš duomenų bazės",
+       "right-managechangetags": "Kurti ir (de)aktyvuoti [[Special:Tags|žymes]]",
        "right-applychangetags": "Taikyti [[Special:Tags|žymes]] kartu su pokyčiais",
        "right-changetags": "Pridėti ir ištrinti savavališkus [[Special:Tags|žymes]] individualiuose pakeitimuose ir žurnalo įrašuose",
+       "right-deletechangetags": "Ištrinti [[Special:Tags|žymes]] iš duomenų bazės",
        "grant-generic": "\"$1\" teisių rinkinys",
        "grant-group-page-interaction": "Sąveikauti su puslapiais",
        "grant-group-file-interaction": "Sąveikauti su medija",
        "rightslogtext": "Pateikiamas naudotojų teisių pakeitimų sąrašas.",
        "action-read": "skaityti šį puslapį",
        "action-edit": "keisti šį puslapį",
-       "action-createpage": "kurti puslapius",
+       "action-createpage": "kurti šį puslapį",
        "action-createtalk": "sukurti šį diskusijų puslapį",
        "action-createaccount": "kurti šią naudotojo paskyrą",
        "action-autocreateaccount": "Automatiškai sukurti šią išorinę naudotojo paskyrą",
        "action-viewmyprivateinfo": "peržiūrėti jūsų privačią informaciją",
        "action-editmyprivateinfo": "redaguoti savo privačią informaciją",
        "action-editcontentmodel": "redaguoti puslapio turinio modelį",
-       "action-managechangetags": "sukurti ir ištrinti žymes duomenų bazėje",
+       "action-managechangetags": "kurti ir (de)aktyvuoti žymes",
        "action-applychangetags": "taikyti žymes kartu su savo pokeitymais",
        "action-changetags": "pridėti ir ištrinti savavališkas žymes individualiuose pakeitimuose ir žurnalo įrašuose",
+       "action-deletechangetags": "trinti žymes iš duomenų bazės",
        "nchanges": "$1 {{PLURAL:$1|pakeitimas|pakeitimai|pakeitimų}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|nuo paskutinio apsilankymo}}",
        "enhancedrc-history": "istorija",
        "apisandbox-dynamic-parameters-add-placeholder": "Parametro pavadinimas",
        "apisandbox-dynamic-error-exists": "Parametras, pavadinimu „$1“ jau yra.",
        "apisandbox-deprecated-parameters": "Nebenaudojami parametrai",
+       "apisandbox-fetch-token": "Automatiškai užpildyti žetoną",
        "apisandbox-submit-invalid-fields-title": "Kai kurie laukai yra neteisingi",
+       "apisandbox-submit-invalid-fields-message": "Prašome pataisyti pažymėtus laukus ir bandyti dar kartą.",
        "apisandbox-results": "Rezultatai",
+       "apisandbox-sending-request": "API prašymas siunčiamas...",
+       "apisandbox-loading-results": "API rezultatai gaunami...",
        "apisandbox-request-url-label": "Prašyti URL:",
-       "apisandbox-request-time": "Užklausos laikas: $1",
+       "apisandbox-request-time": "Užklausos laikas: {{PLURAL:$1|$1 ms}}",
+       "apisandbox-results-fixtoken": "Pataisykite žetoną ir pateikite iš naujo",
+       "apisandbox-results-fixtoken-fail": "Nepavyko gauti „$1“ žetono.",
+       "apisandbox-alert-page": "Laukai šiame puslapyje yra negalimi.",
        "apisandbox-alert-field": "Šio lauko reikšmė yra neteisinga.",
        "booksources": "Knygų šaltiniai",
        "booksources-search-legend": "Knygų šaltinių paieška",
        "log-edit-tags": "Redaguoti žymes pasirinktuose žurnalo įrašuose",
        "checkbox-select": "Pasirinkti: $1",
        "checkbox-all": "Visi",
-       "checkbox-none": "Nieko",
-       "checkbox-invert": "Invertuoti",
+       "checkbox-none": "Nieka",
+       "checkbox-invert": "Apmainītė vėituom",
        "allpages": "Visi puslapiai",
        "nextpage": "Kitas puslapis ($1)",
        "prevpage": "Ankstesnis puslapis ($1)",
        "changecontentmodel-success-text": "Turinys, kurio tipas [[:$1]], buvo atnaujintas.",
        "changecontentmodel-cannot-convert": "Turinys [[:$1]] negali būti konvertuotas į $2 tipą.",
        "changecontentmodel-nodirectediting": "$1 turinio modelis nepalaiko tiesioginio redagavimo",
+       "changecontentmodel-emptymodels-title": "Nėra prieinamų turinio modelių",
        "log-name-contentmodel": "Turinio modelio kaitos istorija",
        "log-description-contentmodel": "Įvykiai susiję su puslapio turinio modeliu",
        "logentry-contentmodel-change": "$1 {{GENDER:$2|atnaujino}} puslapio $3 turinio modelį iš $4 į $5",
        "sp-contributions-username": "IP adresas arba naudotojo vardas:",
        "sp-contributions-toponly": "Rodyti tik paskutinius keitimus",
        "sp-contributions-newonly": "Rodyti tik tuos keitimus, kuriais sukurti nauji straipsniai",
+       "sp-contributions-hideminor": "Slėpti nedidelius pakeitimus",
        "sp-contributions-submit": "Ieškoti",
        "whatlinkshere": "Susiję puslapiai",
        "whatlinkshere-title": "Puslapiai, kurie nurodo į „$1“",
        "lockdbsuccesstext": "Duomenų bazė buvo užrakinta.\n<br />Nepamirškite [[Special:UnlockDB|pašalinti užraktą]], kai techninė profilaktika bus baigta.",
        "unlockdbsuccesstext": "Duomenų bazė buvo atrakinta.",
        "lockfilenotwritable": "Duomenų bazės užrakto failas nėra įrašomas. Norint užrakinti ar atrakinti duomenų bazę, tinklapio serveris privalo turėti įrašymo teises šiam failui.",
+       "databaselocked": "Duomenų bazėje jau yra užrakinta.",
        "databasenotlocked": "Duomenų bazė neužrakinta.",
        "lockedbyandtime": "(užrakino {{GENDER:$1|$1}}, diena $2, laikas $3)",
        "move-page": "Pervadinti $1",
        "confirmemail_body_set": "Kažkas (tikriausiai jūs) iš IP adreso $1,\nnustatė svetainės {{SITENAME}} paskyros „$2“ elektroninio pašto adresą į jūsiškį.\n\nKad patvirtintumėte, kad ši paskyra tikrai priklauso jums ir tokiu būdu aktyvuotumėte\nelektroninio pašto galimybes svetainėje {{SITENAME}}, atverkite šią nuorodą savo naršyklėje:\n\n$3\n\nJei paskyra jums *nepriklauso*, spauskite šią nuorodą,\nkad atšauktumėte elektroninio pašto adreso patvirtinimą:\n\n$5\n\nŠis patvirtinimo kodas baigs galioti $4.",
        "confirmemail_invalidated": "El. pašto adreso patvirtinimas atšauktas",
        "invalidateemail": "El. pašto patvirtinimo atšaukimas",
+       "notificationemail_subject_changed": "{{SITENAME}} užregistruotas el. pašto adresas buvo pakeistas",
+       "notificationemail_subject_removed": "{{SITENAME}} užregistruotas el. pašto adresas buvo pašalintas",
        "scarytranscludedisabled": "[Tarpprojektinis įterpimas yra išjungtas]",
        "scarytranscludefailed": "[Šablono gavimas iš $1 nepavyko]",
        "scarytranscludefailed-httpstatus": "[Šablono iškviesti nepavyko $1: HTTP $2]",
        "confirm-watch-top": "Pridėti šį puslapį į stebimųjų sąrašą?",
        "confirm-unwatch-button": "Gerai",
        "confirm-unwatch-top": "Pašalinti šį puslapį iš jūsų stebimųjų sąrašo?",
+       "confirm-rollback-button": "Gerai",
        "quotation-marks": "„$1“",
        "imgmultipageprev": "← ankstesnis puslapis",
        "imgmultipagenext": "kitas puslapis →",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "sesijos su slapukais",
        "sessionprovider-nocookies": "Slapukai gali būti neaktyvuoti. Įsitikinkite, kad slapukai yra aktyvuoti ir pradėkite vėl.",
        "randomrootpage": "Atsitiktinis šakninis puslapis",
+       "log-action-filter-block": "Blokavimo tipas:",
+       "log-action-filter-delete": "Trynimo tipas:",
+       "log-action-filter-import": "Importo tipas:",
+       "log-action-filter-managetags": "Žymės tvarkymo veiksmo tipas:",
+       "log-action-filter-move": "Kėlimo tipas:",
+       "log-action-filter-newusers": "Paskyros kūrimo tipas:",
+       "log-action-filter-protect": "Apsaugos tipas:",
        "log-action-filter-rights": "Teisių tipo keitimas:",
+       "log-action-filter-upload": "Įkėlimo tipas:",
        "log-action-filter-all": "Visi",
+       "log-action-filter-block-block": "Blokas",
+       "log-action-filter-block-reblock": "Blokavimo pakeitimas",
+       "log-action-filter-block-unblock": "Atblokuoti",
+       "log-action-filter-delete-delete": "Puslapio trynimas",
+       "log-action-filter-delete-restore": "Puslapio trynimo atšaukimas",
+       "log-action-filter-delete-event": "Žurnalo trynimas",
+       "log-action-filter-delete-revision": "Peržiūros trynimas",
+       "log-action-filter-managetags-create": "Žymės kūrimas",
+       "log-action-filter-managetags-delete": "Žymės trynimas",
+       "log-action-filter-managetags-activate": "Žymės aktyvavimas",
+       "log-action-filter-managetags-deactivate": "Žymės deaktyvavimas",
        "log-action-filter-newusers-autocreate": "Automatinis kūrimas",
-       "log-action-filter-protect-protect": "Apsauga"
+       "log-action-filter-protect-protect": "Apsauga",
+       "log-action-filter-upload-upload": "Naujas įkėlimas",
+       "log-action-filter-upload-overwrite": "Kelti iš naujo",
+       "authmanager-authplugin-setpass-bad-domain": "Negalimas domenas.",
+       "authmanager-autocreate-noperm": "Automatinis paskyros kūrimas neleidžiamas.",
+       "authmanager-autocreate-exception": "Automatinis paskyros kūrimas laikinai neleidžiamas dėl ankstesnių klaidų.",
+       "authmanager-userdoesnotexist": "Vartotojo paskyrą „$1“ nėra registruota.",
+       "authmanager-userlogin-remembermypassword-help": "Ar slaptažodis turėtų būti išsaugotas ilgesniam laikui nei ši sesija.",
+       "authmanager-username-help": "Vartotojo vardas dėl autentikacijos.",
+       "authmanager-password-help": "Slaptažodis dėl autentikacijos.",
+       "authmanager-domain-help": "Domenas dėl išorinės autentikacijos.",
+       "authmanager-retype-help": "Slaptažodį dar kartą, kad patvirtintumėte.",
+       "authmanager-email-label": "El. paštas",
+       "authmanager-email-help": "El. pašto adresas",
+       "authmanager-realname-label": "Tikras vardas",
+       "authmanager-realname-help": "Tikras vartotojo vardas",
+       "authmanager-provider-password": "Autentifikacija slaptažodžiu",
+       "authmanager-provider-password-domain": "Autentifikavimas slaptažodžiu ir domenu",
+       "authmanager-provider-temporarypassword": "Laikinas slaptažodis",
+       "authprovider-confirmlink-request-label": "Paskyros, kurios turėtų būti susietos",
+       "authprovider-confirmlink-success-line": "$1: Susieta sėkmingai.",
+       "authprovider-confirmlink-failed": "Paskyros susiejimas nebuvo visiškai sėkmingas: $1",
+       "authprovider-confirmlink-ok-help": "Tęsti po susiejimo klaidos žinutės parodymo.",
+       "authprovider-resetpass-skip-label": "Praleisti",
+       "authprovider-resetpass-skip-help": "Praleisti slaptažodžio perstatymą.",
+       "specialpage-securitylevel-not-allowed-title": "Neleidžiama"
 }
index 5f16639..e5d9c93 100644 (file)
        "resetpass_submit": "Uzstādīt paroli un ieiet",
        "changepassword-success": "Tava parole tika nomainīta!",
        "botpasswords": "Botu paroles",
+       "botpasswords-disabled": "Botu paroles ir atspējotas.",
        "botpasswords-existing": "Esošās botu paroles",
        "botpasswords-createnew": "Izveidot jaunu bota paroli",
        "botpasswords-editexisting": "Rediģētu esošu bota paroli",
        "minoredit": "Maznozīmīgs labojums",
        "watchthis": "Uzraudzīt šo lapu",
        "savearticle": "Saglabāt lapu",
+       "savechanges": "Saglabāt izmaiņas",
        "publishpage": "Saglabāt lapu",
        "publishchanges": "Publicēt izmaiņas",
        "preview": "Pirmskats",
        "grant-group-email": "Sūtīt e-pastu",
        "grant-createaccount": "Izveidot kontu",
        "grant-editmywatchlist": "Labot uzraugāmo rakstu sarakstu",
+       "grant-editpage": "Labot esošās lapas",
+       "grant-editprotected": "Labot aizsargātās lapas",
+       "grant-basic": "Pamattiesības",
+       "grant-viewdeleted": "Skatīt dzēstos failus un lapas",
        "newuserlogpage": "Jauno dalībnieku reģistrs",
        "newuserlogpagetext": "Jauno lietotājvārdu reģistrs.",
        "rightslog": "Dalībnieku tiesību reģistrs",
        "action-read": "lasīt šo lapu",
        "action-edit": "labot šo lapu",
        "action-createpage": "izveidot šo lapu",
-       "action-createtalk": "izveidot diskusiju lapas",
+       "action-createtalk": "izveidot šo diskusiju lapu",
        "action-createaccount": "izveidot šo dalībnieka kontu",
        "action-history": "apskatīt šīs lapas vēsturi",
        "action-minoredit": "atzīmēt šo labojumu kā maznozīmīgu",
        "rcshowhidemine": "$1 manus",
        "rcshowhidemine-show": "Rādīt",
        "rcshowhidemine-hide": "Slēpt",
+       "rcshowhidecategorization": "$1 lapu kategorizēšanu",
        "rcshowhidecategorization-show": "Rādīt",
        "rcshowhidecategorization-hide": "Paslēpt",
        "rclinks": "Parādīt pēdējās $1 izmaiņas pēdējās $2 dienās.<br />$3",
        "upload-dialog-button-save": "Saglabāt",
        "upload-dialog-button-upload": "Augšupielādēt",
        "upload-form-label-infoform-title": "Papildinformācija",
+       "upload-form-label-infoform-name": "Nosaukums",
        "upload-form-label-infoform-description": "Apraksts",
        "upload-form-label-usage-title": "Pielietojums",
        "upload-form-label-usage-filename": "Faila nosaukums",
+       "upload-form-label-own-work": "Šis ir manis paša darbs",
        "upload-form-label-infoform-categories": "Kategorijas",
        "upload-form-label-infoform-date": "Datums",
        "backend-fail-stream": "Nevar straumēt failu $1.",
        "backend-fail-read": "Nevar lasīt failu $1.",
        "backend-fail-create": "Nevar izveidot failu $1.",
        "zip-wrong-format": "Norādītais fails nebija ZIP fails.",
-       "uploadstash-errclear": "Failu tīrīšana bija neveiksmīga.",
+       "uploadstash-errclear": "Failu tīrīšana neizdevās.",
        "uploadstash-refresh": "Atsvaidzināt failu sarakstu",
        "img-auth-accessdenied": "Pieeja liegta",
        "img-auth-nopathinfo": "Trūkst PATH_INFO.\nJūsu serveris nav konfigurēts nodot šo informāciju.\nTas var būt bāzēts uz CGI un neatbalstīt img_auth.\nSkatīt https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
        "alllogstext": "Visi pieejamie {{grammar:akuzatīvs{{SITENAME}}}} reģistri.\nTu vari sašaurināt aplūkojamo reģistru, izvēloties reģistra veidu, lietotāja vārdu vai reģistrēto lapu. Visi teksta lauki izšķir lielos un mazos burtus.",
        "logempty": "Reģistrā nav atbilstošu ierakstu.",
        "log-title-wildcard": "Meklēt virsrakstus, kas sākas ar šo tekstu",
+       "checkbox-select": "Izvēlēties: $1",
+       "checkbox-all": "Visus",
+       "checkbox-none": "Nevienu",
+       "checkbox-invert": "Otrādi",
        "allpages": "Visas lapas",
        "nextpage": "Nākamā lapa ($1)",
        "prevpage": "Iepriekšējā lapa ($1)",
        "mailnologin": "Nav adreses, uz kuru sūtīt",
        "mailnologintext": "Tev jābūt [[Special:UserLogin|iegājušam]], kā arī tev jābūt [[Special:Preferences|norādītai]] derīgai e-pasta adresei, lai sūtītu e-pastu citiem lietotājiem.",
        "emailuser": "Sūtīt e-pastu šim lietotājam",
-       "emailuser-title-target": "Nosūtīt e-pastu {{GENDER:$1|šim lietotājam|šai lietotājai}}",
+       "emailuser-title-target": "Nosūtīt e-pastu {{GENDER:$1|šim dalībniekam|šai dalībniecei}}",
        "emailuser-title-notarget": "Sūtīt e-pastu lietotājam",
        "emailpagetext": "Ar šo veidni ir iespējams nosūtīt e-pastu šim {{GENDER:$1|lietotājam}}.\nTā e-pasta adrese, kuru tu esi norādījis [[Special:Preferences|savā izvēļu lapā]], parādīsies e-pasta \"From\" lauciņā, tādejādi saņēmējs varēs tev atbildēt.",
        "defemailsubject": "{{SITENAME}} e-pasts no lietotāja \"$1\"",
        "wlheader-enotif": "E-pasta paziņojumi ir ieslēgti.",
        "wlheader-showupdated": "Lapas, kuras ir tikušas izmainītas, kopš tu tās pēdējoreiz apskatījies, te rādās ar '''pustrekniem''' burtiem",
        "wlshowlast": "Parādīt izmaiņas pēdējo $1 stundu laikā vai $2 dienu laikā, vai arī .",
+       "watchlist-hide": "Slēpt",
+       "watchlist-submit": "Rādīt",
        "wlshowhidebots": "boti",
        "wlshowhideliu": "reģistrēti lietotāji",
        "wlshowhideanons": "anonīmi lietotāji",
        "rollback-success": "Novērsu izmaiņas, ko izdarīja $1;\natjaunoju versiju, ko saglabāja $2.",
        "sessionfailure-title": "sesijas kļūda",
        "sessionfailure": "Ir radusies problēma ar sesijas autentifikāciju;\nšī darbība ir atcelta, lai novērstu lietotājvārda iespējami ļaunprātīgu izmantošanu.\nLūdzu, spied \"''back''\" un atjaunini iepriekšējo lapu. Tad mēģini vēlreiz.",
+       "changecontentmodel-title-label": "Lapas nosaukums",
        "changecontentmodel-reason-label": "Iemesls:",
        "changecontentmodel-submit": "Mainīt",
        "protectlogpage": "Aizsargāšanas reģistrs",
index 8b597d6..f0f3e1e 100644 (file)
        "title-invalid-magic-tilde": "Побараниот наслов содржи низа неважечки тилди (<nowiki>~~~</nowiki>).",
        "title-invalid-too-long": "Бараниот наслов е предолг. Не смее да биде поголем од  $1 {{PLURAL:$1|бајт|бајти}} шифриран според UTF-8.",
        "title-invalid-leading-colon": "Бараниот наслов содржи неважечки две точки на почетокот.",
-       "perfcached": "Следните податоци се меѓускладирани и може да не се тековни. Во меѓускладот {{PLURAL:$1|е достапен највеќе еден резултат|се достапни највеќе $1 резултати}}.",
-       "perfcachedts": "Следните податоци се меѓускладирани, последен пат подновени на $1. Во меѓускладот {{PLURAL:$4|е достапен највеќе еден резултат|се достапни највеќе $4 резултати}}.",
+       "perfcached": "Следните податоци се меѓускладирани и може да не се тековни. Во меѓускладот {{PLURAL:$1|е достапен највеќе еден запис|се достапни највеќе $1 записи}}.",
+       "perfcachedts": "Следните податоци се меѓускладирани, последен пат подновени на $1. Во меѓускладот {{PLURAL:$4|е достапен највеќе еден запис|се достапни највеќе $4 записи}}.",
        "querypage-no-updates": "Подновите на оваа страница моментално се оневозможени.\nПодатоците овде во моментов нема да се подновуваат.",
        "viewsource": "Преглед",
        "viewsource-title": "Преглед на кодот на $1",
        "right-applychangetags": "Задавање на [[Special:Tags|ознаки]] заедно со направените измени",
        "right-changetags": "Додавате и отстранување на произволни [[Special:Tags|ознаки]] во поединечни преработки и дневнички записи",
        "right-deletechangetags": "Бришење [[Special:Tags|ознаки]] од базата",
-       "grant-generic": "Ð\93Ñ\80Ñ\83па права „$1“",
+       "grant-generic": "Ð\97биÑ\80 права „$1“",
        "grant-group-page-interaction": "Опходување со страници",
        "grant-group-file-interaction": "Опходување со слики и снимки",
        "grant-group-watchlist-interaction": "Опходување со набљудуваните",
index 1714a3e..ebb6a50 100644 (file)
@@ -67,6 +67,7 @@
        "tog-watchdefault": "मी संपादित केलेली पाने आणि संचिका माझ्या निरीक्षणसूचीत टाका",
        "tog-watchmoves": "मी स्थानांतर केलेली पाने आणि संचिका माझ्या निरीक्षणसूचीत टाका",
        "tog-watchdeletion": "मी वगळलेली पाने आणि संचिका माझ्या निरीक्षणसूचीत टाका",
+       "tog-watchuploads": "मी अपभारीलेल्या नविन संचिका माझ्या निरीक्षणसूचीत जोडा",
        "tog-watchrollback": "यात ज्या पानात मी माझ्या निरीक्षणसूचीत पुनर्परतीची (रोलबॅक) क्रिया केलेली आहे.",
        "tog-minordefault": "सर्व संपादने 'छोटा बदल' म्हणून आपोआप जतन करा.",
        "tog-previewontop": "झलक संपादन खिडकीच्या आधी दाखवा",
        "prefs-email": "विपत्र पर्याय",
        "prefs-rendering": "देखावा",
        "saveprefs": "जतन करा",
-       "restoreprefs": "सरà¥\8dव à¤¡à¤¿à¤«à¥\89लà¥\8dà¤\9f मांडणी पूर्ववत करा (सर्व विभागात)",
+       "restoreprefs": "सरà¥\8dव à¤\85विà¤\9aल(डिफà¥\89लà¥\8dà¤\9f) मांडणी पूर्ववत करा (सर्व विभागात)",
        "prefs-editing": "संपादन",
        "rows": "ओळी:",
        "columns": "स्तंभ:",
index 27745d0..76e6484 100644 (file)
        "authprovider-confirmlink-request-label": "Cunte ca s'avesser'a cullegà",
        "authprovider-confirmlink-success-line": "$1: cullegato e apposto.",
        "authprovider-confirmlink-failed": "'O cullegamento 'e ll'utenza nun è ngarrato sano sano: $1",
-       "authprovider-confirmlink-ok-help": "Cuntinuà aropp'a fà veré 'e mmasciate 'errore 'e cullegamento."
+       "authprovider-confirmlink-ok-help": "Cuntinuà aropp'a fà veré 'e mmasciate 'errore 'e cullegamento.",
+       "authprovider-resetpass-skip-label": "Passa 'a vacca",
+       "authprovider-resetpass-skip-help": "Passa 'a vacca 'mpustazion' 'e password.",
+       "authform-nosession-login": "'O prucesso 'autenticazione iette buono, ma 'o navigatóre d' 'o tuojo nun \"s'arricuorda\" si site trasuto/a.",
+       "authform-nosession-signup": "'O cunto è stato criato buono, ma 'o navigatóre d' 'o tuojo nun \"s'arricuorda\" si site trasuto/a.",
+       "authform-newtoken": "Token mancante. $1",
+       "authform-notoken": "Token mancante",
+       "authform-wrongtoken": "Token errato",
+       "specialpage-securitylevel-not-allowed-title": "Nun permesso",
+       "authpage-cannot-login": "Nun se pò accummencià a trasì.",
+       "authpage-cannot-login-continue": "Nun se pò cuntinuà a trasì. 'A sessione vosta fosse scaduta.",
+       "authpage-cannot-create": "Nun se pò accummencià 'a criazione 'utenza."
 }
index 8182a4f..c08125f 100644 (file)
        "duration-centuries": "$1 {{PLURAL:$1|hundreår|hundreår}}",
        "duration-millennia": "$1 {{PLURAL:$1|tusenår|tusenår}}",
        "rotate-comment": "Biletet vart dreitt $1{{PLURAL:$1|°}} med klokka",
-       "limitreport-title": "Profildata for analysatoren:",
+       "limitreport-title": "Profildata for parseren:",
        "limitreport-cputime": "CPU-tidsbruk",
        "limitreport-cputime-value": "{{PLURAL:$1|eitt sekund|$1 sekund}}",
        "limitreport-walltime-value": "{{PLURAL:$1|eitt sekund|$1 sekund}}",
index 8eb3af7..0a13f29 100644 (file)
        "wlheader-showupdated": "Las paginas que son estadas modificadas dempuèi vòstra darrièra visita son afichadas en '''gras'''.",
        "wlnote": "Çaijós {{PLURAL:$1|figura la darrièra modificacion efectuada|figuran las <strong>$1</strong> darrièras modificacions efectuadas}} pendent {{PLURAL:$2|la darrièra ora|las <strong>$2</strong> darrièras oras}}, dempuèi $3, $4.",
        "wlshowlast": "Far veire las darrièras $1 oras, los darrièrs $2 jorns",
+       "wlshowhideminor": "cambiaments menors",
        "watchlist-options": "Opcions de la lista de seguiment",
        "watching": "Seguit...",
        "unwatching": "Fin del seguit...",
        "isredirect": "pagina de redireccion",
        "istemplate": "inclusion",
        "isimage": "ligam cap al fichièr",
-       "whatlinkshere-prev": "{{PLURAL:$1|precedent|$1 precedents}}",
+       "whatlinkshere-prev": "{{PLURAL:$1|precedenta|$1 precedentas}}",
        "whatlinkshere-next": "{{PLURAL:$1|seguent|$1 seguents}}",
        "whatlinkshere-links": "← ligams",
        "whatlinkshere-hideredirs": "$1 las redireccions",
        "table_pager_limit": "Far veire $1 elements per pagina",
        "table_pager_limit_label": "Resultats per pagina :",
        "table_pager_limit_submit": "Accedir",
-       "table_pager_empty": "Cap de resultat",
+       "table_pager_empty": "Pas cap de resultat",
        "autosumm-blank": "Blanquiment de la pagina",
        "autosumm-replace": "Resumit automatic : contengut remplaçat per « $1 ».",
        "autoredircomment": "Redireccion cap a [[$1]]",
index cb9ca86..cffe63d 100644 (file)
        "october-date": "$1 ਅਕਤੂਬਰ",
        "november-date": "$1 ਨਵੰਬਰ",
        "december-date": "$1 ਦਸੰਬਰ",
+       "period-am": "ਏਐਮ",
+       "period-pm": "ਪੀਐਮ",
        "pagecategories": "{{PLURAL:$1|ਸ਼੍ਰੇਣੀ|ਸ਼੍ਰੇਣੀਆਂ}}",
        "category_header": "ਸ਼੍ਰੇਣੀ \"$1\" ਵਿੱਚ ਲੇਖ",
        "subcategories": "ਉਪਸ਼੍ਰੇਣੀਆਂ",
        "mypage": "ਸਫ਼ਾ",
        "mytalk": "ਗੱਲ-ਬਾਤ",
        "anontalk": "ਗੱਲ-ਬਾਤ",
-       "navigation": "ਫà©\87ਰà©\80 à¨ªà¨¾à¨\93",
+       "navigation": "ਨà©\87ਵà©\80à¨\97à©\87ਸ਼ਨ",
        "and": "&#32;ਅਤੇ",
        "qbfind": "ਖੋਜ",
        "qbbrowse": "ਝਲਕ",
        "createaccount-title": "{{SITENAME}} ਲਈ ਅਕਾਊਂਟ ਬਣਾਉਣਾ",
        "createaccount-text": "ਕਿਸੇ ਨੇ \"$2\" ਮੈਂਬਰ-ਨਾਮ ਅਤੇ \"$3\" ਪਾਸਵਰਡ ਨਾਲ਼ {{SITENAME}} ($4) ਤੇ, ਤੁਹਾਡਾ ਈ-ਮੇਲ ਪਤਾ ਵਰਤਦੇ ਹੋਏ, ਖਾਤਾ ਬਣਾਇਆ ਹੈ।\nਤੁਹਾਨੂੰ ਹੁਣੇ ਲਾਗਇਨ ਕਰਕੇ ਆਪਣਾ ਪਾਸਵਰਡ ਬਦਲਣਾ ਚਾਹੀਦਾ ਹੈ।\n\nਜੇ ਇਹ ਖਾਤਾ ਗ਼ਲਤੀ ਨਾਲ਼ ਬਣ ਗਿਆ ਹੈ ਤਾਂ ਤੁਸੀਂ ਇਸ ਸੁਨੇਹੇ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰ ਸਕਦੇ ਹੋ।",
        "login-throttled": "ਤੁਸੀਂ ਬਹੁਤ ਸਾਰੀਆਂ ਤਾਜ਼ਾ ਲਾਗਇਨ ਕੋਸ਼ਿਸ਼ਾਂ ਕੀਤੀਆਂ ਹਨ।\nਮੁੜ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ $1 ਉਡੀਕ ਕਰੋ ਜੀ।",
-       "login-abort-generic": "ਤà©\81ਹਾਡਾ à¨¦à¨¾à¨\96਼ਲਾ à¨¨à¨¾à¨\95ਾਮ ਸੀ - ਅਧੂਰਾ ਛੱਡਿਆ",
+       "login-abort-generic": "ਤà©\81ਹਾਡਾ à¨¦à¨¾à¨\96਼ਲਾ à¨\85ਸਫਲ ਸੀ - ਅਧੂਰਾ ਛੱਡਿਆ",
        "login-migrated-generic": "ਤੁਹਾਡੇ ਖਾਤੇ ਦੀ ਥਾਂ ਬਦਲ ਦਿੱਤੀ ਗਈ ਹੈ ਅਤੇ ਤੁਹਾਡਾ ਵਰਤੋਂਕਾਰ-ਨਾਂ ਹੁਣ ਇਸ ਵਿਕੀ 'ਤੇ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।",
        "loginlanguagelabel": "ਭਾਸ਼ਾ: $1",
        "suspicious-userlogout": "ਤੁਹਾਡੀ ਵਿਦਾਇਗੀ ਦੀ ਬੇਨਤੀ ਨਕਾਰ ਦਿੱਤੀ ਗਈ ਕਿਉਂਕਿ ਲੱਗਦਾ ਹੈ ਕਿ ਇਹ ਕਿਸੇ ਟੁੱਟੇ ਹੋਏ ਬਰਾਊਜ਼ਰ ਜਾਂ ਕੈਸ਼ ਹੋਈ ਪ੍ਰਾਕਸੀ ਤੋਂ ਭੇਜੀ ਗਈ ਸੀ।",
        "resetpass_submit": "ਪਾਸਵਰਡ ਸੈੱਟ ਕਰੋ ਅਤੇ ਲਾਗਇਨ ਕਰੋ",
        "changepassword-success": "ਤੁਹਾਡਾ ਪਾਸਵਰਡ ਠੀਕ ਤਰ੍ਹਾਂ ਬਦਲਿਆ ਜਾ ਚੁੱਕਾ ਹੈ!",
        "changepassword-throttled": "ਤੁਸੀਂ ਦਾਖ਼ਲ ਹੋਣ ਦੀਆਂ ਬਹੁਤ ਸਾਰੀਆਂ ਤਾਜ਼ਾ ਕੋਸ਼ਿਸ਼ਾਂ ਕੀਤੀਆਂ ਹਨ।\nਮੁੜ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ $1 ਉਡੀਕ ਕਰੋ ਜੀ।",
+       "botpasswords": "ਬੌਟ ਪਾਸਵਰਡ",
+       "botpasswords-label-appid": "ਬੌਟਾ ਨਾੰ:",
+       "botpasswords-label-create": "ਬਣਾਓ",
+       "botpasswords-label-update": "ਨਵਿਆਉ",
+       "botpasswords-label-cancel": "ਰੱਦ ਕਰੋ",
+       "botpasswords-label-delete": "ਮਿਟਾਓ",
+       "botpasswords-label-resetpassword": "ਪਾਸਵਰਡ ਮੁੜ-ਸੈੱਟ ਕਰੋ",
        "resetpass_forbidden": "ਪਾਸਵਰਡ ਬਦਲਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ",
        "resetpass-no-info": "ਇਸ ਸਫ਼ੇ ਨੂੰ ਸਿੱਧੇ ਹੀ ਵੇਖਣ ਲਈ ਤੁਹਾਨੂੰ ਲਾਗਇਨ ਕਰਨਾ ਪਵੇਗਾ।",
        "resetpass-submit-loggedin": "ਪਛਾਣ-ਸ਼ਬਦ ਬਦਲੋ",
        "passwordreset-emailsentemail": "ਇੱਕ ਪਾਸਵਰਡ ਮੁੜ-ਸੈੱਟ ਈ-ਮੇਲ ਭੇਜੀ ਜਾ ਚੁੱਕੀ ਹੈ।",
        "passwordreset-emailsent-capture": "ਇੱਕ ਯਾਦ-ਦਹਾਨੀ ਈ-ਮੇਲ, ਜਿਹੜੀ ਕਿ ਹੇਠਾਂ ਦਿੱਸ ਰਹੀ ਹੈ, ਭੇਜੀ ਜਾ ਚੁੱਕੀ ਹੈ।",
        "passwordreset-emailerror-capture": "ਪਛਾਣ-ਸ਼ਬਦ ਮੁੜ ਬਣਾਉਣ ਵਾਸਤੇ ਈਮੇਲ ਤਿਆਰ ਹੋ ਗਈ ਸੀ, ਜੋ ਹੇਠਾਂ ਵਿਖਾਈ ਗਈ ਹੈ, ਪਰ ਇਹਨੂੰ {{GENDER:$2|ਵਰਤੋਂਕਾਰ}} ਵੱਲ ਨਹੀਂ ਘੱਲਿਆ ਜਾ ਸਕਿਆ: $1",
-       "changeemail": "ਈ-ਮੇਲ ਸਿਰਨਾਵਾਂ ਬਦਲੋ",
+       "passwordreset-invalideamil": "ਗ਼ਲਤ ਈਮੇਲ ਪਤਾ",
+       "changeemail": "ਈ-ਮੇਲ ਸਿਰਨਾਵਾਂ ਬਦਲੋ ਜਾੰ ਹਟਾਓ",
        "changeemail-header": "ਖਾਤੇ ਵਾਲਾ ਈ-ਮੇਲ ਸਿਰਨਾਵਾਂ ਬਦਲੋ",
        "changeemail-no-info": "ਇਸ ਸਫ਼ੇ ਨੂੰ ਸਿੱਧੇ ਹੀ ਵੇਖਣ ਲਈ ਤੁਹਾਨੂੰ ਲਾਗਇਨ ਕਰਨਾ ਪਵੇਗਾ।",
        "changeemail-oldemail": "ਮੌਜੂਦਾ ਈਮੇਲ ਸਿਰਨਾਵਾਂ:",
        "minoredit": "ਇਹ ਇੱਕ ਛੋਟੀ ਸੋਧ ਹੈ",
        "watchthis": "ਇਸ ਸਫ਼ੇ ’ਤੇ ਨਜ਼ਰ ਰੱਖੋ",
        "savearticle": "ਸਫ਼ਾ ਸਾਂਭੋ",
+       "savechanges": "ਤਬਦੀਲੀਆਂ ਸਾਂਭੋ",
        "preview": "ਝਲਕ",
        "showpreview": "ਝਲਕ ਵਿਖਾਓ",
        "showdiff": "ਤਬਦੀਲੀਆਂ ਵਿਖਾਉ",
        "missingsummary": "'''ਯਾਦ-ਦਹਾਨੀ:''' ਤੁਸੀਂ ਸੋਧ ਸਾਰ ਮੁਹੱਈਆ ਨਹੀਂ ਕਰਵਾਇਆ। ਜੇ ਤੁਸੀਂ \"{{int:savearticle}}\" ਤੇ ਦੁਬਾਰਾ ਕਲਿੱਕ ਕੀਤਾ ਤਾਂ ਤੁਹਾਡਾ ਸਫ਼ਾ ਇਸਦੇ ਬਿਨਾਂ ਹੀ ਸਾਂਭਿਆ ਜਾਵੇਗਾ।",
        "missingcommenttext": "ਹੇਠਾਂ ਇੱਕ ਟਿੱਪਣੀ ਦਿਓ।",
        "summary-preview": "ਸੋਧ ਸਾਰ ਦੀ ਝਲਕ:",
-       "subject-preview": "ਵਿਸ਼ੇ/ਸਿਰਨਾਵੇਂ ਦੀ ਝਲਕ:",
+       "subject-preview": "ਵਿਸ਼ੇ ਦੀ ਝਲਕ:",
        "previewerrortext": "ਤੁਹਾਡੀਆਂ ਤਬਦੀਲੀਆਂ ਦੀ ਝਲਕ ਵਿਖਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਵਿੱਚ ਗ਼ਲਤੀ ਆ ਗਈ।",
        "blockedtitle": "ਵਰਤੋਂਕਾਰ ਉੱਤੇ ਪਾਬੰਦੀ ਲੱਗੀ ਹੋਈ ਹੈ",
        "blockedtext": "'''ਤੁਹਾਡੇ ਮੌਮਬਰ ਨਾਮ ਜਾਂ IP ਪਤੇ ’ਤੇ ਪਾਬੰਦੀ ਲੱਗ ਚੁੱਕੀ ਹੈ।'''\n\nਪਾਬੰਦੀ $1 ਨੇ ਲਾਈ ਹੈ।\nਦਿੱਤਾ ਗਿਆ ਕਾਰਨ ਇਹ ਹੈ, ''$2''।\n\n* ਪਾਬੰਦੀ ਸ਼ੁਰੂ: $8\n* ਪਾਬੰਦੀ ਖਤਮ: $6\n* ਪਾਬੰਦੀ ਲਾਉਣ ਵਾਲੇ ਦਾ ਇਰਾਦਾ: $7\n\nਪਾਬੰਦੀ ਬਾਰੇ ਚਰਚਾ ਕਰਨ ਲਈ ਤੁਸੀਂ $1 ਜਾਂ ਕਿਸੇ ਹੋਰ\n[[{{MediaWiki:Grouppage-\nsysop}}|administrator]] ਨਾਲ ਰਾਬਤਾ ਕਰ ਸਕਦੇ ਹੋ।\nਤੁਸੀਂ 'ਇਸ ਮੈਂਬਰ ਨੂੰ ਈ-ਮੇਲ ਭੇਜੋ' ਸਹੂਲਤ ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕਰ ਸਕਦੇ ਜੇ ਤੁਹਾਡੀਆਂ [[Special:Preferences|ਖਾਤਾ ਪਸੰਦਾਂ]] ਵਿੱਚ ਇੱਕ ਸਹੀ ਈ-ਮੇਲ ਪਤਾ ਨਹੀਂ ਦਿੱਤਾ ਗਿਆ ਜਾਂ ਜੇ ਤੁਹਾਡੇ ਇਸਨੂੰ ਵਰਤਣ ਤੇ ਪਾਬੰਦੀ ਹੈ।\nਤੁਹਾਡਾ ਚਾਲੂ IP ਪਤਾ $3 ਹੈ,\nਅਤੇ ਪਾਬੰਦੀ ਪਤਾ #$5 ਹੈ।\nਮਿਹਰਬਾਨੀ ਕਰਕੇ ਆਪਣੇ ਕਿਸੇ ਵੀ ਸਵਾਲ ਜਾਂ ਪੁੱਛ-ਗਿੱਛ ਵਿਚ ਇਹ ਉੱਪਰਲੀ ਤਫ਼ਸੀਲ ਜ਼ਰੂਰ ਸ਼ਾਮਲ ਕਰੋ।",
        "history-feed-empty": "ਦਰਖ਼ਾਸਤਸ਼ੁਦਾ ਸਫ਼ਾ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।\nਸ਼ਾਇਦ ਇਸਨੂੰ ਵਿਕੀ ਤੋਂ ਮਿਟਾ ਦਿੱਤਾ ਗਿਆ ਹੈ ਜਾਂ ਨਾਮ ਬਦਲ ਦਿੱਤਾ ਗਿਆ ਹੈ।\nਵਿਕੀ ਦੇ ਨਵੇਂ ਮੁਨਾਸਿਬ ਸਫ਼ਿਆਂ ਵਿਚ [[Special:Search|ਲੱਭਣ]] ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ।",
        "rev-deleted-comment": "(ਸੋਧ ਸਾਰ ਹਟਾਇਆ)",
        "rev-deleted-user": "(ਵਰਤੋਂਕਾਰ ਨਾਂ ਹਟਾਇਆ)",
-       "rev-deleted-event": "(ਲਾà¨\97 à¨\95ਾਰਵਾà¨\88 à¨¹à¨\9fਾà¨\88 à¨\97à¨\88)",
+       "rev-deleted-event": "(ਲਾà¨\97 à¨µà©\87ਰਵਾ à¨¹à¨\9fਾà¨\87à¨\86 à¨\97ਿà¨\86)",
        "rev-deleted-user-contribs": "[ਮੈਂਬਰ-ਨਾਂ ਜਾਂ IP ਪਤਾ ਹਟਾਇਆ - ਸੋਧ ਯੋਗਦਾਨਾਂ ਵਿਚੋਂ ਓਹਲੇ ਕੀਤੀ]",
        "rev-deleted-text-permission": "ਸਫ਼ੇ ਦੀ ਇਹ ਰੀਵਿਜ਼ਨ '''ਮਿਟਾਈ''' ਜਾ ਚੁੱਕੀ ਹੈ।\nਤਫ਼ਸੀਲ [{{fullurl:{{#Special:Log}}/delete|\npage={{FULLPAGENAMEE}}}} ਮਿਟਾਉਣ ਦੇ ਚਿੱਠੇ] ਵਿਚ ਵੇਖੀ ਜਾ ਸਕਦੀ ਹੈ।",
        "rev-deleted-text-unhide": "ਸਫ਼ੇ ਦੀ ਇਹ ਰੀਵਿਜ਼ਨ '''ਮਿਟਾਈ''' ਜਾ ਚੁੱਕੀ ਹੈ।\nਤਫ਼ਸੀਲ [{{fullurl:{{#Special:Log}}/delete|\npage={{FULLPAGENAMEE}}}} ਮਿਟਾਉਣ ਦੇ ਚਿੱਠੇ] ਵਿਚ ਵੇਖੀ ਜਾ ਸਕਦੀ ਹੈ।\nਜੇ ਤੁਸੀਂ ਅੱਗੇ ਵਧਣਾ ਚਾਹੋ ਤਾਂ ਹਾਲੇ ਵੀ [$1 ਇਹ ਰੀਵਿਜ਼ਨ ਵੇਖ] ਸਕਦੇ ਹੋ।",
        "mergehistory-submit": "ਰੀਵਿਜ਼ਨਾਂ ਰਲ਼ਾਓ",
        "mergehistory-empty": "ਕੋਈ ਰੀਵਿਜ਼ਨ ਰਲ਼ਾਈ ਨਹੀ ਜਾ ਸਕਦੀ।",
        "mergehistory-done": "$1 {{PLURAL:|ਦੀ|ਦੀਆਂ}} $3 {{PLURAL:$3|ਰੀਵਿਜ਼ਨ|ਰੀਵਿਜ਼ਨਾਂ}} ਕਾਮਯਾਬੀ ਨਾਲ਼ [[:$2]] ਵਿਚ {{PLURAL:$3|ਰਲ਼ਾਈ|ਰਲ਼ਾਈਆਂ}}।",
+       "mergehistory-fail-bad-timestamp": "ਸਮਾੰਮੋਹਰ ਗਲਤ ਹੈ।",
+       "mergehistory-fail-invalid-source": "ਸਰੋਤ ਸਫ਼ਾ ਗਲਤ ਹੈ।",
        "mergehistory-no-source": "ਸਰੋਤ ਸਫ਼ਾ $1 ਮੌਜੂਦ ਨਹੀਂ ਹੈ।",
        "mergehistory-no-destination": "ਨੀਯਤ ਸਫ਼ਾ $1 ਮੌਜੂਦ ਨਹੀਂ ਹੈ।",
        "mergehistory-invalid-source": "ਸਰੋਤ ਸਫ਼ਾ ਇੱਕ ਸਹੀ ਸਿਰਲੇਖ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।",
        "prefs-rc": "ਹਾਲੀਆ ਤਬਦੀਲੀਆਂ",
        "prefs-watchlist": "ਨਿਗਰਾਨ-ਸੂਚੀ",
        "prefs-editwatchlist": "ਨਿਗਰਾਨੀ-ਲਿਸਟ ਸੋਧੋ",
+       "prefs-editwatchlist-clear": "ਆਪਣੀ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਸਾਫ ਕਰੋ",
        "prefs-watchlist-days": "ਨਿਗਰਾਨੀ-ਲਿਸਟ ਵਿਚ ਦਿਖਾਉਣ ਲਈ ਦਿਨ:",
        "prefs-watchlist-days-max": "ਵੱਧ ਤੋਂ ਵੱਧ $1 {{PLURAL:$1|ਦਿਨ|ਦਿਨ}}",
        "prefs-watchlist-edits": "ਵਧਾਈ ਹੋਈ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਵਿਚ ਦਿਖਾਉਣ ਲਈ ਵੱਧ ਤੋਂ ਵੱਧ ਤਬਦੀਲੀਆਂ:",
        "prefs-watchlist-token": "ਨਿਗਰਾਨੀ-ਲਿਸਟ ਟੋਕਨ:",
        "prefs-misc": "ਫੁਟਕਲ",
        "prefs-resetpass": "ਪਛਾਣ-ਸ਼ਬਦ ਬਦਲੋ",
-       "prefs-changeemail": "ਈ-ਮੇਲ ਪਤਾ ਬਦਲੋ",
+       "prefs-changeemail": "ਈ-ਮੇਲ ਪਤਾ ਬਦਲੋ ਜਾੰ ਹਟਾਓ",
        "prefs-setemail": "ਈ-ਮੇਲ ਪਤਾ ਸੈੱਟ ਕਰੋ",
        "prefs-email": "ਈਮੇਲ ਚੋਣਾਂ",
        "prefs-rendering": "ਦਿੱਖ",
        "right-upload_by_url": "URL ਤੋਂ ਫਾਇਲਾਂ ਅੱਪਲੋਡ ਕਰੋ",
        "right-autoconfirmed": "ਨੀਮ-ਸੁਰੱਖਿਅਤ ਸਫ਼ਿਆਂ ਨੂੰ ਸੋਧਣਾ",
        "right-bot": "ਇੱਕ ਸਵੈ-ਚਾਲਤ ਅਮਲ ਵਜੋਂ ਗਿਣਿਆ ਜਾਣਾ",
-       "right-writeapi": "à¨\8fਪà©\80à¨\86à¨\88(API) à¨¦à©\80 à¨µà¨°à¨¤à©\8bà¨\82",
+       "right-writeapi": "ਲਿà¨\96ਾà¨\88 à¨\8fਪà©\80à¨\86à¨\88 à¨¦à©\80 à¨µà¨°à¨¤à©\8bà©°",
        "right-delete": "ਸਫ਼ੇ ਹਟਾਓ",
        "right-bigdelete": "ਵੱਡੇ ਅਤੀਤ ਵਾਲੇ ਪੰਨੇ ਮਿਟਾਉਣੇ",
        "right-browsearchive": "ਮਿਟਾਏ ਹੋਏ ਸਫ਼ੇ ਖੋਜੋ",
        "right-siteadmin": "ਡੈਟਾਬੇਸ ਨੂੰ ਤਾਲਾ ਲਾਉਣਾ ਤੇ ਖੋਲ੍ਹਣਾ",
        "right-sendemail": "ਦੂਜੇ ਮੈਂਬਰਾਂ ਨੂੰ ਈ-ਮੇਲ ਭੇਜਣਾ",
        "right-passwordreset": "ਪਾਸਵਰਡ ਮੁੜ-ਸੈੱਟ ਈਮੇਲ ਵੇਖੋ",
+       "grant-group-email": "ਈ-ਮੇਲ ਭੇਜੋ",
+       "grant-group-customization": "ਅਨੁਕੂਲਨ ਅਤੇ ਪਸੰਦਾੰ",
+       "grant-createaccount": "ਖਾਤੇ ਬਣਾਓ",
+       "grant-createeditmovepage": "ਸਫ਼ੇ ਬਣਾਓ, ਸੋਧ, ਅਤੇ ਹਿੱਲਾਓ",
+       "grant-editmywatchlist": "ਆਪਣੀ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਸੋਧੋ",
+       "grant-editprotected": "ਸੁਰੱਖਿਅਤ ਸਫ਼ੇ ਸੋਧ",
+       "grant-uploadfile": "ਨਵੀਆੰ ਫਾਈਲਾੰ ਅੱਪਲੋਡ ਕਰੋ",
+       "grant-basic": "ਬੁਨਿਆਦੀ ਹੱਕ",
+       "grant-viewmywatchlist": "ਆਪਣੀ ਨਿਗਰਾਨੀ-ਸੂਚੀ ਵੇਖੋ",
        "newuserlogpage": "ਬਣਾਏ ਖਾਤਿਆਂ ਦਾ ਚਿੱਠਾ",
        "newuserlogpagetext": "ਇਹ ਬਣੇ ਮੈਂਬਰਾਂ ਦਾ ਚਿੱਠਾ ਹੈ।",
        "rightslog": "ਵਰਤੋਂਕਾਰ ਹੱਕਾਂ ਦਾ ਚਿੱਠਾ",
        "rightslogtext": "ਇਹ ਮੈਂਬਰ ਹੱਕਾਂ ਵਿਚ ਹੋਈਆਂ ਤਬਦੀਲੀਆਂ ਦਾ ਚਿੱਠਾ ਹੈ।",
        "action-read": "ਇਹ ਸਫ਼ਾ ਪੜ੍ਹੋ",
        "action-edit": "ਇਹ ਸਫ਼ਾ ਸੋਧੋ",
-       "action-createpage": "ਸਫ਼à©\87 ਬਣਾਓ",
-       "action-createtalk": "à¨\9aਰà¨\9aਾ à¨¸à¨«à¨¼à©\87 ਬਣਾਉਣ",
+       "action-createpage": "à¨\87ਹ à¨¸à¨«à¨¼à¨¾ ਬਣਾਓ",
+       "action-createtalk": "à¨\87ਹ à¨\9aਰà¨\9aਾ à¨¸à¨«à¨¼à¨¾ ਬਣਾਉਣ",
        "action-createaccount": "ਇਹ ਵਰਤੋਂਕਾਰ ਖਾਤਾ ਬਣਾਓ",
        "action-history": "ਇਸ ਸਫ਼ੇ ਦਾ ਅਤੀਤ ਵੇਖੋ",
        "action-minoredit": "ਇਹ ਸੋਧ ਨੂੰ ਛੋਟੀ ਤੌਰ ਉੱਤੇ ਮੰਨੋ",
        "action-block": "ਇਸ ਮੈਂਬਰ ਦੇ ਸੋਧ ਕਰਨ ਤੇ ਪਾਬੰਦੀ ਲਾਓ",
        "action-protect": "ਇਸ ਸਫ਼ੇ ਦੀ ਸੁਰੱਖਿਆ ਬਦਲੋ",
        "action-import": "ਹੋਰ ਵਿਕੀ ਤੋਂ ਇਹ ਸਫ਼ਾ ਲਵੋ",
-       "action-importupload": "ਫ਼ਾà¨\88ਲ à¨\85ੱਪਲà©\8bਡ à¨¤à©\8bà¨\82 à¨\87ਹ à¨¸à¨«à¨¼à¨¾ ਮੰਗਾਓ",
+       "action-importupload": "ਫ਼ਾà¨\88ਲ à¨\85ੱਪਲà©\8bਡ à¨¤à©\8bà¨\82 à¨¸à¨«à©\87 ਮੰਗਾਓ",
        "action-unwatchedpages": "ਨਜ਼ਰ ਨਾ ਰੱਖੇ ਜਾ ਰਹੇ ਸਫ਼ਿਆਂ ਦੀ ਸੂਚੀ ਵੇਖੋ",
        "action-mergehistory": "ਇਸ ਸਫ਼ੇ ਦੇ ਅਤੀਤ ਨੂੰ ਰਲ਼ਾਉਣ",
        "action-userrights": "ਵਰਤੋਂਕਾਰ ਦੇ ਸਾਰੇ ਹੱਕ ਸੋਧਣ",
        "recentchanges-feed-description": "ਇਸ ਵਿਕੀ ’ਤੇ ਹਾਲ ‘ਚ ਹੋਈਆਂ ਤਬਦੀਲੀਆਂ ਇਸ ਫ਼ੀਡ ’ਚ ਵੇਖੀਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ।",
        "recentchanges-label-newpage": "ਇਸ ਸੋਧ ਨਾਲ਼ ਨਵਾਂ ਸਫ਼ਾ ਬਣਿਆ ਹੈ",
        "recentchanges-label-minor": "ਇਹ ਇੱਕ ਛੋਟੀ ਸੋਧ ਹੈ",
-       "recentchanges-label-bot": "à¨\87ਹ à¨¸à©\8bਧ à¨\87ੱà¨\95 à¨¬à©\8bਟ ਦੁਆਰਾ ਕੀਤੀ ਗਈ ਸੀ",
+       "recentchanges-label-bot": "à¨\87ਹ à¨¸à©\8bਧ à¨\87ੱà¨\95 à¨¬à©\8cਟ ਦੁਆਰਾ ਕੀਤੀ ਗਈ ਸੀ",
        "recentchanges-label-unpatrolled": "ਇਹ ਫੇਰ-ਬਦਲ ਹਾਲੇ ਵੇਖਿਆ ਨਹੀਂ ਗਿਆ",
        "recentchanges-label-plusminus": "ਸਫ਼ੇ ਵਿੱਚ ਇੰਨੀਆਂ ਬਾਈਟਾਂ ਦੀ ਤਬਦੀਲੀ ਹੋਈ",
        "recentchanges-legend-heading": "<strong>ਟੀਕਾ:</strong>",
        "rcshowhidemine": "ਮੇਰੀਆਂ ਤਬਦੀਲੀਆਂ  $1",
        "rcshowhidemine-show": "ਵੇਖੋ",
        "rcshowhidemine-hide": "ਓਹਲੇ",
+       "rcshowhidecategorization-show": "ਦਿਖਾਓ",
+       "rcshowhidecategorization-hide": "ਲੁਕਾਉ",
        "rclinks": "ਪਿਛਲੇ $2 ਦਿਨਾਂ ਵਿੱਚ ਹੋਈਆਂ $1 ਤਬਦੀਲੀਆਂ ਵਖਾਓ<br /> $3",
        "diff": "ਫ਼ਰਕ",
        "hist": "ਅਤੀਤ",
        "upload-file-error": "ਅੰਦਰੂਨੀ ਗਲਤੀ",
        "upload-misc-error": "ਅਣਪਛਾਤੀ ਅੱਪਲੋਡ ਗਲਤੀ",
        "upload-http-error": "ਇੱਕ HTTP ਗ਼ਲਤੀ ਹੋਈ: $1",
+       "upload-dialog-title": "ਫ਼ਾਈਲ ਅਪਲੋਡ ਕਰੋ",
+       "upload-dialog-button-cancel": "ਰੱਦ ਕਰੋ",
+       "upload-dialog-button-done": "ਮੁਕੰਮਲ",
+       "upload-dialog-button-save": "ਸਾਂਭੋ",
+       "upload-dialog-button-upload": "ਅੱਪਲੋਡ",
+       "upload-form-label-infoform-title": "ਵੇਰਵਾ",
+       "upload-form-label-infoform-name": "ਨਾਂ",
+       "upload-form-label-infoform-description": "ਵਰਨਣ",
+       "upload-form-label-usage-title": "ਉਪਯੋਗਤਾ",
+       "upload-form-label-usage-filename": "ਫ਼ਾਈਲ ਦਾ ਨਾਂ",
+       "upload-form-label-own-work": "ਇਹ ਮੇਰਾ ਆਪਣਾ ਕੰਮ ਹੈ",
+       "upload-form-label-infoform-categories": "ਸ਼੍ਰੇਣੀਆਂ",
        "upload-form-label-infoform-date": "ਤਾਰੀਖ਼",
        "backend-fail-notexists": "ਫ਼ਾਈਲ $1 ਮੌਜੂਦ ਨਹੀਂ ਹੈ।",
        "backend-fail-delete": "ਫ਼ਾਈਲ \"$1\" ਮਿਟਾਈ ਨਹੀਂ ਜਾ ਸਕੀ।",
        "backend-fail-create": "\"$1\" ਫ਼ਾਈਲ ਲਿਖੀ ਨਾ ਜਾ ਸਕੀ।",
        "zip-wrong-format": "ਦੱਸੀ ਗਈ ਫ਼ਾਈਲ ਜ਼ਿੱਪ ਫ਼ਾਈਲ ਨਹੀਂ ਸੀ।",
        "uploadstash-refresh": "ਫ਼ਾਈਲਾਂ ਦੀ ਲਿਸਟ ਨੂੰ ਤਾਜ਼ਾ ਕਰੋ",
+       "uploadstash-thumbnail": "ਥੰਮਨੇਲ ਵੇਖੋ",
        "img-auth-accessdenied": "ਪਹੁੰਚ ਨਕਾਰੀ ਗਈ",
        "img-auth-nofile": "ਫ਼ਾਈਲ \"$1\" ਮੌਜੂਦ ਨਹੀਂ ਹੈ।",
+       "http-invalid-url": "ਗਲਤ URL: $1",
        "upload-curl-error6": "URL ’ਤੇ ਪਹੁੰਚਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ।",
        "upload-curl-error6-text": "ਦਿੱਤੇ ਹੋਏ URL ’ਤੇ ਪਹੁੰਚਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ।\nਮਿਹਰਬਾਨੀ ਕਰਕੇ ਦੁਬਾਰਾ ਜਾਂਚ ਕਰੋ ਕਿ URL ਸਹੀ ਹੈ ਅਤੇ ਸਾਈਟ ਉਪਲੱਬਧ ਹੈ।",
        "upload-curl-error28": "ਅੱਪਲੋਡ ਟਾਈਮ-ਆਉਟ",
        "uploadnewversion-linktext": "ਇਸ ਫਾਇਲ ਦਾ ਇੱਕ ਨਵਾਂ ਵਰਜਨ ਅੱਪਲੋਡ ਕਰੋ",
        "shared-repo-from": "$1 ਤੋਂ",
        "shared-repo": "ਕੋਈ ਸਾਂਝਾ ਕੀਤਾ ਭੰਡਾਰ",
-       "upload-disallowed-here": "ਤà©\81ਸà©\80à¨\82 à¨\87ਸ à¨«à¨¼à¨¾à¨\88ਲ à¨\89ੱਤà©\87 à¨¨à¨¹à©\80à¨\82 à¨¨à¨¹à©\80à¨\82 à¨²à¨¿à¨\96 à¨¸à¨\95ਦà©\87।",
+       "upload-disallowed-here": "ਤੁਸੀਂ ਇਸ ਫ਼ਾਈਲ ਉੱਤੇ ਨਹੀਂ ਲਿਖ ਸਕਦੇ।",
        "filerevert": "$1 ਰੀਵਰਟ",
        "filerevert-legend": "ਫਾਇਲ ਰੀਵਰਟ",
        "filerevert-comment": "ਕਾਰਨ:",
        "randomincategory-nopages": "[[:Category:$1|$1]] ਸ਼੍ਰੇਣੀ ਵਿਚ ਕੋਈ ਸਫ਼ਾ ਨਹੀਂ ਹੈ।",
        "randomincategory-category": "ਵਰਗ:",
        "randomincategory-legend": "ਵਰਗ ਵਿਚਲਾ ਰਲ਼ਵਾਂ ਸਫ਼ਾ",
+       "randomincategory-submit": "ਜਾਓ",
        "randomredirect": "ਰਲ਼ਵਾਂ ਰੀਡਿਰੈਕਟ",
        "statistics": "ਅੰਕੜੇ",
        "statistics-header-pages": "ਸਫ਼ਾ ਅੰਕੜੇ",
        "pager-newer-n": "{{PLURAL:$1|1 ਨਵਾਂ|$1 ਨਵੇਂ}}",
        "pager-older-n": "{{PLURAL:$1|1 ਪੁਰਾਣਾ|$1 ਪੁਰਾਣੇ}}",
        "suppress": "ਨਿਗਰਾਨ",
+       "apihelp": "API ਮਦਦ",
+       "apihelp-no-such-module": "ਮੌਡੂਲ \"$1\" ਨਹੀਂ ਲੱਭਾ।",
+       "apisandbox-unfullscreen": "ਸਫ਼ਾ ਵੇਖਾਓ",
+       "apisandbox-reset": "ਸਾਫ਼ ਕਰੋ",
+       "apisandbox-retry": "ਮੁੜ-ਕੋਸ਼ਿਸ਼ ਕਰੋ",
+       "apisandbox-helpurls": "ਮਦਦ ਜੋੜ",
+       "apisandbox-examples": "ਮਿਸਾਲਾਂ",
+       "apisandbox-results": "ਨਤੀਜੇ",
        "booksources": "ਪੁਸਤਕਾਂ ਦੇ ਸਰੋਤ",
        "booksources-search-legend": "ਕਿਤਾਬਾਂ ਦੇ ਸਰੋਤ ਖੋਜੋ",
        "booksources-search": "ਭਾਲ਼",
        "listgrouprights-removegroup-self-all": "ਆਪਣੇ ਖਾਤੇ ਤੋਂ ਸਾਰੇ ਸਮੂਹ ਹਟਾਓ",
        "listgrouprights-namespaceprotection-header": "ਨਾਂ-ਥਾਂ ਦੀਆਂ ਬੰਧੇਜਾਂ",
        "listgrouprights-namespaceprotection-namespace": "ਨਾਂ-ਥਾਂ",
+       "listgrants-rights": "ਹੱਕ",
        "trackingcategories": "ਵਰਗਾਂ ਦੀ ਪੈੜ",
        "trackingcategories-msg": "ਵਰਗ ਦੀ ਪੈੜ",
        "trackingcategories-name": "ਸੁਨੇਹੇ ਦਾ ਨਾਂ",
        "watchlist-details": "ਗੱਲ-ਬਾਤ ਸਫ਼ੇ ਨਾ ਗਿਣਦੇ ਹੋਏ, ਤੁਹਾਡੀ ਨਿਗਰਾਨੀ-ਸੂਚੀ ਵਿਚ{{PLURAL:$1|$1 ਸਫ਼ਾ ਹੈ|$1 ਸਫ਼ੇ ਹਨ}}।",
        "wlheader-enotif": "ਈਮੇਲ ਸੂਚਨਾ ਚਾਲੂ ਹੈ।",
        "wlnote": "$3, $4 ਮੁਤਾਬਕ ਆਖ਼ਰੀ {{PLURAL:$2|ਘੰਟੇ|'''$2''' ਘੰਟਿਆਂ}} ਵਿਚ {{PLURAL:\n$1|ਤਬਦੀਲੀ ਹੋਈ|'''$1''' ਤਬਦੀਲੀਆਂ ਹੋਈਆਂ}}, ਹੇਠਾਂ ਵੇਖੋ।",
-       "wlshowlast": "ਪਿਛਲੇ $1 ਘੰਟੇ $2 ਦਿਨ  ਵਖਾਓ",
+       "wlshowlast": "ਪਿਛਲੇ $1 ਘੰਟੇ $2 ਦਿਨ ਵਖਾਓ",
+       "watchlist-hide": "ਲੁਕਾਓ",
        "watchlist-submit": "ਦਿਖਾਓ",
+       "wlshowhideminor": "ਨਿੱਕੀਆਂ ਸੋਧਾਂ",
+       "wlshowhidebots": "ਬੌਟ",
+       "wlshowhideanons": "ਗੁਮਨਾਮ ਵਰਤੋਂਕਾਰ",
+       "wlshowhidepatr": "ਜਾਂਚੀਆਂ ਸੋਧਾੰ",
+       "wlshowhidemine": "ਮੇਰੀਆਂ ਸੋਧਾਂ",
        "watchlist-options": "ਨਿਗਰਾਨੀ-ਲਿਸਟ ਦੀਆਂ ਚੋਣਾਂ",
        "watching": "ਨਿਗ੍ਹਾ (ਵਾਚ) ਰੱਖੀ ਜਾ ਰਹੀ ਹੈ...",
        "unwatching": "ਨਿਗ੍ਹਾ ਰੱਖਣੀ (ਵਾਚ) ਬੰਦ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ..",
        "sessionfailure-title": "ਇਜਲਾਸ ਫੇਲ੍ਹ",
        "changecontentmodel-title-label": "ਸਫ਼ੇ ਦਾ ਸਿਰਲੇਖ",
        "changecontentmodel-reason-label": "ਕਾਰਨ:",
+       "changecontentmodel-submit": "ਬਦਲੋ",
        "protectlogpage": "ਸੁਰੱਖਿਆ ਚਿੱਠਾ",
        "protectedarticle": "\"[[$1]]\" ਸੁਰੱਖਿਅਤ ਕੀਤਾ",
        "modifiedarticleprotection": "\"[[$1]]\" ਦੀ ਸੁਰੱਖਿਆ ਬਦਲੀ",
        "sp-contributions-username": "IP ਪਤਾ ਜਾਂ ਵਰਤੋਂਕਾਰਨਾਮ:",
        "sp-contributions-toponly": "ਸਿਰਫ ਉਹ ਸੋਧਾਂ ਵਿਖਾਓ ਜੋ ਸਭ ਤੋਂ ਤਾਜ਼ੀਆਂ ਰਿਵੀਜਨਾਂ ਹਨ",
        "sp-contributions-newonly": "ਸਿਰਫ਼ ਉਹ ਸੋਧਾਂ ਵਿਖਾਉ ਜਿਹਨਾਂ ਨਾਲ਼ ਨਵੇਂ ਸਫ਼ੇ ਬਣੇ ਹਨ",
+       "sp-contributions-hideminor": "ਛੋਟੀਆਂ ਤਬਦੀਲੀਆਂ ਲੁਕਾਓ",
        "sp-contributions-submit": "ਖੋਜ",
        "whatlinkshere": "ਇੱਥੇ ਕੀ ਆ ਕੇ ਜੁੜਦਾ ਹੈ",
        "whatlinkshere-title": "$1 ਨਾਲ ਜੋੜਨ ਵਾਲੇ ਸਫ਼ੇ",
        "tooltip-ca-unprotect": "ਇਸ ਸਫ਼ੇ ਦੀ ਸੁਰੱਖਿਆ ਬਦਲੋ",
        "tooltip-ca-delete": "ਇਸ ਸਫ਼ੇ ਨੂੰ ਹਟਾਓ",
        "tooltip-ca-move": "ਇਹ ਸਫ਼ਾ ਭੇਜੋ",
-       "tooltip-ca-watch": "à¨\87ਸ à¨¸à¨«à¨¼à©\87 à¨¨à©\82à©° à¨\86ਪਣà©\80 à¨¨à¨¿à¨\97ਰਾਨà©\80-ਲਿਸà¨\9f ਵਿਚ ਜੋੜੋ",
+       "tooltip-ca-watch": "à¨\87ਸ à¨¸à¨«à¨¼à©\87 à¨¨à©\82à©° à¨\86ਪਣà©\80 à¨¨à¨¿à¨\97ਰਾਨà©\80-ਸà©\82à¨\9aà©\80 ਵਿਚ ਜੋੜੋ",
        "tooltip-ca-unwatch": "ਇਹ ਸਫ਼ਾ ਆਪਣੀ ਨਿਗਰਾਨੀ-ਲਿਸਟ ’ਚੋਂ ਹਟਾਓ",
        "tooltip-search": "{{SITENAME}} ’ਤੇ ਖੋਜੋ",
        "tooltip-search-go": "ਠੀਕ ਇਸ ਨਾਮ ਵਾਲੇ ਪੰਨੇ ’ਤੇ ਜਾਉ, ਜੇ ਮੌਜੂਦ ਹੈ ਤਾਂ",
        "tooltip-n-mainpage-description": "ਮੁੱਖ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ",
        "tooltip-n-portal": "ਪ੍ਰੋਜੈਕਟ ਬਾਰੇ, ਤੁਸੀਂ ਕੀ ਕਰ ਸਕਦੇ ਹੋ, ਕਿੱਥੇ ਕੁਝ ਲੱਭਣਾ ਹੈ",
        "tooltip-n-currentevents": "ਹਾਲ ਦੀਆਂ ਘਟਨਾਵਾਂ ਬਾਰੇ ਪਿਛੋਕੜੀ ਜਾਣਕਾਰੀ ਲੱਭੋ",
-       "tooltip-n-recentchanges": "ਵਿਕੀ ਵਿਚ ਹਾਲ ਵਿੱਚ ਹੋਈਆਂ ਤਬਦੀਲੀਆਂ ਦੀ ਸੂਚੀ",
+       "tooltip-n-recentchanges": "ਵਿà¨\95à©\80 à¨µà¨¿à©±à¨\9a à¨¹à¨¾à¨² à¨µà¨¿à©±à¨\9a à¨¹à©\8bà¨\88à¨\86à¨\82 à¨¤à¨¬à¨¦à©\80ਲà©\80à¨\86à¨\82 à¨¦à©\80 à¨¸à©\82à¨\9aà©\80",
        "tooltip-n-randompage": "ਇੱਕ ਰਲ਼ਵਾਂ ਸਫ਼ਾ ਲੋਡ ਕਰੋ",
        "tooltip-n-help": "ਖੋਜਣ ਲਈ ਥਾਂ",
        "tooltip-t-whatlinkshere": "ਵਿਕੀ ਦੇ ਸਾਰੇ ਸਫ਼ਿਆ ਦੀ ਸੂਚੀ, ਜੋ ਇੱਥੇ ਜੋੜਦੇ ਹਨ",
        "pageinfo-length": "ਸਫ਼ੇ ਦੀ ਲੰਬਾਈ (ਬਾਈਟਾਂ ਵਿਚ)",
        "pageinfo-article-id": "ਸਫ਼ੇ ਦੀ ਸ਼ਨਾਖ਼ਤ",
        "pageinfo-language": "ਸਫ਼ੇ ਦੀ ਸਮੱਗਰੀ ਦੀ ਭਾਸ਼ਾ",
-       "pageinfo-robot-policy": "à¨\87à©°à¨\9cਨ à¨¦à©\80 à¨¹à¨¾à¨²à¨¤ à¨\96à©\8bà¨\9cà©\8b",
+       "pageinfo-robot-policy": "ਰà©\8bਬà©\8bà¨\9f à¨¦à©\81à¨\86ਰਾ à¨\87ੰਡà©\88à¨\95ਸਿੰà¨\97",
        "pageinfo-robot-index": "ਮਨਜ਼ੂਰ ਹੈ",
        "pageinfo-robot-noindex": "ਨਾ-ਮਨਜ਼ੂਰ",
        "pageinfo-watchers": "ਸਫ਼ੇ ’ਤੇ ਨਜ਼ਰ ਰੱਖਣ ਵਾਲਿਆਂ ਦੀ ਗਿਣਤੀ",
        "watchlistedit-raw-done": "ਤੁਹਾਡੀ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਅੱਪਡੇਟ ਹੋ ਗਈ ਹੈ।",
        "watchlistedit-raw-added": "{{PLURAL:$1|1 ਸਿਰਲੇਖ ਸ਼ਾਮਲ ਕੀਤਾ|$1 ਸਿਰਲੇਖ ਸ਼ਾਮਲ ਕੀਤੇ}}:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 ਸਿਰਲੇਖ ਹਟਾਇਆ|$1 ਸਿਰਲੇਖ ਹਟਾਏ}}:",
+       "watchlistedit-clear-title": "ਨਿਗਰਾਨ-ਸੂਚੀ ਸਾਫ਼ ਕਰੋ",
+       "watchlistedit-clear-legend": "ਨਿਗਰਾਨ-ਸੂਚੀ ਸਾਫ਼ ਕਰੋ",
        "watchlistedit-clear-titles": "ਸਿਰਲੇਖ:",
        "watchlistedit-clear-submit": "ਨਿਗਰਾਨ-ਸੂਚੀ ਸਾਫ਼ ਕਰੋ (ਇਹ ਪੱਕੇ ਤੌਰ 'ਤੇ ਹੈ!)",
        "watchlistedit-clear-done": "ਤੁਹਾਡੀ ਨਿਗਰਾਨ-ਸੂਚੀ ਸਾਫ਼ ਕਰ ਦਿੱਤੀ ਗਈ ਹੈ।",
        "watchlisttools-edit": "ਨਿਗਰਾਨੀ-ਸੂਚੀ ਵੇਖੋ ’ਤੇ ਸੋਧੋ",
        "watchlisttools-raw": "ਕੱਚੀ ਨਿਗਰਾਨ-ਸੂਚੀ ਸੋਧੋ",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|ਗੱਲ-ਬਾਤ]])",
+       "timezone-local": "ਸਥਾਨਕ",
        "duplicate-defaultsort": "ਪੁਰਾਣੀ ਮੂਲ ਕਰਮਾਂਕਨ ਕੁੰਜੀ $1 ਦੇ ਬਜਾਏ ਹੁਣ ਮੂਲ ਕਰਮਾਂਕਨ ਕੁੰਜੀ $2 ਹੋਵੇਗੀ।",
        "version": "ਵਰਜਨ",
        "version-skins": "ਥਾਪੀਆਂ ਖੱਲਾਂ",
        "version-software-version": "ਵਰਜਨ",
        "version-entrypoints-header-entrypoint": "ਦਾਖ਼ਲਾ ਬਿੰਦੂ",
        "version-entrypoints-header-url": "ਯੂ.ਆਰ.ਐੱਲ",
+       "version-libraries-library": "ਪੁਸਤਕਾਲਾ",
+       "version-libraries-version": "ਵਰਜਨ",
+       "version-libraries-license": "ਲਸੰਸ",
+       "version-libraries-description": "ਵੇਰਵਾ",
+       "version-libraries-authors": "ਲੇਖਕ",
        "redirect-submit": "ਜਾਓ",
        "redirect-lookup": "ਲੱਭੋ:",
        "redirect-value": "ਮੁੱਲ:",
        "specialpages-group-wiki": "ਸਮੱਗਰੀ ਅਤੇ ਸੰਦ",
        "specialpages-group-redirects": "ਖ਼ਾਸ ਸਫ਼ੇ ਰੀਡਿਰੈਕਟ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ",
        "specialpages-group-spam": "ਸਪੈਮ ਦੇ ਸੰਦ",
+       "specialpages-group-developer": "ਡਿਵੈਲਪਰ ਸੰਦ",
        "blankpage": "ਖ਼ਾਲੀ ਸਫ਼ਾ",
        "intentionallyblankpage": "ਇਹ ਸਫ਼ਾ ਜਾਣ-ਬੁੱਝ ਕੇ ਖ਼ਾਲੀ ਛੱਡਿਆ ਗਿਆ ਹੈ।",
        "external_image_whitelist": " #ਇਸ ਲਾਈਨ ਨੂੰ ਇੰਝ ਹੀ ਰਹਿਣ ਦਿਓ <pre>\n#ਹੇਠਾਂ ਓਹੀ ਐਕਸਪ੍ਰੈਸ਼ਨ ਪਾਓ (ਜਿਹੜਾ ਹਿੱਸਾ // ਦੇ ਵਿਚਾਲੇ ਹੈ)\n#ਇਹ ਬਾਹਰੀ ਤਸਵੀਰਾਂ ਦੇ URLs (ਹੌਟਲਿੰਕਡ) ਨਾਲ ਮਿਲਣਗੀਆਂ\n#ਜਿਹੜੀਆਂ ਮਿਲਣਗੀਆਂ ਓਹ ਬਤੌਰ ਤਸਵੀਰਾਂ ਦਿੱਸਣਗੀਆਂ ਨਹੀਂ ਤਾਂ ਤਸਵੀਰ ਦਾ ਸਿਰਫ਼ ਲਿੰਕ ਨਜ਼ਰ ਆਵੇਗਾ\n#'#' ਨਾਲ਼ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲ਼ੀਆਂ ਲਾਈਨਾਂ ਟਿੱਪਣੀਆਂ ਵਾਂਗ ਲਈਆਂ ਜਾਂਦੀਆਂ ਹਨ\n#ਇਹ ਕੇਸ-ਇਨਸੈਂਸਟਿਵ ਹੈ\n\n#ਸਾਰੇ ਰੈਜੈਕਸ ਫ਼ਰੈਗਮੈਂਟ ਇਸ ਲਾਈਨ ਤੋਂ ਉੱਪਰ ਪਾਓ। ਇਸ ਲਾਈਨ ਨੂੰ ਇੰਝ ਹੀ ਰਹਿਣ ਦਿਓ </pre>",
        "tags-title": "ਟੈਗ",
        "tags-tag": "ਟੈਗ ਦਾ ਨਾਮ",
        "tags-description-header": "ਅਰਥ ਦਾ ਪੂਰਾ ਬਿਓਰਾ",
+       "tags-source-header": "ਸਰੋਤ",
        "tags-active-header": "ਸਰਗਰਮ?",
        "tags-hitcount-header": "ਨਿਸ਼ਾਨਦੇਹ ਤਬਦੀਲੀਆਂ",
+       "tags-actions-header": "ਕਾਰਵਾਈਆਂ",
        "tags-active-yes": "ਹਾਂ",
        "tags-active-no": "ਨਹੀਂ",
        "tags-edit": "ਸੋਧੋ",
+       "tags-delete": "ਮਿਟਾਉ",
+       "tags-activate": "ਕਿਰਿਆਸ਼ੀਲ ਕਰੋ",
        "tags-hitcount": "$1 {{PLURAL:$1|ਤਬਦੀਲੀ|ਤਬਦੀਲੀਆਂ}}",
+       "tags-create-reason": "ਕਾਰਨ:",
+       "tags-create-submit": "ਬਣਾਓ",
+       "tags-delete-reason": "ਕਾਰਨ:",
+       "tags-activate-reason": "ਕਾਰਨ:",
+       "tags-activate-submit": "ਕਿਰਿਆਸ਼ੀਲ ਕਰੋ",
+       "tags-deactivate-reason": "ਕਾਰਨ:",
+       "tags-edit-title": "ਟੈਗ ਸੋਧੋ",
+       "tags-edit-remove-all-tags": "(ਸਾਰੇ ਟੈਗ ਹਟਾਓ)",
+       "tags-edit-reason": "ਕਾਰਨ:",
        "comparepages": "ਸਫ਼ੇ ਮਿਲਾਓ",
        "compare-page1": "ਸਫ਼ਾ ੧",
        "compare-page2": "ਸਫ਼ਾ ੨",
        "rightsnone": "(ਕੋਈ ਨਹੀਂ)",
        "revdelete-summary": "ਸੰਖੇਪ ਸੋਧ",
        "feedback-adding": "ਸਫ਼ੇ ਨਾਲ਼ ਵਿਚਾਰ ਜੁੜ ਰਹੇ ਹਨ...",
+       "feedback-back": "ਪਿੱਛੇ",
        "feedback-bugnew": "ਮੈਂ ਚੈੱਕ ਕੀਤਾ। ਇੱਕ ਨਵੇਂ ਦੋਸ਼ ਦੀ ਰਿਪੋਰਟ ਕਰੋ",
        "feedback-cancel": "ਰੱਦ ਕਰੋ",
        "feedback-close": "ਹੋ ਗਿਆ",
+       "feedback-error-title": "ਗ਼ਲਤੀ",
        "feedback-error2": "ਦੋਸ਼:ਸੋਧ ਫੇਲ੍ਹ ਹੋਈ",
        "feedback-error3": "ਦੋਸ਼:API ਵੱਲੋਂ ਕੋਈ ਜੁਆਬ ਨਹੀਂ",
        "feedback-message": "ਸੁਨੇਹਾ:",
        "feedback-subject": "ਵਿਸ਼ਾ:",
        "feedback-submit": "ਹਵਾਲੇ ਕਰੋ",
+       "feedback-thanks-title": "ਧੰਨਵਾਦ!",
+       "feedback-useragent": "ਉਪਭੋਗੀ ਏਜੰਟ:",
        "searchsuggest-search": "ਖੋਜ",
        "api-error-badaccess-groups": "ਤੁਹਾਨੂੰ ਇਸ ਵਿਕੀ ਉੱਤੇ ਫ਼ਾਈਲਾਂ ਅੱਪਲੋਡ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ।",
        "api-error-badtoken": "ਅੰਦਰੂਨੀ ਦੋਸ਼: ਗ਼ਲਤ ਟੋਕਨ",
        "limitreport-walltime": "ਹਕੀਕੀ ਸਮੇਂ ਦੀ ਵਰਤੋਂ",
        "limitreport-walltime-value": "$1 {{PLURAL:$1|ਸਕਿੰਟ|ਸਕਿੰਟ}}",
        "limitreport-postexpandincludesize-value": "$1/$2 {{PLURAL:$2|ਬਾਈਟ|ਬਾਈਟ}}",
+       "expand_templates_input": "ਇੰਪੁੱਟ ਪਾਠ:",
        "expand_templates_output": "ਨਤੀਜਾ",
        "expand_templates_ok": "ਠੀਕ ਹੈ",
        "expand_templates_remove_comments": "ਟਿੱਪਣੀਆਂ ਹਟਾਓ",
        "pagelang-language": "ਭਾਸ਼ਾ",
        "pagelang-use-default": "ਮੂਲ ਭਾਸ਼ਾ ਵਰਤੋਂ",
        "pagelang-select-lang": "ਭਾਸ਼ਾ ਚੁਣੋ",
+       "pagelang-submit": "ਭੇਜੋ",
        "right-pagelang": "ਸਫ਼ੇ ਦੀ ਭਾਸ਼ਾ ਬਦਲੋ",
        "action-pagelang": "ਸਫ਼ੇ ਦੀ ਭਾਸ਼ਾ ਬਦਲੋ",
+       "mediastatistics": "ਮੀਡੀਆ ਅੰਕੜੇ",
+       "mediastatistics-table-mimetype": "MIME ਕਿਸਮ:",
        "mediastatistics-table-count": "ਫ਼ਾਈਲਾਂ ਦੀ ਗਿਣਤੀ",
        "mediastatistics-table-totalbytes": "ਮਿਲ਼ਵਾਂ ਅਕਾਰ",
        "mediastatistics-header-unknown": "ਅਣਪਛਾਤਾ",
        "mediastatistics-header-video": "ਵੀਡੀਓਆਂ",
        "mediastatistics-header-office": "ਦਫ਼ਤਰ",
        "mediastatistics-header-text": "ਲਿਖਤੀ",
+       "mediastatistics-header-total": "ਸਾਰੀਆੰ ਫਾਈਲਾੰ",
        "json-error-syntax": "ਵਾਕ-ਵਿਉਂਤ 'ਚ ਦੋਸ਼",
        "special-characters-group-latin": "ਲਾਤੀਨੀ",
        "special-characters-group-latinextended": "ਲਾਤੀਨੀ ਤੋਂ ਛੁੱਟ",
        "special-characters-title-endash": "ਅੰਗਰੇਜ਼ੀ ਡੈਸ਼",
        "special-characters-title-emdash": "em ਡੈਸ਼",
        "special-characters-title-minus": "ਘਟਾਓ ਦਾ ਨਿਸ਼ਾਨ",
+       "mw-widgets-dateinput-no-date": "ਕੋਈ ਮਿਤੀ ਨਹੀਂ ਚੁਣੀ",
+       "mw-widgets-titleinput-description-new-page": "ਸਫ਼ਾ ਹਜੇ ਮੌਜੂਦ ਨਹੀਂ ਹੈ",
+       "log-action-filter-all": "ਸਾਰੇ",
+       "log-action-filter-block-block": "ਪਾਬੰਦੀ",
+       "log-action-filter-block-unblock": "ਪਾਬੰਦੀ ਹਟਾਈ",
+       "authmanager-authplugin-setpass-bad-domain": "ਗਲਤ ਡੋਮੇਨ",
        "authmanager-password-help": "ਪ੍ਰਮਾਣਿਕਤਾ ਲਈ ਪਛਾਣ-ਸ਼ਬਦ।",
        "authmanager-email-label": "ਈਮੇਲ",
        "authmanager-email-help": "ਈਮੇਲ ਪਤਾ",
        "authmanager-realname-label": "ਅਸਲੀ ਨਾਂ",
+       "authmanager-realname-help": "ਇਸ ਉਪਭੋਗੀ ਦਾ ਅਸਲ ਨਾਮ",
+       "authmanager-provider-temporarypassword": "ਆਰਜ਼ੀ ਪਾਸਵਰਡ",
        "authprovider-resetpass-skip-label": "ਛੱਡ ਦਿਉ",
+       "authform-wrongtoken": "ਗਲਤ ਟੋਕਨ",
        "specialpage-securitylevel-not-allowed-title": "ਇਜਾਜ਼ਤ ਨਹੀਂ",
        "cannotauth-not-allowed-title": "ਪ੍ਰਵਾਨਗੀ ਨਹੀਂ ਮਿਲੀ",
        "credentialsform-account": "ਖਾਤੇ ਦਾ ਨਾਂ:"
index 73381f0..6589316 100644 (file)
        "databaseerror-query": "Consulta: $1",
        "databaseerror-function": "Função: $1",
        "databaseerror-error": "Erro: $1",
-       "transaction-duration-limit-exceeded": "Para evitar a criação de lag replicação alta, esta operação foi abortada porque a duração de gravação ($1) excedeu o $2 {{PLURAL:$2|second|seconds}} limite.Se você está mudando muitos itens de uma vez, tente fazer várias operações menores em vez.",
+       "transaction-duration-limit-exceeded": "Para evitar a criação de lag replicação alta, esta operação foi abortada porque a duração de gravação ($1) excedeu o limite de $2 {{PLURAL:$2|segundo|segundos}}. Se você está mudando muitos itens de uma vez, tente fazer várias operações menores em vez disso.",
        "laggedslavemode": "Aviso: a página poderá não conter atualizações recentes.",
        "readonly": "Banco de dados disponível no modo \"somente leitura\"",
        "enterlockreason": "Entre com um motivo para trancá-lo, incluindo uma estimativa de quando poderá novamente ser destrancado",
        "password-change-forbidden": "Você não pode alterar senhas nessa wiki.",
        "externaldberror": "Ocorreu ou um erro no banco de dados durante a autenticação ou não lhe é permitido atualizar a sua conta externa.",
        "login": "Autenticar-se",
+       "login-security": "Verificar sua identidade",
        "nav-login-createaccount": "Entrar / criar conta",
        "userlogin": "Entrar / criar conta",
        "userloginnocreate": "Entrar",
        "changecontentmodel-reason-label": "Motivo:",
        "changecontentmodel-success-title": "O modelo de conteúdo foi alterado",
        "changecontentmodel-success-text": "O tipo de conteúdo de [[:$1]] foi alterado.",
-       "log-name-contentmodel": "Log de alterações modelo de conteúdo",
+       "log-name-contentmodel": "Log de alterações do modelo de conteúdo",
        "logentry-contentmodel-change-revertlink": "reverter",
        "logentry-contentmodel-change-revert": "reverter",
        "protectlogpage": "Registro de proteção",
index 48cbc04..65301a7 100644 (file)
        "databaseerror-query": "Consulta: $1",
        "databaseerror-function": "Função: $1",
        "databaseerror-error": "Erro: $1",
+       "transaction-duration-limit-exceeded": "Para evitar a criação de lag replicação alta, esta operação foi abortada porque a duração de gravação ($1) excedeu o limite de $2 {{PLURAL:$2|segundo|segundos}}. Se está a mudar muitos itens de uma vez, tente fazer várias operações menores em vez disso.",
        "laggedslavemode": "'''Aviso:''' A página pode não conter as atualizações mais recentes.",
        "readonly": "Base de dados bloqueada (limitada a leituras)",
        "enterlockreason": "Introduza um motivo para bloquear, incluindo uma estimativa de quando será desbloqueada",
        "createaccountreason": "Motivo:",
        "createacct-reason": "Motivo",
        "createacct-reason-ph": "Porque está a criar outra conta",
+       "createacct-reason-help": "Mensagem mostrada no registo de criação de contas",
        "createacct-submit": "Crie a sua conta",
        "createacct-another-submit": "Criar conta",
        "createacct-continue-submit": "Continuar criação de conta",
        "nocookiesnew": "A conta de utilizador foi criada, mas neste momento não tem sessão iniciada.\nA {{SITENAME}} utiliza ''cookies'' para autenticar os utilizadores.\nOs ''cookies'' estão desativados no seu navegador.\nAtive-os e inicie sessão com o seu nome de utilizador e a sua palavra-passe, por favor.",
        "nocookieslogin": "A {{SITENAME}} utiliza ''cookies'' para autenticar os utilizadores.\nOs ''cookies'' estão desativados no seu navegador.\nAtive-os e tente novamente, por favor.",
        "nocookiesfornew": "A conta de utilizador não foi criada, porque não foi possível confirmar a sua origem.\nCertifique-se de que tem os ''cookies'' ativados, recarregue esta página e tente novamente.",
+       "createacct-loginerror": "A conta foi criada com êxito, mas não pôde ser autenticado automaticamente. Por favor, faça o [[Special:UserLogin|início de sessão manualmente]].",
        "noname": "Não especificou um nome de utilizador válido.",
        "loginsuccesstitle": "Autenticação bem sucedida",
        "loginsuccess": "'''Encontra-se agora ligado à {{SITENAME}} como \"$1\"'''.",
        "log-action-filter-rights-rights": "Alteração manual",
        "log-action-filter-rights-autopromote": "Alteração automática",
        "log-action-filter-suppress-event": "Supressão de registo",
+       "log-action-filter-suppress-revision": "Supressão de revisões",
        "log-action-filter-suppress-delete": "Supressão de página",
+       "log-action-filter-suppress-block": "Supressão de utilizadores por bloqueio",
        "log-action-filter-upload-upload": "Novo carregamento",
        "log-action-filter-upload-overwrite": "Recarregar",
        "authmanager-create-disabled": "A criação de contas está desativada.",
        "authmanager-create-from-login": "Para criar a sua conta, por favor, preencha os campos abaixo.",
+       "authmanager-authplugin-setpass-failed-title": "A alteração de palavra-passe falhou",
+       "authmanager-authplugin-setpass-failed-message": "O plugin de autenticação negou a alteração de palavra-passe.",
+       "authmanager-authplugin-create-fail": "O plugin de autenticação negou a criação de conta.",
+       "authmanager-authplugin-setpass-denied": "O plugin de autenticação não permite a alteração de palavras-passe.",
        "authmanager-authplugin-setpass-bad-domain": "Domínio inválido.",
+       "authmanager-autocreate-noperm": "A criação automática de contas não é permitida.",
+       "authmanager-autocreate-exception": "A criação automática de contas foi temporariamente desativada devido a erros prévios.",
        "authmanager-userdoesnotexist": "A conta de utilizador(a) \"$1\" não está registada.",
        "authmanager-username-help": "Nome de utilizador(a) para autenticação.",
        "authmanager-password-help": "Palavra-passe para autenticação.",
        "authmanager-email-help": "Endereço de correio eletrónico",
        "authmanager-realname-label": "Nome verdadeiro",
        "authmanager-realname-help": "Nome verdadeiro do(a) utilizador(a)",
+       "authmanager-provider-temporarypassword": "Palavra-passe temporária",
+       "authprovider-confirmlink-success-line": "$1: Ligado com êxito.",
        "authprovider-resetpass-skip-label": "Ignorar",
+       "authprovider-resetpass-skip-help": "Ignorar redefinição de palavra-passe",
+       "specialpage-securitylevel-not-allowed-title": "Não permitido",
+       "specialpage-securitylevel-not-allowed": "Desculpe, não tem permissão para utilizar esta página porque a sua identidade não pôde ser verificada.",
        "authpage-cannot-login": "Não é possível iniciar sessão.",
        "authpage-cannot-login-continue": "Não é possível continuar a iniciar sessão. A sua sessão pode ter expirado.",
        "authpage-cannot-create": "Não é possível iniciar a criação da conta.",
index 611106c..099504d 100644 (file)
                        "Psychoslave",
                        "Guycn2",
                        "2axterix2",
-                       "Ата"
+                       "Ата",
+                       "Matěj Suchánek"
                ]
        },
        "sidebar": "{{notranslate}}",
        "noindex-category": "Name of the [[mw:Special:MyLanguage/Help:Tracking categories|tracking category]] where pages with the <nowiki>__NOINDEX__</nowiki> behavior switch are listed.\n\nFor description of this behavior switch see [[mw:Special:MyLanguage/Help:Magic_words#Behavior_switches|MediaWiki]].\n\nSee also:\n* {{msg-mw|Noindex-category-desc}}",
        "broken-file-category": "Name of [[mw:Special:MyLanguage/Help:Tracking categories|tracking category]] where pages that embed files that do not exist (\"broken images\") are listed.\n\nSee also:\n* {{msg-mw|Broken-file-category-desc}}",
        "categoryviewer-pagedlinks": "{{Optional}}\nThe pagination links in category viewer. Parameters:\n* $1 - the previous link, uses {{msg-mw|Prevn}}\n* $2 - the next link, uses {{msg-mw|Nextn}}",
+       "category-header-numerals": "{{Optional}}\nA header for all pages whose titles start with a number. This is used on category pages. This should only be translated if your language uses a different method to indicate a range of numbers (other than a dash).\n* $1 – 0 (or localized equivalent)\n* $2 – 9 (or localized equivalent)",
        "about": "{{Identical|About}}",
        "article": "A 'content page' is a page that forms part of the purpose of the wiki. It includes the main page and pages in the main namespace and any other namespaces that are included when the wiki is customised. For example on Wikimedia Commons 'content pages' include pages in the file and category namespaces. On Wikinews 'content pages' include pages in the Portal namespace. For technical definition of 'content namespaces' see [[mw:Manual:Using_custom_namespaces#Content_namespaces|MediaWiki]].\n\nPossible alternatives to the word 'content' are 'subject matter' or 'wiki subject' or 'wiki purpose'.\n\n{{Identical|Content page}}",
        "newwindow": "Below the edit form, next to \"{{msg-mw|Edithelp}}\".",
        "passwordreset-emailelement": "This is a body of a password reset email to allow them into the system with a new password. Parameters:\n* $1 - the user's login name. This parameter can be used for GENDER.\n* $2 - the temporary password given by the system",
        "passwordreset-emailsentemail": "Used in [[Special:PasswordReset]].\n\nSee also:\n* {{msg-mw|Passwordreset-emailsent-capture}}\n* {{msg-mw|Passwordreset-emailerror-capture}}",
        "passwordreset-emailsentusername": "Used in [[Special:PasswordReset]].\n\nSee also:\n* {{msg-mw|Passwordreset-emailsent-capture}}\n* {{msg-mw|Passwordreset-emailerror-capture}}",
-       "passwordreset-emailsent-capture": "Used in [[Special:PasswordReset]].\n\nSee also:\n* {{msg-mw|Passwordreset-emailsentemail}}\n* {msg-mw|Passwordreset-emailsentusername}}\n* {{msg-mw|Passwordreset-emailerror-capture}}",
-       "passwordreset-emailerror-capture": "Error message displayed in [[Special:PasswordReset]] when sending an email fails. Parameters:\n* $1 - error message\n* $2 - username, used for GENDER\nSee also:\n* {{msg-mw|Passwordreset-emailsentemail}}\n* {msg-mw|Passwordreset-emailsentusername}}\n* {{msg-mw|Passwordreset-emailsent-capture}}",
-       "passwordreset-emailsent-capture2": "Used in [[Special:PasswordReset]].\n\nParameters:\n* $1 - number of accounts notified\n\nSee also:\n* {{msg-mw|Passwordreset-emailsentemail}}\n* {msg-mw|Passwordreset-emailsentusername}}\n* {{msg-mw|Passwordreset-emailerror-capture}}",
+       "passwordreset-emailsent-capture": "Used in [[Special:PasswordReset]].\n\nSee also:\n* {{msg-mw|Passwordreset-emailsentemail}}\n* {{msg-mw|Passwordreset-emailsentusername}}\n* {{msg-mw|Passwordreset-emailerror-capture}}",
+       "passwordreset-emailerror-capture": "Error message displayed in [[Special:PasswordReset]] when sending an email fails. Parameters:\n* $1 - error message\n* $2 - username, used for GENDER\nSee also:\n* {{msg-mw|Passwordreset-emailsentemail}}\n* {{msg-mw|Passwordreset-emailsentusername}}\n* {{msg-mw|Passwordreset-emailsent-capture}}",
+       "passwordreset-emailsent-capture2": "Used in [[Special:PasswordReset]].\n\nParameters:\n* $1 - number of accounts notified\n\nSee also:\n* {{msg-mw|Passwordreset-emailsentemail}}\n* {{msg-mw|Passwordreset-emailsentusername}}\n* {{msg-mw|Passwordreset-emailerror-capture}}",
        "passwordreset-emailerror-capture2": "Error message displayed in [[Special:PasswordReset]] when sending an email fails. Parameters:\n* $1 - error message\n* $2 - username, used for GENDER\n* $3 - number of accounts notified\n\nSee also:\n* {{msg-mw|Passwordreset-emailsentemail}}\n* {{msg-mw|Passwordreset-emailsentusername}}\n* {{msg-mw|Passwordreset-emailsent-capture}}\n* {{msg-mw|Passwordreset-emailerror-capture}}",
        "passwordreset-nocaller": "Shown when a password reset was requested but the caller was not provided. This is an internal error.",
        "passwordreset-nosuchcaller": "Shown when a password reset was requested but the username of the caller could not be resolved to a user. This is an internal error.\n\nParameters:\n* $1 - username of the caller",
        "rollbacklinkcount": "{{doc-actionlink}}\nText of the rollback link showing the number of edits to be rolled back. See also {{msg-mw|rollbacklink}}.\n\nParameters:\n* $1 - the number of edits that will be rolled back. If $1 is over the value of <code>$wgShowRollbackEditCount</code> (default: 10) {{msg-mw|rollbacklinkcount-morethan}} is used.\n\nThe rollback link is displayed with a tooltip {{msg-mw|Tooltip-rollback}}",
        "rollbacklinkcount-morethan": "{{doc-actionlink}}\nText of the rollback link when a greater number of edits is to be rolled back. See also {{msg-mw|rollbacklink}}.\n\nWhen the number of edits rolled back is smaller than [[mw:Special:MyLanguage/Manual:$wgShowRollbackEditCount|$wgShowRollbackEditCount]], {{msg-mw|rollbacklinkcount}} is used instead.\n\nParameters:\n* $1 - number of edits",
        "rollbackfailed": "{{Identical|Rollback}}",
-       "rollback-missingparam": "Used as error message rollback is accessed without the required parameters\n\nSee also:\n* {{msg-mw|Rollbackfailed}}",
+       "rollback-missingparam": "Used as error message that rollback is accessed without the required parameters\n\nSee also:\n* {{msg-mw|Rollbackfailed}}",
        "cantrollback": "Used as error message when rollback fails due to there not being a valid revision to revert back to.\n\nSee also:\n* {{msg-mw|Notvisiblerev}}\n{{Identical|Revert}}\n{{Identical|Rollback}}",
        "alreadyrolled": "Appear when there's rollback and/or edit collision.\n\nRefers to:\n* {{msg-mw|Pipe-separator}}\n* {{msg-mw|Contribslink}}\nParameters:\n* $1 - the page to be rolled back\n* $2 - the editor to be rolled-back of that page\n* $3 - the editor that cause collision\n{{Identical|Rollback}}",
        "editcomment": "Only shown if there is an edit {{msg-mw|Summary}}. Parameters:\n* $1 - the edit summary",
        "revertpage": "Parameters:\n* $1 - username 1\n* $2 - username 2\n* $3 - (Optional) revision ID of the revision reverted to\n* $4 - (Optional) timestamp of the revision reverted to\n* $5 - (Optional) revision ID of the revision reverted from\n* $6 - (Optional) timestamp of the revision reverted from\nSee also:\n* {{msg-mw|Revertpage-nouser}}\n{{Identical|Revert}}",
        "revertpage-nouser": "This is a confirmation message a user sees after reverting, when the username of the version is hidden with RevisionDelete.\n\nIn other cases the message {{msg-mw|Revertpage}} is used.\n\nParameters:\n* $1 - username 1, can be used for GENDER\n* $2 - (Optional) username 2\n* $3 - (Optional) revision ID of the revision reverted to\n* $4 - (Optional) timestamp of the revision reverted to\n* $5 - (Optional) revision ID of the revision reverted from\n* $6 - (Optional) timestamp of the revision reverted from",
        "rollback-success": "This message shows up on screen after successful revert (generally visible only to admins). $1 describes user whose changes have been reverted, $2 describes user which produced version, which replaces reverted version.\n{{Identical|Revert}}\n{{Identical|Rollback}}",
-       "rollback-success-notify": "Notification shown after a successful revert.\n* $1 - User whose changes have been reverted\n* $2 - User that made the edit that was restored\n* $3 - Url to the diff of the rollback\nSee also:\n* {{msg-mw|showdiff}}\n{{Identical|rollback-success}}\n{{Format|jquerymsg}}",
+       "rollback-success-notify": "Notification shown after a successful revert.\n* $1 - User whose changes have been reverted\n* $2 - User that made the edit that was restored\n* $3 - Url to the diff of the rollback\nSee also:\n* {{msg-mw|showdiff}}\n{{related|rollback-success}}\n{{Format|jquerymsg}}",
        "sessionfailure-title": "Used as title of the error message {{msg-mw|Sessionfailure}}.",
        "sessionfailure": "Used as error message.\n\nThe title for this error message is {{msg-mw|Sessionfailure-title}}.",
        "changecontentmodel": "Title of the change content model special page",
        "confirmemail_body_set": "This is used in a confirmation email sent when a contact email address is set.\n\nSee also [[MediaWiki:Confirmemail body changed]].\n\nParameters:\n* $1 - the IP address of the user that set the email address\n* $2 - the name of the user\n* $3 - a URL to [[Special:ConfirmEmail]]\n* $4 - a time and date (duplicated by $6 and $7)\n* $5 - a URL to [[Special:InvalidateEmail]]\n* $6 - (Optional) a date\n* $7 - (Optional) a time\n{{Related|Confirmemail body}}",
        "confirmemail_invalidated": "This is the text of the special page [[Special:InvalidateEmail|InvalidateEmail]] (with the title in {{msg-mw|Invalidateemail}}) where user goes if he chooses the cancel e-mail confirmation link from the confirmation e-mail.",
        "invalidateemail": "This is the '''name of the special page''' where user goes if he chooses the cancel e-mail confirmation link from the confirmation e-mail.",
-       "notificationemail_subject_changed": "Subject of the email sent on the previously registered email address notifying them about the change in the registered email address.",
-       "notificationemail_subject_removed": "Subject of the email sent on the previously registered email address notifying them about the removal of the registered email address.",
+       "notificationemail_subject_changed": "Subject of the email sent to the previously registered email address notifying them about the change in the registered email address.",
+       "notificationemail_subject_removed": "Subject of the email sent to the previously registered email address notifying them about the removal of the registered email address.",
        "notificationemail_body_changed": "Body of the email sent on the previously registered email address notifying them about the change in the registered email address.",
        "notificationemail_body_removed": "Body of the email sent on the previously registered email address notifying them about the removal of the registered email address.",
        "scarytranscludedisabled": "Shown when scary transclusion is disabled.",
index 3f7621d..a08db09 100644 (file)
@@ -93,7 +93,8 @@
                        "SamGold",
                        "Jdforrester",
                        "Jack who built the house",
-                       "Cat1987"
+                       "Cat1987",
+                       "SergeyButkov"
                ]
        },
        "tog-underline": "Подчёркивание ссылок:",
        "content-json-empty-object": "Пустой объект",
        "content-json-empty-array": "Пустой массив",
        "deprecated-self-close-category": "Страницы, использующие недопустимые самозакрывающеся HTML-теги",
+       "deprecated-self-close-category-desc": "Страница содержит недопустимые самозакрывающиеся HTML-теги, такие как <code>&lt;b/></code> или <code>&lt;span/></code>. В скором времени их действие изменится, чтобы соответствовать спецификации HTML5, так что использование этих устаревших тегов в тексте нежелательно.",
        "duplicate-args-warning": "<strong>Внимание:</strong> [[:$1]] вызывает [[:$2]] с более чем одним значением параметра «$3». Будет использовано только последнее указанное значение.",
        "duplicate-args-category": "Страницы, использующие повторяющиеся аргументы в вызовах шаблонов",
        "duplicate-args-category-desc": "Страницы, содержащие вызовы шаблонов, использующие повторяющиеся аргументы, такие как <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> или <code><nowiki>{{foo|bar|1=bar}}</nowiki></code>.",
        "authprovider-confirmlink-ok-help": "Продолжать после вывода сообщений об ошибках связывания.",
        "authprovider-resetpass-skip-label": "Пропустить",
        "authprovider-resetpass-skip-help": "Пропустить сброс пароля.",
+       "authform-nosession-login": "Проверка подлинности прошла успешно, но ваш браузер не сможет «запомнить», что вы вошли.\n\n$1",
        "authform-nosession-signup": "Учётная запись была создана, но ваш браузер не сможет «запомнить», что вы вошли.\n\n$1",
        "authform-newtoken": "Отсутствует токен. $1",
        "authform-notoken": "Отсутствует токен",
index 75e3238..7b57f55 100644 (file)
        "otherlanguages": "Eṭagak pạrsi",
        "redirectedfrom": "$1 khon ạcur heć akana",
        "redirectpagesub": "Bań sojhe sakam",
+       "redirectto": "Ar hõ udugoḱakana:",
        "lastmodifiedat": "Noa sakam do sạjao hoena $1, $2 te",
        "viewcount": "Noa sakamdo {{PLURAL:$1 dhom $1 dhom}} udug hoena.",
        "protectedpage": "Rukhíạ sakamko",
        "mainpage": "Mukhiạ Sakam",
        "mainpage-description": "Mukhiạ sakam",
        "policy-url": "Project:Ritiniti",
-       "portal": "Hoṛko boloḱ hor",
-       "portal-url": "Projeṭ:Hoṛko bolon hor",
+       "portal": "Gusṭi bolon hor",
+       "portal-url": "Projeṭ: Gusṭ bolon hor",
        "privacy": "Oku eḱtear",
        "privacypage": "Project: Nijaḱ eḱteạr",
        "badaccess": "Ektiạr vul",
        "minoreditletter": "m",
        "newpageletter": "N",
        "boteditletter": "b",
-       "rc-change-size-new": "Bodol tayomte",
+       "rc-change-size-new": "$1 {{PLURAL:$1|bayiṭ|bayiṭ}} Bodol tayomte",
        "rc-enhanced-expand": "Purạote uduḱ",
        "rc-enhanced-hide": "Purạo cuku",
        "recentchangeslinked": "Sãotenaḱ bodolko",
        "exif-imagewidth": "Ganḍe",
        "exif-imagelength": "Usul",
        "exif-datetime": "Rẽt bodol reaḱ tạrikh ar okte",
+       "exif-make": "Kemera tearić",
+       "exif-model": "Kemera model",
+       "exif-software": "Beoharen Software",
        "exif-artist": "Onoliạ",
+       "exif-exifversion": "Exif bharson",
+       "exif-colorspace": "Roṅcoṅ dhạrti",
        "namespacesall": "sanam",
        "monthsall": "Sanamak",
        "watchlisttools-view": "Jońgṛao bodolaḱko ńel",
        "watchlisttools-edit": "Ńelok tạlika ńel ar joṛao",
        "watchlisttools-raw": "Baṇ purạo akan ńelok tạlika purạomẽ",
-       "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_galmarao}}:$1|talk]])",
+       "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|galmarao]])",
        "duplicate-defaultsort": "'''Sontoroḱmẽ:''' ḍifolṭ sajao reaḱ cạbi: $2 lahare ḍifolṭ sajao reaḱ sakam: ''$1'' e bae luturaḱ kana.",
        "specialpages": "Osokayteaḱ sakamko",
        "external_image_whitelist": "#Noa sakam do cet leka menaḱa oṅkage dohoemẽ\n#Sanam okte re jạhiren kuṭrạ latar re (khạli hạtiń //talare) bạisạomẽ\n#Noako do bahre reaḱ (hotlinked) chubi reaḱ URL saõte milạo hoyoḱa\n#Okako milạḱa, onako do chubi lekate udugoḱa, baṅkhan do khali chubi joṛao udugoḱa\n#Noa layen reaḱ ehoṕre # menaḱa ona layenko menko hisapte beohar hoyoḱka\n#Noa do kas-baṅ rimjhạoaḱge\n#Noa dag cetanre regex kuṭrạ bạsạomẽ. Noa layen cetleka menaḱa oṅkage dohoemẽ</pre>",
index 279b68f..15d45cf 100644 (file)
        "nocookiesnew": "يُوزر کاتو کلي چڪو، پر توهان لاگ اِن نہ ٿيا آهيو. يُوزرس کي لاگ اِن ڪرڻ لاءِ {{SITENAME}} ڪوڪيز استعمال ڪندي آهي. توهان ڪوڪيز کي ناڪاره بڻائي رکيو آهي. لاگ اِن ٿيڻ لاءِ ڪوڪيز کي ڪارائتو بڻايو.",
        "nocookieslogin": "يُوزرس کي لاگ اِن ڪرڻ لاءِ {{SITENAME}} ڪوڪيز استعمال ڪندي آهي. توهان ڪوڪيز کي ناڪاره بڻائي رکيو آهي. لاگ اِن ٿيڻ لاءِ ڪوڪيز کي ڪارائتو بڻايو.",
        "noname": "توهان جو ڄاڻايل يُوزرنانءُ ناقابل ڪار آهي.",
-       "loginsuccesstitle": "لاگ اِن ڪامياب",
+       "loginsuccesstitle": "لاگ اِن ٿيل",
        "loginsuccess": "'''هاڻي توهان {{SITENAME}} تي بطور \"$1\" لاگ اِن ٿيل آهيو.'''",
-       "nosuchuser": "\"$1\" نالي سان ڪو بہ يوزر نہ آهي.  \"$1\".\n ننڍن وڏن اکرن ۾ امتياز ڪرڻ لازمي آهي. \nهِجي چڪاسيو،يا [[Special:CreateAccount|نئون کاتو تخليق ڪريو]]",
+       "nosuchuser": "\"$1\" نالي سان ڪو بہ يوزر نہ آهي.\nننڍن وڏن اکرن ۾ امتياز ڪرڻ لازمي آهي. \nهِجي چڪاسيو، يا [[Special:CreateAccount|نئون کاتو تخليق ڪريو]]",
        "nosuchusershort": "\"$1\" نالي ڪو بہ يُوزر ناهي.\nهِجي جي پڪ ڪندا.",
        "nouserspecified": "توهان کي ڪو يوزرنانءُ ڄاڻائڻو پوندو.",
        "login-userblocked": "هيءُ يُوزر بندشيل آهي. لاگ اِن جي اجازت نہ ٿي ڏجي.",
        "newpassword": "نئون ڳجھو لفظ:",
        "retypenew": "نئون ڳجھو لفظ ٻيهر ٽائيپ ڪندا:",
        "resetpass_submit": "ڳجھو لفظ طَي ڪريو ۽ لاگ اِن ٿيو",
-       "changepassword-success": "توهان جو ڳجھو لفظ ڪاميابيءَ سان بدلايو ويو!",
+       "changepassword-success": "توهان جو ڳجھولفظ بدلايو ويو آھي!",
        "changepassword-throttled": "توهان تازو ئي لاگ اِن ٿيڻ جون هيڪانديون گھڻيون ڪوششون ڪيون آهن. مهرباني ڪري $1 لاءِ ترسي پوءِ وري ڪوشش ڪريو.",
        "botpasswords-label-create": "سرجيو",
        "botpasswords-label-update": "تجديد",
        "resetpass-no-info": "هيءُ صفحو پڙهڻ لاءِ لاگ اِن ٿيڻ ضروري آهي.",
        "resetpass-submit-loggedin": "ڳجھو لفظ بدلايو",
        "resetpass-submit-cancel": "رد",
-       "resetpass-wrong-oldpass": "ناقابل ڪار هاڻوڪو يا عارضي ڳجھو لفظ. \nتوهان پنهنجو ڳجھو لفظ اڳ ۾ ئي بدلائي چڪا آهيو يا نئين ڳجھي لفظ لاءِ درخواست ڏئي چڪا آهيو.",
+       "resetpass-wrong-oldpass": "ناقابل ڪار هاڻوڪو يا عارضي ڳجھولفظ. \nتوهان پنهنجو ڳجھو لفظ اڳ ۾ ئي بدلائي چڪا آهيو يا نئين ڳجھي لفظ لاءِ درخواست ڏئي چڪا آهيو.",
        "resetpass-recycled": "مهرباني ڪري پنهنجي هاڻوڪي ڳجھي لفظ کان ڪو مختلف ڳجھو لفظ چونڊيو.",
        "resetpass-temp-emailed": "توهان برق ٽپال ذريعي اماڻيل عارضي ڳجھي لفظ سان لاگ اِن ٿيا آهيو. لاگ اِن کي مڪمل ڪرڻ لاءِ توهان کي هتي نئون ڳجھو لفظ طَي ڪرڻو ئي پوندو:",
        "resetpass-temp-password": "عارضي ڳجھو لفظ:",
        "userrights": "يُوزر حقن جو بندوبست",
        "userrights-lookup-user": "يوزر گروپَ سنڀاليو",
        "userrights-user-editname": "يُوزرنانءُ ڄاڻايو:",
-       "editusergroup": "يوزر گروپَ سنواريو",
+       "editusergroup": "{{GENDER:$1|يوزر}} گروھ ترميميو",
        "userrights-editusergroup": "يوزر گروپَ سنواريو",
-       "saveusergroups": "يوزر گروپَ سنڀاليو",
+       "saveusergroups": "{{GENDER:$1|يوزر}} گروھ سانڍيو",
        "userrights-groupsmember": "برڪن:",
        "userrights-groupsmember-auto": "رڪن واجبي:",
        "userrights-reason": "سبب:",
        "rightslog": "يُوزر حق لاگ",
        "action-read": "هي صفحو پڙهو",
        "action-edit": "هن صفحي کي سسنواريو",
-       "action-createpage": "صفحا تخليق ڪريو",
-       "action-createtalk": "مباحثي صفحا تخليق ڪريو",
+       "action-createpage": "ھي صفحو تخليق ڪريو",
+       "action-createtalk": "ھي مباحثي صفحو تخليق ڪريو",
        "action-createaccount": "هي يوزر کاتو تخليق ڪريو",
        "action-history": "هن صفحي جي سوانح ڏسو",
        "action-minoredit": "هن ترميم کي معمولي طور نشان لڳايو",
        "tooltip-t-recentchangeslinked": "ويجھڙائيءَ ۾ صفحن ۾ ٿيل تبديليون هن صفحي سان ڳنڍيل آهن",
        "tooltip-feed-atom": "هن صفحي لاءِ ايٽم فيڊ",
        "tooltip-t-contributions": "{{GENDER:$1|ھن يوزر}} جي ڀاڱيدارين جي فھرست",
-       "tooltip-t-emailuser": "هن يُوزر کي برق ٽپال اماڻيو",
+       "tooltip-t-emailuser": "{{GENDER:$1|ھن يوزر}} ڏانھن ايميل موڪليو",
        "tooltip-t-upload": "فائيل چاڙهيو",
        "tooltip-t-specialpages": "سڀني خاص صفحن جي فهرست",
        "tooltip-t-print": "هن صفحي جو ڇاپائتو پرت",
        "tags-activate-submit": "فعاليو",
        "tags-deactivate-title": "ٽيگ کي غير فعال ڪريو",
        "tags-deactivate-reason": "سبب:",
-       "tags-edit-existing-tags-none": "\"ڪو بہ نہ\"",
+       "tags-edit-existing-tags-none": "<em>ڪو بہ نہ</em>",
        "tags-edit-new-tags": "نوان ٽيگس:",
        "tags-edit-reason": "سبب:",
        "compare-page1": "صفحو 1",
        "special-characters-group-thai": "ٿائي",
        "mw-widgets-dateinput-no-date": "ڪا بہ تاريخ نہ چونڊيل",
        "mw-widgets-titleinput-description-new-page": "اڃا اهو صفحو وجود نہ ٿو رکي",
-       "mw-widgets-titleinput-description-redirect": "$1 ڏانهن چوريل",
-       "api-error-blacklisted": "براءِ مهرباني ڪو مختلف، تشريحي عنوان چونڊيو."
+       "mw-widgets-titleinput-description-redirect": "$1 ڏانهن چوريل"
 }
index 7b36ba3..4372c78 100644 (file)
        "newwindow": "(īr atverams naujam longė)",
        "cancel": "Pabengtė",
        "moredotdotdot": "Daugiau...",
-       "morenotlisted": "Tas sārošos ožbengts nie.",
+       "morenotlisted": "Tas sārašos ožbėngts nie.",
        "mypage": "Poslapis",
        "mytalk": "Aptarėms",
        "anontalk": "Aptarėms",
        "media_tip": "Nūruoda abruozdielin",
        "sig_tip": "Tamstas parašos ė čiesos",
        "hr_tip": "Golos briežis (nenauduokat ba rēkala)",
-       "summary": "Pāiškėnėms:",
+       "summary": "Keitėma paāškėnėms:",
        "subject": "Tema/ontraštė:",
        "minoredit": "Mažos pakeitėms",
        "watchthis": "Keravuotė ton poslapė",
-       "savearticle": "Ėšsauguotė poslapė",
+       "savearticle": "Ėšsauguotė poslapi",
        "preview": "Parveiza",
        "showpreview": "Ruodītė parveiza",
        "showdiff": "Ruodītė skėrtomus",
        "protectedpagewarning": "'''DIEMESĖ: Šėts poslapis īr ožrakints ėr anū redagoutė gal tėk admėnėstratuorė teises torėntīs prietelē.'''",
        "semiprotectedpagewarning": "'''Pastebiejėms:''' Šėts poslapis bova ožrakėnts ėr anuo gal redagoutė tėk regėstroutė nauduotojā.",
        "titleprotectedwarning": "'''DIEMESĖ: Tas poslapis bova ožrakėnts tēp, ka tėktās kāpkatrė nauduotuojē galietu ana sokortė.'''",
-       "templatesused": "{{PLURAL:$1|Šabluons, katros|Šabluonā, katrėi}}, īr nauduojamė tamė poslapi:",
+       "templatesused": "{{PLURAL:$1|Šabluons, katros|Šabluonā, katrėi}}, īr nauduojamė tamė poslapie:",
        "templatesusedpreview": "{{PLURAL:$1|Šabluons|Šabluonā}}, nauduotė šėtuo parvaizuo:",
        "templatesusedsection": "Šabluonā, nauduotė šėtom skėrsnelī:",
        "template-protected": "(apsergiets)",
        "permissionserrorstext": "Tamsta netorėt teisiu šėta darītė diel {{PLURAL:$1|tuos prīžastėis|tū prīžastiū}}:",
        "permissionserrorstext-withaction": "Tamsta natorėt leidėma $2 dielē {{PLURAL:$1|tuokės dingstėis|tuokiū dingstiū}}:",
        "recreate-moveddeleted-warn": "'''Parspiejėms: Tamsta ikeliat faila, katros onkstiau bova ėštrėnts.'''\n\nTamsta torietomiet nusprēstė, a īr naudėnga tuoliau ikeldinietė ta faila.\nTuo faila pašalinėma istuorėjė īr pateikta dielē patuogoma:",
-       "moveddeleted-notice": "Tas poslapis bova ėštrints.\nĖštrinta poslapė atmainū sārošos īr douts paveiziejėmō apatiuo.",
+       "moveddeleted-notice": "Tas poslapis bova ėštrints.\nĖštrinta poslapė atmainū sārašos īr douts paveiziejėmō apatiuo.",
        "log-fulllog": "Veizietė vėskon",
        "edit-conflict": "Do keitėmo nesotink.",
        "postedit-confirmation-created": "Poslapis padėrbts.",
        "difference-title-multipage": "Skėrtoms terp poslapiu „$1“ ė „$2“",
        "difference-multipage": "(Skėtroms terp poslapiu)",
        "lineno": "Eilotė $1:",
-       "compareselectedversions": "Pamieruotė pasėrinktus atmainus",
+       "compareselectedversions": "Pamieruotė pasirinktus atmainus",
+       "showhideselectedversions": "Ruodītė/kavuotė atmainus, katrūs pasirinkuot",
        "editundo": "atgrōžintė",
        "diff-empty": "(Nie skėrtoma)",
        "diff-multi-sameuser": "({{PLURAL:$1|Vėins tarpėnis pakeitėms|$1 tarpėnē pakeitėmā|$1 tarpėniu pakeitėmu}}, padėrbtū tuo patė nauduotuojė, nie ruoduoma)",
        "prevn-title": "{{PLURAL:$1|Onkstesnis $1 rezoltats|Onkstesnio $1 rezoltato|Onkstesni $1 rezoltatā}}",
        "nextn-title": "{{PLURAL:$1|Kėts $1 gavėms|Kėtė $1 gavėmā|Kėtū $1 gavėmu}}",
        "shown-title": "Ruodītė $1 {{PLURAL:$1|gavėni|gavėnius|gavėniū}} ont poslapė",
-       "viewprevnext": "Veizėtė ($1 {{int:pipe-separator}} $2) ($3).",
+       "viewprevnext": "Veizietė ($1 {{int:pipe-separator}} $2) ($3).",
        "searchmenu-exists": "'''Poslapis pavadėnts „[[$1]]“ šėtuo wiki'''",
        "searchmenu-new": "<strong>Padėrbtė poslapi, katros vadėntos „[[:$1]]“</strong> {{PLURAL:$2|0=|Dā veiziekat paėiškuo rasta straipsni|Dā veiziekat paėiškuos gavėnius.}}",
        "searchprofile-articles": "Torėnė poslapē",
        "right-delete": "Trintė poslapius",
        "right-browsearchive": "Ėiškuotė ėštrintū poslapiu",
        "right-undelete": "Tou poslapi padėrbtė apent",
-       "newuserlogpage": "Nauduotuojė kūrėma sārošos",
+       "newuserlogpage": "Nauduotuojė kūrėma sārašos",
        "rightslog": "Nauduotuoju teisiu istuorėjė",
        "rightslogtext": "Pateikiams nauduotuoju teisiu pakeitėmu sārašos.",
        "action-read": "skaitītė ton poslapi",
        "enhancedrc-history": "istuorėjė",
        "recentchanges": "Vielībė̄jė pakeitėmā",
        "recentchanges-legend": "Vielībūju pakeitėmu pasėrinkėmā",
-       "recentchanges-summary": "Keravuokat patius vielībuosius wiki pakeitėmus tamė poslapi.",
+       "recentchanges-summary": "Keravuokat patius vielībuosius wiki pakeitėmus tamė poslapie.",
        "recentchanges-feed-description": "Keravuokėt patius vielībiausius pakeitėmus pruojektō tamė šaltėnī.",
        "recentchanges-label-newpage": "Šėtuo keitėmuo padėrbts naus poslapis",
        "recentchanges-label-minor": "Tas īr mažos pataisīms",
        "rcshowhidemine": "$1 mona pakeitėmus",
        "rcshowhidemine-show": "Ruodītė",
        "rcshowhidemine-hide": "Kavuotė",
+       "rcshowhidecategorization": "$1, kap poslapiam doud kateguorėjės",
        "rclinks": "Ruodītė vielībus $1 pakeitėmu par paskuojės $2 dėinas<br />$3",
        "diff": "skėrt",
        "hist": "ist",
        "uploadlogpage": "Ožkruovėmu istuorėjė",
        "uploadlogpagetext": "Žemiau pateikiam paskotėniu failu ikielima istuorėjė.",
        "filename": "Abruozdėlė vards",
-       "filedesc": "Pāiškėnėms",
-       "fileuploadsummary": "Pāiškėnėms:",
+       "filedesc": "Pškėnėms",
+       "fileuploadsummary": "Tromps aprašīms:",
        "filereuploadsummary": "Abruozdielė pakeitėmāː",
        "filestatus": "Derbieju teisėsː",
        "filesource": "Šaltėnis:",
        "filehist-user": "Nauduotuos",
        "filehist-dimensions": "Mierā",
        "filehist-filesize": "Abruozdielė dėdloms",
-       "filehist-comment": "Pāiškėnėms",
+       "filehist-comment": "Pškėnėms",
        "imagelinks": "Abruozdieliu nauduojėms",
        "linkstoimage": "{{PLURAL:$1|Ons poslapis|Anėi poslapē}} ruod ton abruozdielin:",
        "nolinkstoimage": "Abruozdielėp neruod anėjuoks poslapis.",
        "filerevert": "Sogrōžėntė $1",
        "filerevert-legend": "Faila sogrōžinėms",
        "filerevert-intro": "<span class=\"plainlinks\">Tamsta grōžėnat '''[[Media:$1|$1]]''' i versėje $4 ($2, $3).</span>",
-       "filerevert-comment": "Pāiškėnėms:",
+       "filerevert-comment": "Dingstės:",
        "filerevert-submit": "Grōžėntė",
        "filedelete": "Trintė $1",
        "filedelete-legend": "Trintė faila",
        "statistics-users": "Ožsėregėstravosiu [[Special:ListUsers|nauduotuoju]]",
        "statistics-users-active": "Aktīviu nauduotuoju",
        "statistics-users-active-desc": "Nauduotuojē, katrėi par {{PLURAL:$1|paskiausė dėina|paskiausė 2 dėinė|paskiausės $1 dėinas|paskiausiu $1 dėinū}} padėrba keitėmu",
+       "pageswithprop": "Poslapē so apībriežtuom savībėm",
+       "pageswithprop-legend": "Poslapē so apībriežtuom savībėm",
        "pageswithprop-submit": "Ēk",
        "doubleredirects": "Dvėgobė nusokėmā",
        "doubleredirectstext": "Tėi paradresavėmā ruod i kėtus paradresavėma poslapius. Kuožnuo eilotē pamėnavuots pėrmasā ėr ontrasā paradresavėmā, tēpuogi ontrojė paradresavėma paskėrtis, katra paprastā ė paruod i tėkraji poslapi, i katra pėrmasā paradresavėms ė torietu ruodītė.",
        "protectedpages-unknown-performer": "Nežėnuoms nauduotuos",
        "protectedtitles": "Apsauguotė pavadinėmā",
        "protectedtitlesempty": "Šėtou čieso nier anėjuokė pavadinėma, katros apsauguots tās parametrās.",
-       "listusers": "Sārošos nauduotuoju",
+       "listusers": "Sārašos nauduotuoju",
        "listusers-editsonly": "Ruodītė tėktās nauduotuojus katrėi īr atlėkė pakeitėmus",
        "usereditcount": "{{PLURAL:$1|pataisīms|pataisīmā|pataisīmu}}",
        "usercreated": "{{GENDER:$3|Padėrba paskīra}} $1 $2",
        "logempty": "Istuorėjuo nier anėjuokiū atitinkontiu atsėtėkimu.",
        "log-title-wildcard": "Ėiškuotė pavadinėmu, katrė prasėded šėtuo teksto",
        "showhideselectedlogentries": "Ruodītė/kavuotė sāraša ponktus, katrūs pasėrėnkot",
+       "checkbox-select": "Rinktėis: $1",
+       "checkbox-all": "Viskos",
        "allpages": "Vėsė straipsnē",
        "nextpage": "Kėts poslapis ($1)",
        "prevpage": "Onkstesnis poslapis ($1)",
        "listgrouprights": "Nauduotuoju gropiu teisės",
        "listgrouprights-group": "Gropė",
        "listgrouprights-rights": "Teisės",
-       "listgrouprights-members": "(nariū sārošos)",
+       "listgrouprights-members": "(nariū sārašos)",
+       "trackingcategories": "Pruogramėnės keravuojėma kateguorėjės",
        "mailnologin": "Nier adresa",
        "mailnologintext": "Tamstā reik būtė [[Special:UserLogin|prisėjongosiam]]\nė tor būtė ivests teisings el. pašta adresos Tamstas [[Special:Preferences|nustatīmuos]],\nkū siōstomiet el. gruomatas kėtėm nauduotuojam.",
        "emailuser": "Rašītė gruomata šėtam nauduotuojō",
        "actioncomplete": "Vēksmos padėrbts īr",
        "actionfailed": "Vēksmos atšaukts īr",
        "deletedtext": "„$1“ ėštrints īr.\nVielībūju trīnėmu istuorėjė - $2.",
-       "dellogpage": "Ėštrīnėmu sārošos",
+       "dellogpage": "Ėštrīnėmu sārašos",
        "dellogpagetext": "Apatiuo gol patīs vielībė̄jė ėštrīnėmā.",
-       "deletionlog": "ėštrīnėmu sārošos",
+       "deletionlog": "ėštrīnėmu sārašos",
        "reverted": "Grōžinta tāp, kāp ėšruodė pėrmiou",
        "deletecomment": "Dingstės:",
        "deleteotherreason": "Kėta/papėlduoma dingstės:",
        "rollbackfailed": "Atmetėms nasėgava",
        "cantrollback": "Negalėma atmestė redagavėma; paskotinis keitės nauduotuos īr tuo poslapė autorius.",
        "alreadyrolled": "Nė̄šēn otgrōžintė pakeitėma, [[:$1]] katra padėrba [[User:$2|$2]] ([[User talk:$2|aptarėms]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);\nkažkas ton jau padėrba pėrmiou.\n\nVielībiausā ton poslapė pakeitėms padėrbts [[User:$3|$3]] ([[User talk:$3|aptarėms]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) īr.",
-       "editcomment": "Padėrbėma pāiškėnėms bova: <em>$1</em>.",
+       "editcomment": "Padėrbėma pškėnėms bova: <em>$1</em>.",
        "revertpage": "Atmests [[Special:Contributions/$2|$2]] ([[User talk:$2|aptarėms]]) pakeitėms; sogrōžints atmains, katron padėrba nauduotuos [[User:$1|$1]]",
        "rollback-success": "Atmestė $1 padėrbtė keitėmā; grōžints $2 padėrbts atmains.",
        "sessionfailure": "Atruod ka īr biedū so Tamstas prėsėjongėmo; tas vēksmos bova grōžints kāp atsargoma prėimonė nu sesėjės vuogėma.\nPrašoum mīgtė „atgal“ ėr parkrautė poslapi ėš katruo atiejėt, ė pamieginkėt apent.",
        "undeleteextrahelp": "Nuoriedamė atkortė vėsa poslapi, palikit vėsas varnales napažīmietas ėr\nspauskėt '''''Atkortė'''''. Nuoriedamiė atlėktė pasirėnktini atstatīma, pažīmiekit varnales šėtū versėju, katras nuorietomiet atstatītė, ėr spauskėt '''''Atkortė'''''. Paspaudus\n'''''Ėš naujė''''' bos ėšvalītuos vėsos varnalės ėr kuomentara lauks.",
        "undeleterevisions": "$1 {{PLURAL:$1|versėjė|versėjės|versėju}} soarkīvouta",
        "undeletehistory": "Jē atstatīsėt straipsni, istuorėjuo bos atstatītuos vėsos versėjės.\nJē puo ėštrīnima bova sokuots straipsnis tuokiuo patio pavadėnėmo,\natstatītuos versėjės atsiras onkstesnie istuorėjuo, o dabartėnė\nversėjė lėks napakeista. Atkoriant īr prarondamė apribuojimā failu versėjuom.",
-       "undeleterevdel": "Atkorėms nebus ivīkdīts, jē šėtā nulems paskotėnės poslapė versėjės dalini ėštrīnima.\nTuokēs atvejās, Tamstā rēk atžīmietė a atkavuotė naujausēs ėštrintas versėjės.\nFailu versėjės, katrū netorėt teisiu veizėtė, nebus atkortas.",
+       "undeleterevdel": "Poslapė atstatīms nabūs padarīts, jēb dielē ton ėšsitrintom vielībė̄jė poslapė pakeitėmā.\nTūdie Tamstā rēk atžīmietė aba atkavuotė vielībuosius ėštrintus atmainus.",
        "undeletehistorynoadmin": "Šėts straipsnis bova ėštrints. Trīnima prižastis\nruodoma žemiau, teipuogi kas redagava poslapi\nlėgė trīnima. Ėštrintū poslapiu tekstos īr galėmas tėk admėnėstratuoriam.",
        "undelete-revision": "Ėštrėnta $1 versėjė, katra $4 d. $5 padėrba $3:",
        "undeleterevision-missing": "Neteisėnga a dėngosė versėjė. Tamsta mažo torėt bluoga nūruoda, a versėjė bova atkorta a pašalėnta ėš arkīva.",
        "undeletebtn": "Grōžintė",
        "undeletelink": "veizietė/grōžintė",
        "undeleteviewlink": "veizietė",
-       "undeleteinvert": "Žīmietė prīšėngā",
+       "undeleteinvert": "Žīmietė atvėrkštē",
        "undeletecomment": "Dingstės:",
        "undeletedrevisions": "$1 {{PLURAL:$1|pakeitėms sogrōžints|pakeitėmā sogrōžintė|pakeitėmu sogrōžintu}} īr",
        "undeletedrevisions-files": "sogrōžintaː $1 {{PLURAL:$1|pakeitėms|pakeitėmā|pakeitėmu}} ėr $2 {{PLURAL:$2|abruozdielis|abruozdielē|abruozdieliu}}",
        "undelete-show-file-confirm": "A ėš tėkrā nuorėt parveizietė ėštrėnta faila „<nowiki>$1</nowiki>“ $2 $3 versėjė?",
        "undelete-show-file-submit": "Tēp",
        "namespace": "Vardū srėtės:",
-       "invert": "Žīmietė prīšėngā",
+       "invert": "Žīmietė atvėrkštē",
        "tooltip-invert": "Pažīmiekat ton varnalė, ka pakavuotomiet pakeitėmus pasėrinktūs poslapiūs (ė prėgolontės vardū srėtis)",
        "namespace_association": "Prėgolontė vardū srėtės",
        "tooltip-namespace_association": "Pažīmiekat ton varnalė, ka prėgoldītomat aptarėmus, katrėi ī sosėjė so parinkta vardū srėtim",
        "uctop": " (vielībs)",
        "month": "Nug mienėsė (ėr onkstiau):",
        "year": "Nug metu (ėr onkstiau):",
-       "sp-contributions-newbies": "Ruodītė tėk naujū prieteliu duovios",
+       "sp-contributions-newbies": "Ruodītė tėktās naujū prieteliu duovius",
        "sp-contributions-newbies-sub": "Naujuoms paskīruoms",
        "sp-contributions-newbies-title": "Nauduotuoju keitėmā naujuoms paskīruoms",
        "sp-contributions-blocklog": "Bluokavėmu istuorėjė",
        "contribslink": "duovis",
        "emaillink": "siōstė pašta",
        "autoblocker": "Autuomatėnis ožbluokavėms, nes dalėnaties IP adreso so nauduotuojo \"$1\". Prīžastės - \"$2\".",
-       "blocklogpage": "Ožgīnėmu sārošos",
+       "blocklogpage": "Ožgīnėmu sārašos",
        "blocklog-showlog": "Nauduotuos jau bova ožgints pėrmiou.\nApatiuo veiziekat kas ė kāpː",
        "blocklogentry": "ožgīnė [[$1]] nug dėrbėma, tas vēk ton čiesa - $2 $3",
        "reblock-logentry": "pakeistė [[$1]] bluokavėma nustatīmā, naus bluokavėma čiesos īr $2 $3",
        "tooltip-pt-anonuserpage": "Nauduotuojė poslapis Tamstas IP adresō",
        "tooltip-pt-mytalk": "Tamstas aptarėma poslapis",
        "tooltip-pt-preferences": "Mona nustatīmā",
-       "tooltip-pt-watchlist": "Poslapiu, katrūs Tamsta pasėrėnkuot keravuotė, sārošos.",
+       "tooltip-pt-watchlist": "Poslapiu, katrūs Tamsta pasirinkuot keravuotė, sārašos.",
        "tooltip-pt-mycontris": "Tamstas dėrbtū keitėmu sārašos",
        "tooltip-pt-login": "Kvėitam prėsėjongtė, nuors tas ė nie būtėna.",
        "tooltip-pt-logout": "Atsėjongtė",
        "tooltip-save": "Ėšsauguotė pakeitėmus",
        "tooltip-preview": "Ta īr pakeitėmu parveiza. Prašuom parveizat prīš ėšsaugont!",
        "tooltip-diff": "Ruod, kū parkeitiet straipsni.",
-       "tooltip-compareselectedversions": "Veizėtė abodvėju pasėrėnktū poslapė versėju skėrtomos.",
+       "tooltip-compareselectedversions": "Veizietė abodvėju pasirinktū poslapė atmainu skėrtomus.",
        "tooltip-watch": "Pridietė šėta poslapi i keravuojamu sāraša",
        "tooltip-recreate": "Atkortė poslapi napaisant šėto, kū ans bova ėštrints",
        "tooltip-rollback": "Sogrōžintė poslapi tāp, kāp ons bova prīš vielībūs ton nauduotuojė pardėrbėmus",
        "watchlistedit-raw-explain": "Žemiau ruodomė poslapē Tamstas keravuojamu sārašė, ė gal būtė pridietė i a pašalėntė ėš sāraša; vėins poslapis eilotie. Bėngė paspauskėt „Atnaujėntė keravuojamu sāraša“. Tamsta tēpuogi galėt [[Special:EditWatchlist|nauduotė standartėni radaktuoriu]].",
        "watchlistedit-raw-titles": "Poslapē:",
        "watchlistedit-raw-submit": "Atnaujėntė keravuojamu sāraša",
-       "watchlistedit-raw-done": "Tamstas keravuojamu sārošos bova atnaujėnts.",
+       "watchlistedit-raw-done": "Tamstas keravuojamu poslapiu sārašos bova atnaujints.",
        "watchlistedit-raw-added": "$1 {{PLURAL:$1|poslapis bova pridiets|poslapē bova pridietė|poslapiu bova pridieta}}:",
        "watchlistedit-raw-removed": "$1 {{PLURAL:$1|poslapis bova pašalėnts|poslapē bova pašalėntė|poslapiu bova pašalėnta}}:",
        "watchlisttools-view": "Veizietė sosėjosius pakeitėmus",
        "logentry-upload-overwrite": "$1 {{GENDER:$2|ožkruovė}} naujė $3 atmaina",
        "logentry-upload-revert": "$1 {{GENDER:$2|ožkruovė}} $3",
        "rightsnone": "(juokiū)",
-       "revdelete-summary": "keitėma pāiškėnėms",
+       "revdelete-summary": "keitėma pškėnėms",
        "feedback-close": "Padėrbt",
        "searchsuggest-search": "Ėiškuotė",
        "searchsuggest-containing": "katrėi tor...",
index 39cfc47..4ba4a01 100644 (file)
        "resetpass_submit": "Nastaviť heslo a prihlásiť sa",
        "changepassword-success": "Vaše heslo bolo úspešne zmenené!",
        "changepassword-throttled": "Uskutočnili ste príliš mnoho neúspešných pokusov o prihlásenie. Prosím, počkajte $1 predtým, než to skúsite znova.",
+       "botpasswords-label-appid": "Názov bota:",
+       "botpasswords-label-create": "Vytvoriť",
+       "botpasswords-label-update": "Aktualizovať",
+       "botpasswords-label-cancel": "Zrušiť",
+       "botpasswords-label-delete": "Vymazať",
+       "botpasswords-label-resetpassword": "Obnoviť heslo",
        "resetpass_forbidden": "Heslá nie je možné zmeniť",
        "resetpass-no-info": "Aby ste mohli priamo pristupovať k tejto stránke, musíte sa prihlásiť.",
        "resetpass-submit-loggedin": "Zmeniť heslo",
        "sig_tip": "Váš podpis s dátumom a časom",
        "hr_tip": "Vodorovná čiara (radšej ju nepoužívajte)",
        "summary": "Zhrnutie úprav:",
-       "subject": "Téma/nadpis:",
+       "subject": "Predmet:",
        "minoredit": "Toto je drobná úprava",
        "watchthis": "Sledovať úpravy tejto stránky",
        "savearticle": "Uložiť stránku",
+       "savechanges": "Uložiť zmeny",
+       "publishpage": "Publikovať stránku",
+       "publishchanges": "Publikovať zmeny",
        "preview": "Náhľad",
        "showpreview": "Zobraziť náhľad",
        "showdiff": "Zobraziť rozdiely",
        "mw-widgets-dateinput-placeholder-month": "RRRR-MM",
        "mw-widgets-titleinput-description-new-page": "stránka zatiaľ neexistuje",
        "mw-widgets-titleinput-description-redirect": "presmerovanie na $1",
-       "api-error-blacklisted": "Prosím, zvoľte iný, opisný názov.",
        "randomrootpage": "Náhodná koreňová stránka"
 }
index 7c78a48..3867416 100644 (file)
        "userpage-userdoesnotexist": "Кориснички налог „<nowiki>$1</nowiki>“ није отворен.\nРазмислите да ли заиста желите да направите/уредите ову страницу.",
        "userpage-userdoesnotexist-view": "Кориснички налог „$1“ није отворен.",
        "blocked-notice-logextract": "Овај корисник је тренутно блокиран.\nИзвештај о последњем блокирању можете погледати испод:",
-       "clearyourcache": "<strong>Напомена:</strong> након чувања, можда ћете морати да очистите кеш прегледача како бисте видели промене.\n* <strong>Фајерфокс / Сафари:</strong> држите <em>Shift</em> и кликните на <em>Освежи</em>, или притисните <em>Ctrl-F5</em> или <em>Ctrl-R (<em>⌘-R</em> на Меку)\n* <strong>Гугл кроум:</strong> притисните <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> на Меку)\n* <strong>Интернет експлорер:</strong> држите <em>Ctrl</em> и кликните на <em>Освежи</em> или притисните <em>Ctrl-F5</em>\n* <strong>Опера:</strong> идите на <em>Алатке → Подешавања</em> (<em>Опера → Поставке</em> на Меку) и затим <em>Приватност и безбедност → Очистите податке о прегледима → Кеширане слике и датотеке</em>.",
+       "clearyourcache": "<strong>Напомена:</strong> након чувања, можда ћете морати да очистите кеш прегледача како бисте видели промене.\n* <strong>Фајерфокс / Сафари:</strong> држите <em>Shift</em> и кликните на <em>Освежи</em>, или притисните <em>Ctrl-F5</em> или <em>Ctrl-R</em> (<em>⌘-R</em> на Меку)\n* <strong>Гугл кроум:</strong> притисните <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> на Меку)\n* <strong>Интернет експлорер:</strong> држите <em>Ctrl</em> и кликните на <em>Освежи</em> или притисните <em>Ctrl-F5</em>\n* <strong>Опера:</strong> идите на <em>Алатке → Подешавања</em> (<em>Опера → Поставке</em> на Меку) и затим <em>Приватност и безбедност → Очистите податке о прегледима → Кеширане слике и датотеке</em>.",
        "usercssyoucanpreview": "'''Савет:''' кориситите дугме „{{int:showpreview}}“ да испробате свој нови CSS пре него што га сачувате.",
        "userjsyoucanpreview": "'''Савет:''' кориситите дугме „{{int:showpreview}}“ да испробате свој нови јаваскрипт пре него што га сачувате.",
        "usercsspreview": "'''Ово је само преглед CSS-а.'''\n'''Страница још није сачувана!'''",
index ad1dc2e..9d11bc5 100644 (file)
        "userpage-userdoesnotexist": "Korisnički nalog „<nowiki>$1</nowiki>“ nije otvoren.\nRazmislite da li zaista želite da napravite/uredite ovu stranicu.",
        "userpage-userdoesnotexist-view": "Korisnički nalog „$1“ nije otvoren.",
        "blocked-notice-logextract": "Ovaj korisnik je trenutno blokiran.\nIzveštaj o poslednjem blokiranju možete pogledati ispod:",
-       "clearyourcache": "<strong>Napomena:</strong> nakon čuvanja, možda ćete morati da očistite keš pregledača kako biste videli promene.\n* <strong>Fajerfoks / Safari:</strong> držite <em>Shift</em> i kliknite na <em>Osveži</em>, ili pritisnite <em>Ctrl-F5</em> ili <em>Ctrl-R (<em>⌘-R</em> na Meku)\n* <strong>Gugl kroum:</strong> pritisnite <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> na Meku)\n* <strong>Internet eksplorer:</strong> držite <em>Ctrl</em> i kliknite na <em>Osveži</em> ili pritisnite <em>Ctrl-F5</em>\n* <strong>Opera:</strong> idite na <em>Alatke → Podešavanja</em> (<em>Opera → Postavke</em> na Meku) i zatim <em>Privatnost i bezbednost → Očistite podatke o pregledima → Keširane slike i datoteke</em>.",
+       "clearyourcache": "<strong>Napomena:</strong> nakon čuvanja, možda ćete morati da očistite keš pregledača kako biste videli promene.\n* <strong>Fajerfoks / Safari:</strong> držite <em>Shift</em> i kliknite na <em>Osveži</em>, ili pritisnite <em>Ctrl-F5</em> ili <em>Ctrl-R</em> (<em>⌘-R</em> na Meku)\n* <strong>Gugl kroum:</strong> pritisnite <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> na Meku)\n* <strong>Internet eksplorer:</strong> držite <em>Ctrl</em> i kliknite na <em>Osveži</em> ili pritisnite <em>Ctrl-F5</em>\n* <strong>Opera:</strong> idite na <em>Alatke → Podešavanja</em> (<em>Opera → Postavke</em> na Meku) i zatim <em>Privatnost i bezbednost → Očistite podatke o pregledima → Keširane slike i datoteke</em>.",
        "usercssyoucanpreview": "'''Savet:''' korisitite dugme „{{int:showpreview}}“ da isprobate svoj novi CSS pre nego što ga sačuvate.",
        "userjsyoucanpreview": "'''Savet:''' korisitite dugme „{{int:showpreview}}“ da isprobate svoj novi javaskript pre nego što ga sačuvate.",
        "usercsspreview": "'''Ovo je samo pregled CSS-a.'''\n'''Stranica još nije sačuvana!'''",
index 068b570..4f78206 100644 (file)
        "template-protected": "(ಸಂರಕ್ಷಿತೊ)",
        "template-semiprotected": "(ಅರೆ-ಸಂರಕ್ಷಿತೊ)",
        "hiddencategories": "ಈ ಪುಟೊ {{PLURAL:$1|೧ ಗುಪ್ತ ವರ್ಗೊಗ್|$1 ಗುಪ್ತ ವರ್ಗೊಲೆಗ್}} ಸೇರ್ದ್‍ನ್ಡ್:",
+       "permissionserrors": "ಅನುಮತಿ ದೋಷ",
        "permissionserrorstext-withaction": "$2 ಗ್ ಇರೆಗ್ ಅನುಮತಿ ಇದ್ದಿ, ಅಯಿಕ್ {{PLURAL:$1|ಕಾರಣೊ|ಕಾರಣೊಲು}}:",
        "moveddeleted-notice": "ಈ ಪುಟೊ ಅಸ್ತಿತ್ವೊಡ್ ಇದ್ದಿ.\nಪುಟೊದ ಡಿಲೀಶನ್ ಅತ್ತ್ಂಡ್ ಕಡಪ್ಪುಡುನೆ ಲಾಗ್‍ನ್ ತೂಯರೆ ತಿರ್ತ್ ಕೊರ್ತ್ಂಡ್.",
+       "content-model-wikitext": "ವಿಕಿ ಪಠ್ಯ",
        "viewpagelogs": "ಈ ಪುಟೊತ ದಾಕಲೆಲೆನ್ ತೂಲೆ",
        "nohistory": "ಈ ಪುಟಕ್ ಬದಲಾವಣೆದ ಇತಿಹಾಸ ಇಜ್ಜಿ",
        "currentrev": "ಇತ್ತೆದ ಆವೃತ್ತಿ",
        "notextmatches": "ವಾ ಪುಟೊತ ಪಠ್ಯೊಡುಲಾ ಹೋಲಿಕೆ ಇಜ್ಜಿ",
        "prevn": "ದುಂಬು {{PLURAL:$1|$1}}",
        "nextn": "ಬೊಕ್ಕೊ {{PLURAL:$1|$1}}",
+       "prev-page": "ದುಂಬುತ ಪುಟೊ",
+       "next-page": "ನನತಾ ಪುಟ",
        "nextn-title": "ದುಂಬುದ $1 {{PLURAL:$1|result|ಪಲಿತಾಂಸೊಲು}}",
        "shown-title": "ಪ್ರತಿ ಪುಟೊಡುಲಾ $1 {{PLURAL:$1|result|ಪಲಿತಾಂಸೊ}} ತೋಜಿಪಾವು",
        "viewprevnext": "ತೂಲೆ($1 {{int:pipe-separator}} $2) ($3)",
        "prefs-skin": "ಸ್ಕಿನ್",
        "skin-preview": "ಮುನ್ನೋಟೊ",
        "datedefault": "ಒವ್ವೇ ಪ್ರಾಸಸ್ತ್ಯೊ ಇದ್ದಿ",
+       "prefs-user-pages": "ಸದಸ್ಯೆರೆನ ಪುಟೊ",
        "prefs-rc": "ಇಂಚಿಪದ ಬದಲಾವಣೆಲು",
+       "prefs-watchlist": "ವೀಕ್ಷಣಾಪಟ್ಟಿ",
        "prefs-resetpass": "ಪ್ರವೇಶಪದೊನ್ ಬದಲಾವಣೆ ಮಲ್ಪುಲೆ",
        "prefs-changeemail": "ಇ-ಅಂಚೆ ವಿಳಾಸೊನು ಬದಲಾವಣೆ ಮಲ್ಪುಲೆ ಅತ್ತಂಡ ದೆಪ್ಪುಲೆ",
        "prefs-setemail": "ಇ-ಅಂಚೆ ವಿಳಾಸೊನು ಸ್ತಾಪನೆ ಮಲ್ಪು",
        "prefs-tokenwatchlist": "ಟೊಕನ್",
        "userrights-lookup-user": "ಬಳಕೆದಾರೆರೆ ಗುಂಪುಲೆನ್ ನಿರ್ವಹಿಸಲ",
        "userrights-user-editname": "ಒಂಜಿ ಸದಸ್ಯ ಪುದರ್ ಬರೆಲೆ",
+       "userrights-reason": "ಕಾರಣೊ:",
        "group": "ಗುಂಪುಲು:",
        "group-user": "ಬಳಕೆದಾರೆರ್",
        "group-sysop": "ನಿರ್ವಾಹಕೆರ್",
        "right-writeapi": "ಬರೆಯಿನ ಎಪಿಐದ ಬಳಕೆ",
        "right-delete": "ಪುಟೊಕುಲೆನ್ ಮಾಜಾಲೆ",
        "right-undelete": "ಪುಟೊನ್ ಮಾಜಾವಡೆ",
+       "grant-group-email": "ಇ-ಅಂಚೆ ಕಡಪುಡುಲೆ",
        "newuserlogpage": "ಸದಸ್ಯೆರೆ ಸ್ರಿಸ್ಟಿದ ದಾಕಲೆ",
        "rightslog": "ಸದಸ್ಯೆರ್ನ ಹಕ್ಕು ದಾಖಲೆ",
        "action-read": "ಈ ಪುಟೊನು ಓದುಲೆ",
        "recentchanges-label-plusminus": "ಬೈಟ್ಸ್‌ದ ಲೆಕ್ಕೊಡು ಈ ಪಾಲೆದ ಗಾತ್ರೊ ಬದಲಾತ್ಂಡ್",
        "recentchanges-legend-heading": "<strong>ಲೆಜೆಂಡ್:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (ಬೊಕ್ಕೊಲಾ ತೂಲೆ [[Special:NewPages|ಪೊಸ ಪುಟೊದ ಪಟ್ಟಿ]])",
+       "recentchanges-submit": "ತೋಜಾಲೆ",
        "rclistfrom": "$3 $2 ರ್ದ್ ಸುರುವಾತಿನ ಪೊಸ ಬದಲಾವಣೆಲೆನ್ ತೊಜ್ಪಾವು",
        "rcshowhideminor": "$1 ಎಲ್ಯೆಲ್ಯ ಬದಲಾವಣೆಲು",
        "rcshowhideminor-show": "ತೋಜಾಲೆ",
        "rcshowhidebots-show": "ತೊಜಾವು",
        "rcshowhidebots-hide": "ಅಡೆಂಗಾವು",
        "rcshowhideliu": "ನೋಂದವಣೆ ಆತಿನಂಚಿನ ಸದಸ್ಯೆರ್ $1",
+       "rcshowhideliu-show": "ತೋಜಾಲೆ",
        "rcshowhideliu-hide": "ಅಡೆಂಗಾವು",
        "rcshowhideanons": "ಪುದರ್ ಇದ್ಯಾಂದಿನ ಸದಸ್ಯೆರ್ $1",
        "rcshowhideanons-show": "ತೋಜಾಲೆ",
        "rcshowhideanons-hide": "ಅಡೆಂಗಾವು",
        "rcshowhidepatr": "$1 ಪರೀಕ್ಷಿಸಾದಿನ ಸಂಪಾದನೆಲು",
+       "rcshowhidepatr-show": "ತೋಜಾಲೆ",
+       "rcshowhidepatr-hide": "ಅಡೆಂಗಾವು",
        "rcshowhidemine": "ಎನ್ನ ಸಂಪಾದನೆಲೆನ್ $1",
        "rcshowhidemine-show": "ತೋಜಾಲೆ",
        "rcshowhidemine-hide": "ಅಡೆಂಗಾವು",
+       "rcshowhidecategorization-show": "ತೋಜಾಲೆ",
+       "rcshowhidecategorization-hide": "ಅಡೆಂಗಾವು",
        "rclinks": "ದುಂಬುದ $2 ದಿನೊಲೆಡ್ ಮಲ್ತಿನ $1 ಪಿರವುದ ಬದಲಾವಣೆಲೆನ್ ತೂಲೆ <br />$3",
        "diff": "ವ್ಯತ್ಯಾಸೊ",
        "hist": "ಇತಿಹಾಸೊ",
        "uploadlogpage": "ಅಪ್ಲೋಡ್ ದಾಖಲೆ",
        "filename": "ಕಡತದ ಪುದರ್",
        "filedesc": "ಸಾರಾಂಸೊ",
+       "fileuploadsummary": "ಸಾರಾಂಸೊ:",
        "filesource": "ಮೂಲ",
        "savefile": "ಕಡತನ್ ಒರಿಪಾಲೆ",
        "upload-source": "ಮೂಲ ಕಡತ",
+       "upload-file-error": "ಆ೦ತರಿಕ ದೋಷ",
+       "upload-dialog-button-cancel": "ವಜಾ ಮಲ್ಪುಲೆ",
+       "upload-dialog-button-done": "ಆಂಡ್",
+       "upload-dialog-button-save": "ಒರಿಪಾಲೆ",
+       "upload-dialog-button-upload": "ಅಪ್ಲೊಡ್",
+       "upload-form-label-infoform-title": "ವಿವರೊ",
+       "upload-form-label-infoform-name": "ಪುದರ್",
+       "upload-form-label-infoform-description": "ವಿವರಣೆ",
+       "upload-form-label-usage-filename": "ಕಡತದ ಪುದರ್",
+       "upload-form-label-infoform-categories": "ವರ್ಗೊಲು",
+       "upload-form-label-infoform-date": "ದಿನೊ",
+       "license": "ಪರವಾನಗಿ:",
        "license-header": "ಪರವಾನಿಗೆ",
+       "listfiles-delete": "ಮಾಜಾಲೆ",
        "imgfile": "ಫೈಲ್",
+       "listfiles_thumb": "ಎಲ್ಯಚಿತ್ರೊ",
+       "listfiles_date": "ದಿನೊ",
+       "listfiles_name": "ಪುದರ್",
+       "listfiles_user": "ಬಳಕೆದಾರೆರ್",
+       "listfiles_size": "ಗಾತ್ರೊ",
+       "listfiles_description": "ವಿವರಣೆ",
+       "listfiles_count": "ಆವೃತ್ತಿಲು",
+       "listfiles-latestversion-yes": "ಅಂದ್",
+       "listfiles-latestversion-no": "ಅತ್ತ್",
        "file-anchor-link": "ಫೈಲ್",
        "filehist": "ಫೈಲ್‍ದ ಇತಿಹಾಸೊ",
        "filehist-help": "ದಿನೊ/ಪೊರ್ತುದ ಮಿತ್ತ್ ಒತ್ತ್‌ಂಡ ಈ ಫೈಲ್‍ದ ನಿಜೊಸ್ತಿತಿ ತೋಜುಂಡು.",
        "filehist-deleteall": "ಮಾತಾ ಮಾಜಾಲೆ",
        "filehist-deleteone": "ಮಾಜಾಲೆ",
+       "filehist-revert": "ದುಂಬುದ ಲೆಕ ಮಲ್ಪುಲೆ",
        "filehist-current": "ಇತ್ತೆದ",
        "filehist-datetime": "ದಿನೊ/ಪೊರ್ತು",
        "filehist-thumb": "ಎಲ್ಯಚಿತ್ರೊ",
        "sharedupload": "ಈ ಫೈಲ್’ನ್ ಮಸ್ತ್ ಜನ ಪಟ್ಟ್’ದುಲ್ಲೆರ್ ಅಂಚೆನೆ ಉಂದು ಮಸ್ತ್ ಪ್ರೊಜೆಕ್ಟ್’ಲೆಡ್ ಉಪಯೋಗಡುಪ್ಪು.",
        "sharedupload-desc-here": "ಈ ಪುಟೊ $1ಡ್ದ್ ಬೊಕ್ಕ ಬೇತೆ ಯೋಜನೆಡ್ದ್ ಗಳಸೊಲಿ.\nಈ ಪುಟೊತ ವಿವರೊ [$2 ಪುಟೊತ ವಿವರೊ] ತಿರ್ತ ಸಾಲ್‍ಡ್ ತೋಜಾದ್ಂಡ್",
        "upload-disallowed-here": "ಈರ್ ಈ ಫೈಲ್‍ನ್ ಕುಡೊರೊ ಬರೆವರೆ ಸಾದ್ಯೊ ಇದ್ದಿ.",
+       "filerevert-comment": "ಕಾರಣ:",
+       "filerevert-submit": "ದುಂಬುದ ಲೆಕ ಮಲ್ಪುಲೆ",
        "filedelete-comment": "ಕಾರಣ",
        "filedelete-submit": "ಮಾಜಾಲೆ",
+       "filedelete-reason-otherlist": "ಬೇತೆ ಕಾರಣ",
+       "download": "ಡೌನ್‍ಲೋಡ್",
        "randompage": "ಯಾದೃಚ್ಛಿಕ ಪುಟೊ",
+       "randomincategory-submit": "ಪೋಲೆ",
        "statistics": "ಅಂಕಿ ಅಂಶೊಲು",
        "statistics-header-pages": "ಪುಟೊತ ಅಂಕಿ ಅಂಶಲು",
+       "statistics-pages": "ಪುಟಕುಲು",
+       "pageswithprop-submit": "ಪೋಲೆ",
+       "brokenredirects-edit": "ಸಂಪೊಲಿಪುಲೆ",
+       "brokenredirects-delete": "ಮಾಜಾಲೆ",
+       "withoutinterwiki-submit": "ತೋಜಾಲೆ",
        "nbytes": "$1 {{PLURAL:$1|ಬೈಟ್|ಬೈಟ್‍ಲು}}",
        "nmembers": "$1 {{PLURAL:$1|ಸದಸ್ಯೆ|ಸದಸ್ಯೆರ್}}",
        "wantedfiles": "ಬೋಡಾಯಿನ ಕಡತೊಲು",
        "prefixindex": "ಪೂರ್ವನಾಮೊಲ್ದ ಸೂಚಿಕೆ",
+       "prefixindex-submit": "ತೋಜಾಲೆ",
+       "protectedpages-page": "ಪುಟೊ",
+       "protectedpages-reason": "ಕಾರಣೊ",
+       "protectedpages-unknown-timestamp": "ಗೊತ್ತಿಜ್ಜಾಂದಿನ",
        "listusers": "ಬಳಕೆದಾರರೆನ ತಖ್ತೆ",
        "newpages": "ಪೊಸ ಪುಟೊಲು",
+       "newpages-submit": "ತೋಜಾಲೆ",
        "newpages-username": "ಸದಸ್ಯೆರ್ನ ಪುದರ್:",
        "move": "ಮೂವ್(ಸ್ಥಳಾಂತರ) ಮಲ್ಪುಲೆ",
        "movethispage": "ಈ ಪುಟೊನು ಮೂವ್ ಮಲ್ಪುಲೆ",
        "pager-newer-n": "{{PLURAL:$1|ಪೊಸ ೧|ಪೊಸ $1}}",
        "pager-older-n": "{{PLURAL:$1|ಪರತ್ತ್ ೧|ಪರತ್ತ್ $1}}",
+       "apisandbox-reset": "ಮಾಜಲೇ",
+       "apisandbox-retry": "ನನೊರ ಪ್ರಯತ್ನ ಮಾನ್ಪುಲೇ",
+       "apisandbox-examples": "ಉದಾಹರಣೆಲು",
+       "apisandbox-results": "ಪಲಿತಾಂಸೊ",
        "booksources": "ಬೂಕುದ ಮೂಲೊ",
        "booksources-search-legend": "ಬೂಕುದ ಮೂಲೊನು ನಾಡ್‍ಲೆ",
        "booksources-search": "ನಾಡ್‍ಲೆ",
        "log": "ದಾಕಲೆಲು",
+       "logeventslist-submit": "ತೋಜಾಲೆ",
+       "checkbox-all": "ಮಾತಾ",
+       "checkbox-none": "ಒವ್ವುಲಾ ಇಜ್ಜಿ",
        "allpages": "ಪೂರಾ ಪೂಟೊಲು",
        "allpagesfrom": "ಇಂದೆರ್ದ್ ಶುರುವಾಪುನ ಪುಟೊಲೆನ್ ತೊಜ್ಪಾವು:",
        "allpagesto": "ಇಂದೆರ್ದ್ ಅಂತ್ಯ ಆಪುನ ಪುಟೊಲೆನ್ ತೊಜ್ಪಾವು:",
        "allarticles": "ಮಾತ ಪುಟೊಲು",
        "allpagessubmit": "ಪೋಲೆ",
        "categories": "ವರ್ಗೊಲು",
+       "categories-submit": "ತೋಜಾಲೆ",
+       "sp-deletedcontributions-contribs": "ಕಾನಿಕೆಲು",
+       "linksearch-ok": "ನಾಡ್‍ಲೆ",
+       "listusers-submit": "ತೋಜಾಲೆ",
+       "listgrouprights-group": "ಗುಂಪು",
        "listgrouprights-members": "(ಸದಸ್ಯೆರ್ನ ಪಟ್ಟಿ)",
+       "listgrants-rights": "ಹಕ್ಕುಗಳು",
        "emailuser": "ಈ ಸದಸ್ಯೆರೆಗ್ ಇ-ಮೈಲ್ ಕಡಪುಡ್ಲೆ",
+       "emailusername": "ಸದಸ್ಯೆರ್ನ ಪುದರ್:",
+       "emailusernamesubmit": "ಒಪ್ಪಿಸಾಲೆ",
+       "emailsubject": "ವಿಷಯ:",
+       "emailmessage": "ಸಂದೇಶಲು:",
+       "emailsend": "ಕಡಪುಡುಲೆ",
        "watchlist": "ವೀಕ್ಷಣಾ ಪಟ್ಟಿ",
        "mywatchlist": "ಎನ್ನ ವೀಕ್ಷಣಾಪಟ್ಟಿ",
        "watch": "ತೂಲೆ",
        "watchthispage": "ಈ ಪುಟೊನು ತೂಲೆ",
        "unwatch": "ವೀಕ್ಷಣಾಪಟ್ಟಿರ್ದ್ ದೆಪ್ಪು",
+       "watchlist-hide": "ಅಡೆಂಗಾವು",
+       "watchlist-submit": "ತೋಜಾವು",
+       "wlshowhideminor": "ಎಲ್ಯೆಲ್ಯ ಬದಲಾವಣೆಲು",
        "watchlist-options": "ವೀಕ್ಷಣಾಪಟ್ಟಿ ಆಯ್ಕೆಲು",
        "watching": "ವೀಕ್ಷಣಾಪಟ್ಟಿಗ್ ಸೇರ್ಪಾವೊಂದುಂಡು...",
        "unwatching": "ವೀಕ್ಷಣಾಪಟ್ಟಿರ್ದ್ ದೆತ್ತೊಂದುಂಡು...",
+       "confirm": "ಗಟ್ಟಿಮಲ್ಪುಲೆ",
+       "delete-legend": "ಮಾಜಾಲೆ",
+       "historyaction-submit": "ತೋಜಾಲೆ",
        "actioncomplete": "ಕಾರ್ಯ ಸಂಪೂರ್ಣ",
        "dellogpage": "ಡಿಲೀಟ್ ಮಲ್ತಿನ ಫೈಲ್‍ದ ದಾಕಲೆ",
+       "deletecomment": "ಕಾರಣ:",
+       "deletereasonotherlist": "ಬೇತೆ ಕಾರಣ",
        "rollbacklink": "ಪುಡತ್ತ್ ಪಾಡ್",
        "rollbacklinkcount": "ಪಿರ ದೆತೊನ್ಲೆ $1 {{PLURAL:$1|edit|ಸಂಪದನೆಲು}}",
+       "changecontentmodel-reason-label": "ಕಾರಣ:",
+       "changecontentmodel-submit": "ಬದಲಾವಣೆ",
+       "logentry-contentmodel-change-revertlink": "ದುಂಬುದ ಲೆಕ ಮಲ್ಪುಲೆ",
+       "logentry-contentmodel-change-revert": "ದುಂಬುದ ಲೆಕ ಮಲ್ಪುಲೆ",
        "protectlogpage": "ಸೇರಾಯಿನ ದಾಕಲೆ",
        "protectedarticle": "\"[[$1]]\" ಸಂರಕ್ಷಿತವಾದುಂಡು.",
        "modifiedarticleprotection": "\"[[$1]]\" ಪುಟೊತ ಸಂರಕ್ಷಣೆ ಮಟ್ಟ ಬದಲಾಂಡ್",
+       "protectcomment": "ಕಾರಣೊ:",
+       "protect-otherreason-op": "ಬೇತೆ ಕಾರಣ",
+       "restriction-type": "ಒಪ್ಪುಗೆ:",
+       "restriction-edit": "ಸಂಪಾದನೆ ಮಲ್ಪುಲೆ",
+       "restriction-move": "ಸ್ಥಳಾಂತರ ಮಲ್ಪುಲೆ",
+       "restriction-create": "ಸೃಷ್ಟಿಸಾಲೆ",
+       "restriction-upload": "ಅಪ್ಲೊಡ್",
        "undeletelink": "ದುಂಬುದ ಆವೃತ್ತಿಗ್ ಪೋಲೆ",
        "undeleteviewlink": "ತೂಲೆ",
+       "undeletecomment": "ಕಾರಣೊ:",
+       "undelete-search-submit": "ನಾಡ್‍ಲೆ",
+       "undelete-show-file-submit": "ಅಂದ್",
        "namespace": "ಪುದರ್‍ದ ಬಗೆ:",
        "invert": "ಆಯ್ಕೆನ್ ತಿರ್ಗಾಲೆ",
        "tooltip-invert": "ಈ ಚೌಕೊದುಲಯಿಡ್ ಅಡೆಂಗಿನ ಪುದರ್‍ನ್ ಈ ಚೌಕೊಡೆ ಪರೀಕ್ಷಿಸಲೆಲೆ(ಬೊಕ್ಕೊ ಒಟ್ಟುಗಿತ್ತಿನ ಪುದರ್‍ನ್ಲಾ ಪರೀಕ್ಷಿಸವೊಲಿ)",
        "whatlinkshere-hidetrans": "$1 ಸೇರಾವುನವು",
        "whatlinkshere-hidelinks": "$1 ಕೊಂಡಿಕುಲು",
        "whatlinkshere-filters": "ಅರಿಪೆಲು",
+       "whatlinkshere-submit": "ಪೋಲೆ",
        "blockip": "ಈ ಸದಸ್ಯೆರೆನ್ ಬ್ಲಾಕ್ ಮಲ್ಪುಲೆ",
+       "ipbreason": "ಕಾರಣೊ:",
        "ipboptions": "2 ಗಂಟೆಲು:2 hours,1 ದಿನ:1 day,3 ದಿನೊಲು:3 days,1 ವಾರ:1 week,2 ವಾರೊಲು:2 weeks,1 ತಿಂಗೊಲು:1 month,3 ತಿಂಗೊಲು:3 months,6 ತಿಂಗೊಲು:6 months,1 ವರ್ಷ:1 year,ಅನಿರ್ಧಿಷ್ಟ:infinite",
        "ipblocklist": "ತಡೆಪತ್ತ್’ದಿನ ಐ.ಪಿ ವಿಳಾಸೊಲು ಅಂಚೆನೆ ಬಳಕೆದ ಪುದರ್’ಲು",
        "blocklink": "ಅಡ್ಡ ಪತ್ತ್‌ಲೆ",
index 48bbe1f..c529978 100644 (file)
        "unblock": "Розблокувати користувача",
        "blockip": "Заблокувати {{GENDER:$1|користувача|користувачку}}",
        "blockip-legend": "Блокування користувача",
-       "blockiptext": "Використовуйте форму нижче, щоб заблокувати можливість редагування зазначеній IP-адресі або користувачу.\nЦе слід робити лише для запобігання порушенням і у відповідності до [[{{MediaWiki:Policy-url}}|правил]].\nОбов'язково заповніть причину нижче, бажано дати інформативну вичерпну інформацію (наприклад, послатися на конкретні правила, дати посилання на редагування користувача, які призвели до блокування). Можна конкретизувати причину блокування на сторінці обговорення користувача.\nВи можете заблокувати діапазони IP-адрес, використовуючи [https://uk.wikipedia.org/wiki/CIDR]-синтаксис. Максимально допустимий діапазон — /$1 для протоколу IPv4 та /$2 для протоколу IPv6.",
+       "blockiptext": "Використовуйте форму нижче, щоб заблокувати можливість редагування зазначеній IP-адресі або користувачу.\nЦе слід робити лише для запобігання порушенням і у відповідності до [[{{MediaWiki:Policy-url}}|правил]].\nОбов'язково заповніть причину нижче, бажано дати інформативну вичерпну інформацію (наприклад, послатися на конкретні правила, дати посилання на редагування користувача, які призвели до блокування). Можна конкретизувати причину блокування на сторінці обговорення користувача.\nВи можете заблокувати діапазони IP-адрес, використовуючи [https://uk.wikipedia.org/wiki/CIDR CIDR]-синтаксис. Максимально допустимий діапазон — /$1 для протоколу IPv4 та /$2 для протоколу IPv6.",
        "ipaddressorusername": "IP-адреса або ім'я користувача:",
        "ipbexpiry": "Термін:",
        "ipbreason": "Причина:",
index fdc8ec5..1897e60 100644 (file)
        "newarticle": "(نیا)",
        "newarticletext": "آپ نے ایک ایسے صفحے کے ربط کی پیروی کی ہے جو کہ ابھی موجود نہیں ہے.\nیہ صفحہ تخلیق کرنے کیلئے درج ذیل خانہ میں متن درج کیجئے (مزید معلومات کیلئے [$1 صفحۂ معاونت] ملاحظہ فرمائیے).\nاگر آپ یہاں غلطی سے پہنچے ہیں تو پچھلے صفحے پر واپس جانے کیلئے اپنے متصفح پر '''back''' کا بٹن ٹک کیجئے.",
        "anontalkpagetext": "----''یہ صفحہ ایک ایسے صارف کا ہے جنہوں نے یا تو اب تک اپنا کھاتا نہیں بنایا یا پھر وہ اسے استعمال نہیں کر رہے/ رہی ہیں۔ لہٰذا ہمیں انکی شناخت کے لئے ایک عددی آئی پی پتہ استعمال کرنا پڑرہا ہے۔ اس قسم کا آئی پی پتہ ایک سے زائد صارفین کے لئے مشترک بھی ہوسکتا ہے۔ اگر آپکی موجودہ حیثیت ایک گمنام صارف کی ہے اور آپ محسوس کریں کہ اس صفحہ پر آپکی جانب منسوب یہ بیان غیرضروری ہے تو براہ کرم [[Special:CreateAccount|کھاتہ بنائیں]] یا [[Special:UserLogin|داخلِ نوشتہ]] ہوجائیے تاکہ مستقبل میں آپکو گمنام صارفین میں شمار کرنے سے پرہیز کیا جاسکے۔\"",
-       "noarticletext": "اِس صفحہ میں فی الحال کوئی متن موجود نہیں ہے۔\nآپ دیگر صفحات میں [[Special:Search/{{PAGENAME}}|اِس صفحہ کے عنوان کے لیے تلاش کرسکتے ہیں]]، <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} متعلقہ نوشتہ جات تلاش کرسکتے ہیں]،\nیا [{{fullurl:{{FULLPAGENAME}}|action=edit}} اِس صفحہ میں ترمیم کرسکتے ہیں]</span>",
+       "noarticletext": "اِس صفحہ میں فی الحال کوئی متن موجود نہیں ہے۔\nآپ دیگر صفحات میں [[Special:Search/{{PAGENAME}}|اِس صفحہ کے عنوان کو تلاش کر سکتے ہیں]]، <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} متعلقہ نوشتہ جات میں تلاش کر سکتے ہیں]،\nیا [{{fullurl:{{FULLPAGENAME}}|action=edit}} اِس صفحہ کو تخلیق کر سکتے ہیں]</span>۔",
        "noarticletext-nopermission": "اس صفحہ میں فی الحال کوئی متن موجود نہیں ہے۔\nآپ دیگر صفحات میں [[Special:Search/{{PAGENAME}}|اِس صفحہ کے عنوان کے لیے]] یا <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} متعلقہ نوشتہ جات تلاش کرسکتے ہیں]</span>",
        "userpage-userdoesnotexist-view": "صارف کھاتہ \"$1\" مندرج نہیں ہے۔",
        "updated": "(اپ ڈیٹڈ)",
        "trackingcategories-msg": "کھوجی زمرہ",
        "trackingcategories-name": "پیغام کا عنوان",
        "trackingcategories-desc": "زمرہ کی شمولیت کا معیار",
+       "restricted-displaytitle-ignored": "صفحات مع نظرانداز کردہ عناوین",
        "trackingcategories-disabled": "زمرہ غیر فعال ہے",
        "mailnologintext": "دیگر ارکان کو برقی خط ارسال کرنے کیلیۓ لازم ہے کہ آپ [[Special:UserLogin|داخل شدہ]] حالت میں ہوں اور آپ کی [[Special:Preferences|ترجیحات]] ایک درست برقی خط کا پتا درج ہو۔",
        "emailuser": "صارف کو برقی خط لکھیں",
        "protectlogpage": "نوشتۂ محفوظ شدگی",
        "protectedarticle": "\"[[$1]]\" کومحفوظ کردیا",
        "unprotectedarticle": "\"[[$1]]\" کوغیر محفوظ کیا",
+       "movedarticleprotection": "نے \"[[$2]]\" کا درجہ حفاظت \"[[$1]]\" کی جانب منتقل کیا",
        "prot_1movedto2": "[[$1]] بجانب [[$2]] منتقل",
        "protectcomment": "وجہ:",
        "protect-default": "تمام صارفین کو اہل بناؤ",
        "whatlinkshere-next": "{{PLURAL:$1|اگلا|اگلے $1}}",
        "whatlinkshere-links": "روابط ←",
        "whatlinkshere-hideredirs": "رجوع مکررات $1",
-       "whatlinkshere-hidetrans": "$1 ØªØ¶Ù\85Û\8cÙ\86ات",
+       "whatlinkshere-hidetrans": "$1 Ø§Ø³ØªØ¹Ù\85اÙ\84ات",
        "whatlinkshere-hidelinks": "روابط $1",
        "whatlinkshere-hideimages": "روابطِ تصاویر $1",
        "whatlinkshere-filters": "فلٹرذ",
        "move-watch": "صفحہ زیر نظر",
        "movepagebtn": "مـنـتـقـل",
        "pagemovedsub": "انتقال کامیاب",
-       "movepage-moved": "'''\"$1\" منتقل کردیا گیا بطرف \"$2\"'''",
+       "movepage-moved": "<strong>\"$1\" کو \"$2\" کی جانب منتقل کر دیا گیا</strong>",
        "movepage-moved-redirect": "رجوع مکرر تخلیق کر دیا گیا۔",
+       "movepage-moved-noredirect": "رجوع مکرر کو بننے سے روک دیا گیا ہے۔",
        "articleexists": "اس عنوان سے کوئی صفحہ پہلے ہی موجود ہے، یا آپکا منتخب کردہ نام مستعمل نہیں۔ براۓ مہربانی دوسرا نام منتخب کیجیۓ۔",
        "movelogpage": "نوشتۂ منتقلی",
        "movereason": "وجہ:",
        "allmessages-filter-translate": "ترجمہ",
        "thumbnail-more": "چوڑا کریں",
        "import": "درآمد صفحات",
-       "tooltip-pt-userpage": "آپ کا صارفی صفحہ",
-       "tooltip-pt-mytalk": "آپ Ú©Ø§ ØµÙ\81Ø­Û\82 Ú¯Ù\81تگÙ\88",
+       "tooltip-pt-userpage": "آپ کا صارف صفحہ",
+       "tooltip-pt-mytalk": "آپ Ú©Ø§ ØªØ¨Ø§Ø¯Ù\84Û\81 Ø®Û\8cاÙ\84 ØµÙ\81Ø­Û\81",
        "tooltip-pt-preferences": "آپ کی ترجیحات",
        "tooltip-pt-watchlist": "اُن صفحات کی فہرست جن کی تبدیلیاں آپ کی زیرِنظر ہیں",
-       "tooltip-pt-mycontris": "آپ کی شراکت کی فہرست",
+       "tooltip-pt-mycontris": "آپ کی شراکتوں کی فہرست",
        "tooltip-pt-login": "آپ کیلئے داخلِ نوشتہ ہونا اچھا ہے؛ تاہم، یہ ضروری نہیں",
        "tooltip-pt-logout": "خارجِ نوشتہ ہوجائیں",
        "tooltip-pt-createaccount": "آپ کو مدعو کیا جاتا ہے کہ کھاتہ بنائیں۔تاہم کھاتہ بنانا لازم نہیں۔",
        "file-nohires": "اس سے بڑی تصمیم دستیاب نہیں۔",
        "show-big-image": "اصل ملف",
        "show-big-image-preview": "اس نمائش کا حجم:$1",
+       "show-big-image-other": "دیگر {{PLURAL:$2|تجویز|تجویزیں}}: $1۔",
        "show-big-image-size": "$1 × $2 pixels",
        "newimages": "نئی فائلوں کی گیلری",
        "ilsubmit": "تلاش",
        "metadata": "میٹا ڈیٹا",
        "metadata-help": "اِس ملف میں اِضافی معلومات شامل ہیں، جو کہ شاید اُس رقمی کیمرے یا سکینر سے آئے ہیں جس کے ذریعے یہ ملف بنائی گئی تھی۔\nاگر ملف اپنی اصل حالت میں نہیں رہی ہے تو کچھ تفاصیل ترمیم شدہ ملف کی مکمل طور پر عکاسی نہیں کرپائیں گے۔",
        "metadata-collapse": "طویل تفاصیل چھپاؤ",
+       "metadata-fields": "تصویر کے میٹاڈیٹا کے وہ خانے جو اس پیغام میں درج ہیں وہ تصویر کے صفحے پر شامل ہوتے ہیں نیز یہ اس وقت ظاہر ہوتے ہیں جب میٹاڈیٹا کو وسیع کیا جائے۔\nالبتہ دیگر خانے ابتدائی طور پر پوشیدہ ہوتے ہیں۔\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-orientation": "پیشکش",
        "exif-xresolution": "چھوڑاوی دکھاوت",
        "exif-yresolution": "لمباوی دکھاوت",
        "hijri-calendar-m10": "شوال",
        "hijri-calendar-m11": "ذوالقعدہ",
        "hijri-calendar-m12": "ذوالحجہ",
+       "restricted-displaytitle": "<strong>انتباہ!:</strong> عنوان \"$1\" کو نظر انداز کر دیا گیا ہے کیونکہ یہ متعلقہ صفحہ کے عنوان کا حقیقی متبادل نہیں ہے۔",
        "version": "ورژن",
        "version-specialpages": "خاص صفحات",
        "version-other": "دیگر",
        "logentry-delete-delete": "$1 {{GENDER:$2|حذف کیا گیا}} صفحہ $3",
        "logentry-move-move": "$1 نے صفحہ $3 کو بجانب $4 منتقل کیا",
        "logentry-newusers-create": "صارف کھاتہ $1 {{GENDER:$2|بنایا گیا}}",
+       "logentry-protect-move_prot": "$1 نے ترتیب درجہ حفاظت $4 سے $3 کی طرف {{GENDER:$2|منتقل کی}}",
        "logentry-protect-modify": "$1 نے $3 کا درجۂ حفاظت {{GENDER:$2|تبدیل کیا}} $4",
        "logentry-rights-rights": "$1 نے {{GENDER:$6|$3}} کی گروہی رکنیت از $4 تا $5 {{GENDER:$2|تبدیل کی}}",
        "logentry-upload-upload": "$1 {{GENDER:$2|اپلوڈ}} $3",
index 8f2c434..d34e2df 100644 (file)
        "password-change-forbidden": "איר קען נישט ענדערן פאסווערטער אויף דער וויקי.",
        "externaldberror": "עס איז אדער פארגעקומען אן אויטענטיקאציע דאטנבאזע פֿעלער אדער איר זענט נישט ערמעגליכט צו דערהיינטיגן אייער דרויסנדיגע קאנטע.",
        "login": "אַרײַנלאָגירן",
+       "login-security": "וועריפיצירט אייער אידענטיטעט",
        "nav-login-createaccount": "ארײַנלאָגירן / זיך אײַנשרײַבן",
        "userlogin": "ארײַנלאָגירן / זיך אײַנשרײַבן",
        "userloginnocreate": "אַרײַנלאגירן",
        "createacct-reason-ph": "פֿארוואס שאפֿט איר נאך א קאנטע",
        "createacct-submit": "שאפֿט אײַער קאנטע",
        "createacct-another-submit": "שאַפֿן קאנטע",
+       "createacct-continue-submit": "פֿארטזעצן שאפֿן קאנטע",
+       "createacct-another-continue-submit": "פֿארטזעצן שאפֿן קאנטע",
        "createacct-benefit-heading": "{{SITENAME}} איז געמאכט דורך מענטשן ווי איר.",
        "createacct-benefit-body1": "{{PLURAL:$1|רעדאַקטירונג|$1 רעדאַקטירונגען}}",
        "createacct-benefit-body2": "$1 {{PLURAL:$1|בלאַט|בלעטער}}",
index a0f38be..d1cba1f 100644 (file)
@@ -90,7 +90,9 @@
                        "Apflu",
                        "飞舞回堂前",
                        "Cosine02",
-                       "Arthur2e5"
+                       "Arthur2e5",
+                       "Myy730",
+                       "SolidBlock"
                ]
        },
        "tog-underline": "链接下划线:",
        "databaseerror-query": "查询:$1",
        "databaseerror-function": "函数:$1",
        "databaseerror-error": "错误:$1",
-       "transaction-duration-limit-exceeded": "因为写入时间($1)超过了$2{{PLURAL:$2|秒}}的限制,为防止创建大量复制延迟,此次处理已被中止。如果您正在同时更改很多项目,请尝试进行多次小规模操作。",
+       "transaction-duration-limit-exceeded": "因为写入时间($1)超过了$2的限制,为防止创建大量复制延迟,此次处理已被中止。如果您正在同时更改很多项目,请尝试进行多次小规模操作。",
        "laggedslavemode": "<strong>警告:</strong>页面中可能没有包含最近的更新。",
        "readonly": "数据库被锁定",
        "enterlockreason": "请输入锁定的原因,这包括预计解除锁定的时间",
        "password-login-forbidden": "这个用户名称及密码的使用是被禁止的。",
        "mailmypassword": "重置密码",
        "passwordremindertitle": "{{SITENAME}}的新临时密码",
-       "passwordremindertext": "æ\9c\89人ï¼\88å\8f¯è\83½æ\98¯æ\82¨ï¼\8cæ\9d¥è\87ªIPå\9c°å\9d\80$1ï¼\89已请æ±\82{{SITENAME}}ç\9a\84æ\96°å¯\86ç \81ï¼\88$4ï¼\89ã\80\82ç\94¨æ\88·â\80\9c$2â\80\9dç\9a\84ä¸\80个æ\96°ä¸´æ\97¶å¯\86ç \81ç\8e°å\9c¨å·²è¢«è®¾ç½®å¥½ä¸ºâ\80\9c$3â\80\9dã\80\82å¦\82æ\9e\9cè¿\99个å\8a¨ä½\9cæ\98¯æ\82¨æ\89\80æ\8c\87示ç\9a\84ï¼\8cæ\82¨ä¾¿é\9c\80è¦\81ç«\8bå\8d³ç\99»å½\95并é\80\89æ\8b©一个新的密码。您的临时密码会于{{PLURAL:$5|一天|$5天}}内过期。\n\n如果是其他人发出了该请求,或者您已经记起了您的密码并不准备改变它,您可以忽略此消息并继续使用您的旧密码。",
+       "passwordremindertext": "æ\9c\89人ï¼\88å\8f¯è\83½æ\98¯æ\82¨ï¼\8cæ\9d¥è\87ªIPå\9c°å\9d\80$1ï¼\89已请æ±\82{{SITENAME}}ç\9a\84æ\96°å¯\86ç \81ï¼\88$4ï¼\89ã\80\82ç\94¨æ\88·â\80\9c$2â\80\9dç\9a\84临æ\97¶å¯\86ç \81ç\8e°å\9c¨å·²è¢«è®¾ç½®ä¸ºâ\80\9c$3â\80\9dã\80\82å¦\82æ\9e\9cè¿\99个å\8a¨ä½\9cæ\98¯æ\82¨æ\89\80æ\8c\87示ç\9a\84ï¼\8cæ\82¨ä¾¿é\9c\80è¦\81ç«\8bå\8d³ç\99»å½\95并设置一个新的密码。您的临时密码会于{{PLURAL:$5|一天|$5天}}内过期。\n\n如果是其他人发出了该请求,或者您已经记起了您的密码并不准备改变它,您可以忽略此消息并继续使用您的旧密码。",
        "noemail": "用户\"$1\"没有登记电子邮件地址。",
        "noemailcreate": "您需要提供一个有效的电子邮件地址",
        "passwordsent": "用户\"$1\"的新密码已经寄往所登记的电子邮件地址。\n请在收到后再登录。",
        "last": "之前",
        "page_first": "首页",
        "page_last": "末页",
-       "histlegend": "差异选择:选中要对比的版本的单选按钮,按Enter键或下方的按钮。<br />\n说明:<strong>({{int:cur}})</strong>=与最后版本之间的差异,<strong>({{int:last}})</strong>=与上一版本之间的差异,<strong>{{int:minoreditletter}}</strong>=小编辑。",
+       "histlegend": "差异选择:选中要对比的版本的单选按钮,按Enter键或下方的按钮。<br />说明:<strong>({{int:cur}})</strong>=与最后版本之间的差异,<strong>({{int:last}})</strong>=与上一版本之间的差异,<strong>{{int:minoreditletter}}</strong>=小编辑。",
        "history-fieldset-title": "浏览历史",
        "history-show-deleted": "仅显示已删除的版本",
        "histfirst": "最旧",
        "searchdisabled": "{{SITENAME}}的搜索已被禁用。您可以暂时使用搜索引擎进行搜索,须注意他们索引的{{SITENAME}}内容可能不是最新的。",
        "search-error": "搜索时发生错误:$1",
        "preferences": "设置",
-       "mypreferences": "设置",
+       "mypreferences": "参数设置",
        "prefs-edits": "编辑数:",
        "prefsnologintext2": "请登录以更改您的用户设置。",
        "prefs-skin": "皮肤",
        "version-license-not-found": "未找到此扩展相关的详细授权信息。",
        "version-credits-title": "$1贡献者名单",
        "version-credits-not-found": "未找到此扩展相关的详细制作人信息。",
-       "version-poweredby-credits": "本Wiki由'''[https://www.mediawiki.org/ MediaWiki]'''驱动,版权所有 © 2001-$1 $2。",
+       "version-poweredby-credits": "本Wiki由<strong>[https://www.mediawiki.org/ MediaWiki]</strong>驱动,版权所有 © 2001-$1 $2。",
        "version-poweredby-others": "其他",
        "version-poweredby-translators": "translatewiki.net上的翻译者",
        "version-credits-summary": "我们感谢下列人士为[[Special:Version|MediaWiki]]作出的贡献。",
index 23f0357..892ce4d 100644 (file)
        "databaseerror-query": "查詢:$1",
        "databaseerror-function": "功能:$1",
        "databaseerror-error": "錯誤:$1",
-       "transaction-duration-limit-exceeded": "為了避免造成大量備援延遲,因寫入時間 ($1) 已超出了 $2 {{PLURAL:$2|秒|秒}}限制,此次操作已被中止。\n若您一次修改了許多項目,可嘗試分批處理。",
+       "transaction-duration-limit-exceeded": "為了避免造成大量備援延遲,因寫入時間 ($1) 已超出了 $2 限制,此次操作已被中止。\n若您一次修改了許多項目,可嘗試分批處理。",
        "laggedslavemode": "<strong>警告:</strong>頁面可能不包含最近的更新。",
        "readonly": "資料庫已鎖定",
        "enterlockreason": "請輸入鎖定的原因,包括估計重新開放的時間",
index 27d8161..8368aab 100644 (file)
@@ -123,6 +123,12 @@ abstract class Maintenance {
         */
        private $config;
 
+       /**
+        * @see Maintenance::requireExtension
+        * @var array
+        */
+       private $requiredExtensions = [];
+
        /**
         * Used to read the options in the order they were passed.
         * Useful for option chaining (Ex. dumpBackup.php). It will
@@ -506,6 +512,42 @@ abstract class Maintenance {
                $this->config = $config;
        }
 
+       /**
+        * Indicate that the specified extension must be
+        * loaded before the script can run.
+        *
+        * This *must* be called in the constructor.
+        *
+        * @since 1.28
+        * @param string $name
+        */
+       protected function requireExtension( $name ) {
+               $this->requiredExtensions[] = $name;
+       }
+
+       /**
+        * Verify that the required extensions are installed
+        *
+        * @since 1.28
+        */
+       public function checkRequiredExtensions() {
+               $registry = ExtensionRegistry::getInstance();
+               $missing = [];
+               foreach ( $this->requiredExtensions as $name ) {
+                       if ( !$registry->isLoaded( $name ) ) {
+                               $missing[] = $name;
+                       }
+               }
+
+               if ( $missing ) {
+                       $joined = implode( ', ', $missing );
+                       $msg = "The following extensions are required to be installed "
+                               . "for this script to run: $joined. Please enable them and then try again.";
+                       $this->error( $msg, 1 );
+               }
+
+       }
+
        /**
         * Run a child maintenance script. Pass all of the current arguments
         * to it.
index 7c87e10..6d2a0e9 100644 (file)
@@ -120,7 +120,7 @@ class ConvertExtensionToRegistration extends Maintenance {
                                $this->hasWarning = true;
                        } elseif ( strpos( $name, $configPrefix ) === 0 ) {
                                // Most likely a config setting
-                               $this->json['config'][substr( $name, strlen( $configPrefix ) )] = $value;
+                               $this->json['config'][substr( $name, strlen( $configPrefix ) )] = [ 'value' => $value ];
                        } elseif ( $configPrefix !== 'wg' && strpos( $name, 'wg' ) === 0 ) {
                                // Warn about this
                                $this->output( 'Warning: Skipped global "' . $name . '" (' .
index 000e5f9..1272ca2 100644 (file)
@@ -99,6 +99,9 @@ require_once "$IP/includes/Setup.php";
 // Initialize main config instance
 $maintenance->setConfig( ConfigFactory::getDefaultInstance()->makeConfig( 'main' ) );
 
+// Sanity-check required extensions are installed
+$maintenance->checkRequiredExtensions();
+
 // Do the work
 $maintenance->execute();
 
index 88ee9d7..5531ffc 100644 (file)
@@ -63,7 +63,16 @@ class ImportTextFiles extends Maintenance {
                        if ( file_exists( $arg ) ) {
                                $files[$arg] = file_get_contents( $arg );
                        } else {
-                               $this->error( "Fatal error: The file '$arg' does not exist!", 1 );
+                               // use glob to support the Windows shell, which doesn't automatically
+                               // expand wildcards
+                               $found = false;
+                               foreach ( glob( $arg ) as $filename ) {
+                                       $found = true;
+                                       $files[$filename] = file_get_contents( $filename );
+                               }
+                               if ( !$found ) {
+                                       $this->error( "Fatal error: The file '$arg' does not exist!", 1 );
+                               }
                        }
                };
 
index 9104fd7..b1e0fa4 100644 (file)
@@ -61,6 +61,7 @@ webseitzwiki|http://webseitz.fluxent.com/wiki/$1|0|
 wiki|http://c2.com/cgi/wiki?$1|0|
 wikia|http://www.wikia.com/wiki/$1|0|
 wikibooks|https://en.wikibooks.org/wiki/$1|0|https://en.wikibooks.org/w/api.php
+wikidata|https://www.wikidata.org/wiki/$1|0|https://www.wikidata.org/w/api.php
 wikif1|http://www.wikif1.org/$1|0|
 wikihow|http://www.wikihow.com/$1|0|http://www.wikihow.com/api.php
 wikinfo|http://wikinfo.co/English/index.php/$1|0|
index 12352e7..b7d1a84 100644 (file)
@@ -63,6 +63,7 @@ REPLACE INTO /*$wgDBprefix*/interwiki (iw_prefix,iw_url,iw_local,iw_api) VALUES
 ('wiki','http://c2.com/cgi/wiki?$1',0,''),
 ('wikia','http://www.wikia.com/wiki/$1',0,''),
 ('wikibooks','https://en.wikibooks.org/wiki/$1',0,'https://en.wikibooks.org/w/api.php'),
+('wikidata','https://www.wikidata.org/wiki/$1',0,'https://www.wikidata.org/w/api.php'),
 ('wikif1','http://www.wikif1.org/$1',0,''),
 ('wikihow','http://www.wikihow.com/$1',0,'http://www.wikihow.com/api.php'),
 ('wikinfo','http://wikinfo.co/English/index.php/$1',0,''),
index 4a74322..82149a6 100644 (file)
@@ -268,9 +268,9 @@ class SyncFileBackend extends Maintenance {
                        sleep( 10 ); // wait and retry copy again
                        $status = $dst->doQuickOperations( $ops, [ 'bypassReadOnly' => 1 ] );
                }
-               $ellapsed_ms = floor( ( microtime( true ) - $t_start ) * 1000 );
+               $elapsed_ms = floor( ( microtime( true ) - $t_start ) * 1000 );
                if ( $status->isOK() && $this->getOption( 'verbose' ) ) {
-                       $this->output( "Synchronized these file(s) [{$ellapsed_ms}ms]:\n" .
+                       $this->output( "Synchronized these file(s) [{$elapsed_ms}ms]:\n" .
                                implode( "\n", $dPaths ) . "\n" );
                }
 
index e838a53..746cbd1 100644 (file)
@@ -1126,6 +1126,20 @@ return [
                'scripts' => 'resources/src/mediawiki/mediawiki.notify.js',
                'targets' => [ 'desktop', 'mobile' ],
        ],
+       'mediawiki.notification.convertmessagebox' => [
+               'dependencies' => [
+                       'mediawiki.notification',
+               ],
+               'scripts' => 'resources/src/mediawiki/mediawiki.notification.convertmessagebox.js',
+               'targets' => [ 'desktop', 'mobile' ],
+       ],
+       'mediawiki.notification.convertmessagebox.styles' => [
+               'position' => 'top',
+               'styles' => [
+                       'resources/src/mediawiki/mediawiki.notification.convertmessagebox.styles.less',
+               ],
+               'targets' => [ 'desktop', 'mobile' ],
+       ],
        'mediawiki.RegExp' => [
                'scripts' => 'resources/src/mediawiki/mediawiki.RegExp.js',
                'targets' => [ 'desktop', 'mobile' ],
@@ -1884,7 +1898,13 @@ return [
                'dependencies' => [
                        'mediawiki.language',
                        'mediawiki.confirmCloseWindow',
-                       'mediawiki.notification',
+                       'mediawiki.notification.convertmessagebox',
+               ],
+       ],
+       'mediawiki.special.userrights' => [
+               'scripts' => 'resources/src/mediawiki.special/mediawiki.special.userrights.js',
+               'dependencies' => [
+                       'mediawiki.notification.convertmessagebox',
                ],
        ],
        'mediawiki.special.preferences.styles' => [
index a756f22..163e85d 100644 (file)
@@ -3,10 +3,9 @@
  */
 ( function ( mw, $ ) {
        $( function () {
-               var $preftoc, $preferences, $fieldsets,
-                       labelFunc,
-                       $tzSelect, $tzTextbox, $localtimeHolder, servertime,
-                       allowCloseWindow, notif;
+               var $preftoc, $preferences, $fieldsets, labelFunc,
+                       $tzSelect, $tzTextbox, $localtimeHolder, servertime, allowCloseWindow,
+                       convertmessagebox = require( 'mediawiki.notification.convertmessagebox' );
 
                labelFunc = function () {
                        return this.id.replace( /^mw-prefsection/g, 'preftab' );
                        }
                }
 
-               // Check for messageboxes (.successbox, .warningbox, .errorbox) to replace with notifications
-               if ( $( '.mw-preferences-messagebox' ).length ) {
-                       // If there is a #mw-preferences-success box and javascript is enabled, use a slick notification instead!
-                       if ( $( '#mw-preferences-success' ).length ) {
-                               notif = mw.notification.notify( mw.message( 'savedprefs' ), { autoHide: false } );
-                               // 'change' event not reliable!
-                               $( '#preftoc, .prefsection' ).one( 'change keydown mousedown', function () {
-                                       if ( notif ) {
-                                               notif.close();
-                                               notif = null;
-                                       }
-                               } );
-                       }
-               }
+               // Check for successbox to replace with notifications
+               convertmessagebox();
 
                // Enable keyboard users to use left and right keys to switch tabs
                $preftoc.on( 'keydown', function ( event ) {
index 4c9c41e..c7a5f77 100644 (file)
        zoom: 1;
 }
 
-/* When JS is enabled, .mw-preferences-messageboxes are replaced with mw.notifications */
-.client-js .mw-preferences-messagebox {
-       display: none;
-}
-
 .client-nojs #preftoc {
        display: none;
 }
index e7a5865..a523d5b 100644 (file)
@@ -37,7 +37,7 @@
        margin-left: 0;
        float: left;
 }
-.mw-search-interwiki-header {
+.mw-search-visualclear {
        clear: both;
 }
 .mw-search-results li {
diff --git a/resources/src/mediawiki.special/mediawiki.special.userrights.js b/resources/src/mediawiki.special/mediawiki.special.userrights.js
new file mode 100644 (file)
index 0000000..0643988
--- /dev/null
@@ -0,0 +1,8 @@
+/*!
+ * JavaScript for Special:UserRights
+ */
+( function () {
+       var convertmessagebox = require( 'mediawiki.notification.convertmessagebox' );
+       // Replace successbox with notifications
+       convertmessagebox();
+}() );
index 4cc7f09..c3464ea 100644 (file)
                return this.stop( true, true ).fadeOut();
        };
 
-       /**
-        * Bind a function to the jQuery object via live(), and also immediately trigger
-        * the function on the objects with an 'instant' parameter set to true.
-        *
-        * @method liveAndTestAtStart
-        * @deprecated since 1.24 Use .on() and .each() directly.
-        * @param {Function} callback
-        * @param {boolean|jQuery.Event} callback.immediate True when the event is called immediately,
-        *  an event object when triggered from an event.
-        * @chainable
-        * @return {jQuery}
-        */
-       mw.log.deprecate( $.fn, 'liveAndTestAtStart', function ( callback ) {
-               return this
-                       // Can't really migrate to .on() generically, needs knowledge of
-                       // calling code to know the correct selector. Fix callers and
-                       // get rid of this .liveAndTestAtStart() hack.
-                       .live( 'change', callback )
-                       .each( function () {
-                               callback.call( this, true );
-                       } );
-       } );
-
        function enhance( $root ) {
                var $matrixTooltips, $autocomplete,
                        // cache the separator to avoid object creation on each keypress
index 942f4ae..3600000 100644 (file)
                        log.deprecate = !Object.defineProperty ? function ( obj, key, val ) {
                                obj[ key ] = val;
                        } : function ( obj, key, val, msg ) {
+                               /*globals Set */
                                msg = 'Use of "' + key + '" is deprecated.' + ( msg ? ( ' ' + msg ) : '' );
+                               var logged, loggedIsSet, uniqueTrace;
+                               if ( window.Set ) {
+                                       logged = new Set();
+                                       loggedIsSet = true;
+                               } else {
+                                       logged = {};
+                                       loggedIsSet = false;
+                               }
+                               uniqueTrace = function () {
+                                       var trace = new Error().stack;
+                                       if ( loggedIsSet ) {
+                                               if ( logged.has( trace ) ) {
+                                                       return false;
+                                               }
+                                               logged.add( trace );
+                                               return true;
+                                       } else {
+                                               if ( logged.hasOwnProperty( trace ) ) {
+                                                       return false;
+                                               }
+                                               logged[ trace ] = 1;
+                                               return true;
+                                       }
+                               };
                                Object.defineProperty( obj, key, {
                                        configurable: true,
                                        enumerable: true,
                                        get: function () {
-                                               mw.track( 'mw.deprecate', key );
-                                               mw.log.warn( msg );
+                                               if ( uniqueTrace() ) {
+                                                       mw.track( 'mw.deprecate', key );
+                                                       mw.log.warn( msg );
+                                               }
                                                return val;
                                        },
                                        set: function ( newVal ) {
-                                               mw.track( 'mw.deprecate', key );
-                                               mw.log.warn( msg );
+                                               if ( uniqueTrace() ) {
+                                                       mw.track( 'mw.deprecate', key );
+                                                       mw.log.warn( msg );
+                                               }
                                                val = newVal;
                                        }
                                } );
diff --git a/resources/src/mediawiki/mediawiki.notification.convertmessagebox.js b/resources/src/mediawiki/mediawiki.notification.convertmessagebox.js
new file mode 100644 (file)
index 0000000..5d46de6
--- /dev/null
@@ -0,0 +1,64 @@
+/**
+ * Usage:
+ *
+ *     var convertmessagebox = require( 'mediawiki.notification.convertmessagebox' );
+ *
+ * @class mw.plugin.convertmessagebox
+ * @singleton
+ */
+( function ( mw, $ ) {
+       'use strict';
+
+       /**
+        * Convert a messagebox to a notification.
+        *
+        * Checks if a message box with class `.mw-notify-success`, `.mw-notify-warning`, or `.mw-notify-error`
+        * exists and converts it into a mw.Notification with the text of the element or a given message key.
+        *
+        * By default the notification will automatically hide after 5s, or when the user clicks the element.
+        * This can be overridden by setting attribute `data-mw-autohide="true"`.
+        *
+        * @param {Object} [options] Options
+        * @param {mw.Message} [options.msg] Message key (must be loaded already)
+        */
+       function convertmessagebox( options ) {
+               var $msgBox, type, autoHide, msg, notif,
+                       $successBox = $( '.mw-notify-success' ),
+                       $warningBox = $( '.mw-notify-warning' ),
+                       $errorBox = $( '.mw-notify-error' );
+
+               // If there is a message box and javascript is enabled, use a slick notification instead!
+               if ( $successBox.length ) {
+                       $msgBox = $successBox;
+                       type = 'info';
+               } else if ( $warningBox.length ) {
+                       $msgBox = $warningBox;
+                       type = 'warn';
+               } else if ( $errorBox.length ) {
+                       $msgBox = $errorBox;
+                       type = 'error';
+               } else {
+                       return;
+               }
+
+               autoHide = $msgBox.attr( 'data-mw-autohide' ) === 'true';
+
+               // If the msg param is given, use it, otherwise use the text of the successbox
+               msg = options && options.msg || $msgBox.text();
+               $msgBox.detach();
+
+               notif = mw.notification.notify( msg, { autoHide: autoHide, type: type } );
+               if ( !autoHide ) {
+                       // 'change' event not reliable!
+                       $( document ).one( 'keydown mousedown', function () {
+                               if ( notif ) {
+                                       notif.close();
+                                       notif = null;
+                               }
+                       } );
+               }
+       }
+
+       module.exports = convertmessagebox;
+
+}( mediaWiki, jQuery ) );
diff --git a/resources/src/mediawiki/mediawiki.notification.convertmessagebox.styles.less b/resources/src/mediawiki/mediawiki.notification.convertmessagebox.styles.less
new file mode 100644 (file)
index 0000000..2371f4e
--- /dev/null
@@ -0,0 +1,7 @@
+.client-js {
+       .mw-notify-success,
+       .mw-notify-warning,
+       .mw-notify-error {
+               display: none;
+       }
+}
index 9adc3e6..9b85d3f 100644 (file)
@@ -75,6 +75,11 @@ class ParserTest {
         */
        private $tidySupport;
 
+       /**
+        * @var ITestRecorder
+        */
+       private $recorder;
+
        private $maxFuzzTestLength = 300;
        private $fuzzSeed = 0;
        private $memoryLimit = 50;
index be22260..65a8c86 100644 (file)
@@ -1,4 +1,5 @@
 <?php
+use MediaWiki\MediaWikiServices;
 
 /**
  * @author Addshore
@@ -18,7 +19,6 @@ class WatchedItemIntegrationTest extends MediaWikiTestCase {
                $this->hideDeprecated( 'WatchedItem::addWatch' );
                $this->hideDeprecated( 'WatchedItem::removeWatch' );
                $this->hideDeprecated( 'WatchedItem::isWatched' );
-               $this->hideDeprecated( 'WatchedItem::resetNotificationTimestamp' );
                $this->hideDeprecated( 'WatchedItem::duplicateEntries' );
                $this->hideDeprecated( 'WatchedItem::batchAddWatch' );
        }
@@ -63,7 +63,9 @@ class WatchedItemIntegrationTest extends MediaWikiTestCase {
                        WatchedItem::fromUserTitle( $user, $title )->getNotificationTimestamp()
                );
 
-               WatchedItem::fromUserTitle( $user, $title )->resetNotificationTimestamp();
+               MediaWikiServices::getInstance()->getWatchedItemStore()->resetNotificationTimestamp(
+                       $user, $title
+               );
                $this->assertNull( WatchedItem::fromUserTitle( $user, $title )->getNotificationTimestamp() );
        }
 
@@ -107,7 +109,9 @@ class WatchedItemIntegrationTest extends MediaWikiTestCase {
                $user = $this->getUser();
                $title = Title::newFromText( 'WatchedItemIntegrationTestPage' );
                WatchedItem::fromUserTitle( $user, $title )->addWatch();
-               WatchedItem::fromUserTitle( $user, $title )->resetNotificationTimestamp();
+               MediaWikiServices::getInstance()->getWatchedItemStore()->resetNotificationTimestamp(
+                       $user, $title
+               );
 
                $this->assertEquals(
                        null,
index 0182eb7..7e1ff3d 100644 (file)
@@ -78,35 +78,6 @@ class WatchedItemUnitTest extends MediaWikiTestCase {
                $this->assertEquals( $timestamp, $item->getNotificationTimestamp() );
        }
 
-       /**
-        * @dataProvider provideUserTitleTimestamp
-        */
-       public function testResetNotificationTimestamp( $user, $linkTarget, $timestamp ) {
-               $force = 'XXX';
-               $oldid = 999;
-
-               $store = $this->getMockWatchedItemStore();
-               $store->expects( $this->once() )
-                       ->method( 'resetNotificationTimestamp' )
-                       ->with( $user, $this->isInstanceOf( Title::class ), $force, $oldid )
-                       ->will( $this->returnCallback(
-                               function ( $user, Title $title, $force, $oldid ) use ( $linkTarget ) {
-                                       /** @var LinkTarget $linkTarget */
-                                       $this->assertInstanceOf( 'Title', $title );
-                                       $this->assertSame( $linkTarget->getDBkey(), $title->getDBkey() );
-                                       $this->assertSame( $linkTarget->getFragment(), $title->getFragment() );
-                                       $this->assertSame( $linkTarget->getNamespace(), $title->getNamespace() );
-                                       $this->assertSame( $linkTarget->getText(), $title->getText() );
-
-                                       return true;
-                               }
-                       ) );
-               $this->setService( 'WatchedItemStore', $store );
-
-               $item = new WatchedItem( $user, $linkTarget, $timestamp );
-               $item->resetNotificationTimestamp( $force, $oldid );
-       }
-
        public function testAddWatch() {
                $title = Title::newFromText( 'SomeTitle' );
                $timestamp = null;
@@ -176,38 +147,4 @@ class WatchedItemUnitTest extends MediaWikiTestCase {
                WatchedItem::duplicateEntries( $oldTitle, $newTitle );
        }
 
-       public function testBatchAddWatch() {
-               $itemOne = new WatchedItem( $this->getMockUser( 1 ), new TitleValue( 0, 'Title1' ), null );
-               $itemTwo = new WatchedItem(
-                       $this->getMockUser( 3 ),
-                       Title::newFromText( 'Title2' ),
-                       '20150101010101'
-               );
-
-               $store = $this->getMockWatchedItemStore();
-               $store->expects( $this->exactly( 2 ) )
-                       ->method( 'addWatchBatchForUser' );
-               $store->expects( $this->at( 0 ) )
-                       ->method( 'addWatchBatchForUser' )
-                       ->with(
-                               $itemOne->getUser(),
-                               [
-                                       $itemOne->getTitle()->getSubjectPage(),
-                                       $itemOne->getTitle()->getTalkPage(),
-                               ]
-                       );
-               $store->expects( $this->at( 1 ) )
-                       ->method( 'addWatchBatchForUser' )
-                       ->with(
-                               $itemTwo->getUser(),
-                               [
-                                       $itemTwo->getTitle()->getSubjectPage(),
-                                       $itemTwo->getTitle()->getTalkPage(),
-                               ]
-                       );
-               $this->setService( 'WatchedItemStore', $store );
-
-               WatchedItem::batchAddWatch( [ $itemOne, $itemTwo ] );
-       }
-
 }
index 4e22e3c..12878b3 100644 (file)
@@ -15,6 +15,7 @@ class WikiMapTest extends MediaWikiLangTestCase {
                        'wgServer' => [
                                'enwiki' => 'http://en.example.org',
                                'ruwiki' => '//ru.example.org',
+                               'nopathwiki' => '//nopath.example.org',
                        ],
                        'wgArticlePath' => [
                                'enwiki' => '/w/$1',
@@ -46,6 +47,8 @@ class WikiMapTest extends MediaWikiLangTestCase {
                        'nlwiki (sites)' => [ $nlwiki, 'nlwiki', false ],
                        'enwiktionary (sites)' => [ $enwiktionary, 'enwiktionary', false ],
                        'non MediaWiki site' => [ null, 'spam', false ],
+                       'boguswiki' => [ null, 'boguswiki' ],
+                       'nopathwiki' => [ null, 'nopathwiki' ],
                ];
        }
 
index 155a9dd..917a6ad 100644 (file)
@@ -190,7 +190,6 @@ class ApiLoginTest extends ApiTestCase {
                $this->assertArrayHasKey( "login", $data[0] );
                $this->assertArrayHasKey( "result", $data[0]['login'] );
                $this->assertEquals( "Success", $data[0]['login']['result'] );
-               $this->assertArrayHasKey( 'lgtoken', $data[0]['login'] );
        }
 
        public function testBotPassword() {
diff --git a/tests/phpunit/includes/api/ApiOpenSearchTest.php b/tests/phpunit/includes/api/ApiOpenSearchTest.php
new file mode 100644 (file)
index 0000000..39e90c2
--- /dev/null
@@ -0,0 +1,66 @@
+<?php
+
+use MediaWiki\MediaWikiServices;
+
+class ApiOpenSearchTest extends MediaWikiTestCase {
+       public function testGetAllowedParams() {
+               $config = $this->replaceSearchEngineConfig();
+               $config->expects( $this->any() )
+                       ->method( 'getSearchTypes' )
+                       ->will( $this->returnValue( [ 'the one ring' ] ) );
+
+               $engine = $this->replaceSearchEngine();
+               $engine->expects( $this->any() )
+                       ->method( 'getProfiles' )
+                       ->will( $this->returnValueMap( [
+                               [ SearchEngine::COMPLETION_PROFILE_TYPE, [
+                                       [
+                                               'name' => 'normal',
+                                               'desc-message' => 'normal-message',
+                                               'default' => true,
+                                       ],
+                                       [
+                                               'name' => 'strict',
+                                               'desc-message' => 'strict-message',
+                                       ],
+                               ] ],
+                       ] ) );
+
+               $api = $this->createApi();
+               $params = $api->getAllowedParams();
+
+               $this->assertArrayNotHasKey( 'offset', $params );
+               $this->assertArrayHasKey( 'profile', $params, print_r( $params, true ) );
+               $this->assertEquals( 'normal', $params['profile'][ApiBase::PARAM_DFLT] );
+       }
+
+       private function replaceSearchEngineConfig() {
+               $config = $this->getMockBuilder( 'SearchEngineConfig' )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+               $this->setService( 'SearchEngineConfig', $config );
+
+               return $config;
+       }
+
+       private function replaceSearchEngine() {
+               $engine = $this->getMockBuilder( 'SearchEngine' )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+               $engineFactory = $this->getMockBuilder( 'SearchEngineFactory' )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+               $engineFactory->expects( $this->any() )
+                       ->method( 'create' )
+                       ->will( $this->returnValue( $engine ) );
+               $this->setService( 'SearchEngineFactory', $engineFactory );
+
+               return $engine;
+       }
+
+       private function createApi() {
+               $ctx = new RequestContext();
+               $apiMain = new ApiMain( $ctx );
+               return new ApiOpenSearch( $apiMain, 'opensearch', '' );
+       }
+}
index cf87a98..705a34a 100644 (file)
@@ -2,13 +2,16 @@
 /**
  * @group BagOStuff
  */
-class RedisBagOStuffTest extends MediaWikiTestCase {
+class RedisBagOStuffTest extends PHPUnit_Framework_TestCase {
        /** @var RedisBagOStuff */
        private $cache;
 
        protected function setUp() {
                parent::setUp();
-               $this->cache = TestingAccessWrapper::newFromObject( new RedisBagOStuff( [ 'servers' => [] ] ) );
+               $cache = $this->getMockBuilder( 'RedisBagOStuff' )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+               $this->cache = TestingAccessWrapper::newFromObject( $cache );
        }
 
        /**
index be7fe91..11995de 100644 (file)
@@ -2,11 +2,12 @@
 
 class ExtensionProcessorTest extends MediaWikiTestCase {
 
-       private $dir;
+       private $dir, $dirname;
 
        public function setUp() {
                parent::setUp();
                $this->dir = __DIR__ . '/FooBar/extension.json';
+               $this->dirname = dirname( $this->dir );
        }
 
        /**
@@ -110,7 +111,7 @@ class ExtensionProcessorTest extends MediaWikiTestCase {
        /**
         * @covers ExtensionProcessor::extractConfig1
         */
-       public function testExtractConfig() {
+       public function testExtractConfig1() {
                $processor = new ExtensionProcessor;
                $info = [
                        'config' => [
@@ -136,6 +137,35 @@ class ExtensionProcessorTest extends MediaWikiTestCase {
                $this->assertEquals( 'somevalue', $extracted['globals']['egBar'] );
        }
 
+       /**
+        * @covers ExtensionProcessor::extractConfig2
+        */
+       public function testExtractConfig2() {
+               $processor = new ExtensionProcessor;
+               $info = [
+                       'config' => [
+                               'Bar' => [ 'value' => 'somevalue' ],
+                               'Foo' => [ 'value' => 10 ],
+                               'Path' => [ 'value' => 'foo.txt', 'path' => true ],
+                       ],
+               ] + self::$default;
+               $info2 = [
+                       'config' => [
+                               'Bar' => [ 'value' => 'somevalue' ],
+                       ],
+                       'config_prefix' => 'eg',
+                       'name' => 'FooBar2',
+               ];
+               $processor->extractInfo( $this->dir, $info, 2 );
+               $processor->extractInfo( $this->dir, $info2, 2 );
+               $extracted = $processor->getExtractedInfo();
+               $this->assertEquals( 'somevalue', $extracted['globals']['wgBar'] );
+               $this->assertEquals( 10, $extracted['globals']['wgFoo'] );
+               $this->assertEquals( "{$this->dirname}/foo.txt", $extracted['globals']['wgPath'] );
+               // Custom prefix:
+               $this->assertEquals( 'somevalue', $extracted['globals']['egBar'] );
+       }
+
        public static function provideExtractExtensionMessagesFiles() {
                $dir = __DIR__ . '/FooBar/';
                return [
index 801ab91..beb5e78 100644 (file)
@@ -451,4 +451,37 @@ class UserTest extends MediaWikiTestCase {
                $this->assertGreaterThan(
                        $touched, $user->getDBTouched(), "user_touched increased with casOnTouched() #2" );
        }
+
+       /**
+        * @covers User::findUsersByGroup
+        */
+       public function testFindUsersByGroup() {
+               $users = User::findUsersByGroup( [] );
+               $this->assertEquals( 0, iterator_count( $users ) );
+
+               $users = User::findUsersByGroup( 'foo' );
+               $this->assertEquals( 0, iterator_count( $users ) );
+
+               $user = $this->getMutableTestUser( [ 'foo' ] )->getUser();
+               $users = User::findUsersByGroup( 'foo' );
+               $this->assertEquals( 1, iterator_count( $users ) );
+               $users->rewind();
+               $this->assertTrue( $user->equals( $users->current() ) );
+
+               // arguments have OR relationship
+               $user2 = $this->getMutableTestUser( [ 'bar' ] )->getUser();
+               $users = User::findUsersByGroup( [ 'foo', 'bar' ] );
+               $this->assertEquals( 2, iterator_count( $users ) );
+               $users->rewind();
+               $this->assertTrue( $user->equals( $users->current() ) );
+               $users->next();
+               $this->assertTrue( $user2->equals( $users->current() ) );
+
+               // users are not duplicated
+               $user = $this->getMutableTestUser( [ 'baz', 'boom' ] )->getUser();
+               $users = User::findUsersByGroup( [ 'baz', 'boom' ] );
+               $this->assertEquals( 1, iterator_count( $users ) );
+               $users->rewind();
+               $this->assertTrue( $user->equals( $users->current() ) );
+       }
 }