Merge "Title: Fix inaccurate documentation of getUserPermissionsErrorsInternal"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Thu, 24 Mar 2016 04:44:21 +0000 (04:44 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 24 Mar 2016 04:44:21 +0000 (04:44 +0000)
293 files changed:
.jscsrc
RELEASE-NOTES-1.27
composer.json
docs/hooks.txt
docs/memcached.txt
includes/Block.php
includes/DefaultSettings.php
includes/EditPage.php
includes/HistoryBlob.php
includes/Html.php
includes/HtmlFormatter.php
includes/HttpFunctions.php
includes/Linker.php
includes/MediaWiki.php
includes/Message.php
includes/MovePage.php
includes/OutputPage.php
includes/Revision.php
includes/Sanitizer.php
includes/Setup.php
includes/Title.php
includes/WatchedItemStore.php
includes/WikiMap.php
includes/actions/Action.php
includes/actions/InfoAction.php
includes/api/ApiMain.php
includes/api/ApiQuery.php
includes/api/ApiQueryInfo.php
includes/api/ApiQueryStashImageInfo.php
includes/api/i18n/ast.json
includes/api/i18n/ba.json
includes/api/i18n/eo.json [new file with mode: 0644]
includes/api/i18n/it.json
includes/api/i18n/ko.json
includes/api/i18n/ksh.json
includes/api/i18n/nap.json
includes/api/i18n/qqq.json
includes/api/i18n/ru.json
includes/cache/BacklinkCache.php
includes/db/DatabaseMysqli.php
includes/diff/DifferenceEngine.php
includes/export/XmlDumpWriter.php
includes/filebackend/SwiftFileBackend.php
includes/filerepo/file/File.php
includes/filerepo/file/LocalFile.php
includes/filerepo/file/OldLocalFile.php
includes/htmlform/HTMLTitleTextField.php
includes/htmlform/HTMLUserTextField.php
includes/import/WikiImporter.php
includes/import/WikiRevision.php
includes/installer/CliInstaller.php
includes/installer/DatabaseInstaller.php
includes/installer/MssqlInstaller.php
includes/installer/MysqlUpdater.php
includes/installer/PostgresInstaller.php
includes/installer/SqliteUpdater.php
includes/installer/WebInstaller.php
includes/installer/WebInstallerComplete.php
includes/installer/WebInstallerInstall.php
includes/installer/WebInstallerName.php
includes/installer/WebInstallerOptions.php
includes/installer/i18n/ast.json
includes/installer/i18n/ba.json
includes/installer/i18n/ce.json
includes/installer/i18n/eo.json
includes/installer/i18n/es.json
includes/installer/i18n/fr.json
includes/installer/i18n/inh.json [new file with mode: 0644]
includes/installer/i18n/ja.json
includes/installer/i18n/ko.json
includes/installer/i18n/lt.json
includes/installer/i18n/ps.json
includes/installer/i18n/sr-ec.json
includes/installer/i18n/sr-el.json
includes/installer/i18n/vi.json
includes/installer/i18n/zh-hant.json
includes/jobqueue/JobRunner.php
includes/jobqueue/JobSpecification.php
includes/jobqueue/utils/BacklinkJobUtils.php
includes/libs/objectcache/CachedBagOStuff.php
includes/logging/LogEventsList.php
includes/logging/LogPager.php
includes/mail/EmailNotification.php
includes/media/Bitmap_ClientOnly.php
includes/media/DjVu.php
includes/media/MediaTransformOutput.php
includes/media/SVG.php
includes/media/SVGMetadataExtractor.php
includes/media/TransformationalImageHandler.php
includes/media/XCF.php
includes/page/Article.php
includes/page/ImagePage.php
includes/page/WikiPage.php
includes/pager/ReverseChronologicalPager.php
includes/parser/CoreParserFunctions.php
includes/parser/Parser.php
includes/parser/ParserCache.php
includes/parser/ParserOptions.php
includes/resourceloader/ResourceLoader.php
includes/resourceloader/ResourceLoaderImage.php
includes/resourceloader/ResourceLoaderUserTokensModule.php
includes/session/BotPasswordSessionProvider.php
includes/session/SessionManager.php
includes/skins/Skin.php
includes/skins/SkinTemplate.php
includes/specials/SpecialChangePassword.php
includes/specials/SpecialContributions.php
includes/specials/SpecialDeletedContributions.php
includes/specials/SpecialEditWatchlist.php
includes/specials/SpecialEmailuser.php
includes/specials/SpecialFileDuplicateSearch.php
includes/specials/SpecialJavaScriptTest.php
includes/specials/SpecialListDuplicatedFiles.php
includes/specials/SpecialListfiles.php
includes/specials/SpecialListusers.php
includes/specials/SpecialMediaStatistics.php
includes/specials/SpecialNewimages.php
includes/specials/SpecialNewpages.php
includes/specials/SpecialPasswordReset.php
includes/specials/SpecialRandomInCategory.php
includes/specials/SpecialRecentchanges.php
includes/specials/SpecialRecentchangeslinked.php
includes/specials/SpecialRedirect.php
includes/specials/SpecialSearch.php
includes/specials/SpecialTags.php
includes/specials/SpecialUnblock.php
includes/specials/SpecialUploadStash.php
includes/specials/SpecialUserlogin.php
includes/specials/SpecialUserrights.php
includes/specials/SpecialVersion.php
includes/specials/SpecialWhatlinkshere.php
includes/upload/UploadBase.php
includes/upload/UploadFromChunks.php
includes/upload/UploadFromUrl.php
includes/upload/UploadStash.php
includes/user/BotPassword.php
includes/user/LoggedOutEditToken.php
includes/user/User.php
languages/Language.php
languages/data/Names.php
languages/i18n/ar.json
languages/i18n/ast.json
languages/i18n/ba.json
languages/i18n/be-tarask.json
languages/i18n/be.json
languages/i18n/bn.json
languages/i18n/bs.json
languages/i18n/ca.json
languages/i18n/ce.json
languages/i18n/ckb.json
languages/i18n/cs.json
languages/i18n/de.json
languages/i18n/diq.json
languages/i18n/en.json
languages/i18n/eo.json
languages/i18n/es.json
languages/i18n/fa.json
languages/i18n/fi.json
languages/i18n/fr.json
languages/i18n/frp.json
languages/i18n/gl.json
languages/i18n/gom-latn.json
languages/i18n/grc.json
languages/i18n/gu.json
languages/i18n/he.json
languages/i18n/hi.json
languages/i18n/ia.json
languages/i18n/ilo.json
languages/i18n/inh.json
languages/i18n/is.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/jut.json
languages/i18n/ka.json
languages/i18n/kk-cyrl.json
languages/i18n/ko.json
languages/i18n/ksh.json
languages/i18n/la.json
languages/i18n/lb.json
languages/i18n/lki.json
languages/i18n/lt.json
languages/i18n/lzh.json
languages/i18n/mai.json
languages/i18n/mg.json
languages/i18n/mk.json
languages/i18n/my.json
languages/i18n/nl.json
languages/i18n/pdc.json
languages/i18n/pl.json
languages/i18n/ps.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/ru.json
languages/i18n/sl.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/sv.json
languages/i18n/te.json
languages/i18n/uk.json
languages/i18n/vi.json
languages/i18n/wa.json
languages/i18n/war.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
maintenance/archives/patch-add-cl_collation_ext_index.sql [new file with mode: 0644]
maintenance/archives/patch-categorylinks-better-collation.sql
maintenance/archives/patch-kill-cl_collation_index.sql [new file with mode: 0644]
maintenance/cleanupUploadStash.php
maintenance/commandLine.inc
maintenance/importImages.php
maintenance/language/checkDupeMessages.php
maintenance/language/checkLanguage.php
maintenance/language/transstat.php
maintenance/mcc.php
maintenance/mergeMessageFileList.php
maintenance/namespaceDupes.php
maintenance/parse.php
maintenance/preprocessorFuzzTest.php
maintenance/resetUserEmail.php
maintenance/sqlite.php
maintenance/storage/checkStorage.php
maintenance/storage/fixBug20757.php
maintenance/storage/moveToExternal.php
maintenance/tables.sql
maintenance/update.php
maintenance/updateCollation.php
maintenance/updateSearchIndex.php
package.json
resources/lib/oojs-ui/i18n/ba.json
resources/lib/oojs-ui/i18n/hi.json
resources/lib/oojs-ui/oojs-ui-apex.js
resources/lib/oojs-ui/oojs-ui-core-apex.css
resources/lib/oojs-ui/oojs-ui-core-mediawiki.css
resources/lib/oojs-ui/oojs-ui-core.js
resources/lib/oojs-ui/oojs-ui-mediawiki.js
resources/lib/oojs-ui/oojs-ui-toolbars-apex.css
resources/lib/oojs-ui/oojs-ui-toolbars-mediawiki.css
resources/lib/oojs-ui/oojs-ui-toolbars.js
resources/lib/oojs-ui/oojs-ui-widgets-apex.css
resources/lib/oojs-ui/oojs-ui-widgets-mediawiki.css
resources/lib/oojs-ui/oojs-ui-widgets.js
resources/lib/oojs-ui/oojs-ui-windows-apex.css
resources/lib/oojs-ui/oojs-ui-windows-mediawiki.css
resources/lib/oojs-ui/oojs-ui-windows.js
resources/src/jquery/jquery.suggestions.js
resources/src/mediawiki.widgets/mw.widgets.CategoryCapsuleItemWidget.js
resources/src/mediawiki/api/parse.js
resources/src/mediawiki/mediawiki.requestIdleCallback.js
tests/parser/parserTest.inc
tests/parser/parserTests.txt
tests/phpunit/MediaWikiTestCase.php
tests/phpunit/includes/BlockTest.php
tests/phpunit/includes/FauxResponseTest.php
tests/phpunit/includes/HtmlTest.php
tests/phpunit/includes/OutputPageTest.php
tests/phpunit/includes/RevisionStorageTest.php
tests/phpunit/includes/TitlePermissionTest.php
tests/phpunit/includes/WatchedItemStoreIntegrationTest.php
tests/phpunit/includes/WatchedItemStoreUnitTest.php
tests/phpunit/includes/XmlTest.php
tests/phpunit/includes/api/ApiLoginTest.php
tests/phpunit/includes/api/ApiUploadTest.php
tests/phpunit/includes/api/UserWrapper.php
tests/phpunit/includes/cache/GenderCacheTest.php
tests/phpunit/includes/context/RequestContextTest.php
tests/phpunit/includes/deferred/LinksUpdateTest.php
tests/phpunit/includes/exception/HttpErrorTest.php
tests/phpunit/includes/filebackend/FileBackendTest.php
tests/phpunit/includes/filerepo/FileBackendDBRepoWrapperTest.php
tests/phpunit/includes/filerepo/file/FileTest.php
tests/phpunit/includes/filerepo/file/LocalFileTest.php
tests/phpunit/includes/media/BitmapMetadataHandlerTest.php
tests/phpunit/includes/media/MediaWikiMediaTestCase.php
tests/phpunit/includes/parser/NewParserTest.php
tests/phpunit/includes/password/PasswordPolicyChecksTest.php
tests/phpunit/includes/password/UserPasswordPolicyTest.php
tests/phpunit/includes/session/BotPasswordSessionProviderTest.php
tests/phpunit/includes/session/CookieSessionProviderTest.php
tests/phpunit/includes/session/PHPSessionHandlerTest.php
tests/phpunit/includes/session/SessionBackendTest.php
tests/phpunit/includes/session/SessionManagerTest.php
tests/phpunit/includes/user/LocalIdLookupTest.php
tests/phpunit/languages/LanguageTest.php
tests/phpunit/maintenance/backupTextPassTest.php
tests/phpunit/maintenance/backup_LogTest.php
tests/phpunit/maintenance/backup_PageTest.php
tests/phpunit/phpunit.php
tests/phpunit/skins/SideBarTest.php
tests/phpunit/structure/ApiDocumentationTest.php
tests/phpunit/suites/UploadFromUrlTestSuite.php
tests/qunit/suites/resources/mediawiki.api/mediawiki.api.parse.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.requestIdleCallback.test.js

diff --git a/.jscsrc b/.jscsrc
index 116c5cf..f3db218 100644 (file)
--- a/.jscsrc
+++ b/.jscsrc
@@ -4,7 +4,6 @@
 
        "requireVarDeclFirst": null,
 
-       "disallowQuotedKeysInObjects": "allButReserved",
        "requireDotNotation": { "allExcept": [ "keywords" ] },
        "jsDoc": {
                "checkAnnotations": {
index 45b06e9..2f8f53a 100644 (file)
@@ -10,6 +10,9 @@ As of 1.27, MediaWiki now requires PHP 5.5.9 or higher. This corresponds with
 HHVM 3.1.
 
 === Configuration changes in 1.27 ===
+* $wgAllowMicrodataAttributes and $wgAllowRdfaAttributes were removed,
+  now always enabled. If you use RDFa on your wiki, you now have to explicitly
+  set $wgHtml5Version to 'HTML+RDFa 1.0' or 'XHTML+RDFa 1.0'.
 * $wgUseLinkNamespaceDBFields was removed.
 * Deprecated $wgResourceLoaderMinifierStatementsOnOwnLine and
   $wgResourceLoaderMinifierMaxLineLength, because there was little value in
@@ -242,6 +245,7 @@ HHVM 3.1.
 * Language::getLanguageNames() was removed (deprecated since 1.20).
 * Language::getTranslatedLanguageNames() was removed (deprecated since 1.20).
 * Language::specialPage() was removed (deprecated since 1.24).
+* MediaWikiTestCase::assertException() was removed (deprecated since 1.22).
 * OutputPage::getHeadItems() was removed (deprecated since 1.24).
 * OutputPage::getScript() was removed (deprecated since 1.24).
 * OutputPage::out() was removed (deprecated since 1.22).
index 0dc1511..e0667e2 100644 (file)
@@ -21,7 +21,7 @@
                "ext-iconv": "*",
                "liuggio/statsd-php-client": "1.0.18",
                "mediawiki/at-ease": "1.1.0",
-               "oojs/oojs-ui": "0.16.3",
+               "oojs/oojs-ui": "0.16.4",
                "oyejorge/less.php": "1.7.0.10",
                "php": ">=5.5.9",
                "psr/log": "1.0.0",
@@ -45,7 +45,7 @@
                "monolog/monolog": "~1.17.2",
                "nikic/php-parser": "1.4.1",
                "nmred/kafka-php": "0.1.5",
-               "phpunit/phpunit": "4.8.23",
+               "phpunit/phpunit": "4.8.24",
                "wikimedia/avro": "1.7.7"
        },
        "suggest": {
index a431f1b..9478f48 100644 (file)
@@ -376,6 +376,7 @@ $user: Current user
 'APIEditBeforeSave': Before saving a page with api.php?action=edit, after
 processing request parameters. Return false to let the request fail, returning
 an error message or an <edit result="Failure"> tag if $resultArr was filled.
+Unlike for example 'EditFilterMergedContent' this also being run on undo.
 $editPage: the EditPage object
 $text: the new text of the article (has yet to be saved)
 &$resultArr: data in this array will be added to the API result
index e914a3a..8c59e72 100644 (file)
@@ -122,7 +122,7 @@ Lag time of the databases:
        key: $wgDBname:lag_times
        ex: wikidb:lag_times
        stores: array mapping the database id to its lag time
-       expriy: 5 secondes
+       expiry: 5 secondes
        cleared by: nothing
 
 Localisation:
@@ -139,7 +139,7 @@ Message Cache:
        ex: wikidb:messages, wikidb:messages-hash, wikidb:messages-status
        stores: an array where the keys are DB keys and the values are messages
        set in: wfMessage(), Article::editUpdates() and Title::moveTo()
-       expriy: $wgMsgCacheExpiry
+       expiry: $wgMsgCacheExpiry
        cleared by: nothing
 
 Newtalk:
@@ -194,14 +194,14 @@ Revision text:
        ex: wikidb:revisiontext:textid:1012
        stores: text of a revision
        cleared by: nothing
-       expriry: $wgRevisionCacheExpiry
+       expiry: $wgRevisionCacheExpiry
 
 Sessions:
        controlled by: $wgSessionsInObjectCache
        key: $wgBDname:session:$id
        ex: wikidb:session:38d7c5b8d3bfc51egf40c69bc40f8be3
        stores: $SESSION, useful when using a multi-sever wiki
-       expriy: one hour
+       expiry: one hour
        cleared by: session_destroy()
 
 Sidebar:
@@ -210,7 +210,7 @@ Sidebar:
        key: $wgDBname:sidebar
        ex: wikidb:sidebar
        stores: the html output of the sidebar
-       expriy: $wgSidebarCacheExpiry
+       expiry: $wgSidebarCacheExpiry
        cleared by: MessageCache::replace()
 
 Special:Allpages:
index b8e900d..93df004 100644 (file)
@@ -137,7 +137,7 @@ class Block {
 
                if ( $options['by'] ) {
                        # Local user
-                       $this->setBlocker( User::newFromID( $options['by'] ) );
+                       $this->setBlocker( User::newFromId( $options['by'] ) );
                } else {
                        # Foreign user
                        $this->setBlocker( $options['byText'] );
@@ -568,7 +568,7 @@ class Block {
                if ( $this->forcedTargetID ) {
                        $uid = $this->forcedTargetID;
                } else {
-                       $uid = $this->target instanceof User ? $this->target->getID() : 0;
+                       $uid = $this->target instanceof User ? $this->target->getId() : 0;
                }
 
                $a = [
index 8b9e7a5..63d04c9 100644 (file)
@@ -3081,10 +3081,11 @@ $wgHtml5 = true;
 
 /**
  * Defines the value of the version attribute in the &lt;html&gt; tag, if any.
- * If $wgAllowRdfaAttributes is true, and this evaluates to boolean false
- * (like if it's left at the default null value), it will be auto-initialized
- * to the correct value for RDFa+HTML5.  As such, you should have no reason to
- * ever actually set this to anything.
+ *
+ * If your wiki uses RDFa, set it to the correct value for RDFa+HTML5.
+ * Correct current values are 'HTML+RDFa 1.0' or 'XHTML+RDFa 1.0'.
+ * See also http://www.w3.org/TR/rdfa-in-html/#document-conformance
+ * @since 1.16
  */
 $wgHtml5Version = null;
 
@@ -3105,17 +3106,6 @@ $wgHTMLFormAllowTableFormat = true;
  */
 $wgUseMediaWikiUIEverywhere = false;
 
-/**
- * Enabled RDFa attributes for use in wikitext.
- * NOTE: Interaction with HTML5 is somewhat underspecified.
- */
-$wgAllowRdfaAttributes = false;
-
-/**
- * Enabled HTML5 microdata attributes for use in wikitext.
- */
-$wgAllowMicrodataAttributes = false;
-
 /**
  * Should we try to make our HTML output well-formed XML?  If set to false,
  * output will be a few bytes shorter, and the HTML will arguably be more
@@ -5955,7 +5945,7 @@ $wgCachePrefix = false;
 /**
  * Display the new debugging toolbar. This also enables profiling on database
  * queries and other useful output.
- * Will disable file cache.
+ * Will be ignored if $wgUseFileCache or $wgUseSquid is enabled.
  *
  * @since 1.19
  */
index 3268700..b3bb07a 100644 (file)
@@ -530,11 +530,12 @@ class EditPage {
                if ( $permErrors ) {
                        wfDebug( __METHOD__ . ": User can't edit\n" );
                        // Auto-block user's IP if the account was "hard" blocked
-                       $user = $wgUser;
-                       DeferredUpdates::addCallableUpdate( function() use ( $user ) {
-                               $user->spreadAnyEditBlock();
-                       } );
-
+                       if ( !wfReadOnly() ) {
+                               $user = $wgUser;
+                               DeferredUpdates::addCallableUpdate( function () use ( $user ) {
+                                       $user->spreadAnyEditBlock();
+                               } );
+                       }
                        $this->displayPermissionsError( $permErrors );
 
                        return;
@@ -1520,7 +1521,7 @@ class EditPage {
                                // is if an extension hook aborted from inside ArticleSave.
                                // Render the status object into $this->hookError
                                // FIXME this sucks, we should just use the Status object throughout
-                               $this->hookError = '<div class="error">' . $status->getWikitext() .
+                               $this->hookError = '<div class="error">' . $status->getWikiText() .
                                        '</div>';
                                return true;
                }
@@ -1735,7 +1736,9 @@ class EditPage {
 
                if ( $wgUser->isBlockedFrom( $this->mTitle, false ) ) {
                        // Auto-block user's IP if the account was "hard" blocked
-                       $wgUser->spreadAnyEditBlock();
+                       if ( !wfReadOnly() ) {
+                               $wgUser->spreadAnyEditBlock();
+                       }
                        # Check block state against master, thus 'false'.
                        $status->setResult( false, self::AS_BLOCKED_PAGE_FOR_USER );
                        return $status;
index 87fc012..8673125 100644 (file)
@@ -263,7 +263,7 @@ class HistoryBlobStub {
                                if ( !isset( $parts[1] ) || $parts[1] == '' ) {
                                        return false;
                                }
-                               $row->old_text = ExternalStore::fetchFromUrl( $url );
+                               $row->old_text = ExternalStore::fetchFromURL( $url );
 
                        }
 
index 3b36039..890beb0 100644 (file)
@@ -216,7 +216,7 @@ class Html {
                if ( in_array( $element, self::$voidElements ) ) {
                        if ( $wgWellFormedXml ) {
                                // Silly XML.
-                               return substr( $start, 0, -1 ) . ' />';
+                               return substr( $start, 0, -1 ) . '/>';
                        }
                        return $start;
                } else {
index 5b8122d..5749775 100644 (file)
@@ -290,7 +290,7 @@ class HtmlFormatter {
                        }
                        $html = $this->doc->saveHTML();
 
-                       $html = $this->fixLibXml( $html );
+                       $html = $this->fixLibXML( $html );
                        if ( wfIsWindows() ) {
                                // Cleanup for CRLF misprocessing of unknown origin on Windows.
                                // If this error continues in the future, please track it down in the
index f980a93..1a6e382 100644 (file)
@@ -991,7 +991,7 @@ class PhpHttpRequest extends MWHttpRequest {
                ];
 
                if ( $this->proxy ) {
-                       $options['http']['proxy'] = $this->urlToTCP( $this->proxy );
+                       $options['http']['proxy'] = $this->urlToTcp( $this->proxy );
                        $options['http']['request_fulluri'] = true;
                }
 
index 43df839..4ba3a75 100644 (file)
@@ -992,7 +992,7 @@ class Linker {
         */
        public static function makeMediaLinkFile( Title $title, $file, $html = '' ) {
                if ( $file && $file->exists() ) {
-                       $url = $file->getURL();
+                       $url = $file->getUrl();
                        $class = 'internal';
                } else {
                        $url = self::getUploadUrl( $title );
index 45a1385..ad02e68 100644 (file)
@@ -246,13 +246,13 @@ class MediaWiki {
                } elseif ( !$this->tryNormaliseRedirect( $title ) ) {
                        // Prevent information leak via Special:MyPage et al (T109724)
                        if ( $title->isSpecialPage() ) {
-                               $specialPage = SpecialPageFactory::getPage( $title->getDBKey() );
+                               $specialPage = SpecialPageFactory::getPage( $title->getDBkey() );
                                if ( $specialPage instanceof RedirectSpecialPage ) {
                                        $specialPage->setContext( $this->context );
                                        if ( $this->config->get( 'HideIdentifiableRedirects' )
                                                && $specialPage->personallyIdentifiableTarget()
                                        ) {
-                                               list( , $subpage ) = SpecialPageFactory::resolveAlias( $title->getDBKey() );
+                                               list( , $subpage ) = SpecialPageFactory::resolveAlias( $title->getDBkey() );
                                                $target = $specialPage->getRedirect( $subpage );
                                                // target can also be true. We let that case fall through to normal processing.
                                                if ( $target instanceof Title ) {
@@ -830,9 +830,18 @@ class MediaWiki {
                $errno = $errstr = null;
                $info = wfParseUrl( $this->config->get( 'Server' ) );
                MediaWiki\suppressWarnings();
+               $host = $info['host'];
+               $port = 80;
+               if ( isset( $info['scheme'] ) && $info['scheme'] == 'https' ) {
+                       $host = "tls://" . $host;
+                       $port = 443;
+               }
+               if ( isset( $info['port'] ) ) {
+                       $port = $info['port'];
+               }
                $sock = fsockopen(
-                       $info['host'],
-                       isset( $info['port'] ) ? $info['port'] : 80,
+                       $host,
+                       $port,
                        $errno,
                        $errstr,
                        // If it takes more than 100ms to connect to ourselves there
index 9d5f5e6..fd016fc 100644 (file)
@@ -160,19 +160,18 @@ class Message implements MessageSpecifier, Serializable {
 
        /**
         * In which language to get this message. True, which is the default,
-        * means the current interface language, false content language.
+        * means the current user language, false content language.
         *
         * @var bool
         */
        protected $interface = true;
 
        /**
-        * In which language to get this message. Overrides the $interface
-        * variable.
+        * In which language to get this message. Overrides the $interface setting.
         *
-        * @var Language
+        * @var Language|bool Explicit language object, or false for user language
         */
-       protected $language = null;
+       protected $language = false;
 
        /**
         * @var string The message key. If $keysToTry has more than one element,
@@ -225,18 +224,14 @@ class Message implements MessageSpecifier, Serializable {
 
        /**
         * @since 1.17
-        *
         * @param string|string[]|MessageSpecifier $key Message key, or array of
         * message keys to try and use the first non-empty message for, or a
         * MessageSpecifier to copy from.
         * @param array $params Message parameters.
-        * @param Language $language Optional language of the message, defaults to $wgLang.
-        *
+        * @param Language $language [optional] Language to use (defaults to current user language).
         * @throws InvalidArgumentException
         */
        public function __construct( $key, $params = [], Language $language = null ) {
-               global $wgLang;
-
                if ( $key instanceof MessageSpecifier ) {
                        if ( $params ) {
                                throw new InvalidArgumentException(
@@ -260,7 +255,9 @@ class Message implements MessageSpecifier, Serializable {
                $this->key = reset( $this->keysToTry );
 
                $this->parameters = array_values( $params );
-               $this->language = $language ?: $wgLang;
+               // User language is only resolved in getLanguage(). This helps preserve the
+               // semantic intent of "user language" across serialize() and unserialize().
+               $this->language = $language ?: false;
        }
 
        /**
@@ -271,7 +268,7 @@ class Message implements MessageSpecifier, Serializable {
        public function serialize() {
                return serialize( [
                        'interface' => $this->interface,
-                       'language' => $this->language instanceof StubUserLang ? false : $this->language->getCode(),
+                       'language' => $this->language ? $this->language->getCode() : false,
                        'key' => $this->key,
                        'keysToTry' => $this->keysToTry,
                        'parameters' => $this->parameters,
@@ -287,8 +284,6 @@ class Message implements MessageSpecifier, Serializable {
         * @param string $serialized
         */
        public function unserialize( $serialized ) {
-               global $wgLang;
-
                $data = unserialize( $serialized );
                $this->interface = $data['interface'];
                $this->key = $data['key'];
@@ -296,7 +291,7 @@ class Message implements MessageSpecifier, Serializable {
                $this->parameters = $data['parameters'];
                $this->format = $data['format'];
                $this->useDatabase = $data['useDatabase'];
-               $this->language = $data['language'] ? Language::factory( $data['language'] ) : $wgLang;
+               $this->language = $data['language'] ? Language::factory( $data['language'] ) : false;
                $this->title = $data['title'];
        }
 
@@ -365,7 +360,8 @@ class Message implements MessageSpecifier, Serializable {
         * @return Language
         */
        public function getLanguage() {
-               return $this->language;
+               // Defaults to false which means current user language
+               return $this->language ?: RequestContext::getMain()->getLanguage();
        }
 
        /**
@@ -425,7 +421,7 @@ class Message implements MessageSpecifier, Serializable {
        public function getTitle() {
                global $wgContLang, $wgForceUIMsgAsContentMsg;
 
-               $code = $this->language->getCode();
+               $code = $this->getLanguage()->getCode();
                $title = $this->key;
                if (
                        $wgContLang->getCode() !== $code
@@ -656,23 +652,24 @@ class Message implements MessageSpecifier, Serializable {
 
        /**
         * Request the message in any language that is supported.
+        *
         * As a side effect interface message status is unconditionally
         * turned off.
         *
         * @since 1.17
-        *
         * @param Language|string $lang Language code or Language object.
-        *
         * @return Message $this
         * @throws MWException
         */
        public function inLanguage( $lang ) {
-               if ( $lang instanceof Language || $lang instanceof StubUserLang ) {
+               if ( $lang instanceof Language ) {
                        $this->language = $lang;
                } elseif ( is_string( $lang ) ) {
                        if ( !$this->language instanceof Language || $this->language->getCode() != $lang ) {
                                $this->language = Language::factory( $lang );
                        }
+               } elseif ( $lang instanceof StubUserLang ) {
+                       $this->language = false;
                } else {
                        $type = gettype( $lang );
                        throw new MWException( __METHOD__ . " must be "
@@ -1061,17 +1058,17 @@ class Message implements MessageSpecifier, Serializable {
                        } elseif ( isset( $param['num'] ) ) {
                                // Replace number params always in before step for now.
                                // No support for combined raw and num params
-                               return [ 'before', $this->language->formatNum( $param['num'] ) ];
+                               return [ 'before', $this->getLanguage()->formatNum( $param['num'] ) ];
                        } elseif ( isset( $param['duration'] ) ) {
-                               return [ 'before', $this->language->formatDuration( $param['duration'] ) ];
+                               return [ 'before', $this->getLanguage()->formatDuration( $param['duration'] ) ];
                        } elseif ( isset( $param['expiry'] ) ) {
-                               return [ 'before', $this->language->formatExpiry( $param['expiry'] ) ];
+                               return [ 'before', $this->getLanguage()->formatExpiry( $param['expiry'] ) ];
                        } elseif ( isset( $param['period'] ) ) {
-                               return [ 'before', $this->language->formatTimePeriod( $param['period'] ) ];
+                               return [ 'before', $this->getLanguage()->formatTimePeriod( $param['period'] ) ];
                        } elseif ( isset( $param['size'] ) ) {
-                               return [ 'before', $this->language->formatSize( $param['size'] ) ];
+                               return [ 'before', $this->getLanguage()->formatSize( $param['size'] ) ];
                        } elseif ( isset( $param['bitrate'] ) ) {
-                               return [ 'before', $this->language->formatBitrate( $param['bitrate'] ) ];
+                               return [ 'before', $this->getLanguage()->formatBitrate( $param['bitrate'] ) ];
                        } elseif ( isset( $param['plaintext'] ) ) {
                                return [ 'after', $this->formatPlaintext( $param['plaintext'] ) ];
                        } else {
@@ -1108,7 +1105,7 @@ class Message implements MessageSpecifier, Serializable {
                        $this->title,
                        /*linestart*/true,
                        $this->interface,
-                       $this->language
+                       $this->getLanguage()
                );
 
                return $out instanceof ParserOutput ? $out->getText() : $out;
@@ -1127,7 +1124,7 @@ class Message implements MessageSpecifier, Serializable {
                return MessageCache::singleton()->transform(
                        $string,
                        $this->interface,
-                       $this->language,
+                       $this->getLanguage(),
                        $this->title
                );
        }
@@ -1145,7 +1142,7 @@ class Message implements MessageSpecifier, Serializable {
                        $cache = MessageCache::singleton();
 
                        foreach ( $this->keysToTry as $key ) {
-                               $message = $cache->get( $key, $this->useDatabase, $this->language );
+                               $message = $cache->get( $key, $this->useDatabase, $this->getLanguage() );
                                if ( $message !== false && $message !== '' ) {
                                        break;
                                }
index 321b7e3..b9af755 100644 (file)
@@ -238,7 +238,7 @@ class MovePage {
                        $file->load( File::READ_LATEST );
                        if ( $file->exists() ) {
                                $status = $file->move( $this->newTitle );
-                               if ( !$status->isOk() ) {
+                               if ( !$status->isOK() ) {
                                        return $status;
                                }
                        }
index 6774072..0c3d609 100644 (file)
@@ -460,7 +460,7 @@ class OutputPage extends ContextSource {
         * @param string $script Raw HTML
         */
        function addScript( $script ) {
-               $this->mScripts .= $script . "\n";
+               $this->mScripts .= $script;
        }
 
        /**
@@ -516,7 +516,7 @@ class OutputPage extends ContextSource {
         * @param string $script JavaScript text, no "<script>" tags
         */
        public function addInlineScript( $script ) {
-               $this->mScripts .= Html::inlineScript( "\n$script\n" ) . "\n";
+               $this->mScripts .= Html::inlineScript( $script );
        }
 
        /**
@@ -2942,7 +2942,7 @@ class OutputPage extends ContextSource {
         * @return string HTML fragment
         */
        function getHeadScripts() {
-               return $this->getInlineHeadScripts() . "\n" . $this->getExternalHeadScripts();
+               return $this->getInlineHeadScripts() . $this->getExternalHeadScripts();
        }
 
        /**
@@ -3209,7 +3209,7 @@ class OutputPage extends ContextSource {
                        'wgMonthNames' => $lang->getMonthNamesArray(),
                        'wgMonthNamesShort' => $lang->getMonthAbbreviationsArray(),
                        'wgRelevantPageName' => $relevantTitle->getPrefixedDBkey(),
-                       'wgRelevantArticleId' => $relevantTitle->getArticleId(),
+                       'wgRelevantArticleId' => $relevantTitle->getArticleID(),
                ];
 
                if ( $user->isLoggedIn() ) {
@@ -3624,7 +3624,7 @@ class OutputPage extends ContextSource {
                        # If wanted, and the interface is right-to-left, flip the CSS
                        $style_css = CSSJanus::transform( $style_css, true, false );
                }
-               $this->mInlineStyles .= Html::inlineStyle( $style_css ) . "\n";
+               $this->mInlineStyles .= Html::inlineStyle( $style_css );
        }
 
        /**
@@ -3676,7 +3676,7 @@ class OutputPage extends ContextSource {
                        if ( $this->getLanguage()->getDir() !== $wgContLang->getDir() ) {
                                $previewedCSS = CSSJanus::transform( $previewedCSS, true, false );
                        }
-                       $otherTags[] = Html::inlineStyle( $previewedCSS ) . "\n";
+                       $otherTags[] = Html::inlineStyle( $previewedCSS );
                } else {
                        // Load the user styles normally
                        $moduleStyles[] = 'user';
@@ -3715,7 +3715,7 @@ class OutputPage extends ContextSource {
                        ResourceLoaderModule::TYPE_STYLES
                );
                // Add normal styles added through addStyle()/addInlineStyle() here
-               $links[] = implode( "\n", $this->buildCssLinksArray() ) . $this->mInlineStyles;
+               $links[] = implode( '', $this->buildCssLinksArray() ) . $this->mInlineStyles;
                // Add marker tag to mark the place where the client-side
                // loader should inject dynamic styles
                // We use a <meta> tag with a made-up name for this because that's valid HTML
index 3db3744..b7bb346 100644 (file)
@@ -1549,14 +1549,24 @@ class Revision implements IDBAccessObject {
        protected function loadText() {
                // Caching may be beneficial for massive use of external storage
                global $wgRevisionCacheExpiry;
+               static $processCache = null;
+
+               if ( !$processCache ) {
+                       $processCache = new MapCacheLRU( 10 );
+               }
 
                $cache = ObjectCache::getMainWANInstance();
                $textId = $this->getTextId();
                $key = wfMemcKey( 'revisiontext', 'textid', $textId );
+
                if ( $wgRevisionCacheExpiry ) {
+                       if ( $processCache->has( $key ) ) {
+                               return $processCache->get( $key );
+                       }
                        $text = $cache->get( $key );
                        if ( is_string( $text ) ) {
                                wfDebug( __METHOD__ . ": got id $textId from cache\n" );
+                               $processCache->set( $key, $text );
                                return $text;
                        }
                }
@@ -1601,6 +1611,7 @@ class Revision implements IDBAccessObject {
 
                # No negative caching -- negative hits on text rows may be due to corrupted slave servers
                if ( $wgRevisionCacheExpiry && $text !== false ) {
+                       $processCache->set( $key, $text );
                        $cache->set( $key, $text, $wgRevisionCacheExpiry );
                }
 
index d52bc07..d321e9f 100644 (file)
@@ -363,14 +363,14 @@ class Sanitizer {
         * @return array
         */
        public static function getRecognizedTagData( $extratags = [], $removetags = [] ) {
-               global $wgAllowMicrodataAttributes, $wgAllowImageTag;
+               global $wgAllowImageTag;
 
                static $htmlpairsStatic, $htmlsingle, $htmlsingleonly, $htmlnest, $tabletags,
                        $htmllist, $listtags, $htmlsingleallowed, $htmlelementsStatic, $staticInitialised;
 
                // Base our staticInitialised variable off of the global config state so that if the globals
                // are changed (like in the screwed up test system) we will re-initialise the settings.
-               $globalContext = implode( '-', compact( 'wgAllowMicrodataAttributes', 'wgAllowImageTag' ) );
+               $globalContext = $wgAllowImageTag;
                if ( !$staticInitialised || $staticInitialised != $globalContext ) {
                        $htmlpairsStatic = [ # Tags that must be closed
                                'b', 'bdi', 'del', 'i', 'ins', 'u', 'font', 'big', 'small', 'sub', 'sup', 'h1',
@@ -386,10 +386,10 @@ class Sanitizer {
                        $htmlsingleonly = [ # Elements that cannot have close tags
                                'br', 'wbr', 'hr'
                        ];
-                       if ( $wgAllowMicrodataAttributes ) {
-                               $htmlsingle[] = $htmlsingleonly[] = 'meta';
-                               $htmlsingle[] = $htmlsingleonly[] = 'link';
-                       }
+
+                       $htmlsingle[] = $htmlsingleonly[] = 'meta';
+                       $htmlsingle[] = $htmlsingleonly[] = 'link';
+
                        $htmlnest = [ # Tags that can be nested--??
                                'table', 'tr', 'td', 'th', 'div', 'blockquote', 'ol', 'ul',
                                'li', 'dl', 'dt', 'dd', 'font', 'big', 'small', 'sub', 'sup', 'span',
@@ -734,15 +734,13 @@ class Sanitizer {
         * @todo Check for unique id attribute :P
         */
        static function validateAttributes( $attribs, $whitelist ) {
-               global $wgAllowRdfaAttributes, $wgAllowMicrodataAttributes;
-
                $whitelist = array_flip( $whitelist );
                $hrefExp = '/^(' . wfUrlProtocols() . ')[^\s]+$/';
 
                $out = [];
                foreach ( $attribs as $attribute => $value ) {
-                       # allow XML namespace declaration if RDFa is enabled
-                       if ( $wgAllowRdfaAttributes && preg_match( self::XMLNS_ATTRIBUTE_PATTERN, $attribute ) ) {
+                       # Allow XML namespace declaration to allow RDFa
+                       if ( preg_match( self::XMLNS_ATTRIBUTE_PATTERN, $attribute ) ) {
                                if ( !preg_match( self::EVIL_URI_PATTERN, $value ) ) {
                                        $out[$attribute] = $value;
                                }
@@ -817,15 +815,14 @@ class Sanitizer {
                        $out[$attribute] = $value;
                }
 
-               if ( $wgAllowMicrodataAttributes ) {
-                       # itemtype, itemid, itemref don't make sense without itemscope
-                       if ( !array_key_exists( 'itemscope', $out ) ) {
-                               unset( $out['itemtype'] );
-                               unset( $out['itemid'] );
-                               unset( $out['itemref'] );
-                       }
-                       # TODO: Strip itemprop if we aren't descendants of an itemscope or pointed to by an itemref.
+               # itemtype, itemid, itemref don't make sense without itemscope
+               if ( !array_key_exists( 'itemscope', $out ) ) {
+                       unset( $out['itemtype'] );
+                       unset( $out['itemid'] );
+                       unset( $out['itemref'] );
                }
+               # TODO: Strip itemprop if we aren't descendants of an itemscope or pointed to by an itemref.
+
                return $out;
        }
 
@@ -1561,12 +1558,9 @@ class Sanitizer {
         * @return array
         */
        static function setupAttributeWhitelist() {
-               global $wgAllowRdfaAttributes, $wgAllowMicrodataAttributes;
-               static $whitelist, $staticInitialised;
+               static $whitelist;
 
-               $globalContext = implode( '-', compact( 'wgAllowRdfaAttributes', 'wgAllowMicrodataAttributes' ) );
-
-               if ( $whitelist !== null && $staticInitialised == $globalContext ) {
+               if ( $whitelist !== null ) {
                        return $whitelist;
                }
 
@@ -1586,23 +1580,24 @@ class Sanitizer {
                        'aria-labelledby',
                        'aria-owns',
                        'role',
-               ];
 
-               if ( $wgAllowRdfaAttributes ) {
-                       # RDFa attributes as specified in section 9 of
+                       # RDFa
+                       # These attributes are specified in section 9 of
                        # http://www.w3.org/TR/2008/REC-rdfa-syntax-20081014
-                       $common = array_merge( $common, [
-                               'about', 'property', 'resource', 'datatype', 'typeof',
-                       ] );
-               }
+                       'about',
+                       'property',
+                       'resource',
+                       'datatype',
+                       'typeof',
 
-               if ( $wgAllowMicrodataAttributes ) {
-                       # add HTML5 microdata tags as specified by
+                       # Microdata. These are specified by
                        # http://www.whatwg.org/html/microdata.html#the-microdata-model
-                       $common = array_merge( $common, [
-                               'itemid', 'itemprop', 'itemref', 'itemscope', 'itemtype'
-                       ] );
-               }
+                       'itemid',
+                       'itemprop',
+                       'itemref',
+                       'itemscope',
+                       'itemtype',
+               ];
 
                $block = array_merge( $common, [ 'align' ] );
                $tablealign = [ 'align', 'valign' ];
@@ -1773,8 +1768,6 @@ class Sanitizer {
                        'link' => [ 'itemprop', 'href' ],
                ];
 
-               $staticInitialised = $globalContext;
-
                return $whitelist;
        }
 
index f26d789..f7d8d08 100644 (file)
@@ -443,15 +443,6 @@ $wgHtml5 = true;
 $wgXhtmlDefaultNamespace = 'http://www.w3.org/1999/xhtml';
 $wgJsMimeType = 'text/javascript';
 
-if ( !$wgHtml5Version && $wgAllowRdfaAttributes ) {
-       // see http://www.w3.org/TR/rdfa-in-html/#document-conformance
-       if ( $wgMimeType == 'application/xhtml+xml' ) {
-               $wgHtml5Version = 'XHTML+RDFa 1.0';
-       } else {
-               $wgHtml5Version = 'HTML+RDFa 1.0';
-       }
-}
-
 // Blacklisted file extensions shouldn't appear on the "allowed" list
 $wgFileExtensions = array_values( array_diff( $wgFileExtensions, $wgFileBlacklist ) );
 
@@ -610,7 +601,7 @@ if ( !$wgPasswordSender ) {
        $wgPasswordSender = 'apache@' . $wgServerName;
 }
 if ( !$wgNoReplyAddress ) {
-       $wgNoReplyAddress = $wgNoReplyAddress;
+       $wgNoReplyAddress = $wgPasswordSender;
 }
 
 if ( $wgSecureLogin && substr( $wgServer, 0, 2 ) !== '//' ) {
index 960832c..262c6fa 100644 (file)
@@ -3570,9 +3570,9 @@ class Title implements LinkTarget {
 
                // If we are looking at a css/js user subpage, purge the action=raw.
                if ( $this->isJsSubpage() ) {
-                       $urls[] = $this->getInternalUrl( 'action=raw&ctype=text/javascript' );
+                       $urls[] = $this->getInternalURL( 'action=raw&ctype=text/javascript' );
                } elseif ( $this->isCssSubpage() ) {
-                       $urls[] = $this->getInternalUrl( 'action=raw&ctype=text/css' );
+                       $urls[] = $this->getInternalURL( 'action=raw&ctype=text/css' );
                }
 
                Hooks::run( 'TitleSquidURLs', [ $this, &$urls ] );
index b3a06e2..20ec592 100644 (file)
@@ -339,6 +339,100 @@ class WatchedItemStore {
                return $watchCounts;
        }
 
+       /**
+        * Number of watchers of each page who have visited recent edits to that page
+        *
+        * @param array $targetsWithVisitThresholds array of pairs (LinkTarget $target, mixed $threshold),
+        *        $threshold is:
+        *        - a timestamp of the recent edit if $target exists (format accepted by wfTimestamp)
+        *        - null if $target doesn't exist
+        * @param int|null $minimumWatchers
+        * @return array multi-dimensional like $return[$namespaceId][$titleString] = $watchers,
+        *         where $watchers is an int:
+        *         - if the page exists, number of users watching who have visited the page recently
+        *         - if the page doesn't exist, number of users that have the page on their watchlist
+        *         - 0 means there are no visiting watchers or their number is below the minimumWatchers
+        *         option (if passed).
+        */
+       public function countVisitingWatchersMultiple(
+               array $targetsWithVisitThresholds,
+               $minimumWatchers = null
+       ) {
+               $dbr = $this->getConnection( DB_SLAVE );
+
+               $conds = $this->getVisitingWatchersCondition( $dbr, $targetsWithVisitThresholds );
+
+               $dbOptions = [ 'GROUP BY' => [ 'wl_namespace', 'wl_title' ] ];
+               if ( $minimumWatchers !== null ) {
+                       $dbOptions['HAVING'] = 'COUNT(*) >= ' . (int)$minimumWatchers;
+               }
+               $res = $dbr->select(
+                       'watchlist',
+                       [ 'wl_namespace', 'wl_title', 'watchers' => 'COUNT(*)' ],
+                       $conds,
+                       __METHOD__,
+                       $dbOptions
+               );
+
+               $this->reuseConnection( $dbr );
+
+               $watcherCounts = [];
+               foreach ( $targetsWithVisitThresholds as list( $target ) ) {
+                       /* @var LinkTarget $target */
+                       $watcherCounts[$target->getNamespace()][$target->getDBkey()] = 0;
+               }
+
+               foreach ( $res as $row ) {
+                       $watcherCounts[$row->wl_namespace][$row->wl_title] = (int)$row->watchers;
+               }
+
+               return $watcherCounts;
+       }
+
+       /**
+        * Generates condition for the query used in a batch count visiting watchers.
+        *
+        * @param IDatabase $db
+        * @param array $targetsWithVisitThresholds array of pairs (LinkTarget, last visit threshold)
+        * @return string
+        */
+       private function getVisitingWatchersCondition(
+               IDatabase $db,
+               array $targetsWithVisitThresholds
+       ) {
+               $missingTargets = [];
+               $namespaceConds = [];
+               foreach ( $targetsWithVisitThresholds as list( $target, $threshold ) ) {
+                       if ( $threshold === null ) {
+                               $missingTargets[] = $target;
+                               continue;
+                       }
+                       /* @var LinkTarget $target */
+                       $namespaceConds[$target->getNamespace()][] = $db->makeList( [
+                               'wl_title = ' . $db->addQuotes( $target->getDBkey() ),
+                               $db->makeList( [
+                                       'wl_notificationtimestamp >= ' . $db->addQuotes( $db->timestamp( $threshold ) ),
+                                       'wl_notificationtimestamp IS NULL'
+                               ], LIST_OR )
+                       ], LIST_AND );
+               }
+
+               $conds = [];
+               foreach ( $namespaceConds as $namespace => $pageConds ) {
+                       $conds[] = $db->makeList( [
+                               'wl_namespace = ' . $namespace,
+                               '(' . $db->makeList( $pageConds, LIST_OR ) . ')'
+                       ], LIST_AND );
+               }
+
+               if ( $missingTargets ) {
+                       $lb = new LinkBatch( $missingTargets );
+                       $conds[] = $lb->constructSet( 'wl', $db );
+               }
+
+               return $db->makeList( $conds, LIST_OR );
+       }
+
        /**
         * Get an item (may be cached)
         *
@@ -396,6 +490,38 @@ class WatchedItemStore {
                return $item;
        }
 
+       /**
+        * @param User $user
+        * @param array $options Allowed keys:
+        *        'forWrite' => bool defaults to false
+        *
+        * @return WatchedItem[]
+        */
+       public function getWatchedItemsForUser( User $user, array $options = [] ) {
+               $options += [ 'forWrite' => false ];
+
+               $db = $this->getConnection( $options['forWrite'] ? DB_MASTER : DB_SLAVE );
+               $res = $db->select(
+                       'watchlist',
+                       [ 'wl_namespace', 'wl_title', 'wl_notificationtimestamp' ],
+                       [ 'wl_user' => $user->getId() ],
+                       __METHOD__
+               );
+               $this->reuseConnection( $db );
+
+               $watchedItems = [];
+               foreach ( $res as $row ) {
+                       // todo these could all be cached at some point?
+                       $watchedItems[] = new WatchedItem(
+                               $user,
+                               new TitleValue( (int)$row->wl_namespace, $row->wl_title ),
+                               $row->wl_notificationtimestamp
+                       );
+               }
+
+               return $watchedItems;
+       }
+
        /**
         * Must be called separately for Subject & Talk namespaces
         *
@@ -408,6 +534,61 @@ class WatchedItemStore {
                return (bool)$this->getWatchedItem( $user, $target );
        }
 
+       /**
+        * @param User $user
+        * @param LinkTarget[] $targets
+        *
+        * @return array multi-dimensional like $return[$namespaceId][$titleString] = $timestamp,
+        *         where $timestamp is:
+        *         - string|null value of wl_notificationtimestamp,
+        *         - false if $target is not watched by $user.
+        */
+       public function getNotificationTimestampsBatch( User $user, array $targets ) {
+               $timestamps = [];
+               foreach ( $targets as $target ) {
+                       $timestamps[$target->getNamespace()][$target->getDBkey()] = false;
+               }
+
+               if ( $user->isAnon() ) {
+                       return $timestamps;
+               }
+
+               $targetsToLoad = [];
+               foreach ( $targets as $target ) {
+                       $cachedItem = $this->getCached( $user, $target );
+                       if ( $cachedItem ) {
+                               $timestamps[$target->getNamespace()][$target->getDBkey()] =
+                                       $cachedItem->getNotificationTimestamp();
+                       } else {
+                               $targetsToLoad[] = $target;
+                       }
+               }
+
+               if ( !$targetsToLoad ) {
+                       return $timestamps;
+               }
+
+               $dbr = $this->getConnection( DB_SLAVE );
+
+               $lb = new LinkBatch( $targetsToLoad );
+               $res = $dbr->select(
+                       'watchlist',
+                       [ 'wl_namespace', 'wl_title', 'wl_notificationtimestamp' ],
+                       [
+                               $lb->constructSet( 'wl', $dbr ),
+                               'wl_user' => $user->getId(),
+                       ],
+                       __METHOD__
+               );
+               $this->reuseConnection( $dbr );
+
+               foreach ( $res as $row ) {
+                       $timestamps[(int)$row->wl_namespace][$row->wl_title] = $row->wl_notificationtimestamp;
+               }
+
+               return $timestamps;
+       }
+
        /**
         * Must be called separately for Subject & Talk namespaces
         *
index dca0f32..4534414 100644 (file)
@@ -221,10 +221,10 @@ class WikiReference {
         * @return string relative URL, without the server part.
         */
        private function getLocalUrl( $page, $fragmentId = null ) {
-               $page = wfUrlEncode( str_replace( ' ', '_', $page ) );
+               $page = wfUrlencode( str_replace( ' ', '_', $page ) );
 
                if ( is_string( $fragmentId ) && $fragmentId !== '' ) {
-                       $page .= '#' . wfUrlEncode( $fragmentId );
+                       $page .= '#' . wfUrlencode( $fragmentId );
                }
 
                return str_replace( '$1', $page, $this->mPath );
index ead8efa..839d7b2 100644 (file)
@@ -96,6 +96,9 @@ abstract class Action {
                $classOrCallable = self::getClass( $action, $page->getActionOverrides() );
 
                if ( is_string( $classOrCallable ) ) {
+                       if ( !class_exists( $classOrCallable ) ) {
+                               return false;
+                       }
                        $obj = new $classOrCallable( $page, $context );
                        return $obj;
                }
index 4596e41..f7c30b7 100644 (file)
@@ -820,7 +820,7 @@ class InfoAction extends FormlessAction {
                                : $user->getUserPage();
 
                        $hiddenPrefs = $this->context->getConfig()->get( 'HiddenPrefs' );
-                       if ( $user->getID() == 0 ) {
+                       if ( $user->getId() == 0 ) {
                                $anon_ips[] = Linker::link( $page, htmlspecialchars( $user->getName() ) );
                        } elseif ( !in_array( 'realname', $hiddenPrefs ) && $user->getRealName() ) {
                                $real_names[] = Linker::link( $page, htmlspecialchars( $user->getRealName() ) );
index f09c6f2..df3f516 100644 (file)
@@ -1367,7 +1367,7 @@ class ApiMain extends ApiBase {
                        'ip' => $request->getIP(),
                        'userAgent' => $this->getUserAgent(),
                        'wiki' => wfWikiID(),
-                       'timeSpentBackend' => round( $time * 1000 ),
+                       'timeSpentBackend' => (int) round( $time * 1000 ),
                        'hadError' => $e !== null,
                        'errorCodes' => [],
                        'params' => [],
@@ -1401,8 +1401,8 @@ class ApiMain extends ApiBase {
                }
 
                wfDebugLog( 'api', $msg, 'private' );
-               // ApiRequest channel is for structured data consumers
-               wfDebugLog( 'ApiRequest', '', 'private', $logCtx );
+               // ApiAction channel is for structured data consumers
+               wfDebugLog( 'ApiAction', '', 'private', $logCtx );
        }
 
        /**
index 4336907..733ea2c 100644 (file)
@@ -552,6 +552,26 @@ class ApiQuery extends ApiBase {
                return implode( "\n", $moduleDescriptions );
        }
 
+       public function isReadMode() {
+               // We need to make an exception for ApiQueryTokens so login tokens can
+               // be fetched on private wikis. Restrict that exception as much as
+               // possible: no other modules allowed, and no pageset parameters
+               // either. We do allow the 'rawcontinue' and 'indexpageids' parameters
+               // since frameworks might add these unconditionally and they can't
+               // expose anything here.
+               $params = array_filter(
+                       array_diff_key(
+                               $this->extractRequestParams() + $this->getPageSet()->extractRequestParams(),
+                               [ 'rawcontinue' => 1, 'indexpageids' => 1 ]
+                       )
+               );
+               if ( $params === [ 'meta' => [ 'tokens' ] ] ) {
+                       return false;
+               }
+
+               return true;
+       }
+
        protected function getExamplesMessages() {
                return [
                        'action=query&prop=revisions&meta=siteinfo&' .
index 3aa0122..ea1b94e 100644 (file)
@@ -448,18 +448,20 @@ class ApiQueryInfo extends ApiQueryBase {
                        ApiResult::setIndexedTagName( $pageInfo['restrictiontypes'], 'rt' );
                }
 
-               if ( $this->fld_watched ) {
-                       $pageInfo['watched'] = isset( $this->watched[$ns][$dbkey] );
+               if ( $this->fld_watched && $this->watched !== null ) {
+                       $pageInfo['watched'] = $this->watched[$ns][$dbkey];
                }
 
                if ( $this->fld_watchers ) {
-                       if ( $this->watchers[$ns][$dbkey] !== 0 || $this->showZeroWatchers ) {
+                       if ( $this->watchers !== null && $this->watchers[$ns][$dbkey] !== 0 ) {
                                $pageInfo['watchers'] = $this->watchers[$ns][$dbkey];
+                       } elseif ( $this->showZeroWatchers ) {
+                               $pageInfo['watchers'] = 0;
                        }
                }
 
                if ( $this->fld_visitingwatchers ) {
-                       if ( isset( $this->visitingwatchers[$ns][$dbkey] ) ) {
+                       if ( $this->visitingwatchers !== null && $this->visitingwatchers[$ns][$dbkey] !== 0 ) {
                                $pageInfo['visitingwatchers'] = $this->visitingwatchers[$ns][$dbkey];
                        } elseif ( $this->showZeroWatchers ) {
                                $pageInfo['visitingwatchers'] = 0;
@@ -468,7 +470,7 @@ class ApiQueryInfo extends ApiQueryBase {
 
                if ( $this->fld_notificationtimestamp ) {
                        $pageInfo['notificationtimestamp'] = '';
-                       if ( isset( $this->notificationtimestamps[$ns][$dbkey] ) ) {
+                       if ( $this->notificationtimestamps[$ns][$dbkey] ) {
                                $pageInfo['notificationtimestamp'] =
                                        wfTimestamp( TS_ISO_8601, $this->notificationtimestamps[$ns][$dbkey] );
                        }
@@ -756,30 +758,23 @@ class ApiQueryInfo extends ApiQueryBase {
 
                $this->watched = [];
                $this->notificationtimestamps = [];
-               $db = $this->getDB();
-
-               $lb = new LinkBatch( $this->everything );
 
-               $this->resetQueryParams();
-               $this->addTables( [ 'watchlist' ] );
-               $this->addFields( [ 'wl_title', 'wl_namespace' ] );
-               $this->addFieldsIf( 'wl_notificationtimestamp', $this->fld_notificationtimestamp );
-               $this->addWhere( [
-                       $lb->constructSet( 'wl', $db ),
-                       'wl_user' => $user->getId()
-               ] );
-
-               $res = $this->select( __METHOD__ );
+               $store = WatchedItemStore::getDefaultInstance();
+               $timestamps = $store->getNotificationTimestampsBatch( $user, $this->everything );
 
-               foreach ( $res as $row ) {
-                       if ( $this->fld_watched ) {
-                               $this->watched[$row->wl_namespace][$row->wl_title] = true;
-                       }
-                       if ( $this->fld_notificationtimestamp ) {
-                               $this->notificationtimestamps[$row->wl_namespace][$row->wl_title] =
-                                       $row->wl_notificationtimestamp;
+               if ( $this->fld_watched ) {
+                       foreach ( $timestamps as $namespaceId => $dbKeys ) {
+                               $this->watched[$namespaceId] = array_map(
+                                       function( $x ) {
+                                               return $x !== false;
+                                       },
+                                       $dbKeys
+                               );
                        }
                }
+               if ( $this->fld_notificationtimestamp ) {
+                       $this->notificationtimestamps = $timestamps;
+               }
        }
 
        /**
@@ -829,14 +824,7 @@ class ApiQueryInfo extends ApiQueryBase {
 
                $this->showZeroWatchers = $canUnwatchedpages;
 
-               // Assemble a WHERE condition to find:
-               // * if the page exists, number of users watching who have
-               //   visited the page recently
-               // * if the page doesn't exist, number of users that have
-               //   the page on their watchlist
-               $whereStrings = [];
-
-               // For pages that exist
+               $titlesWithThresholds = [];
                if ( $this->titles ) {
                        $lb = new LinkBatch( $this->titles );
 
@@ -851,55 +839,38 @@ class ApiQueryInfo extends ApiQueryBase {
                        $this->addOption( 'GROUP BY', [ 'page_namespace', 'page_title' ] );
                        $timestampRes = $this->select( __METHOD__ );
 
-                       // Assemble SQL WHERE condition to find number of page watchers who also
-                       // visited a "recent" edit (last visited about 26 weeks before latest edit)
                        $age = $config->get( 'WatchersMaxAge' );
                        $timestamps = [];
                        foreach ( $timestampRes as $row ) {
                                $revTimestamp = wfTimestamp( TS_UNIX, (int)$row->rev_timestamp );
-                               $threshold = $db->timestamp( $revTimestamp - $age );
-                               $timestamps[$row->page_namespace][$row->page_title] = $threshold;
-                       }
-
-                       foreach ( $timestamps as $ns_key => $namespace ) {
-                               $pageStrings = [];
-                               foreach ( $namespace as $pg_key => $threshold ) {
-                                       $pageStrings[] = "wl_title = '$pg_key' AND" .
-                                               ' (wl_notificationtimestamp >= ' .
-                                               $db->addQuotes( $threshold ) .
-                                               ' OR wl_notificationtimestamp IS NULL)';
-                               }
-                               $whereStrings[] = "wl_namespace = '$ns_key' AND (" .
-                                       $db->makeList( $pageStrings, LIST_OR ) . ')';
+                               $timestamps[$row->page_namespace][$row->page_title] = $revTimestamp - $age;
                        }
+                       $titlesWithThresholds = array_map(
+                               function( LinkTarget $target ) use ( $timestamps ) {
+                                       return [
+                                               $target, $timestamps[$target->getNamespace()][$target->getDBkey()]
+                                       ];
+                               },
+                               $this->titles
+                       );
                }
 
-               // For nonexistant pages
                if ( $this->missing ) {
-                       $lb = new LinkBatch( $this->missing );
-                       $whereStrings[] = $lb->constructSet( 'wl', $db );
-               }
-
-               // Make the actual string and do the query
-               $whereString = $db->makeList( $whereStrings, LIST_OR );
-
-               $this->resetQueryParams();
-               $this->addTables( [ 'watchlist' ] );
-               $this->addFields( [
-                       'wl_namespace',
-                       'wl_title',
-                       'count' => 'COUNT(*)'
-               ] );
-               $this->addWhere( [ $whereString ] );
-               $this->addOption( 'GROUP BY', [ 'wl_namespace', 'wl_title' ] );
-               if ( !$canUnwatchedpages ) {
-                       $this->addOption( 'HAVING', "COUNT(*) >= $unwatchedPageThreshold" );
-               }
-
-               $res = $this->select( __METHOD__ );
-               foreach ( $res as $row ) {
-                       $this->visitingwatchers[$row->wl_namespace][$row->wl_title] = (int)$row->count;
-               }
+                       $titlesWithThresholds = array_merge(
+                               $titlesWithThresholds,
+                               array_map(
+                                       function( LinkTarget $target ) {
+                                               return [ $target, null ];
+                                       },
+                                       $this->missing
+                               )
+                       );
+               }
+
+               $this->visitingwatchers = WatchedItemStore::getDefaultInstance()->countVisitingWatchersMultiple(
+                       $titlesWithThresholds,
+                       !$canUnwatchedpages ? $unwatchedPageThreshold : null
+               );
        }
 
        public function getCacheMode( $params ) {
index 6d1540b..b039a1e 100644 (file)
@@ -32,6 +32,10 @@ class ApiQueryStashImageInfo extends ApiQueryImageInfo {
        }
 
        public function execute() {
+               if ( !$this->getUser()->isLoggedIn() ) {
+                       $this->dieUsage( 'You must be logged-in to have an upload stash', 'notloggedin' );
+               }
+
                $params = $this->extractRequestParams();
                $modulePrefix = $this->getModulePrefix();
 
index a7e5754..0d19545 100644 (file)
@@ -5,7 +5,7 @@
                        "Enolp"
                ]
        },
-       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Documentación]]\n* [[mw:API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Llista d'alderique]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Anuncios de la API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Fallos y solicitúes]\n</div>\n<strong>Estau:</strong> Toles carauterístiques qu'apaecen nesta páxina tendríen de funcionar, pero la API inda ta en desendolcu activu, y puede camudar en cualquier momentu. Suscríbete a la [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ llista de corréu mediawiki-api-announce] p'avisos sobro anovamientos.\n\n<strong>Solicitúes incorreutes:</strong> Cuando s'unvíen solicitúes incorreutes a la API, unvíase una cabecera HTTP cola clave \"MediaWiki-API-Error\" y, darréu, tanto'l valor de la cabecera como'l códigu d'error devueltu pondránse al mesmu valor. Pa más información, consulta [[mw:API:Errors_and_warnings|API: Errores y avisos]].",
+       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Documentación]]\n* [[mw:API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Llista d'alderique]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Anuncios de la API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Fallos y solicitúes]\n</div>\n<strong>Estau:</strong> Toles carauterístiques qu'apaecen nesta páxina tendríen de funcionar, pero la API inda ta en desendolcu activu, y puede camudar en cualquier momentu. Suscríbete a la [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ llista de corréu mediawiki-api-announce] p'avisos sobro anovamientos.\n\n<strong>Solicitúes incorreutes:</strong> Cuando s'unvíen solicitúes incorreutes a la API, unvíase una cabecera HTTP cola clave \"MediaWiki-API-Error\" y, darréu, tanto'l valor de la cabecera como'l códigu d'error devueltu pondránse al mesmu valor. Pa más información, consulta [[mw:API:Errors_and_warnings|API: Errores y avisos]].\n\n<strong>Pruebes:</strong> Pa facilitar les pruebes de solicitúes API, consulta [[Special:ApiSandbox]].",
        "apihelp-main-param-action": "Qué aición facer.",
        "apihelp-main-param-format": "El formatu de la salida.",
        "apihelp-block-description": "Bloquiar a un usuariu.",
index 094127b..f39998b 100644 (file)
        "@metadata": {
                "authors": [
                        "Рустам Нурыев",
-                       "Азат Хәлилов"
+                       "Азат Хәлилов",
+                       "Sagan",
+                       "Айсар",
+                       "Янмурза Баки",
+                       "Айбикә",
+                       "Лилиә"
                ]
        },
-       "apihelp-main-param-action": "Хәрәкәтте нисек үтәргә?",
+       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Документация]]\n* [[mw:API:FAQ|ЧаВО]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Почта таратыу]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce  API яңылыҡтары]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R  Хаталар һәм яуаптар]\n</div>\n<strong>Статус:</strong> Был биттә  күрһәтелгән бар функциялар ҙа эшләргә тейеш,  шулай ҙа  API әүҙем эшкәртеү хәлендә тора һәм теләгән бер ваҡытта үҙгәрергә мөмкин. Яңыртылыуҙарҙы һәр саҡ белеп торор өсөн [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ почта таратыу mediawiki-api-announce], ошоға яҙыл.\n\n<strong>Хаталы һоратыуҙар:</strong> Әгәр API хаталы һоратыу алһа,     HTTP баш һүҙе   «MediaWiki-API-Error» асҡысы менән кире ҡайтарыла,  бынан һуң баш һүҙҙең мәғәнәһе һәм хата  коды кире ебәреләсәк һәм кире шул уҡ мәғәнәлә кире ҡуйыласаҡ. Киңерәк мәғлүмәтте ошонан ҡара  [[mw:API:Errors_and_warnings|API:Хаталар һәм иҫкәртеүҙәр]].\n\n<strong>Тестлау:</strong>   API-һоратыуҙарҙы тестлау уңайлы булһын өсөн ҡара. [[Special:ApiSandbox]]",
+       "apihelp-main-param-action": "Үтәлергә тейеш булған ғәмәлдәр.",
        "apihelp-main-param-format": "Мәғлүмәттәр сығарыу форматы.",
+       "apihelp-main-param-smaxage": "Cache-Control HTTP-баш һүҙҙең <code>s-maxage</code>  мәғәнәһен бирелгән секунд эсендә билдәләй.",
+       "apihelp-main-param-maxage": "Cache-Control HTTP-баш һүҙҙең <code>s-maxage</code>  мәғәнәһен бирелгән секунд эсендә билдәләй.",
+       "apihelp-main-param-assert": "Әгәр <kbd>user</kbd>бирелһә ҡулланыусы танылған икәненә, йәки <kbd>bot</kbd>бирелһә ҡол хоҡуғына эйә икәненә ышанырға",
+       "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-block-description": "Ҡатнашыусыны бикләү",
+       "apihelp-block-param-user": "Һеҙ бикләргә теләгән ҡатнашыусының IP адресы йәки  IP диапозоны.",
+       "apihelp-block-param-expiry": "Ғәмәлдән сығыу ваҡыты. Ул сағыштырмаса булыуы мөмкин(мәҫәлән <kbd>5 ай</kbd> йәки <kbd>2 аҙна</kbd>) йәки абсолют (мәҫәлән <kbd>2014-09-18T12:34:56Z</kbd>). Әгәр саманан тыш ҡуйылһа <kbd>сикһеҙ</kbd>, <kbd>билдәләнмәгән</kbd>, йәки <kbd>һис ҡасан</kbd>,  блок ғәмәлдән сыҡмай.",
+       "apihelp-block-param-reason": "Бикләү сәбәбе.",
+       "apihelp-block-param-anononly": "Аноним ҡатнашыусыларҙы бикләү (йәғни IP адресынан төҙәтеүҙе тыйыу).",
+       "apihelp-block-param-nocreate": "Яңы иҫәп яҙыуҙарын булдырыуҙы тыйыу.",
+       "apihelp-block-param-autoblock": "Был ҡатнашыусы ҡулланған һуңғы IP адрестарҙы һәм артабан үҙгәртеү өсөн ҡулланрға тырышҡан IP адрестарҙы бикләргә",
+       "apihelp-block-param-noemail": "Ҡулланыусының Вики аша электрон почта ебәреүен тыйыу. (Талап итә <code>blockemail</code> хоҡуғын).",
+       "apihelp-block-param-hidename": "Бикләү журналында ҡулланыусы исемен йәшерергә. (Хоҡуҡ талап ителә<code>hideuser</code>)",
+       "apihelp-block-param-allowusertalk": "Ҡатнашыусыларға үҙҙәренең биттәрен мөхәррирләргә мөмкинлек бирә (<var> менән бәйләнгән. [[mw:Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]]</var>).",
+       "apihelp-block-param-reblock": "Әгәр ҡатнашыусы бикләнгән булһа, ғәмәлдәге бикләүгә күсереп яҙырға.",
+       "apihelp-block-param-watchuser": "Битте йәки IP-ҡатнашыусыны һәм фекер алышыу битен күҙәтеү аҫтына аларға.",
+       "apihelp-block-example-ip-simple": "Блок IP-адрес <KBD> 192.0.2.5 </ KBD> өс көн эсендә  <KBD> Беренсе удар </ KBD>.",
+       "apihelp-block-example-user-complex": "Ҡулланыусыны ябыу <KBD> Вандал </ KBD>  уйланылған  билдәһеҙ мөҙҙәткә  <KBD> Вандаллыҡ </ KBD>, шулай уҡ яңы иҫәп булдырыуға юл ҡуймау һәм электрон почтаға ебәреү.",
+       "apihelp-checktoken-description": "\n<kbd>-нан Маркерҙың дөрөҫлөгөн тикшерегеҙ [[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
+       "apihelp-checktoken-param-type": "Тамға тибы һынау үтә.",
+       "apihelp-checktoken-param-token": "Тикшереү токены.",
+       "apihelp-checktoken-param-maxtokenage": "Токендың максималь йәше (секундтарҙа)",
+       "apihelp-checktoken-example-simple": "<kbd>csrf</kbd>-токендың яраҡлығын тикшерергә",
+       "apihelp-clearhasmsg-description": "Ағымдағы ҡуллыныусының <code>hasmsg</code> флагын таҙарта",
+       "apihelp-clearhasmsg-example-1": "Ағымдағы ҡуллыныусының <code>hasmsg</code> флагын таҙарта",
+       "apihelp-compare-description": "\nТикшереү һаны, биттең баш һүҙе, йәки бит өсөн идентификатор баштан аҙаҡҡаса икеһе өсөн дә  ҡабул ителергә тейеш",
+       "apihelp-compare-param-fromtitle": "Сағыштырыу өсөн беренсе баш һүҙ",
+       "apihelp-compare-param-fromid": "Сағыштырыу өсөн беренсе идентификатор.",
+       "apihelp-compare-param-fromrev": "Сағыштырыу өсөн беренсе редакция.",
+       "apihelp-compare-param-totitle": "Сағыштырыу өсөн икенсе баш һүҙ",
+       "apihelp-compare-param-toid": "Сағыштырыу өсөн икенсе идентификатор.",
+       "apihelp-compare-param-torev": "Сағыштырыу өсөн икенсе версия.",
+       "apihelp-compare-example-1": "1-се һәм 2-се версиялар араһында айырма эшләү",
+       "apihelp-createaccount-description": "Ҡатнашыусыларҙың яңы иҫәп яҙыуҙарын булдырыу.",
+       "apihelp-createaccount-param-name": "Ҡатнашыусы исеме.",
+       "apihelp-createaccount-param-password": "Серһүҙ (ignored if <var>$1mailpassword</var> is set).",
+       "apihelp-createaccount-param-domain": "Тышҡы аутентификация домены (өҫтәмә).",
+       "apihelp-createaccount-param-token": "Беренсе ғариза буйынса алынған токендың иҫәп яҙмаһын булдырыу",
+       "apihelp-createaccount-param-email": "Ҡатнашыусының электрон почта адресы (өҫтәмә).",
+       "apihelp-createaccount-param-realname": "Ҡатнашыусының ысын исеме(өҫтәмә)",
+       "apihelp-createaccount-param-mailpassword": "Әгәр ҙә теләһә ниндәй мәғәнә ҡуйылһа, осраҡлы серһүҙ ҡулланыусыға ебәреләсәк",
+       "apihelp-createaccount-param-reason": "Журналға яҙыу өсөн иҫәп яҙмаһын булдырыуға өҫтәмә сәбәп",
+       "apihelp-createaccount-param-language": "Тел кодын ҡулланыусы өсөн һүҙһеҙ ҡуйырға (мотлаҡ түгел, эсенә алғандағында тел  һүҙһеҙ файҙаланыла)",
+       "apihelp-createaccount-example-pass": "<kbd>test123</kbd> серһүҙле <kbd>testuser</kbd> ҡулланыусыһын булдырыу.",
+       "apihelp-createaccount-example-mail": "<kbd>testmailuser</kbd> ҡулланыусыһын һәм электрон почтаны булдырыу, осраҡлы серһеҙ яһау",
+       "apihelp-delete-description": "Битте юйырға.",
+       "apihelp-delete-param-title": "Биттең баш һүҙен юйырға. <var>$1биттәрҙән</var> бергә файҙаланыу  мөмкин түгел.",
+       "apihelp-delete-param-pageid": "Бит идентифакторы юйылыу өсөн биттәр.  <var>$1title</var> менән бергә ҡулланыла алмайҙар",
+       "apihelp-delete-param-reason": "Юйылыу сәбәбе. Әгәр ул  ҡуйылмаған булһа, билдәләнмәгән сәбәп менән автоматик рәүештә юйыласаҡ.",
+       "apihelp-delete-param-tags": "Юйҙырылғандар журналындағы яҙмаларға  мөрәжәғәт итер өсөн, билдәләрҙе үҙгәртергә.",
+       "apihelp-delete-param-watch": "Ҡулланыусының ағымдағы күҙәтеү исемлегенә бит өҫтәргә.",
+       "apihelp-delete-param-watchlist": "Ағымдағы ҡулланыусының теҙмәһенән битте һүҙһеҙ өҫтәргә йәки юйырға, һылтанмаларҙы файҙаланығыҙ йәки сәғәтте алмаштырмаҫҡа.",
+       "apihelp-delete-param-unwatch": "Ҡулланыусының ағымдағы күҙәтеү исемлегенән битте юйырға.",
+       "apihelp-delete-param-oldimage": "Имя старого изображения для удаления, как это предусмотрено\n\nБында нисек  ҡаралғанса, юйыу өсөн иҫке һүрәтләмәнең исеме [[Special:ApiHelp/query+imageinfo|action=query&prop=imageinfo&iiprop=archivename]]",
+       "apihelp-delete-example-simple": "Юйырға: <kbd>Main Page</kbd>.",
+       "apihelp-delete-example-reason": "Юйырға <kbd>Main Page</kbd> сәбәп <kbd>Preparing for move</kbd>.",
+       "apihelp-disabled-description": "Был модуль һүндерелгән.",
+       "apihelp-edit-description": "Биттәрҙе төҙөргә һәм мөхәррирләргә.",
+       "apihelp-edit-param-title": "Мөхәриррләү өсөн биттең исеме.<var>$1биттәрҙән</var> бергә файҙаланыу  мөмкин түгел.",
+       "apihelp-edit-param-pageid": "Бит идентифакторын мөхәррирләү өсөн биттәр.  <var>$1title</var> менән бергә ҡулланыла алмайҙар",
+       "apihelp-edit-param-section": "Номерҙы айырыу. <KBD> 0 </ KBD> өҫкө секция өсөн, <KBD> яңы </ KBD> яңынан бүлеү өсөн.",
+       "apihelp-edit-param-sectiontitle": "Яңы бүлек өсөн баш исем.",
+       "apihelp-edit-param-text": "Биттең йөкмәткеһе.",
+       "apihelp-edit-param-summary": "Һығымтаны мөхәррирләргә. Шулай уҡ бүлектең  $1section = яңы $1sectiontitle исеме ҡуйылмаған",
+       "apihelp-edit-param-tags": "Яңынан ҡарау  өсөн, билдәләрҙе үҙгәртергә.",
+       "apihelp-edit-param-minor": "Әҙ генә үҙгәртеүҙәр.",
+       "apihelp-edit-param-notminor": "Ҙур ғына үҙгәреш (ғәҙәттә, «әҙ»ҙән күберәк төҙәтеү).",
+       "apihelp-edit-param-bot": "Төҙәтеүҙе бот яһаған тип билдәләү.",
+       "apihelp-edit-param-basetimestamp": "База тикшереү билдәһе тышҡы ҡаршылыҡтарҙы  белеү өсөн файҙаланыла. \n\n[[Special:ApiHelp/query+revisions|action=query&prop=revisions&rvprop=timestamp]] ярҙамында алынырға мөмкин",
+       "apihelp-edit-param-starttimestamp": "Билдә, мөхәриррләү процессы башланған саҡта,  мөхәриррләү ҡаршылыҡтары беленгәндә файҙаланыла. Тура килгән ғәмәл <вар> [[Special:ApiHelp/main|curtimestamp]] ярҙамы менән мөхәриррләү процессы  башында  алынырға мөмкин (мәҫәлән, мөхәриррләү бите эстәлеген тейәгәндә)",
+       "apihelp-edit-param-recreate": "Шул уҡ ваҡытта юйыласаҡ бит тураһындағы бар хаталарҙы ҡапларға.",
+       "apihelp-edit-param-createonly": "Булған битте мөхәррирләмәҫкә.",
+       "apihelp-edit-param-nocreate": "Сик күрһәтелмәһә, хаталарҙы ташларға.",
+       "apihelp-edit-param-watch": "Ҡулланыусының ағымдағы күҙәтеү исемлегенә бит өҫтәргә.",
+       "apihelp-edit-param-unwatch": "Ҡулланыусының ағымдағы күҙәтеү исемлегенән битте юйырға.",
+       "apihelp-edit-param-watchlist": "Ағымдағы ҡулланыусының теҙмәһенән битте һүҙһеҙ өҫтәргә йәки юйырға, һылтанмаларҙы файҙаланығыҙ йәки сәғәтте алмаштырмағыҙ.",
+       "apihelp-edit-param-md5": "\n\nMD5-хэш параметрының $1 text, йәки  $1 prepend тексы  һәм $1 appendtext параметрҙары  бәйләнгән. \nҠуйылған булһа, әгәр хэш дөрөҫ булмаһа, мөхәррирләү эшләнмәйәсәк.",
+       "apihelp-edit-param-prependtext": "Был тексты биттең башына өҫтәгеҙ. $ 1text алмаштыра.",
+       "apihelp-edit-param-appendtext": "Был тексты биттең аҙағынаса өҫтәгеҙ.$1text алмаштыра.\n$1section -ды файҙаланығыҙ = яңы, яңы бүлек өҫтәү өсөн, ә был параметрға түгел.",
+       "apihelp-edit-param-undo": "Был версияны кире алырға. $1text,$1prependtext,$1appendtext алмаштыра.",
+       "apihelp-edit-param-undoafter": "$1undo- нан алып барлыҡ үҙгәртеүҙәрҙе кире алырға. Әгәр ул ҡуйылмаған булһа, бер тикшереүҙе кире алыу ҙа етә.",
+       "apihelp-edit-param-redirect": "Автоматик йүнәлтәүҙе рөхсәт итергә.",
+       "apihelp-edit-param-contentformat": "Текстҡа ҡуйыу өсөн йөкмәткенең сериализация форматы.",
+       "apihelp-edit-param-contentmodel": "Яңы йөкмәткенең контент моделе.",
+       "apihelp-edit-param-token": "Маркер һуңғы параметр сифатында ебәрелергә тейеш, йәки, һәрхәлдә $1text параметрынан һуң.",
+       "apihelp-edit-example-edit": "Битте мөхәррирләү",
+       "apihelp-edit-example-prepend": "Бит башына тылсымлы һүҙ ҡуйырға <kbd>_&#95;NOTOC_&#95;</kbd>.",
+       "apihelp-edit-example-undo": " 13579-ҙан 13585-кә тиклем төҙәтеүҙәрҙе кире алырға",
+       "apihelp-emailuser-description": "Ҡатнашыусыға хат",
+       "apihelp-emailuser-param-target": "Ҡатнашыусы электрон хат ебәрә",
+       "apihelp-emailuser-param-subject": "Теманың баш һүҙе",
+       "apihelp-emailuser-param-text": "Хат эстәлеге",
+       "apihelp-emailuser-param-ccme": "Был хәбәрҙең копияһын миңә ебәрергә",
+       "apihelp-emailuser-example-email": "Ҡатнашыусыға хат ебәрергә <kbd>WikiSysop</kbd>текст <kbd>Content</kbd>.",
+       "apihelp-expandtemplates-description": "wikitext ҡалыптарын аса.",
+       "apihelp-expandtemplates-param-title": "Бит баш һүҙе",
+       "apihelp-expandtemplates-param-text": "Конвертлау өсөн викитекст",
+       "apihelp-expandtemplates-param-revid": "<nowiki>{{REVISIONID}}</nowiki> һәм шуға оҡшаған  алмаштар өсөн ID-ны яңынан ҡарау",
+       "apihelp-expandtemplates-paramvalue-prop-wikitext": "Киңәйтелгән викитекст",
+       "apihelp-expandtemplates-paramvalue-prop-parsetree": "XML керетелә торған мәғлүмәт ағасы (шәжәрәһе).",
+       "apihelp-feedcontributions-param-feedformat": "Мәғлүмәттәр сығарыу форматы.",
+       "apihelp-feedcontributions-param-year": "Йылдан башлап (һәм элегерәк):",
+       "apihelp-feedcontributions-param-month": "Айҙан башлап (һәм элегерәк):",
+       "apihelp-feedcontributions-param-deletedonly": "Юйылған төҙәтеүҙәрҙе генә күрһәтергә.",
        "apihelp-feedcontributions-param-toponly": "Һуңғы өлгө булған төҙәтеүҙәрҙе генә күрһәтергә",
+       "apihelp-feedcontributions-param-newonly": "Яңы бит яһаған төҙәтеүҙәрҙе генә күрһәтергә",
        "apihelp-feedcontributions-param-showsizediff": "Өлгәоәр араһыдағы күләм айырмаһын күрһәтергә",
+       "apihelp-feedcontributions-example-simple": "Ҡулланыусының өлөшөн күрһәтергә <kbd>Example</kbd>.",
+       "apihelp-feedrecentchanges-param-feedformat": "Мәғлүмәттәр сығарыу форматы.",
+       "apihelp-feedrecentchanges-param-invert": "Һайланғандан башҡа исемдәр арауығы",
+       "apihelp-feedrecentchanges-param-limit": "Ҡайтарылған һөҙөмтәләрҙең максималь һаны.",
        "apihelp-feedrecentchanges-param-from": "Теге ваҡыттын булған үҙгәрештәрҙе күрһәтергә",
+       "apihelp-feedrecentchanges-param-hideminor": "Бәләкәй төҙәтеүҙәрҙе йәшерергә",
+       "apihelp-feedrecentchanges-param-hidebots": "Робот эшләгән төҙәтеүҙәрҙе йәшерергә",
+       "apihelp-feedrecentchanges-param-hideanons": "Аноним ҡатнашыусылар төҙәтеүен йәшерергә",
+       "apihelp-feedrecentchanges-param-hideliu": "Теркәлгән ҡатнашыусылар өлөшөн йәшерергә",
+       "apihelp-feedrecentchanges-param-hidepatrolled": "Патрулләнгән төҙәтеүҙәрҙе йәшерергә",
+       "apihelp-feedrecentchanges-param-hidemyself": "Ағымдаға ҡатнашыусы эшләгән үҙгәртеүҙәрҙе йәшерергә.",
+       "apihelp-feedrecentchanges-param-tagfilter": "Тэг буйынса һөҙгөс",
        "apihelp-feedrecentchanges-param-target": "Был биттән һылтанған биттәрҙә һуңғы үҙгәртеүҙәрҙе күрһәтергә",
+       "apihelp-feedrecentchanges-param-showlinkedto": "Киреһенсә, был биткә һылтанма яһаған биттәрҙәге үҙгәртеүҙәрҙе күрһәтергә",
        "apihelp-feedrecentchanges-example-simple": "Һуңғы үҙгәртеүҙәрҙе күрһәтергә.",
-       "apihelp-feedwatchlist-example-default": "Күҙәтеү каналын күрһәтергә"
+       "apihelp-feedrecentchanges-example-30days": "30 көн арауығындағы һуңғы үҙгәртеүҙәрҙе күрһәтергә.",
+       "apihelp-feedwatchlist-param-feedformat": "Мәғлүмәттәр сығарыу форматы.",
+       "apihelp-feedwatchlist-param-linktosections": "Мөмкин булһа, үҙгәртеүҙәр булған бүлеккә тура һылтанма.",
+       "apihelp-feedwatchlist-example-default": "Күҙәтеү каналын күрһәтергә",
+       "apihelp-filerevert-param-filename": "Префиксһыҙ файл исеме",
+       "apihelp-filerevert-param-comment": "Комментарий тейәргә",
+       "apihelp-filerevert-example-revert": "Кире <kbd>Wiki.png</kbd> юрауға <kbd>2011-03-05T15:27:40Z</kbd> ҡайтырға.",
+       "apihelp-help-description": "Күрһәтелгән модулдәр өсөн белешмәне тасуирлау.",
+       "apihelp-help-param-modules": " Белешмәләр тасуирлау өсөн (күрһәткестәр <var>action</var> һәм <var>format</var> дәүмәленә, йәки <kbd>main</kbd>). Модулдәрҙе a <kbd>+</kbd> ярҙамында күрһәтә алаһығыҙ.",
+       "apihelp-help-param-submodules": "Модуль исеменән субмодулдәр өсөн ярҙам индерә",
+       "apihelp-help-param-recursivesubmodules": "Рекурсив рәүешле субмодулдәр өсөн ярҙам индерә.",
+       "apihelp-help-param-helpformat": "Һөҙөмтәгә ярҙам форматы",
+       "apihelp-help-example-main": "Төп модулгә ярҙам",
+       "apihelp-help-example-submodules": "<kbd>action=query</kbd> һәм уның барлыҡ субмодулдәренә ярҙам итегеҙ",
+       "apihelp-help-example-recursive": "Бар белешмә бер бүлектә.",
+       "apihelp-help-example-help": "Модулдең үҙ ярҙамына ярҙам итеү",
+       "apihelp-help-example-query": "Подмодулдәрҙең ике һорауына ярҙам итергә.",
+       "apihelp-imagerotate-description": "Бер йәки бер нисә һүрәтте бороу.",
+       "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": "Йомғаҡты импортлау.",
+       "apihelp-import-param-xml": "Тултырылған XML-файл.",
+       "apihelp-import-param-interwikisource": "Интервики-импорт өсөн: Викинан импорт.",
+       "apihelp-import-param-interwikipage": "Интервики-импорт өсөн: битте импортлау.",
+       "apihelp-import-example-import": "Импортларға [[meta:Help:ParserFunctions]]  100 исемдәр арауығында тулы тарихы менән.",
+       "apihelp-login-param-name": "Ҡатнашыусы исеме.",
+       "apihelp-login-param-password": "Серһүҙ.",
+       "apihelp-login-param-domain": "Домен (мотлаҡ түгел).",
+       "apihelp-login-example-login": "Танылыу.",
+       "apihelp-logout-description": "Сығырға һәм сессия мәғлүмәтен юйырға.",
+       "apihelp-mergehistory-description": "Үҙгәртеүҙәр тарихын берләштереү.",
+       "apihelp-mergehistory-param-reason": "Тарихты берләштереү сәбәбе",
+       "apihelp-move-description": "Биттең исемен үҙгәртергә",
+       "apihelp-move-param-to": "Исемен үҙгәртергә тейешле биттең баш һүҙе",
+       "apihelp-move-param-reason": "Үҙгәртеү сәбәбе",
+       "apihelp-move-param-movetalk": "Фекер алышыу бите булһа, исемен үҙгәртергә.",
+       "apihelp-move-param-movesubpages": "Мөмкин булһа, ярҙамсы биттең исемен үҙгәртергә.",
+       "apihelp-move-param-noredirect": "Йүнәлтеүҙәр ҡуймаҫҡа",
+       "apihelp-move-param-watch": "Ағымдағы ҡулланыусының күҙәтеү битенә бит һәм йүнәлтеү өҫтәргә.",
+       "apihelp-move-param-unwatch": "Ағымдағы ҡулланыусының күҙәтеү битендә битте һәм йүнәлтеүҙе юйырға.",
+       "apihelp-move-param-ignorewarnings": "Бөтә иҫкәрмәләргә иғтибар итмәҫкә",
+       "apihelp-move-example-move": "Исемен үҙгәртергә <kbd>Badtitle</kbd>  <kbd>Goodtitle</kbd> йүнәлтеү ҡуймаҫҡа.",
+       "apihelp-opensearch-param-search": "Эҙләү юлы.",
+       "apihelp-opensearch-param-limit": "Ҡайтарылған һөҙөмтәләрҙең максималь һаны.",
+       "apihelp-opensearch-param-namespace": "Эҙләү өсөн исемдәр арауығы",
+       "apihelp-opensearch-param-format": "Мәғлүмәттәр сығарыу форматы.",
+       "apihelp-options-param-reset": "Килешеү буйынса көйләүҙәргә күсергә.",
+       "apihelp-options-example-reset": "Бөтә көйләүҙәрҙе ташларға",
+       "apihelp-paraminfo-description": "API модуле тураһында мәғлүмәт алырға.",
+       "apihelp-paraminfo-param-helpformat": "Белешмә юлы форматы.",
+       "apihelp-parse-example-page": "Битте тикшереү.",
+       "apihelp-parse-example-text": "Тикшереү: wikitext.",
+       "apihelp-patrol-param-rcid": "Яңы ID үҙгәртеүҙәрҙе патрулләү өсөн",
+       "apihelp-patrol-param-revid": "ID мөхәррирҙе патулләү",
+       "apihelp-protect-description": "Битте һаҡлау кимәлен үҙгәртергә",
+       "apihelp-protect-example-protect": "Битте һаҡларға.",
+       "apihelp-purge-param-forcelinkupdate": "Таблицалар бәйләнешен яңыртыу.",
+       "apihelp-query-param-list": "Ниндәй исемлекте ҡулланырға",
+       "apihelp-query-param-meta": "Ниндәй матамәғлүмәт ҡулланырға",
+       "apihelp-query+allcategories-description": "Бөтә категорияларҙы иҫәпләргә",
+       "apihelp-query+allcategories-param-limit": "Нисә категорияны кире ҡайтарырға",
+       "apihelp-query+allcategories-param-prop": "Ниндәй үҙенсәлек алырға:",
+       "apihelp-query+allmessages-param-prop": "Ниндәй үҙенсәлек алырға:"
 }
diff --git a/includes/api/i18n/eo.json b/includes/api/i18n/eo.json
new file mode 100644 (file)
index 0000000..45060c2
--- /dev/null
@@ -0,0 +1,13 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Robin van der Vliet"
+               ]
+       },
+       "apihelp-createaccount-param-name": "Uzantnomo.",
+       "apihelp-delete-description": "Forigi paĝon.",
+       "apihelp-edit-example-edit": "Redakti paĝon.",
+       "apihelp-login-param-name": "Uzantnomo.",
+       "apihelp-login-param-password": "Pasvorto.",
+       "apihelp-login-example-login": "Ensaluti."
+}
index 927509c..2825a73 100644 (file)
        "apihelp-feedcontributions-param-deletedonly": "Mostra solo i contribuiti cancellati.",
        "apihelp-feedcontributions-param-toponly": "Mostra solo i contributi che sono le ultime versioni per la pagina.",
        "apihelp-feedcontributions-param-newonly": "Visualizza solo le modifiche che sono creazioni di pagina.",
+       "apihelp-feedrecentchanges-param-feedformat": "Il formato del feed.",
+       "apihelp-feedrecentchanges-param-limit": "Numero massimo di risultati da restituire.",
        "apihelp-feedrecentchanges-param-hideminor": "Nascondi le modifiche minori.",
        "apihelp-feedrecentchanges-param-hidebots": "Nascondi le modifiche apportate da bot.",
        "apihelp-feedrecentchanges-param-hideanons": "Nascondi le modifiche fatte da utenti anonimi.",
        "apihelp-feedrecentchanges-param-showlinkedto": "Mostra solo le modifiche alle pagine collegate a quella specificata.",
        "apihelp-feedrecentchanges-example-simple": "Mostra le ultime modifiche.",
        "apihelp-feedrecentchanges-example-30days": "Mostra le modifiche degli ultimi 30 giorni.",
+       "apihelp-feedwatchlist-param-feedformat": "Il formato del feed.",
        "apihelp-feedwatchlist-param-linktosections": "Collega direttamente alla sezione modificata, se possibile.",
        "apihelp-filerevert-description": "Ripristina un file ad una versione precedente.",
        "apihelp-filerevert-param-filename": "Nome del file di destinazione, senza il prefisso 'File:'.",
        "apihelp-move-param-noredirect": "Non creare un rinvio.",
        "apihelp-move-param-watch": "Aggiunge la pagina e il redirect agli osservati speciali dell'utente attuale.",
        "apihelp-move-param-ignorewarnings": "Ignora i messaggi di avvertimento del sistema.",
+       "apihelp-opensearch-param-limit": "Numero massimo di risultati da restituire.",
        "apihelp-opensearch-param-format": "Il formato dell'output.",
        "apihelp-opensearch-example-te": "Trova le pagine che iniziano con <kbd>Te</kbd>.",
        "apihelp-options-example-reset": "Reimposta tutte le preferenze.",
        "apihelp-parse-example-texttitle": "Analizza wikitext, specificando il titolo della pagina.",
        "apihelp-parse-example-summary": "Analizza un oggetto.",
        "apihelp-patrol-param-tags": "Modifica etichette da applicare all'elemento del registro delle verifiche.",
+       "apihelp-protect-description": "Modifica il livello di protezione di una pagina.",
+       "apihelp-protect-param-title": "Titolo della pagina da (s)proteggere. Non può essere usato insieme con $1pageid.",
+       "apihelp-protect-param-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-query-param-export": "Esporta la versione attuale di tutte le pagine ottenute o generate.",
        "apihelp-query+allcategories-param-dir": "Direzione dell'ordinamento.",
+       "apihelp-query+allcategories-param-limit": "Quante categorie restituire.",
        "apihelp-query+allcategories-param-prop": "Quali proprietà ottenere:",
+       "apihelp-query+allcategories-paramvalue-prop-size": "Aggiungi il numero di pagine nella categoria.",
+       "apihelp-query+allcategories-paramvalue-prop-hidden": "Etichetta categorie che sono nascoste con <code>_&#95;HIDDENCAT_&#95;</code>.",
+       "apihelp-query+allcategories-example-size": "Elenca categorie con informazioni sul numero di pagine in ognuna.",
+       "apihelp-query+alldeletedrevisions-paraminfo-useronly": "Può essere utilizzato solo con <var>$3user</var>.",
+       "apihelp-query+alldeletedrevisions-paraminfo-nonuseronly": "Non può essere utilizzato con <var>$3user</var>.",
+       "apihelp-query+alldeletedrevisions-example-user": "Elenca gli ultimi 50 contributi cancellati dell'utente <kbd>Example</kbd>.",
+       "apihelp-query+alldeletedrevisions-example-ns-main": "Elenca le prime 50 versioni cancellate nel namespace principale.",
        "apihelp-query+allfileusages-paramvalue-prop-title": "Aggiunge il titolo del file.",
        "apihelp-query+allfileusages-param-limit": "Quanti elementi totali restituire.",
        "apihelp-query+allfileusages-param-dir": "La direzione in cui elencare.",
        "apihelp-query+allimages-param-sort": "Proprietà di ordinamento.",
        "apihelp-query+allimages-param-dir": "La direzione in cui elencare.",
+       "apihelp-query+allimages-param-limit": "Quante immagini in totale restituire.",
+       "apihelp-query+allimages-example-B": "Mostra un elenco di file a partire dalla lettera <kbd>B</kbd>.",
        "apihelp-query+alllinks-paramvalue-prop-title": "Aggiunge il titolo del collegamento.",
        "apihelp-query+alllinks-param-limit": "Quanti elementi totali restituire.",
        "apihelp-query+alllinks-param-dir": "La direzione in cui elencare.",
        "apihelp-query+alltransclusions-param-limit": "Quanti elementi totali restituire.",
        "apihelp-query+alltransclusions-param-dir": "La direzione in cui elencare.",
        "apihelp-query+allusers-param-dir": "Direzione dell'ordinamento.",
+       "apihelp-query+allusers-param-limit": "Quanti nomi utente totali restituire.",
        "apihelp-query+backlinks-description": "Trova tutte le pagine che puntano a quella specificata.",
        "apihelp-query+backlinks-param-dir": "La direzione in cui elencare.",
        "apihelp-query+backlinks-param-redirect": "Se la pagina collegata è un redirect, trova tutte le pagine che puntano al redirect. Il limite massimo è dimezzato.",
index 1497e34..0618a88 100644 (file)
@@ -14,7 +14,7 @@
                        "Priviet"
                ]
        },
-       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|설명문서]]\n* [[mw:API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api 메일링 리스트]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API 공지 사항] * [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R 버그 및 요청] </div>\n<strong>상태:</strong> 이 페이지에 표시된 모든 기능은 정상적으로 작동하지만, API는 여전히 활발하게 개발되고 있으며, 언제든지 변경될 수 있습니다. 업데이트 정보를 받아보려면 [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ the mediawiki-api-announce 메일링 리스트]를 구독하십시오.\n\n<strong>잘못된 요청:</strong> API에 잘못된 요청이 전송되면 HTTP 헤더에서 \"MediaWiki-API-Error\" 키를 보내고, 헤더 값과 오류 코드가 같게 설정됩니다. 자세한 정보에 대해서는 [[mw:API:Errors_and_warnings|API:오류와 경고]]를 참조하십시오.",
+       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|설명문서]]\n* [[mw:API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api 메일링 리스트]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API 알림 사항]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R 버그 및 요청]\n</div>\n<strong>상태:</strong> 이 페이지에 보여지는 모든 기능은 정상적으로 작동하지만, API는 여전히 활발하게 개발되고 있으며, 언제든지 변경될 수 있습니다. 업데이트 공지를 받아보려면 [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ mediawiki-api-announce 메일링 리스트]를 구독하십시오.\n\n<strong>잘못된 요청:</strong> API에 잘못된 요청이 전송되면 HTTP 헤더에서 \"MediaWiki-API-Error\" 키를 보내고, 헤더 값과 오류 코드가 같게 설정됩니다. 자세한 정보에 대해서는 [[mw:API:Errors_and_warnings|API:오류와 경고]]를 참조하십시오.\n\n<strong>테스트하기:</strong> API 요청을 테스트의 편의를 위해, [[Special:ApiSandbox]]를 보세요.",
        "apihelp-main-param-action": "수행할 동작",
        "apihelp-main-param-format": "출력값의 형식.",
        "apihelp-main-param-maxlag": "최대 랙은 미디어위키가 데이터베이스 복제된 클러스터에 설치되었을 때 사용될 수 있습니다. 특정한 행동이 사이트 복제 랙을 유발할 때, 이 변수는 클라이언트가 복제 랙이 설정된 숫자 아래로 내려갈 때까지 기다리도록 지시합니다. 과도한 랙의 경우, <samp>maxlag</samp> 오류 코드와 <samp>Waiting for $host: $lag seconds lagged</samp> 메시지가 제공됩니다.<br />[[mw:Manual:Maxlag_parameter|매뉴얼: Maxlag 변수]] 에서 더 많은 정보를 얻을 수 있습니다.",
index 28cef6b..26da426 100644 (file)
@@ -7,7 +7,7 @@
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page/de|Dokemäntazjohn]]\n* [[mw:API:FAQ/de|Öff jefrohch]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Mäileng_Leß]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Aanköndejonge zom <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i>]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Jemäldte Fähler un Wönsch]\n</div>\n<strong>Status:</strong> Alle op heh dä Sigg aanjzeischte Ußwahle sullte donn, ävver et <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i> weed jrahd noch äntwekeld un et kann sesch alle Nahslangs jädd ändere. Holl Der de [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ Mäileng_Leß med Aanköndejonge], öm automattesch övver Neujeschkeite enfommehrt ze wähde.\n\n<strong>Kapodde Aanfrohre:</strong> Wam_mer kapodde Aanfroheaan et API <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i> schek, kritt mer ene <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"HyperText Transfer Protocol\">HTTP</i>-Kopp ußjejovve met däm Täx „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">MediaWiki-API-Error</code>“ dren, dä mer als ene Schlößel bedraachte kann. Mih dohzoh fengk met op dä Sigg [[mw:API:Errors_and_warnings|<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i>: Fähler un Warnonge]].",
        "apihelp-main-param-action": "Wat för en Aufjahb.",
        "apihelp-main-param-format": "Et Fommaht för ußzejävve.",
-       "apihelp-main-param-maxlag": "Der hühste zohjelohße Verzoch kann jenumme wähde, wann MehdijaWikki obb enem Dahtebangk  replicated cluster enschtallehrt weed. Öm kein Opdräschd aan de Dahtebangk ze scheke, di dat noch schlemmer maache dähte, kam_mer övver heh dä Parramehter et Projramm affwahde lohße, bes dat  the replication lag onger däm aanjejovve Wäät lit. Wann dä Verzoch övvermähßesch jruhs es kritt mer dä Fähler <samp lang=\"en\" xml:lang=\"en\" dir=\"ltr\">maxlag</samp> jemälldt en ene Nohreesch esu wi <samp lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Mer wahde op dä ẞööver $Maschihn un di es $Verzoch Sekonde hengerher</samp>.<br />Op dä [[mw:Manual:Maxlag_parameter|Hanndbohchsigg zom \n<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Maxlag</code>-Parramehter]] kam_mer noch mih zerdoh lässe.<!-- https://translatewiki.net/wiki/Thread:Support/About_MediaWiki:Apihelp-main-param-maxlag/ksh -->",
+       "apihelp-main-param-maxlag": "Der hühste zohjelohße Verzoch kann jenumme wähde, wann MehdijaWikki obb enem Knubbel Rääschner medd ene replezehrte (dadd es, lebänndesch koppehrte) Dahtebangk enschtallehrt weed. Öm kein Opdräschd aan de Dahtebangk ze scheke, di dat noch schlemmer maache dähte, kam_mer övver heh dä Parramehter et Projramm affwahde lohße, bes dat dä Verzoch vum Replezehre onger däm aanjejovve Wäät lit. Wann dä Verzoch övvermähßesch jruhs es, kritt mer dä Fähler <samp lang=\"en\" xml:lang=\"en\" dir=\"ltr\">maxlag</samp> jemälldt med ene Nohreesch esu wi <samp lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Mer wahde op dä ẞööver $Maschihn un di es $Verzoch Sekonde hengerher</samp>.<br />Op dä [[mw:Manual:Maxlag_parameter|Hanndbohchsigg zom \n<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Maxlag</code>-Parramehter]] kam_mer noch mih zerdoh lässe.",
        "apihelp-main-param-smaxage": "Säz <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">max-age</code> en dä Kopp_Reihj <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">HTTP cache control</code> obb esu vill Sekonde. Fähler wähde nimmohls faßjehallde.",
        "apihelp-main-param-maxage": "Säz <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">max-age</code> en dä Kopp_Reihj <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">HTTP cache control</code> obb esu vill Sekonde. Fähler wähde nimmohls faßjehallde.",
        "apihelp-main-param-assert": "Ställ sescher, dat dä Metmaacher enjelogg es (doh för jiff <kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">user</kbd> en), udder ene Bot es (doh för jiff <kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">bot</kbd> en).",
index 7e9e0af..9235247 100644 (file)
@@ -5,11 +5,17 @@
                        "C.R."
                ]
        },
+       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Documentaziona]]\n* [[mw:API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Lista 'e mmasciate]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Annunziaziune 'e ll'API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Bug e richieste]\n</div>\n<strong>Stato:</strong> Tuttuquante 'e funziune 'e sta paggena avesser'a funziunà, ma ll'API è ancora a se sviluppà, picciò chesto putesse cagnà a nu certo mumento. Iscriviteve ccà ncoppa: [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ the mediawiki-api-announce 'a lista 'e mmasciate] pe' n'avé cocche notifica 'e ll'agghiurnamente.\n\n<strong>Richieste sbagliate:</strong> Si se mannasse na richiesta sbagliata a ll'API, nu cap' 'e HTTP sarrà mannata c' 'a chiave 'e mmasciata \"MediaWiki-API-Error\" e po' tuttuquante 'e valure d' 'a cap' 'e mmasciata e codece 'errore se mannassero arreto e se mpustassero a 'o stesso valore. Pe n'avé cchiù nfurmaziune vedite [[mw:API:Errors_and_warnings|API: Errure e Avvise]].\n\n<strong>Test:</strong> Pe' ve ffà cchiù semprice 'e test 'e richieste API, vedite [[Special:ApiSandbox]].",
        "apihelp-main-param-action": "Quale aziona d'avess'a fà.",
        "apihelp-main-param-format": "Qualu furmato avess'ascì d'output.",
        "apihelp-main-param-maxlag": "'O massimo lag ca se putess'ausà quanno MediaWiki s'installasse ncopp'a nu cluster replicato 'e database. Pe' puté sarvà aziune ca causassero cchiù lag 'e replicato, stu parammetro putesse fà 'o cliente aspettà nfin'a quanno 'o tiempo 'e replicaziona fosse meno ca nu valore specificato. Si nce stesse cchiù assaje tiempo 'e lag, nu codece 'errore <samp>maxlag</samp> se turnasse comm'a na mmasciata tipo <samp>Aspettanno 'o $host: nu $lag secunde 'e lag</samp>.<br />Vedite [[mw:Manual:Maxlag_parameter|Manuale: Parammetro Maxlag]] pe' n'avé cchiù nfurmaziune.",
+       "apihelp-main-param-smaxage": "Mpustate 'a cap' 'e cuntrollo 'e cache HTTP <code>s-maxage</code> a sta quantità 'e secondi. Ll'errure nun s'acchiappassero maje.",
+       "apihelp-main-param-maxage": "Mpustate 'a cap' 'e cuntrollo 'e cache HTTP <code>max-age</code> a sta quantità 'e secondi. Ll'errure nun s'acchiappassero maje.",
+       "apihelp-main-param-assert": "Cuntrullate si l'utente è trasuto si sta mpustato comm' <kbd>user</kbd>, o pure ca téne o deritto 'e bot si <kbd>bot</kbd>.",
+       "apihelp-main-param-requestid": "Qualunque valore dato ccà se mpizzasse dint'a risposta. Se putess'ausà pe' puté distinguere richieste.",
        "apihelp-main-param-servedby": "Include 'o risultato 'e nomme d' 'o host ca servette 'a richiesta.",
        "apihelp-main-param-curtimestamp": "Include dint' 'o risultato 'o timestamp 'e mò.",
+       "apihelp-main-param-origin": "Quanno se trasesse a ll'API ausanno richieste 'e cross-dominio AJAX (CORS), mpustate chesto a 'o dominio origgenale. Chesto s'avess'azzeccà dint'a qualsiasi richiesta 'e pre-volo, e picciò avess'a ffà parte d' 'a richiesta d'URI (nun fosse 'o cuorpo POST). Chesto s'avess'azzeccà  a uno 'e ll'origgene dint' 'o cap' 'e paggena <code>Origin</code> pricisamente, picciò s'avessa mpustà coccosa tipo <kbd>https://en.wikipedia.org</kbd> o <kbd>https://meta.wikimedia.org</kbd>. Si stu parammetro nun s'azzeccasse c' 'o cap' 'e paggena <code>Origin</code>, allora na risposta 403 se turnasse. Si stu parammetro s'azzeccasse c' 'o cap' 'e paggena <code>Origin</code> e ll'origgene fosse dint' 'a lista janca, allora nu cap' 'e paggena <code>Access-Control-Allow-Origin</code> fosse mpustato.",
        "apihelp-block-description": "Blocca n'utente.",
        "apihelp-block-param-user": "Nomme utente, indirizzo IP o range IP 'a bluccà.",
        "apihelp-block-param-reason": "Mutive p' 'o blocco.",
index 26fe02d..cde4cf1 100644 (file)
@@ -18,7 +18,7 @@
        "apihelp-main-description": "{{doc-apihelp-description|main}}",
        "apihelp-main-param-action": "{{doc-apihelp-param|main|action}}",
        "apihelp-main-param-format": "{{doc-apihelp-param|main|format}}",
-       "apihelp-main-param-maxlag": "{{doc-apihelp-param|main|maxlag}}\n\n\"$host\" and \"$lag\" are not variables and appear as is.",
+       "apihelp-main-param-maxlag": "{{doc-apihelp-param|main|maxlag}}\n\n\"$host\" and \"$lag\" are not variables and appear as is.\n----\n\"Database replication\" is a configuration where you have multiple databases that communicate with each other so they all contain the same data. A \"database replicated cluster\" is a cluster (meaning \"a group of computers that work together\") of databases configured in this manner.\n\n\"Lag\" refers to the situation where one or more of the databases in the cluster are not completely up to date. For example, if the \"master\" database has data up to 2016-01-21T01:23:45Z while one of the \"slave\" is only up to 2016-01-21T01:23:30Z, that's a lag of 15 seconds.\n\nIn this case, \"$lag\" and \"$host\" are syntactic variables rather than computer code variables, so <var> would not be appropriate. They are there to represent that the actual output text will be something like \"Waiting for db1045: 53 seconds lagged.\"",
        "apihelp-main-param-smaxage": "{{doc-apihelp-param|main|smaxage}}",
        "apihelp-main-param-maxage": "{{doc-apihelp-param|main|maxage}}",
        "apihelp-main-param-assert": "{{doc-apihelp-param|main|assert}}",
index a692ff2..18dc60c 100644 (file)
                        "INS Pirat",
                        "Macofe",
                        "Краснорядцева Елена",
-                       "Iniquity"
+                       "Iniquity",
+                       "Лилиә"
                ]
        },
-       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Документация]]\n* [[mw:API:FAQ|ЧаВО]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Почтовая рассылка]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Новости API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Ошибки и запросы]\n</div>\n<strong>Статус:</strong> Все отображаемые на этой странице функции должны работать, однако API находится в статусе активной разработки, и может измениться в любой момент. Подпишитесь на  [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ почтовую рассылку mediawiki-api-announce], чтобы быть в курсе обновлений.\n\n<strong>Ошибочные запросы:</strong> Если API получает запрос с ошибкой, вернётся заголовок HTTP с ключом \"MediaWiki-API-Error\", после чего значение заголовка и код ошибки будут отправлены обратно и установлены в то же значение. Более подробную информацию см. [[mw:API:Errors_and_warnings|API: Ошибки и предупреждения]].",
+       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Документация]]\n* [[mw:API:FAQ|ЧаВО]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Почтовая рассылка]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Новости API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Ошибки и запросы]\n</div>\n<strong>Статус:</strong> Все отображаемые на этой странице функции должны работать, однако API находится в статусе активной разработки и может измениться в любой момент. Подпишитесь на [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ почтовую рассылку mediawiki-api-announce], чтобы быть в курсе обновлений.\n\n<strong>Ошибочные запросы:</strong> Если API получает запрос с ошибкой, вернётся заголовок HTTP с ключом «MediaWiki-API-Error», после чего значение заголовка и код ошибки будут отправлены обратно и установлены в то же значение. Более подробную информацию см. [[mw:API:Errors_and_warnings|API: Ошибки и предупреждения]].\n\n<strong>Тестирование:</strong> для удобства тестирования API-запросов, см. [[Special:ApiSandbox]].",
        "apihelp-main-param-action": "Действие, которое следует выполнить.",
        "apihelp-main-param-format": "Формат вывода.",
        "apihelp-main-param-smaxage": "Устанавливает значение HTTP-заголовка Cache-Control <code>s-maxage</code> в заданное число секунд. Ошибки никогда не кэшируются.",
@@ -32,7 +33,9 @@
        "apihelp-block-param-anononly": "Блокировать только анонимных пользователей (т. е. запретить анонимные правки для этого IP-адреса).",
        "apihelp-block-param-nocreate": "Запретить создание учётных записей.",
        "apihelp-block-param-autoblock": "Автоматически блокировать последний использованный IP-адрес и все последующие, с которых будут совершаться попытки авторизации.",
+       "apihelp-block-param-noemail": "Ҡулланыусының Вики аша электрон почта ебәреүен тыйыу. (Талап итә <code>blockemail</code> хоҡуғын)",
        "apihelp-block-param-hidename": "Скрыть имя участника из журнала блокировок. (Требуется право <code>hideuser</code>).",
+       "apihelp-block-param-allowusertalk": "Позволяет участникам редактировать их собственные страницы обсуждения (зависит от <var>[[mw:Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]]</var>).",
        "apihelp-block-param-reblock": "Если участник уже заблокирован, перезаписать существующую блокировку.",
        "apihelp-block-param-watchuser": "Следить за страницей пользователя или IP-участника и страницей обсуждения.",
        "apihelp-checktoken-param-type": "Тип маркера проходит тестирование.",
        "apihelp-login-example-login": "Войти",
        "apihelp-logout-description": "Выйти и очистить данные сессии.",
        "apihelp-mergehistory-description": "Объединение историй правок",
+       "apihelp-mergehistory-param-reason": "Причина для объединения истории.",
        "apihelp-move-description": "Переместить страницу.",
        "apihelp-move-param-to": "Заголовок, в который следует переименовать страницу.",
        "apihelp-move-param-reason": "Причина переименования.",
        "apihelp-move-param-watch": "Добавить страницу и перенаправление в список наблюдения текущего пользователя.",
        "apihelp-move-param-unwatch": "Удалить страницу и перенаправление из списка наблюдения текущего пользователя.",
        "apihelp-move-param-ignorewarnings": "Игнорировать предупреждения",
+       "apihelp-move-example-move": "Переименовать <kbd>Badtitle</kbd> в <kbd>Goodtitle</kbd> без оставления перенаправления.",
        "apihelp-opensearch-param-search": "Строка поиска.",
        "apihelp-opensearch-param-limit": "Максимальное число возвращаемых результатов.",
        "apihelp-opensearch-param-namespace": "Пространства имён для поиска.",
        "apihelp-opensearch-param-format": "Формат вывода.",
+       "apihelp-options-param-reset": "Сбрасывает настройки на установленные по умолчанию.",
        "apihelp-options-example-reset": "Сбросить все настройки.",
        "apihelp-paraminfo-description": "Получить информацию о модулях API.",
        "apihelp-paraminfo-param-helpformat": "Формат строк справки.",
index a954d9f..361fe23 100644 (file)
@@ -279,7 +279,7 @@ class BacklinkCache {
                                $conds = [
                                        "{$prefix}_namespace" => $this->title->getNamespace(),
                                        "{$prefix}_title" => $this->title->getDBkey(),
-                                       $this->getDb()->makeList( [
+                                       $this->getDB()->makeList( [
                                                "{$prefix}_interwiki" => '',
                                                "{$prefix}_interwiki IS NULL",
                                        ], LIST_OR ),
index 8ca2362..d45805a 100644 (file)
@@ -322,7 +322,7 @@ class DatabaseMysqli extends DatabaseMysqlBase {
         * @return string
         */
        public function __toString() {
-               if ( $this->mConn instanceof Mysqli ) {
+               if ( $this->mConn instanceof mysqli ) {
                        return (string)$this->mConn->thread_id;
                } else {
                        // mConn might be false or something.
index 44e6a24..4fdacc5 100644 (file)
@@ -232,7 +232,7 @@ class DifferenceEngine extends ContextSource {
                        ->params( $this->getLanguage()->listToText( $missing ) )
                        ->numParams( count( $missing ) )
                        ->parseAsBlock();
-               $out->addHtml( $msg );
+               $out->addHTML( $msg );
        }
 
        public function showDiffPage( $diffOnly = false ) {
@@ -715,7 +715,7 @@ class DifferenceEngine extends ContextSource {
                }
                // Short-circuit
                if ( $this->mOldRev === false || ( $this->mOldRev && $this->mNewRev
-                       && $this->mOldRev->getID() == $this->mNewRev->getID() )
+                       && $this->mOldRev->getId() == $this->mNewRev->getId() )
                ) {
                        return '';
                }
@@ -846,8 +846,13 @@ class DifferenceEngine extends ContextSource {
 
                $result = $this->textDiff( $otext, $ntext );
 
-               $time = microtime( true ) - $time;
-               $this->getStats()->timing( 'diff_time', $time * 1000 );
+               $time = intval( ( microtime( true ) - $time ) * 1000 );
+               $this->getStats()->timing( 'diff_time', $time );
+               // Log requests slower than 99th percentile
+               if ( $time > 100 && $this->mOldPage && $this->mNewPage ) {
+                       wfDebugLog( 'diff',
+                               "$time ms diff: {$this->mOldid} -> {$this->mNewid} {$this->mNewPage}" );
+               }
 
                return $result;
        }
@@ -1055,12 +1060,12 @@ class DifferenceEngine extends ContextSource {
                $title = $rev->getTitle();
 
                $header = Linker::linkKnown( $title, $header, [],
-                       [ 'oldid' => $rev->getID() ] );
+                       [ 'oldid' => $rev->getId() ] );
 
                if ( $rev->userCan( Revision::DELETED_TEXT, $user ) ) {
                        $editQuery = [ 'action' => 'edit' ];
                        if ( !$rev->isCurrent() ) {
-                               $editQuery['oldid'] = $rev->getID();
+                               $editQuery['oldid'] = $rev->getId();
                        }
 
                        $key = $title->quickUserCan( 'edit', $user ) ? 'editold' : 'viewsourceold';
index a3ec66c..42168d7 100644 (file)
@@ -405,7 +405,7 @@ class XmlDumpWriter {
                        "      " . $comment . "\n" .
                        "      " . Xml::element( 'filename', null, $file->getName() ) . "\n" .
                        $archiveName .
-                       "      " . Xml::element( 'src', null, $file->getCanonicalURL() ) . "\n" .
+                       "      " . Xml::element( 'src', null, $file->getCanonicalUrl() ) . "\n" .
                        "      " . Xml::element( 'size', null, $file->getSize() ) . "\n" .
                        "      " . Xml::element( 'sha1base36', null, $file->getSha1() ) . "\n" .
                        "      " . Xml::element( 'rel', null, $file->getRel() ) . "\n" .
index 317346e..1f2cb06 100644 (file)
@@ -802,7 +802,7 @@ class SwiftFileBackend extends FileBackendStore {
        protected function doDirectoryExists( $fullCont, $dir, array $params ) {
                $prefix = ( $dir == '' ) ? null : "{$dir}/";
                $status = $this->objectListing( $fullCont, 'names', 1, null, $prefix );
-               if ( $status->isOk() ) {
+               if ( $status->isOK() ) {
                        return ( count( $status->value ) ) > 0;
                }
 
@@ -854,7 +854,7 @@ class SwiftFileBackend extends FileBackendStore {
                // Non-recursive: only list dirs right under $dir
                if ( !empty( $params['topOnly'] ) ) {
                        $status = $this->objectListing( $fullCont, 'names', $limit, $after, $prefix, '/' );
-                       if ( !$status->isOk() ) {
+                       if ( !$status->isOK() ) {
                                throw new FileBackendError( "Iterator page I/O error: {$status->getMessage()}" );
                        }
                        $objects = $status->value;
@@ -873,7 +873,7 @@ class SwiftFileBackend extends FileBackendStore {
                        $lastDir = $getParentDir( $after ); // must be first page
                        $status = $this->objectListing( $fullCont, 'names', $limit, $after, $prefix );
 
-                       if ( !$status->isOk() ) {
+                       if ( !$status->isOK() ) {
                                throw new FileBackendError( "Iterator page I/O error: {$status->getMessage()}" );
                        }
 
@@ -949,7 +949,7 @@ class SwiftFileBackend extends FileBackendStore {
                }
 
                // Reformat this list into a list of (name, stat array or null) entries
-               if ( !$status->isOk() ) {
+               if ( !$status->isOK() ) {
                        throw new FileBackendError( "Iterator page I/O error: {$status->getMessage()}" );
                }
 
index 433e395..7e00793 100644 (file)
@@ -393,10 +393,10 @@ abstract class File implements IDBAccessObject {
                                wfDebug( __METHOD__ . ': supposed to render ' . $this->getName() .
                                        ' (' . $this->getMimeType() . "), but can't!\n" );
 
-                               return $this->getURL(); # hm... return NULL?
+                               return $this->getUrl(); # hm... return NULL?
                        }
                } else {
-                       return $this->getURL();
+                       return $this->getUrl();
                }
        }
 
index 29b5891..609a8fb 100644 (file)
@@ -2771,7 +2771,7 @@ class LocalFileMoveBatch {
                $this->newName = $this->file->repo->getNameFromTitle( $this->target );
                $this->oldRel = $this->oldHash . $this->oldName;
                $this->newRel = $this->newHash . $this->newName;
-               $this->db = $file->getRepo()->getMasterDb();
+               $this->db = $file->getRepo()->getMasterDB();
        }
 
        /**
index f76b38b..31e62ec 100644 (file)
@@ -332,16 +332,13 @@ class OldLocalFile extends LocalFile {
         * @param string $timestamp
         * @param string $comment
         * @param User $user
-        * @param int $flags
         * @return FileRepoStatus
         */
-       function uploadOld( $srcPath, $archiveName, $timestamp, $comment, $user, $flags = 0 ) {
+       function uploadOld( $srcPath, $archiveName, $timestamp, $comment, $user ) {
                $this->lock();
 
                $dstRel = 'archive/' . $this->getHashPath() . $archiveName;
-               $status = $this->publishTo( $srcPath, $dstRel,
-                       $flags & File::DELETE_SOURCE ? FileRepo::DELETE_SOURCE : 0
-               );
+               $status = $this->publishTo( $srcPath, $dstRel );
 
                if ( $status->isGood() ) {
                        if ( !$this->recordOldUpload( $srcPath, $archiveName, $timestamp, $comment, $user ) ) {
index 410d15d..fcf721a 100644 (file)
@@ -86,7 +86,7 @@ class HTMLTitleTextField extends HTMLTextField {
                $this->mClass .= 'mw-searchInput';
 
                // return the HTMLTextField html
-               return parent::getInputHtml( $value );
+               return parent::getInputHTML( $value );
        }
 
        protected function getDataAttribs() {
index 92b35a8..5a7e0b9 100644 (file)
@@ -51,6 +51,6 @@ class HTMLUserTextField extends HTMLTextField {
                $this->mClass .= ' mw-autocomplete-user';
 
                // return parent html
-               return parent::getInputHtml( $value );
+               return parent::getInputHTML( $value );
        }
 }
index b6740d2..259d514 100644 (file)
@@ -604,7 +604,7 @@ class WikiImporter {
                $normalFields = [ 'sitename', 'base', 'generator', 'case' ];
 
                while ( $this->reader->read() ) {
-                       if ( $this->reader->nodeType == XmlReader::END_ELEMENT &&
+                       if ( $this->reader->nodeType == XMLReader::END_ELEMENT &&
                                        $this->reader->localName == 'siteinfo' ) {
                                break;
                        }
@@ -693,7 +693,7 @@ class WikiImporter {
                if ( !isset( $logInfo['contributor']['username'] ) ) {
                        $revision->setUsername( 'Unknown user' );
                } else {
-                       $revision->setUserName( $logInfo['contributor']['username'] );
+                       $revision->setUsername( $logInfo['contributor']['username'] );
                }
 
                return $this->logItemCallback( $revision );
@@ -886,9 +886,9 @@ class WikiImporter {
                if ( isset( $revisionInfo['contributor']['ip'] ) ) {
                        $revision->setUserIP( $revisionInfo['contributor']['ip'] );
                } elseif ( isset( $revisionInfo['contributor']['username'] ) ) {
-                       $revision->setUserName( $revisionInfo['contributor']['username'] );
+                       $revision->setUsername( $revisionInfo['contributor']['username'] );
                } else {
-                       $revision->setUserName( 'Unknown user' );
+                       $revision->setUsername( 'Unknown user' );
                }
                $revision->setNoUpdates( $this->mNoUpdates );
 
@@ -992,7 +992,7 @@ class WikiImporter {
                        $revision->setUserIP( $uploadInfo['contributor']['ip'] );
                }
                if ( isset( $uploadInfo['contributor']['username'] ) ) {
-                       $revision->setUserName( $uploadInfo['contributor']['username'] );
+                       $revision->setUsername( $uploadInfo['contributor']['username'] );
                }
                $revision->setNoUpdates( $this->mNoUpdates );
 
index d4db765..356a79f 100644 (file)
@@ -640,22 +640,24 @@ class WikiRevision {
 
                # Get the file source or download if necessary
                $source = $this->getFileSrc();
-               $flags = $this->isTempSrc() ? File::DELETE_SOURCE : 0;
-               if ( !$source ) {
+               $autoDeleteSource = $this->isTempSrc();
+               if ( !strlen( $source ) ) {
                        $source = $this->downloadSource();
-                       $flags |= File::DELETE_SOURCE;
+                       $autoDeleteSource = true;
                }
-               if ( !$source ) {
+               if ( !strlen( $source ) ) {
                        wfDebug( __METHOD__ . ": Could not fetch remote file.\n" );
                        return false;
                }
+
+               $tmpFile = new TempFSFile( $source );
+               if ( $autoDeleteSource ) {
+                       $tmpFile->autocollect();
+               }
+
                $sha1File = ltrim( sha1_file( $source ), '0' );
                $sha1 = $this->getSha1();
                if ( $sha1 && ( $sha1 !== $sha1File ) ) {
-                       if ( $flags & File::DELETE_SOURCE ) {
-                               # Broken file; delete it if it is a temporary file
-                               unlink( $source );
-                       }
                        wfDebug( __METHOD__ . ": Corrupt file $source.\n" );
                        return false;
                }
@@ -665,8 +667,9 @@ class WikiRevision {
                # Do the actual upload
                if ( $archiveName ) {
                        $status = $file->uploadOld( $source, $archiveName,
-                               $this->getTimestamp(), $this->getComment(), $user, $flags );
+                               $this->getTimestamp(), $this->getComment(), $user );
                } else {
+                       $flags = 0;
                        $status = $file->upload( $source, $this->getComment(), $this->getComment(),
                                $flags, false, $this->getTimestamp(), $user );
                }
index 7ecb71c..661c3ec 100644 (file)
@@ -199,7 +199,7 @@ class CliInstaller extends Installer {
                        }
                }
 
-               if ( !$status->isOk() ) {
+               if ( !$status->isOK() ) {
                        echo "\n";
                        exit( 1 );
                }
index 152f33a..79bd961 100644 (file)
@@ -202,7 +202,7 @@ abstract class DatabaseInstaller {
                        $this->db->commit( __METHOD__ );
                }
                // Resume normal operations
-               if ( $status->isOk() ) {
+               if ( $status->isOK() ) {
                        $this->enableLB();
                }
 
index f70401b..c6b8960 100644 (file)
@@ -634,7 +634,7 @@ class MssqlInstaller extends DatabaseInstaller {
                $status = parent::createTables();
 
                // Do last-minute stuff like fulltext indexes (since they can't be inside a transaction)
-               if ( $status->isOk() ) {
+               if ( $status->isOK() ) {
                        $searchindex = $this->db->tableName( 'searchindex' );
                        $schema = $this->db->addIdentifierQuotes( $this->getVar( 'wgDBmwschema' ) );
                        try {
index 9a39b77..d414d90 100644 (file)
@@ -182,7 +182,6 @@ class MysqlUpdater extends DatabaseUpdater {
                        [ 'dropIndex', 'iwlinks', 'iwl_prefix', 'patch-kill-iwl_prefix.sql' ],
                        [ 'addField', 'categorylinks', 'cl_collation', 'patch-categorylinks-better-collation.sql' ],
                        [ 'doClFieldsUpdate' ],
-                       [ 'doCollationUpdate' ],
                        [ 'addTable', 'module_deps', 'patch-module_deps.sql' ],
                        [ 'dropIndex', 'archive', 'ar_page_revid', 'patch-archive_kill_ar_page_revid.sql' ],
                        [ 'addIndex', 'archive', 'ar_revid', 'patch-archive_ar_revid.sql' ],
@@ -280,6 +279,10 @@ class MysqlUpdater extends DatabaseUpdater {
                        [ 'dropTable', 'msg_resource' ],
                        [ 'addTable', 'bot_passwords', 'patch-bot_passwords.sql' ],
                        [ 'addField', 'watchlist', 'wl_id', 'patch-watchlist-wl_id.sql' ],
+                       [ 'dropIndex', 'categorylinks', 'cl_collation', 'patch-kill-cl_collation_index.sql' ],
+                       [ 'addIndex', 'categorylinks', 'cl_collation_ext',
+                               'patch-add-cl_collation_ext_index.sql' ],
+                       [ 'doCollationUpdate' ],
                ];
        }
 
index 234c209..0728415 100644 (file)
@@ -615,7 +615,7 @@ class PostgresInstaller extends DatabaseInstaller {
                        $conn->commit( __METHOD__ );
                }
                // Resume normal operations
-               if ( $status->isOk() ) {
+               if ( $status->isOK() ) {
                        $this->enableLB();
                }
 
index 99ab4e5..86dccd7 100644 (file)
@@ -65,7 +65,6 @@ class SqliteUpdater extends DatabaseUpdater {
                        [ 'addField', 'interwiki', 'iw_api', 'patch-iw_api_and_wikiid.sql' ],
                        [ 'dropIndex', 'iwlinks', 'iwl_prefix', 'patch-kill-iwl_prefix.sql' ],
                        [ 'addField', 'categorylinks', 'cl_collation', 'patch-categorylinks-better-collation.sql' ],
-                       [ 'doCollationUpdate' ],
                        [ 'addTable', 'module_deps', 'patch-module_deps.sql' ],
                        [ 'dropIndex', 'archive', 'ar_page_revid', 'patch-archive_kill_ar_page_revid.sql' ],
                        [ 'addIndex', 'archive', 'ar_revid', 'patch-archive_ar_revid.sql' ],
@@ -149,6 +148,10 @@ class SqliteUpdater extends DatabaseUpdater {
                        [ 'dropTable', 'msg_resource' ],
                        [ 'addTable', 'bot_passwords', 'patch-bot_passwords.sql' ],
                        [ 'addField', 'watchlist', 'wl_id', 'patch-watchlist-wl_id.sql' ],
+                       [ 'dropIndex', 'categorylinks', 'cl_collation', 'patch-kill-cl_collation_index.sql' ],
+                       [ 'addIndex', 'categorylinks', 'cl_collation_ext',
+                               'patch-add-cl_collation_ext_index.sql' ],
+                       [ 'doCollationUpdate' ],
                ];
        }
 
index 7d09fd7..4c4e6b7 100644 (file)
@@ -1058,7 +1058,7 @@ class WebInstaller extends Installer {
                if ( !$status->isGood() ) {
                        $text = $status->getWikiText();
 
-                       if ( $status->isOk() ) {
+                       if ( $status->isOK() ) {
                                $box = $this->getWarningBox( $text );
                        } else {
                                $box = $this->getErrorBox( $text );
@@ -1149,7 +1149,7 @@ class WebInstaller extends Installer {
         */
        public function downloadLinkHook( $text, $attribs, $parser ) {
                $anchor = Html::rawElement( 'a',
-                       [ 'href' => $this->getURL( [ 'localsettings' => 1 ] ) ],
+                       [ 'href' => $this->getUrl( [ 'localsettings' => 1 ] ) ],
                        wfMessage( 'config-download-localsettings' )->parse()
                );
 
index ffab9bb..11a1833 100644 (file)
@@ -24,12 +24,12 @@ class WebInstallerComplete extends WebInstallerPage {
        public function execute() {
                // Pop up a dialog box, to make it difficult for the user to forget
                // to download the file
-               $lsUrl = $this->getVar( 'wgServer' ) . $this->parent->getURL( [ 'localsettings' => 1 ] );
+               $lsUrl = $this->getVar( 'wgServer' ) . $this->parent->getUrl( [ 'localsettings' => 1 ] );
                if ( isset( $_SERVER['HTTP_USER_AGENT'] ) &&
                        strpos( $_SERVER['HTTP_USER_AGENT'], 'MSIE' ) !== false
                ) {
                        // JS appears to be the only method that works consistently with IE7+
-                       $this->addHtml( "\n<script>jQuery( function () { location.href = " .
+                       $this->addHTML( "\n<script>jQuery( function () { location.href = " .
                                Xml::encodeJsVar( $lsUrl ) . "; } );</script>\n" );
                } else {
                        $this->parent->request->response()->header( "Refresh: 0;url=$lsUrl" );
index 9d0d680..63740e3 100644 (file)
@@ -81,9 +81,9 @@ class WebInstallerInstall extends WebInstallerPage {
                if ( $step == 'extension-tables' ) {
                        $this->endLiveBox();
                }
-               $msg = $status->isOk() ? 'config-install-step-done' : 'config-install-step-failed';
+               $msg = $status->isOK() ? 'config-install-step-done' : 'config-install-step-failed';
                $html = wfMessage( 'word-separator' )->escaped() . wfMessage( $msg )->escaped();
-               if ( !$status->isOk() ) {
+               if ( !$status->isOK() ) {
                        $html = "<span class=\"error\">$html</span>";
                }
                $this->addHTML( $html . "</li>\n" );
index 5564618..dcd30cf 100644 (file)
@@ -73,7 +73,7 @@ class WebInstallerName extends WebInstallerPage {
                                'label' => '', // @todo Needs a label?
                                'attribs' => [ 'readonly' => 'readonly', 'class' => 'enabledByOther' ]
                        ] ) .
-                       $this->getFieldSetStart( 'config-admin-box' ) .
+                       $this->getFieldsetStart( 'config-admin-box' ) .
                        $this->parent->getTextBox( [
                                'var' => '_AdminName',
                                'label' => 'config-admin-name',
@@ -100,7 +100,7 @@ class WebInstallerName extends WebInstallerPage {
                                'label' => 'config-subscribe',
                                'help' => $this->parent->getHelpBox( 'config-subscribe-help' )
                        ] ) .
-                       $this->getFieldSetEnd() .
+                       $this->getFieldsetEnd() .
                        $this->parent->getInfoBox( wfMessage( 'config-almost-done' )->text() ) .
                        // getRadioSet() builds a set of labeled radio buttons.
                        // For grep: The following messages are used as the item labels:
index 7cc5db2..0c01b64 100644 (file)
@@ -67,7 +67,7 @@ class WebInstallerOptions extends WebInstallerPage {
                        $this->parent->getHelpBox( 'config-license-help' ) .
 
                        # E-mail
-                       $this->getFieldSetStart( 'config-email-settings' ) .
+                       $this->getFieldsetStart( 'config-email-settings' ) .
                        $this->parent->getCheckBox( [
                                'var' => 'wgEnableEmail',
                                'label' => 'config-enable-email',
@@ -101,11 +101,11 @@ class WebInstallerOptions extends WebInstallerPage {
                        ] ) .
                        $this->parent->getHelpBox( 'config-email-auth-help' ) .
                        "</div>" .
-                       $this->getFieldSetEnd()
+                       $this->getFieldsetEnd()
                );
 
                $skins = $this->parent->findExtensions( 'skins' );
-               $skinHtml = $this->getFieldSetStart( 'config-skins' );
+               $skinHtml = $this->getFieldsetStart( 'config-skins' );
 
                $skinNames = array_map( 'strtolower', $skins );
                $chosenSkinName = $this->getVar( 'wgDefaultSkin', $this->parent->getDefaultSkin( $skinNames ) );
@@ -136,13 +136,13 @@ class WebInstallerOptions extends WebInstallerPage {
                }
 
                $skinHtml .= $this->parent->getHelpBox( 'config-skins-help' ) .
-                       $this->getFieldSetEnd();
+                       $this->getFieldsetEnd();
                $this->addHTML( $skinHtml );
 
                $extensions = $this->parent->findExtensions();
 
                if ( $extensions ) {
-                       $extHtml = $this->getFieldSetStart( 'config-extensions' );
+                       $extHtml = $this->getFieldsetStart( 'config-extensions' );
 
                        foreach ( $extensions as $ext ) {
                                $extHtml .= $this->parent->getCheckBox( [
@@ -152,7 +152,7 @@ class WebInstallerOptions extends WebInstallerPage {
                        }
 
                        $extHtml .= $this->parent->getHelpBox( 'config-extensions-help' ) .
-                               $this->getFieldSetEnd();
+                               $this->getFieldsetEnd();
                        $this->addHTML( $extHtml );
                }
 
@@ -167,7 +167,7 @@ class WebInstallerOptions extends WebInstallerPage {
                $uploadwrapperStyle = $this->getVar( 'wgEnableUploads' ) ? '' : 'display: none';
                $this->addHTML(
                        # Uploading
-                       $this->getFieldSetStart( 'config-upload-settings' ) .
+                       $this->getFieldsetStart( 'config-upload-settings' ) .
                        $this->parent->getCheckBox( [
                                'var' => 'wgEnableUploads',
                                'label' => 'config-upload-enable',
@@ -195,7 +195,7 @@ class WebInstallerOptions extends WebInstallerPage {
                                'label' => 'config-instantcommons',
                                'help' => $this->parent->getHelpBox( 'config-instantcommons-help' )
                        ] ) .
-                       $this->getFieldSetEnd()
+                       $this->getFieldsetEnd()
                );
 
                $caches = [ 'none' ];
@@ -219,7 +219,7 @@ class WebInstallerOptions extends WebInstallerPage {
                $hidden = ( $cacheval == 'memcached' ) ? '' : 'display: none';
                $this->addHTML(
                        # Advanced settings
-                       $this->getFieldSetStart( 'config-advanced-settings' ) .
+                       $this->getFieldsetStart( 'config-advanced-settings' ) .
                        # Object cache settings
                        // getRadioSet() builds a set of labeled radio buttons.
                        // For grep: The following messages are used as the item labels:
@@ -239,7 +239,7 @@ class WebInstallerOptions extends WebInstallerPage {
                                'help' => $this->parent->getHelpBox( 'config-memcached-help' )
                        ] ) .
                        '</div>' .
-                       $this->getFieldSetEnd()
+                       $this->getFieldsetEnd()
                );
                $this->endForm();
 
index da2a1c5..8651c15 100644 (file)
@@ -12,7 +12,7 @@
        "config-localsettings-upgrade": "Detectose un ficheru <code>LocalSettings.php</code>.\nP'anovar esta instalación, escriba'l valor de\n<code>$wgUpgradeKey</code> nel cuadru d'abaxo.\nAlcontraralu en <code>LocalSettings.php</code>.",
        "config-localsettings-cli-upgrade": "Deteutose un ficheru <code>LocalSettings.php</code>.\nP'anovar esta instalación, execute <code>update.php</code>",
        "config-localsettings-key": "Clave d'anovamientu:",
-       "config-localsettings-badkey": "La clave que dio ye incorreuta.",
+       "config-localsettings-badkey": "La clave d'anovamientu que disti ye incorreuta.",
        "config-upgrade-key-missing": "Deteutose una instalación esistente de MediaWiki.\nP'anovar esta instalación, ponga la llinia siguiente al final del ficheru <code>LocalSettings.php</code>:\n\n$1",
        "config-localsettings-incomplete": "Paez que'l ficheru <code>LocalSettings.php</code> esistente ta incompletu.\nLa variable $1 nun ta definida.\nCamude'l ficheru <code>LocalSettings.php</code> pa qu'esta variable quede definida y calque \"{{int:Config-continue}}\".",
        "config-localsettings-connection-error": "Alcontróse un error al conectar cola base de datos usando la configuración especificada en <code>LocalSettings.php</code>. Corrixa esta configuración y vuelva a intentalo.\n\n$1",
        "config-no-db": "¡Nun pudo alcontrase un controlador de base de datos afayadizu! Necesites instalar un controlador de base de datos pa PHP.\n{{PLURAL:$2|Tien sofitu el tipu de base de datos siguiente|Tienen sofitu los tipos de base de datos siguientes}}: $1.\n\nSi compilasti PHP tu mesmu, reconfigúralu con un cliente de base de datos activáu, por exemplu, usando <code>./configure --with-mysqli</code>.\nSi instalasti PHP dende un paquete de Debian o Ubuntu, necesites instalar tamién,por exemplu, el paquete <code>php5-mysql</code>.",
        "config-outdated-sqlite": "'''Avisu:''' tien SQLite $1, que ye inferior a la versión mínima necesaria $2. SQLite nun tará disponible.",
        "config-no-fts3": "'''Avisu:''' SQLite ta compiláu ensin el [//sqlite.org/fts3.html módulu FTS3]; les funciones de gueta nun tarán disponibles nesti sistema.",
-       "config-register-globals-error": "<strong>Error: la opción de PHP <code>[http://php.net/register_globals register_globals]</code> ta activada.\nTien de desactivase pa siguir cola instalación.</strong>\nVisita [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals] p'alcontrar ayuda tocante a cómo facelo.",
-       "config-magic-quotes-gpc": "<strong>Fatal: ¡[http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-gpc magic_quotes_gpc] ta activáu!</strong>\nEsta opción causa la imprevisible corrupción de la entrada de datos.\nNun puedes instalar o utilizar MediaWiki nun siendo que esta opción tea desactivada.",
-       "config-magic-quotes-runtime": "<strong>Fatal: ¡[http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] ta activáu!</strong>\nEsta opción causa la imprevisible corrupción de la entrada de datos.\nNun puedes instalar o utilizar MediaWiki nun siendo que esta opción tea desactivada.",
-       "config-magic-quotes-sybase": "<strong>Fatal: ¡[http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] ta activáu!</strong>\nEsta opción causa la imprevisible corrupción de la entrada de datos.\nNun puedes instalar o utilizar MediaWiki nun siendo que esta opción tea desactivada.",
        "config-mbstring": "<strong>Fatal: ¡[@http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] ta activáu!</strong>\nEsta opción causa errores y pué corromper los datos de mou imprevisible.\nNun puedes instalar o utilizar MediaWiki nun siendo que esta opción tea desactivada.",
-       "config-safe-mode": "<strong>Atención:</strong> el [http://www.php.net/features.safe-mode mou seguru] de PHP ta activáu.\nPuede causar problemes, especialmente si uses la carga de ficheros ya l'encontu pa <code>math</code>.",
        "config-xml-bad": "Falta'l módulu XML de PHP.\nMediaWiki rique funciones d'esti módulu y nun va funcionar con esta configuración.\nSeique precises instalar el paquete RPM llamáu php-xml.",
        "config-pcre-old": "<strong>Fatal:</strong> Ríquese PCRE $1 o posterior.\nEl binariu de PHP ta enllazáu con PCRE $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE Más información].",
        "config-apc": "[http://www.php.net/apc APC] ta instaláu",
@@ -99,6 +94,6 @@
        "config-download-localsettings": "Descargar <code>LocalSettings.php</code>",
        "config-help": "Ayuda",
        "config-nofile": "Nun pudo atopase'l ficheru \"$1\". ¿Desaniciose?",
-       "mainpagetext": "'''MediaWiki instalóse correchamente.'''",
+       "mainpagetext": "<strong>Instalóse MediaWiki.</strong>",
        "mainpagedocfooter": "Consulta la [//meta.wikimedia.org/wiki/Help:Contents Guía del usuariu] pa saber cómo usar el software wiki.\n\n== Primeros pasos ==\n\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Llista de les opciones de configuración]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ EMF de MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Llista de corréu de llanzamientos de MediaWiki]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Llocaliza MediaWiki na to llingua]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Depriende como combatir la puxarra na to wiki]"
 }
index efaf3cf..6d6b1c6 100644 (file)
@@ -5,7 +5,12 @@
                        "Seb35",
                        "Рустам Нурыев",
                        "Sagan",
-                       "Азат Хәлилов"
+                       "Азат Хәлилов",
+                       "Айсар",
+                       "Янмурза Баки",
+                       "Гульчатай",
+                       "Вильданова Гюзель",
+                       "З. ӘЙЛЕ"
                ]
        },
        "config-desc": "MediaWiki йөкләүсе",
        "config-help-restart": "Һеҙ үҙегеҙ индергән һәм  һаҡланған әлеге мәғлүмәттәрҙе юйып, урынлаштырыуҙың яңы процессын ебәрергә теләйһегеҙме?",
        "config-restart": "Эйе, яңынан башларға",
        "config-welcome": "=== Даирәне тикшереү ===",
+       "config-copyright": "=== Авторлыҡ хоҡуҡтары һәм шарттар ===\n\n$1\n\nMediaWiki - ирекле программа тьәминәте. Һеҙ уны ирекле программа тьәминәте фонды баҫып сығарған GNU General Public License лицензия талаптарына ярашлы рәүештә тарата һәм/йәки үҙгәртә алаһығыҙ;икенсе версияһына йәки ниндәйҙә булһа һуңғы версияһына ярашлы рәүештә.\nMediaWiki - файҙалы булыу өмөтө менән таратыла, ләкин <strong> бер ниндәй ҙә гарантияларһыҙ</strong>, хатта күҙ уңында тотолған гарантияларһыҙ <strong> коммерция ҡимәтенән тыш </strong> йәки </strong> ниндәй ҙә булһа маҡсатҡа яраҡһыҙ </strong>. Ҡара. тулыраҡ мәғлүмәт алыу өсөн GNU General Public License лицезияһы. \nҺеҙ <doclink href=Copying> копияһын GNU General Public License</doclink>ошо программа менән бергә алырға тейеш инегеҙ, әгәр алмаһағыҙ, Free Software Foundation, Inc. ошо адрес буйынса яҙығыҙ:51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA йәки  [http://www.gnu.org/copyleft/gpl.html уны онлайнда уҡығыҙ].",
+       "config-sidebar": "* [//www.mediawiki.org Сайт MediaWiki]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents/ru Ҡулланыусылар өсөн белешмә]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents/ru Администраторҙар өсөн белешмә]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ/ru FAQ]\n----\n* <doclink href=Readme>Readme-файл</doclink>\n* <doclink href=ReleaseNotes>Сығарылыш тураһында мәғлүмәт</doclink>\n* <doclink href=Copying>Лицензия</doclink>\n* <doclink href=UpgradeDoc>Яңыртыуҙар</doclink>",
+       "config-env-good": "Мөхитте тикшереү уңышлы тамамланды. MediaWiki урынлаштырырға мөмкин.",
+       "config-env-bad": "Мөхит тикшерелде. Һеҙ MediaWiki урынлаштыра алмайһығыҙ.",
+       "config-env-php": "PHP: $1 өлгөһө урынлаштырылды.",
+       "config-env-hhvm": "HHVM $1 урынлаштырылды.",
+       "config-unicode-using-intl": " [http://pecl.php.net/intl ҡушылмаһы файҙаланасаҡ, «intl» для PECL]  Юникод нормаль эшләһен өсөн.",
+       "config-unicode-pure-php-warning": "'''Иғтибар!''': [http://pecl.php.net/intl ҡушылмаһы intl из PECL] Юникод өсөн рөхсәт ителмәгән PHP менән бик әкрен эшләйәсәк.\nҺеҙҙең сайт бик көсөргәнешле эшләһә [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations нормализации Юникодты нормалләштереү] өсөн уҡығыҙ.",
+       "config-unicode-update-warning": "\"Иҫкәртеү\". Ҡуйылған тышлыҡ Юникодты нормаға килтереүҙең иҫке китапхана версияһын ҡуллана[http://site.icu-project.org/ проекта ICU].Әгәр Юникодты тулы мәғәнәһендә ҡулланырға теләһәгеҙ, һеҙ [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations версияны яңыртырға] тейешһегеҙ.",
+       "config-no-db": "Мәғлүмәттәр базаһына тура килгән драйверҙарҙы табып булманы!Һеҙгә  PHP өсөн мәғлүмәттәр базаһының  драйверҙарын ҡуйырға кәрәк.{{PLURAL:$2|сираттағы төр ҡулланыла|сираттағы төрҙәр ҡулланыла}}мәғлүмәттәр базалары:$1.\nӘгәр һеҙ үҙегеҙ PHP -ға компиляция яһаған булһағыҙ,  мәғлүмәттәр базаһына клиентты индереп уны яңынан, мәҫәлән, <code>./configure --with-mysqli</code> ярҙамы менән көйләгеҙ. Әгәр ҙә һеҙ PHP -ны Debian йәки Ubuntu пакеттарынан ҡуйһағыҙ, һеҙгә, мәҫәлән,  <code>php5-mysql</code> пакетын да ҡуйырға кәрәк булыр.",
+       "config-outdated-sqlite": "'''Киҫәтеү''': Һеҙҙә SQLite  $1 ҡуйылған, $2 тейешле өлгөнән түбән . SQLite асылмаясаҡ.",
+       "config-no-fts3": "'''Иғтибар''': SQLite модулһыҙ йыйлған [//sqlite.org/fts3.html FTS3] — был мәғлүмәт базаһы өсөн эҙләү мөмкин булмаясаҡ.",
+       "config-mbstring": "\"Проблема\":  PHP опцияһы тоташтырылған\n[http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload]!'''\nБыл индерелгән мәғлүмәттәрҙең хаталарына һәм көтөлмәгән боҙолоуҙарға килтерә.\nОпцияны һүндермәйенсә MediaWikiны ҡуйыу һәм ҡулланыу мөмкин түгел.",
+       "config-xml-bad": "РНР өсөн XML-модуль юҡ. \nMediaWiki  бындай конфигурацияла эшләмәйәсәк, сөнки был модулдең функционалы талап ителә.\nБәлки, Һеҙгә RPM-пакет php-xml булдырырыға кәрәк булыр.",
+       "config-pcre-old": "'''Фаталь хата:'''  PCRE версияһы йәки яңырағы талап ителә $1.\nБашҡарылыусы файл PHP менән бәйләнгән PCRE  $2версияһы.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE Ентекләберәк].",
+       "config-pcre-no-utf8": "'''Фаталь хата'''. PHP өсөн PCRE модуле  PCRE_UTF8 менән яраҡлыштырылмаған.\nMediaWiki дөрөҫ эшләһен өсөн UTF-8 талап ителә.",
+       "config-memory-raised": "Хәтер сикләнгән PHP  (<code>memory_limit</code>)  $1  $2 тиклем арттырылған.",
+       "config-memory-bad": "'''Иғтибар:''' PHP күләме <code>memory_limit</code> $1 тәшкил итә.\nБәлки, был саманан тыш аҙҙыр. \nҠуйылыштың уңышһыҙлыҡҡа осрауы бар!",
+       "config-ctype": "<strong>Фаталь хата:</strong> PHР тотороҡло эшләргә тейеш [http://www.php.net/manual/en/iconv.installation.php киңәйтеү iconv].",
+       "config-iconv": "<strong>Фаталь хата:</strong> PHР тотороҡло эшләргә тейеш [http://www.php.net/manual/en/iconv.installation.php киңәйтеү iconv].",
+       "config-json": "'''Фаталь хата:''' PHP JSON ярҙамынан тыш эшләнгән.\nҺеҙгә йә PHP JSON киңәйтеүен, йәки MediaWiki алдынан [http://pecl.php.net/package/jsonc PECL jsonc] киңәйтеүен ҡуйырға кәрәк.\n* PHP-киңәйтеүсе <code>/etc/php.ini</code> йәки  <code>/etc/php.d/json.ini</code> инергә тейеш булһа ла, Red Hat Enterprise Linux (CentOS) 5 һәм 6, составына инә.\n* 2013 йылдың майынан һуң сығарылған Linux-тың ҡайһы бер  дистрибутивтары  PECL киңәйтеүен <code>php5-json</code> или <code>php-pecl-jsonc</code> кеүек асыр урынға,  PHP киңәйтеүсеһен асмай.",
+       "config-xcache": "[http://xcache.lighttpd.net/ XCache] урынлаштырылды",
+       "config-apc": "[http://www.php.net/apc APC] урынлаштырылды",
+       "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] урынлыштырылды",
+       "config-no-cache-apcu": "'''Иғтибар:'''  [http://www.php.net/apcu APCu], [http://xcache.lighttpd.net/ XCache] табылманы йәки [http://www.iis.net/download/WinCacheForPhp WinCache].\nОбъекттарҙы кэшлау һүндереләсәк..",
+       "config-mod-security": "<strong>Иғтибар</strong>: һеҙҙең веб-серверығыҙҙа [http://modsecurity.org/ mod_security]/mod_security2 ҡабыҙылған. Уның күп кенә стандарт көйләүҙәре MediaWiki йәки бүтән ПО ҡулланыусыларға серверға ирекле контент ебәрегрә мөмкинлек буйынса проблемалар тыуҙырыуы мөмкин.\nКөтөлмәгән хаталарға тап булһағыҙ, ошонда [http://modsecurity.org/documentation/ документации mod_security]йәки үҙегеҙҙең хостинг-провайдерығыҙға мөрәжәғәт итегеҙ.",
+       "config-diff3-bad": "GNU diff3 табылманы.",
+       "config-git": "Git өлгөләрҙе контролләү системаһы табылды: <code>$1</code>.",
+       "config-git-bad": "Git өлгөләре менән идара итеү программаһы табылды?",
+       "config-imagemagick": "ImageMagick: <code>$1</code> табылды.\nФайлдарҙы тейәргә рөхсәт итһәгеҙ, рәсемдәрҙе миниатюр итеп күһәтеү мөминлеге бар.",
+       "config-gd": "Found GD graphics library built-in.\nImage thumbnailing will be enabled if you enable uploads.",
+       "config-no-scaling": "Эске китапхананы GD йәки ImageMagick табып булманы.\nМиниатюр рәсемдәр ҡарау мөмкин булмаясаҡ.",
+       "config-no-uri": "'''Хата:''' Ағымдағы URI билдәләп булмай.\nУрынлаштырыу өҙөлдө.",
+       "config-no-cli-uri": "'''Киҫәтеү''': параметр күрһәтелмәгән <code>--scriptpath</code>, килешеү байынса: <code>$1</code> .",
+       "config-using-server": "«<nowiki>$1</nowiki>» сервер исеме файҙаланыла.",
+       "config-using-uri": " \"<nowiki>$1$2</nowiki>\" сервер исеме файҙаланыла.",
+       "config-uploads-not-safe": "'''Иғтибар:''' (<code>$1</code>) күсереүҙәре өсөе ҡулланылған директория ирекле скриптар яһау өсөн бармай.  \nMediaWiki барлыҡ күсерелгән файлдарҙы тикшерһә лә, файлды күсереүҙән алда [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security#Upload_security бирешеүсәнлекте ябыу] тәҡдим ителә.",
+       "config-no-cli-uploads-check": "\"Иғтибар\" әйтмәйенсә тейәлеү өсөн каталог (<code>$1</code>) CLI  урынлаштырған мәлдә тиҙ боҙололоусанлыҡҡа, ирекле сценарийҙы үтәүгә тикшерелмәне.",
+       "config-brokenlibxml": "Системағыҙҙа  MediaWiki һәм башҡа веб-ҡушымталар мәғлүмәттәрен йәшерен щарралауы ихтимал булған  PHP һәм libxml2 версиялары бар. \nlibxml2  2.7.3  йәки юғарыраҡ версияға ([https://bugs.php.net/bug.php?id=45996 хата тураһында мәғлүмәттәр]) тиклем яңыртығыҙ.\nБәйләнеш өҙөлдө.",
+       "config-suhosin-max-value-length": "Suhosin ҡуйылған һәм  GET <code>length</code> параметрын  $1 байтҡаса кәметә.  MediaWiki-ның  ResourceLoader компоненты был сикләүҙе урап үтә, әммә был етештереүсәнлекте кәметә. Әгәр мөмкин булһа, 1024 асылындағы   <code>suhosin.get.max_value_length</code> йәки унан юғарыраҡ булған  <code>php.ini</code>, шулай уҡ  <code>$wgResourceLoaderMaxQueryLength</code> өсөн шундай уҡ  LocalSettings.php ҡуйырға була.",
+       "config-db-type": "Мәғлүмәт базаһы төрө:",
+       "config-db-host": "Мәғлүмәт базаһы хосты:",
+       "config-db-host-help": "Әгәр ҙә серверҙың база мәғлүмәттәре икенсе серверҙа урынлашһа, бында уның исемен йәки IP-адресын индерегеҙ.\nӘгәр ҙә һеҙ виртуаль хостингты ҡулланһағыҙ, һеҙҙең провайдерығыҙ  хостың дөрөҫ исемен үҙенең документацияһында күрһәтергә тейеш.\nӘгәр ҙә һеҙ системаны Windows аҫтына ҡуяһығыҙ һәм MySQL - ды ҡулланаһығыҙ икән, «localhost» исемле сервер эшләй алмаясаҡ. Был осраҡта 127.0.0.1 локаль  IP-адресығыҙҙы күрһәтергә тырышығыҙ.\nӘгәр ҙә һеҙ  PostgreSQL-ды  ҡулланаһығыҙ икән, был шаҡмаҡты сокет Unix аша инеү өсөн буш ҡалдырығыҙ.",
+       "config-db-host-oracle": "TNS мәғлүмәт базаһы:",
+       "config-db-host-oracle-help": "Ғәмәлдәге [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm Local Connect Name] индерегеҙ;  tnsnames.ora файлы был инсталляция өсөн күренергә тейеш. <br /> Клиенттарҙың 10g версияһындағы һәм юғарыраҡ китапханаһын ҡулланғанда шулай уҡ атама биреү ысулын файҙаланыу мөмкинлеге бар   [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm Easy Connect].",
+       "config-db-wiki-settings": "Был викиҙың идентификацияһы",
+       "config-db-name": "Мәғлүмәт базаһы исеме:",
+       "config-db-name-help": "Үҙегеҙҙең вики өсөн исем - идентификатор һайлағыҙ.\nИсемдә тултырылмаған урын булмаҫҡа тейеш.\nӘгәр һеҙ виртуаль хостингты ҡулланаһығыҙ икән, провайдер һеҙгә мәғлүмәттәр базаһының конкрет исемен бирер йәки идара итеү панеле ярҙамы менән мәғлүмәттәр базаһын булдырырға мөмкинлек бирер.",
+       "config-db-name-oracle": "Мәғлүмәт базаһы схемаһы",
+       "config-db-account-oracle-warn": "Oracle мәғлүмәттәр базаһы итеп ҡуйыуҙың өс юлы бар:\nӘгәр иҫәп яҙмаһын ҡуйыу процесында булдырырға теләһәгеҙ, зинһар, SYSDBA ҡуйыу өсөн иҫәп алыу ролен һәм веб-күҙәтеү мөмкинлеге булған иҫәп алыуҙың  теләгән вәкәләттәрен  күрһәтегеҙ. Шулай уҡ веб-күҙәтеү мөмкинлеге булған иҫәпте ҡулдан эшләргә һәм уны (әгәр схема объекттарын төҙөүгә кәрәкле рөхсәте бар икән) йәки ике иҫәп яҙмаһын, береһен - объекттар төҙөү хоҡуғы менән, икенсеһен веб-күҙәтеүҙе сикләүсе, күрһәтәһегеҙ. \nТейешле өҫтөнлөктәр менән иҫәп яҙмаһын булдырыу сценарийын ошо ҡоролма программаһының  «maintenance/oracle/» папкаһында табырға мөмкин. Сикләнгән иҫәп яҙмаһын файҫаланыу килешеү буйынса иҫәп яҙмаларының барлыҡ мөмкинлектәрен һүндереүгә килтереү ихтималлығын күҙ уңында тотоғоҙ.",
+       "config-db-install-account": "Көйләү өсөн иҫәп яҙмаһы",
+       "config-db-username": "Мәғлүмәт базаһын ҡулланыусы исеме",
+       "config-db-password": "Мәғлүмәт базаһының серһүҙе",
+       "config-db-install-username": "Ҡуйылыш процесында мәғлүмәттәр базаһына тоташтырыу өсөн файҙаланасаҡ ҡулланыусы исемен индерегеҙ.\nБыл исем MediaWiki ҡулланыусыныҡы түгел, был мәғлүмәттәр базаһы өсөн ҡулланыусы исеме.",
+       "config-db-install-password": "Ҡуйылыш процесында мәғлүмәттәр базаһына тоташтырыу өсөн файҙаланасаҡ ҡулланыусы исемен индерегеҙ.\nБыл исем MediaWiki ҡулланыусыныҡы түгел, ә мәғлүмәттәр базаһы өсөн ҡулланыусы исеме.",
+       "config-db-install-help": "Ҡуйылыш процесын көйләгәндә мәғлүмәттәр базаһына тоташтырыу өсөн файҙаланасаҡ  ҡулланыусы исемен һәм паролен индерегеҙ.",
+       "config-db-account-lock": "Ғәҙәти эш өсөн шул уҡ ҡулланыусы исемен һәм серһүҙен файҙаланырға",
+       "config-db-wiki-account": "Ғәҙәти эш өсөн иҫәп яҙмаһы",
+       "config-db-wiki-help": "Викиҙың ғәҙәттәге эше ваҡытында мәғлүмәт базаһына инеү өсөн файҙаланылған ҡулланыусы исемен һәм серһүҙен индерегеҙ. Әгәр бындай иҫәп яҙмаһы юҡ икән, ә ваҡытлыса яҙма етерлек өҫтөнлөктәргә эйә икән, ғәҙәттәге иҫәп яҙмаһы викиҙа эшләү өсөн кәрәкле минималь өҫтөнлөктәр менән булдырыласаҡ.",
+       "config-db-prefix": "Мәғлүмәт базаһы таблицаларының префиксы",
+       "config-db-prefix-help": "Әгәр һеҙгә бер мәғлүмәт базаһын бер нисә вики йәки MediaWiki һәм башҡа веб-ҡушымталар араһында бүлергә тура килһә, таблицалағы барлыҡ исемдәр өсөн перфикс өҫтәй алаһығыҙ. Ара ҡулланмағыҙ.\nБыл урын ғәҙәттә буш ҡала.",
+       "config-db-charset": "Мәғлүмәт базаһын кодлау",
+       "config-charset-mysql5-binary": "MySQL 4.1/5.0 бинарлы",
+       "config-charset-mysql5": "MySQL 4.1/5.0 UTF-8",
+       "config-charset-mysql4": "MySQL 4.0 һәм UTF-8 үҙ-ара бәйләнешле",
+       "config-charset-help": "'''Иғтибар.''' Әгәр  '''кире тап килгән UTF-8''' урынына MySQL 4.1+ ҡулланаһығыҙ һәм <code>mysqldump</code> ярҙамында мәғлүмәт базаһының резерв күсермәләрен  файҙаланһағыҙ, ASCII булмаған символдар барыһы ла  могут яңылыш күрһәтелеп, резерв күсермәләре ҡулланыуға яраҡһыҙ буласаҡ!\n\n'''Бинар режимда''' MediaWiki базала юникод тексын  нимә яҙылған, шул килеш һаҡлаясаҡ.\nБыл UTF-8 режимында MySQL  булыуға ҡарағанда һөҙөмтәлерәк, сөнки Юникодтың символдар тупланмаһын тулыһынса ҡулланыу мөмкинлеген бирә. \n'''UTF-8 режимында''' MySQL мәғлүмәттәрегеҙҙең ниндәй символдар тупланмаһына ҡарауын беләсәк һәм уларҙы тейешенсә үҙгәртәсәк  (Ё хәрефе Е хәрефенән һуң киләсәк, ә  бинар режимдағыса Я-нан һуң түгел), әммә [//ru.wikipedia.org/wiki/ Юникодта бирелгән символдар#.D0.91.D0.B0.D0.B7.D0.BE.D0.B2.D0.B0.D1.8F_.D0.BC.D0.BD.D0.BE.D0.B3.D0.BE.D1.8F.D0.B7.D1.8B.D0.BA.D0.BE.D0.B2.D0.B0.D1.8F_.D0.BF.D0.BB.D0.BE.D1.81.D0.BA.D0.BE.D1.81.D1.82.D1.8C BMP] сигенән сығыусы символдарҙы һаҡларға рөхсәт итмәйәсәк.",
+       "config-mysql-old": "PostgreSQL $1 йәки тағы ла һуңыраҡ булған версия кәрәк. Һеҙҙә PostgreSQL $2 ҡуйылған.",
+       "config-db-port": "Мәғлүмәт базаһы порты:",
+       "config-db-schema": "MediaWiki өсөн схема:",
+       "config-db-schema-help": "Был схема ғәҙәттә яҡшы эшләй.\nУны, үҙегеҙгә кәрәк булһа ғына, үҙгәртегеҙ",
+       "config-pg-test-error": "Мәғлүмәт базаһына инеп булманы<strong>$1</strong>: $2",
+       "config-sqlite-dir": "SQLite мәғлүмәттәре директориһы:",
+       "config-sqlite-dir-help": "SQLite бөтә мәғлүмәттәрҙе бер файлда һаҡлай. \nҠуйған ваҡытта веб-сервер һеҙ күрһәткән директорияны уҡый алырға тейеш. \n\nУға Интернет аша инеү '''мөмкин түгел''', шуға ул PHP файлдар һаҡланған файл менән тап килмәҫкә тейеш.\nҠуйыусы бал директорияны <code>.htaccess</code> файлына яҙасаҡ, әгәр ул эшләмәһә, кемдер бөтөн мәғлүмәт базаһына инә аласаҡ. Был базала шулай уҡ ҡулланыусылар тураһында мәғлүмәт тә (электрон почта адрестары, серһүҙ хештары), шулай уҡ юйылған биттәр һәм вики тураһында башҡа йәшерен мәғлүмәттәр һаҡлана. \n\nБыл базаны, мөмкин булһа, ситтәрәк, мәҫәлән, <code>/var/lib/mediawiki/yourwiki</code> һаҡлағыҙ.",
+       "config-oracle-def-ts": "Килешеү буйынса таблица арауығы:",
+       "config-oracle-temp-ts": "Таблицаларҙың ваҡытлы киңлеге:",
+       "config-type-mysql": "MySQL (йәки тура килгән)",
+       "config-type-mssql": "Microsoft SQL Server",
+       "config-support-info": "MediaWiki -ла түбәндәге СУБД бар:\n\n$1\n\nӘгәр мәғлүмәт һаҡлау системаһын исемлектә күрмәһәгеҙ, рөхсәт алыу өсөн өҫтәге һылтанмалағы инструкция буйынса эш итегеҙ.",
+       "config-dbsupport-mysql": "* [{{int:version-db-mysql-url}} MySQL] — MediaWiki-ҙың иҫ яҡшы эшләгән төп мәғлүмәттәр базаһы.  MediaWiki шулай уҡ MySQL-тап килгән [{{int:version-db-mariadb-url}} MariaDB] һәм [{{int:version-db-percona-url}} Percona Server] менән эшләй. ([http://www.php.net/manual/ru/mysql.installation.php MySQL-ярҙамында PHP туплау инструкцияһы])",
+       "config-dbsupport-postgres": "* [{{int:version-db-postgres-url}} PostgreSQL] —  СУБД-ның популяр открыткаһы, MySQL өсөн альтернатива.\nТөҙәтелмәгән хаталар булыуы мөмкин, эш схемаһында ҡулланыу тәҡдим ителмәй. ([http://www.php.net/manual/ru/pgsql.installation.php  PostgreSQL рөхсәт ителгән РНР йыйыу инструкцияһы]).",
+       "config-dbsupport-sqlite": "* [{{int:version-db-sqlite-url}} SQLite] — яҡшы һәм еңел мәғлүмәт базаһы системаһы. ([http://www.php.net/manual/ru/pdo.installation.php  собрать PHP  SQLite]  PDO менән эшләй торған инструкция)",
+       "config-dbsupport-oracle": "* [{{int:version-db-oracle-url}} Oracle] — предприятие масштабындаға коммерция базыһы. ([http://www.php.net/manual/ru/oci8.installation.php OCI8 ярҙамындағы РНР нисек йыйырға])",
+       "config-dbsupport-mssql": "* [{{int:version-db-oracle-url}} Oracle] — предприятие масштабындаға Windows өсөн коммерция базыһы. ([http://www.php.net/manual/ru/oci8.installation.php OCI8 ярҙамындағы РНР нисек йыйырға])",
+       "config-header-mysql": "MySQL көйләү",
+       "config-header-postgres": "PostgreSQL көйләү",
+       "config-header-sqlite": "SQLite көйләү",
+       "config-header-oracle": "Оракул көйләү",
+       "config-header-mssql": "Microsoft SQL Серверенең билдәле дәүмәлдәре",
+       "config-invalid-db-type": "Нигеҙ тибтарының дөрөҫ булмаған күрһәткестәре",
+       "config-missing-db-name": "Һеҙ мәғәнәне индерергә тейешһегеҙ «{{int:config-db-name}}».",
+       "config-missing-db-host": "Параметр мәғәнәһен индереү мотлаҡ «{{int:config-db-host}}».",
+       "config-missing-db-server-oracle": "Һеҙ бында мәғәнәне индерергә тейешһегеҙ «{{int:config-db-host-oracle}}».",
+       "config-invalid-db-server-oracle": "«$1» мәғлүмәттәр базаһының дөрөҫ булмаған TNS.\nЙә «TNS Name», йә «Easy Connect» ([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm  Oracle атамалары ысулы]) ҡулланығыҙ.",
+       "config-invalid-db-name": "«$1» мәғлүмәттәр базаһының дөрөҫ булмаған префиксы. Тик ASCII  символдарын: (a-z, A-Z) хәрефтәрен, (0-9) һандарын, (_) аҫтына һыҙыу билдәһен һәм (-)дефисты ҡулланығыҙ.",
+       "config-invalid-db-prefix": "«$1» мәғлүмәттәр базаһының дөрөҫ булмаған префиксы. Тик ASCII (a-z, A-Z) хәрефтәрен, (0-9) һандарын, (_) аҫтына һыҙыу билдәһен һәм (-)дефисты ҡулланығыҙ.",
+       "config-connection-error": "$1.\n\nХостығыҙҙы, ҡулланыусы исемен һәм паролде тикшерегеҙ ҙә яңынан инеп ҡарағыҙ.",
+       "config-invalid-schema": "MediaWiki «$1» өсөн схема дөрөҫ түгел.\nБары тик ASCII символдарын (a-z, A-Z), цифрҙарҙы (0-9) һәм аҫҡы һыҙыҡты (_) ғына ҡулланығыҙ.",
+       "config-db-sys-create-oracle": "Яңы иҫәп-хисап яҙмаһын булдырыу өсөн урынлаштырыу программаһы тик SYSDBA ҡулланыу хуплана",
+       "config-db-sys-user-exists-oracle": "Иҫәп яҙмаһы \"$1\". SYSDBA яңы иҫәп-хисап яҙмаһын булдырыу өсөн генә ҡулланыла",
+       "config-postgres-old": "PostgreSQL $1 йәки тағы ла һуңыраҡ булған версия кәрәк. Һеҙҙә PostgreSQL $2 ҡуйылған.",
+       "config-mssql-old": "$1 йә һуңыраҡ версиянан Microsoft SQL Server кәрәк. Һеҙҙә $2 версияһы ҡуйылған.",
+       "config-sqlite-name-help": "Үҙегеҙҙең вики өсөн исем-идентификатор һайлағыҙ.\nДефисы һәм буш урын ҡалдырмағыҙ.\nЬыл юл SQLite файлының исемендә ҡулланыласаҡ.",
+       "config-sqlite-parent-unwritable-group": "<nowiki><code>$1</code></nowiki> мәғлүмәт директорияһын эшләп булманы, веб-серверҙың төп директорияны яҙырға хоҡуғы юҡ <nowiki><code>$2</code></nowiki>.\n\nУрынлаштырыусы ҡатнашыусының веб-серверын билдәләне.\n<nowiki><code>$3</code></nowiki> яҙма мөмкин булған директория эшләгеҙ һәм дауам итегеҙ.\nUnix/Linux системаһында түбәндәгене башҡарығыҙ:\n\n<pre>cd $2\nmkdir $3\nchgrp $4 $3\nchmod g+w $3</pre>",
+       "config-sqlite-parent-unwritable-nogroup": "<nowiki><code>$1</code></nowiki> мәғлүмәт директорияһын эшләп булманы, веб-серверҙың төп директорияны яҙырға хоҡуғы юҡ <nowiki><code>$2</code></nowiki>.\n\nУрынлаштырыусы ҡатнашыусының веб-серверын билдәләй алманы.\n<nowiki><code>$3</code></nowiki> яҙма мөмкин булған директория эшләгеҙ һәм дауам итегеҙ.\nUnix/Linux системаһында түбәндәгене башҡарығыҙ:\n\n<pre>cd $2 mkdir $3 chmod a+w $3</pre>",
+       "config-sqlite-mkdir-error": "«$1» мәғлүмәттәре өсөн директорий яһауҙа хата.\nУрынлашыуын тикшерегеҙ һәм тағы ла эшләп ҡарағыҙ.",
+       "config-sqlite-dir-unwritable": " «$1» каталогына яҙыу булдырыу мөмкин түгел. Веб - сервер был каталогка яҙа алһын өсөн, инеү юлы көйләгесен  үҙгәртегеҙ һәм тағы ла бер мәртәбә ҡабатлап ҡарағыҙ.",
+       "config-sqlite-connection-error": "$1.\n\nМәғлүмәт базаһының исемен һәм мәғлүмәт директорияһын тикшерегеҙ ҙә яңынан эшләп ҡарағыҙ.",
+       "config-sqlite-readonly": "<code>$1</code> файлы яҙыу өсөн ябыҡ.",
+       "config-sqlite-cant-create-db": "<code>$1</code> мәғлүмәт базаһы файлын яһап булмай.",
+       "config-sqlite-fts3-downgrade": "PHP өсөн FTS3 булышлығы юҡ — таблицаларҙы алып ташлайбыҙ",
+       "config-can-upgrade": "Мәғлүмәттәр базаһында MediaWiki таблицалары бар.\nУларҙы MediaWiki $1 итеп яңыртыу өсөн '''«Дауам итергә»''' төймәһенә баҫығыҙ.",
+       "config-upgrade-done": "Яңыртыу тамамланды.\n\nХәҙер [$1 викины ҡуллана башларға] мөмкин.\n\nӘгәр ҙә <code>LocalSettings.php</code> файлын яңынан яһарға теләһәгеҙ, аҫтағы төймәгә баҫығыҙ. Ҡуйғанда проблемалар булмаһа, был '''тәҡдим ителмәй'''.",
+       "config-upgrade-done-no-regenerate": "Яңыртыу тамамланды.\nХәҙер [$1 вики менән эш башлай] алаһығыҙ.",
+       "config-regenerate": "LocalSettings.php яңынан төҙөргә →",
+       "config-show-table-status": "«<code>SHOW TABLE STATUS</code>» һорауы эшләнмәне!",
+       "config-unknown-collation": "'''Иғтибар:''' Мәғлүмәт базаһы сортировканың танылмаған ҡағиҙәләрен ҡуллана.",
+       "config-db-web-account": "Веб-серверҙан мәғлүмәт базаһына инеү өсөн иҫәп яҙмаһы",
+       "config-db-web-help": "Викиҙың ғәҙәттәге эшендә веб - сервер файҙалана торған  мәғлүмәттәр базаһының серверына тоташтырыу өсөн ҡулланыусының исемен һәм серһүҙен һайлағыҙ.",
+       "config-db-web-account-same": "Ҡуйыу өсөн булған иҫәп яҙмаһын ҡулланырға",
+       "config-db-web-create": "Иҫәп яҙмаһы булмаһа - яһарға",
+       "config-db-web-no-create-privs": "Ҡуйылыш өсөн күрһәтелгән иҫәп яҙмағыҙҙың уны барлыҡҡа килтереү өсөн етерлек хоҡуҡтары юҡ. \nКүрһәтелгән иҫәп яҙма бында булырға тейеш инде.",
+       "config-mysql-engine": "Мәғлүмәт базаһы шыуҙырмаһы",
+       "config-mysql-innodb": "InnoDB",
+       "config-mysql-myisam": "MyISAM",
+       "config-mysql-myisam-dep": "\"Иғтибар\" Һеҙ MySQL мәғлүмәтен һаҡлау өсөн MyISAM механизмын һайланығыҙ. Түбәндәге сәбәптәр арҡаһында уны ҡулланыу тәҡдим ителмәй:\n* параллелизмда эшләп булмай;\n* башҡа механизмдар менән сағыштырғанда мәғлүмәттәр юғала;\n* MediaWiki коды  MyISAM үҙенсәләген иҫәпкә алмай.\n\nҺеҙҙең MySQL InnoDB менән яраҡлы эшләһә ошо механизмды һайларға тәҡдим итебеҙ.\n\nҺеҙҙең MySQL InnoDB менән яраҡһыҙ эшләһә  механизмды яңыртырға тәҡдим итебеҙ.",
+       "config-mysql-only-myisam-dep": "<strong>Иҫкәртеү:</strong> MyISAM — был компьютерҙә MySQL өсөн берҙән-бер асыҡ мәғлүмәттәр һаҡлау системаһы, һәм  MediaWiki менән берлектә ҡулланырға рөхсәт ителмәй,сөнки:\n* таблицаларҙы блокировкалау һөҙөмтәһендә параллелизмды көсһөҙ тота;\n* башҡа системаларға ҡарағанда, ватылыуға күберәк дусар ителгән;\n* MediaWiki код базаһы MyISAM -ды ғәҙәттәгесә эшкәртеп бөтә алмай\nҺеҙҙең MySQL  InnoDB -ды тотмай, бәлки, яңыртыу ваҡыты еткәндер.",
+       "config-mysql-engine-help": "Параллель рәүештә яҡшыраҡ эшләгәне өсөн '''InnoDB''' өҫтөнлөрәк.\n\nБер ҡулланыусы йәки төҙәтеүҙәр әҙ булғанда вики өсөн '''MyISAM'''тың тиҙлеге  шәберәк, әммә унда мәғлүмәт базаһы InnoDB-ҡа ҡарағанда йышыраҡ сафтан сыға.",
+       "config-mysql-charset": "Мәғлүмәт базаһын кодлау",
+       "config-mysql-binary": "Икеле",
+       "config-mysql-utf8": "UTF-8",
+       "config-mysql-charset-help": "'''Ике режим'''да MediaWiki  UTF-8 тексын мәғлүмәт базаһының бинарныхҡырында һаҡлай.\nБыл MySQL-дың''UTF-8 режим''ына ҡарағанда һөҙөмтәлерәк һәм Unicode символдарының тулы тупланмаһын ҡулланыу мөмкинлеген бирә. \n\n'''UTF-8 режимы'''нда MySQL мәғлүмәттәрегеҙҙең ниндәй кодировкала ятҡанын беләсәк һәм уларҙы тейешенсә сағылдырасаҡ, үҙгәртәсәк, әммә был символдарҙы юғарыраҡ [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes База күптеллелек киңлегендә] һаәлау мөмкинлеген бирәсәк.",
+       "config-mssql-auth": "Аутентификация төрө :",
+       "config-mssql-install-auth": "Ҡуйыу процесында мәғлүмәт базаһына инеү өсөн файҙаланылған төп нөсхәне тикшереү тибын һайлағыҙ. \n\nӘгәр «{{int:config-mssql-windowsauth}}» һайлаһығыҙ, ҡулланыусының веб-сервер эшләгән иҫәп яҙмаһы файҙаланыласаҡ.",
+       "config-mssql-web-auth": "Викиҙың ғәҙәттәге эше ваҡытында мәғлүмәттәр базаһы серверына инеү өсөн веб-сервер файҙаланған  төп нөсхәне тикшереү тибын һайлағыҙ. \n\nӘгәр «{{int:config-mssql-windowsauth}}» һайлаһығыҙ, ҡулланыусының веб-сервер эшләгән иҫәп яҙмаһы файҙаланыласаҡ.",
+       "config-mssql-sqlauth": "SQL Server ысынлығын тикшереү",
+       "config-mssql-windowsauth": "Windows нөсхәһен тикшереү",
+       "config-site-name": "Вики атамаһы:",
+       "config-site-name-help": "Исеме браузерҙың баш һүҙендә  һәм башҡа урындарҙа күрәнәсәк.",
+       "config-site-name-blank": "Сайт исемен яҙығыҙ",
+       "config-project-namespace": "Проекттың исемдәр арауығы:",
+       "config-ns-generic": "Проект",
+       "config-ns-site-name": "Викилағы кеүек исем: $1",
+       "config-ns-other": "Башҡа (күрһәтегеҙ)",
+       "config-ns-other-default": "MyWiki",
+       "config-project-namespace-help": "Вмкмпедия өлгөһөнә эйәреп, күп викиҙар үҙ ҡағиҙәләре биттәрен төп йөкмәтке битенән айырым,  '''«проект атамалары киңлегендә»''' һаҡлай.\nБыл киңлектәге барлыҡ биттәр атамалары һеҙ бында һорай алған билдәле перфикстан башлана.\nҒәҙәттә, был префикс вики исеменән барлыҡҡа килә, әммә тыныш билдәләре,  «#» йәки «:» символдары була алмай.",
+       "config-ns-invalid": "Күрһәтелгән исемдәр арауығы <nowiki>$1</nowiki> ярамай.\nПроекттың икенсе исемдәр арауығын күрһәтергә.",
+       "config-ns-conflict": "Күрһәтелгән исемдәр арауығы «<nowiki>$1</nowiki>» стандарт MediaWiki исемдәр арауығы менән бәхәстә.\nПроекттың икенсе исемдәр арауығын күрһәтегеҙ.",
+       "config-admin-box": "Администраторҙың иҫәп яҙмаһы",
+       "config-admin-name": "Һеҙҙең ҡуланыусы исеме",
+       "config-admin-password": "Серһүҙ:",
+       "config-admin-password-confirm": "Серһүҙҙе ҡабатлағыҙ",
+       "config-admin-help": "Бында үҙегеҙҙең ҡулланыусы исемегеҙҙе яҙығыҙ, мәҫәлән, «Азат Азатов». \nБыл исем викиға инеү өсөн буласаҡ.",
+       "config-admin-name-blank": "Администраторҙың ҡулланыусы исемен яҙығыҙ",
+       "config-admin-name-invalid": "Ҡулланыусының күрһәтелгән  «<nowiki>$1</nowiki>» исеме рөхсәт ителмәй. Уның икенсе исемен яҙығыҙ.",
+       "config-admin-password-blank": "Администраторҙың иҫәп яҙмаһы өсөн серһүҙҙе яҙығыҙ",
+       "config-admin-password-mismatch": "Һеҙ яҙған серһүҙҙәр тап килмәй.",
+       "config-admin-email": "Электрон почта адресығыҙ:",
+       "config-admin-email-help": "Электрон почтағыҙҙың адресын яҙығыҙ: һеҙҙең башҡа ҡулланыусыларҙан хәбәрҙәр алыу, серһүҙҙе тергеҙеү, шулай уҡ күҙәтеү исемлеге биттәрендәге үҙгәрештәр хаҡында белдереүҙәр алыу мөмкинлеге буласаҡ. Был юлды буш ҡалдырыға ла ярай.",
+       "config-admin-error-user": "«<nowiki>$1</nowiki>» исеме менән администраторҙың иҫәп яҙмаһы төҙөгәндә эске хата.",
+       "config-admin-error-password": "Хакимдың иҫәп яҙмаһы өсөн серһүҙ ҡуйғанда эске хата «<nowiki>$1</nowiki>»: <pre>$2</pre>",
+       "config-admin-error-bademail": "Электрон почта адресы дөрөҫ түгел",
+       "config-subscribe": "[https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki яңы версиялары барлыҡҡа килеүен таратыу яңылыҡтарына] яҙылырға.",
+       "config-subscribe-help": "Был хәбәрҙәре аҙ булған таратыу исемлеге хәүефһеҙлек проблемалары тураһында хәбәрҙәр һәм яғы сығарылыштар өсөн анонс булараҡ файҙаланыла. \nҺеҙгә уға яҙылырға һәм яңы версиялар сыҡҡан һайын MediaWiki-ҙы яңыртып торорға кәрәк.",
+       "config-subscribe-noemail": "Һеҙ яңы сығарылыштар тураһында хәбәр ебәреү исемлегенә электрон адресығыҙҙы күрһәтмәй генә яҙылырға тырыштығыҙ.   \nӘгәр хәбәр алғығыҙ килһә, электрон адресығыҙҙы күрһәтегеҙ. \nУкажите адрес электронной почты, если вы хотите подписаться на список рассылки.",
+       "config-almost-done": "Һеҙ маҡсатҡа яҡын!\nҠалған көйләүҙәрҙе төшөрөп ҡалдырып, вики ҡуя алаһығыҙ.",
+       "config-optional-continue": "Төплөрәк көйләргә",
+       "config-optional-skip": "Етәр, вики ҡуйығыҙ",
+       "config-profile": "Ҡулланыусылар хоҡуҡтары профиле:",
+       "config-profile-wiki": "Асыҡ вики",
+       "config-profile-no-anon": "Иҫәп яҙмаһы булдырырға",
+       "config-profile-fishbowl": "Бары тик авторлашҡан мәхәррирҙәр өсөн",
+       "config-profile-private": "Ябыҡ вики",
+       "config-profile-help": "Ләкин,  MediaWiki  шыуҙырмаһын икенсе ысул менән файҙаланырға мөмкин, һәм асыҡ вики-эштең өҫтөн икәненә барыһын да ышандырып бөтөп булмай.\nҺеҙҙең һайлап алырға мөмкинселек бар.\nСайтта теркәлеү үтмәйенсә лә, модель '''«{{int:config-profile-wiki}}»''' һәр кемгә биттәрҙә үҙгәртеү эшләргә мөмкинселек бирә. Конфигурация '''{{int:config-profile-no-anon}}''' өҫтәлмә хисап тәьмин итә,  ләкин осраҡлы ҡатнашыусыларҙы ябыуы ихтимал.\nСценарий '''«{{int:config-profile-fishbowl}}»''' аныҡланған ҡатнашыусыларға мөхәррирләүҙе рөхсәт итә, ләкин һәр кем алырлыҡ битте ҡарау ҡала, шул иҫәптән үҙгәртеҙәр тарихын ҡарау. '''«{{int:config-profile-private}}»''' режимында биттәрҙе ҡарарға айырым ҡулланыусыларға ғына рөхсәт ителә, ҡайһы бер өлөштәренең мөхәррирләү хоҡуҡтары булыуы мөмкин. \n[//www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights Ярашлы ҡулланма] урынлаштырғас,  хоҡуҡтарҙы сикләүсе ҡатмарлыраҡ схемаларҙы көйләргә була.",
+       "config-license": "Автор хоҡуҡтары һәм лицензиялар:",
+       "config-license-none": "Лицензияны аҫта яҙмағыҙ",
+       "config-license-cc-by-sa": "Creative Commons Attribution Share Alike",
+       "config-license-cc-by": "Ижади лицензия, атрибутикалар",
+       "config-license-cc-by-nc-sa": "Creative Commons Attribution Non-Commercial Share Alike",
+       "config-license-cc-0": "Creative Commons Zero (йәмәғәт милке)",
+       "config-license-gfdl": "GNU Free Documentation License 1.3 йәки яңырағы",
+       "config-license-pd": "Йәмәғәт милке",
+       "config-license-cc-choose": "Creative Commons бер лицензияны һайлағыҙ",
+       "config-license-help": "Күпселек дөйөм ҡулланыуҙағы викиҙар үҙ материалдарын [http://freedomdefined.org/Definition/Ru ирекле лицензия] шарттарында файҙаланыуға рөхсәт бирә.\nБыл берҙәмлек тойғоһон булдыррыға ярҙам итә, ҡатнашыу ваҡытын оҙайтыуға дәртләндерә. Әммә шәхси йәки корпоратив викиҙар өсөн бындай ихтыяж юҡ. \n\nӘгәр һеҙ Википедия текстарын файҙаланырға йәки Википедияға үҙ викиғыҙҙан текстар күсереү мөмкинлеге булыуын теләһәгеҙ, \n<strong>{{int:config-license-cc-by-sa}}</strong> һайлағыҙ.\nВикипедия элек  GNU Free Documentation License лицензияһын файҙалана ине.\nGFDL файҙаланыла ала, әммә ул аңлау өсөн ҡатмарлы һәм материалдарҙы ҡабатлап ҡулланыуҙы ауырлаштыра.",
+       "config-email-settings": "Электрон почта көйләүҙәре",
+       "config-enable-email": "e-mail сығыусы почтаны рәхсәт итергә",
+       "config-enable-email-help": "Электрон почта эшләһен өсөн [http://www.php.net/manual/ru/mail.configuration.php PHP көйләүҙәрен] башҡарырға кәрәк.\nӘгәр электорон поста мөмкинлектәре кәрәкмәһә, һүндерергә була.",
+       "config-email-user": "Ҡатнашыусынан ҡатнашыусыға почтаны рөхсәт итергә",
+       "config-email-user-help": "Әгәр профилдә тейешле көйләү булһа, бөтә ҡатнашыусыларға электрон хат ебәрергә рөхсәт итергә.",
+       "config-email-usertalk": "Ҡулланыусыларҙы уларҙың фекерләшеү битендәге хәбәрҙәр хаҡында белдереүҙәрҙе файҙаланыу",
+       "config-email-usertalk-help": "Ҡулланыусылар үҙ көйләүҙәрендә рөхсәт бирһә, уларға фекерләү биттәрендәге үҙгәрештәр хаҡында белдереүҙәр алырға рөхсәт итеү.",
+       "config-email-watchlist": "Күҙәтеү исемлеген үҙгәртеү хаҡында электрон почтаға белдереү ебәрергә",
+       "config-email-watchlist-help": "Ҡулланыусылар үҙ көйләүҙәрендә рөхсәт бирһә, уларға фекерләү биттәрендәге үҙгәрештәр хаҡында белдереүҙәр алырға рөхсәт итеү.",
+       "config-email-auth": "Электрон почта аша аутентификация (ҡулланыусы тәҡдим иткән идентификаторҙы тикшереү) үткәреү",
+       "config-email-auth-help": "Был опция ҡабыҙырған булһа, ҡатнашыусылар үҙ адресын раҫлап e-mail адресындағы һылтанма буйынса күсергә тейеш. Электорон йәшникте алыштырған осраҡта раҫлау талап ителә.Тик почта йәшниге раҫланған ҡатнашыусылар ғына хат ала.\nБыл опцияны почтаны урынһыҙ ҡулланыуҙарҙы булдырмаҫ өсөн ҡулланырға \"тәҡдим\" ителә.",
+       "config-email-sender": "Электрон почта адресығыҙ",
+       "config-email-sender-help": "Баһалама алыу өсөн электрон почта адресын яҙығыҙ. Унда кире ҡағылған баһаламалар ебәреләсәк.Почта серверы домен исемен дөрөҫ яҙыуҙы талап ите.",
+       "config-upload-settings": "Рәсем-һүрәттәрҙе һәм файлдарҙы тултырыу",
+       "config-upload-enable": "Файл тултырырға рөхсәт биреү",
+       "config-upload-help": "Файлды тейәргә рөхсәт итеү серверҙың хәүефһеҙлегенә янай. Өҫтәмә мәғлүмәт алыу өсөн Ҡулланманың [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security хәүефһеҙлек бүлеген] уҡығыҙ.",
+       "config-upload-deleted": "Юйылған файлдарға директория",
+       "config-upload-deleted-help": "Юйылған файлдар архивы һаҡланасаҡ  каталогты һайлағыҙ.\nИң шәп осраҡта, интернет селтәренән был каталогҡа инеү рөхсәте булырға тейеш түгел.",
+       "config-logo": "Логотип URL-ы :",
+       "config-logo-help": "MediaWiki стантарт биҙәү темаһының ситтәге панелендә 135x160 пикселдән торған логотип урынлаштырыла. Шул ҙурлыҡтағы рәсемде тейәгеҙ, һәм  URL адресын яҙығыҙ.\nЛогитип сағыштырмаса ошо юлдарҙа ятһа, <code>$wgStylePath</code> йәки <code>$wgScriptPath</code> кодын файҙалана алаһығыҙ.\nӘгәр логотип кәрәк булмаһа, был урында буш ҡалдырығыҙ.",
+       "config-instantcommons": "Instant Commons-ты тоҡандырырға",
+       "config-instantcommons-help": "[//www.mediawiki.org/wiki/InstantCommons Instant Commons] — Викимилектәге рәсем, тауыш һәм башҡа медиафайлдарҙы файҙаланыу функцияһы  ([//commons.wikimedia.org/ Wikimedia Commons]).\n MediaWiki функцияһы менән эшләү өсөн интернетҡа инеү мөмкинлеге кәрәк.\n\nInstant Commons тураһында өҫтәмә мәғлүмәтте, һәм башҡа көйләүҙәрҙе [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos Ҡулланмала] табырға була.",
+       "config-cc-error": "Creative Commons лицензияһын һайлау механизмы нәтижә бирмәне.\nЛицензия исемен ҡулдан яҙығыҙ.",
+       "config-cc-again": "Ҡабаттан һайлағыҙ",
+       "config-cc-not-chosen": "Creative Commons лицензияһының ҡулланырға теләгәнен һайлағыҙ һәм \"proceed\" төймәһенә баҫыҡыҙ.",
+       "config-advanced-settings": "Өҫтәлмә көйләүҙәр",
+       "config-cache-options": "Объекттарҙы кэшлау параматры",
+       "config-cache-help": "Объекттарҙы кэшлау MediaWiki-ның тиҙлеген арттырыу өсөн ҡулланыла. Ҙур һәм уртаса сайттар өсөн кэшлау ҡәтғи тәҡдим ителә, белекәй сайттар өсөн өҫтөнлөк бирелә.",
+       "config-cache-none": "Кэш ҡулланмайынса (фуккция юғалмай, әммә эре вики-сайттар әкренерәк эшләйәсәк)",
+       "config-cache-accel": "Объекттарҙы PHP кэшлау  (APC, XCache йәки WinCache)",
+       "config-cache-memcached": "Memcached ҡулланырға (өҫтәлмә көйләү талап итә)",
+       "config-memcached-servers": "Memcached серверҙары:",
+       "config-memcached-help": "Memcached ҡулланған IP-адрестар исемлеге.\nҺәр юлға бер генә адрес яҙып һанап сығығыҙ. \nМәҫәлән:\n\n 127.0.0.1:11211\n 192.168.1.25:1234",
+       "config-memcache-needservers": "Һеҙ Memcached кэшлауҙы һайланыҡыҙ, әммә сервер адресын яҙманығыҙ.",
+       "config-memcache-badip": "Һеҙ Memcached өсөн хата IP-адрес яҙҙығыҙ: $1.",
+       "config-memcache-noport": "Memcached: $1 өсөн порт күрһәтелмәгән.\nНиндәй порт икәнән белмәһәгеҙ, килешеү буйынса 11211.",
+       "config-memcache-badport": "Memcached порттары $1 һәм $2 араһында ярырға тейеш.",
+       "config-extensions": "Киңәйтеүҙәр",
+       "config-extensions-help": "Расширения MediaWiki, перечисленные выше, были найдены в каталоге <code>./extensions</code>.\n\nОни могут потребовать дополнительные настройки, но их можно включить прямо сейчас",
+       "config-skins": "Биҙәлеш темалары",
+       "config-skins-help": "Өҫтә һаналған биҙәү темалары һеҙҙең <code>./skins</code> каталогында табылды. Һеҙгә уларҙың берәүһен булһа ла эшләтергә һәм өндәшмәү буйынса ҡулланыласағын һайларға кәрәк.",
+       "config-skins-use-as-default": "Махсус әйтмәгәндә был биҙәлеү темаһын ҡулланырға",
+       "config-skins-missing": "Биҙәү темалары табылманы. Һеҙ яраҡлыһын ҡуйғансы, MediaWiki резерв теманы ҡулланасаҡ.",
+       "config-skins-must-enable-some": "Һеҙ иң кәмендә бер биҙәлеү темаһын эш өҫтөндә ҡалдырырға тейеш",
+       "config-skins-must-enable-default": "\n\nҺүҙһеҙ һайланған биҙәлеш темаһы теркәлергә тейеш.",
+       "config-install-alreadydone": "'''Иҫкәртеү:''' Һеҙ MediaWiki ҡуйҙығыҙ шикелле, әле быны икенсегә эшләйһегеҙ. Алдағы биткә күсегеҙ.",
+       "config-install-begin": "«{{int:config-continue}}» - бында баҫыу MediaWiki ҡуйыуҙы башлай.\nӘгәр һеҙ үҙгәреш индерергә теләһәгеҙ, баҫығыҙ: «{{int:config-back}}».",
+       "config-install-step-done": "Юҡ",
+       "config-install-step-failed": "килеп сыҡманы",
+       "config-install-extensions": "Шул иҫәптән киңәйтеүҙәр",
+       "config-install-database": "Мәғлүмәттәр базаһын  көйләү",
+       "config-install-schema": "Схемаға һалыу",
+       "config-install-pg-schema-not-exist": "PostgreSQL схемалары юҡ",
+       "config-install-pg-schema-failed": "Таблица эшләп булманы. Ҡулланыусы «$1» «$2»-се схема яҙа алыуына ышанырға.",
+       "config-install-pg-commit": "Үҙгәртеүҙәр индереү",
+       "config-install-pg-plpgsql": " PL/pgSQL телен тикшереү",
+       "config-pg-no-plpgsql": "Һеҙгә $1 мәғлүмәт базаһы өсөн PL/pgSQL тел яҡлауын ҡуйырға кәрәк",
+       "config-pg-no-create-privs": "Ҡуйыу өсөн күрһәтелгән иҫәп яҙмаһының иҫәп яҙмаһы булдырыу өсөн етерлек өҫтөнлөгө юҡ.",
+       "config-pg-not-in-role": "Веб-ҡулланыусының күрһәтелгән иҫәп яҙмаһы инде бар. Һеҙ ҡуйыу өсөн һайлаған иҫәп яҙмаһы супер ҡулланыусы яҙмаһы түгел һәм веб-ҡулланыусы роленә инмәй; шуға ла веб-ҡулланыусыныҡы булған объекттар төҙөп булмай\n\nMediaWiki хәҙерге ваҡытта таблицалар хужаһы веб-ҡулланыусы булыуын талап итә. Зинһар, веб-ҡулланыусы иҫәп яҙмаһы өсөн башҡа исем күрһәтегеҙ йәки, «артҡа» төймәһенә баҫып, ҡуйыу өсөн етерлек хоҡуҡтары булған ҡулланыусыны күрһәтегеҙ.",
+       "config-install-user": "Ҡулланыусының база дәүмәлдәрен теркәү",
+       "config-install-user-alreadyexists": "Ҡатнашыусы $1 бар инде",
+       "config-install-user-create-failed": "Ҡатнашыусы «$1» эшләү килеп сыҡманы: $2",
+       "config-install-user-grant-failed": "Ҡатнашыусы «$1»-гә хоҡуҡ биреү хата: $2",
+       "config-install-user-missing": "Күрһәтелгән ҡатнашыусы «$1» юҡ.",
+       "config-install-user-missing-create": "Күрһәтелгән ҡатнашыусы «$1» юҡ.\nӘгәр ҙә яһарға теләгәгеҙ булһа,зинһар, аҫта «Иҫәп яҙыуы булдырырға» билдәһе ҡуйығыҙ.",
+       "config-install-tables": "Таблица төҙөү",
+       "config-install-tables-exist": "'''Иҫкәртеү''': MediaWiki таблицаларының булыуы ихтимал. Икенсегә яһауҙы булдырмау.",
+       "config-install-tables-failed": "'''Хата''': Хата булыу сәбәпле таблица эшләнмәне: $1",
+       "config-install-interwiki": "Килешеү буйынса интервики таблицаларын тултырыу",
+       "config-install-interwiki-list": "Файл табылманы <code>interwiki.list</code>.",
+       "config-install-interwiki-exists": "'''Киҫәтеү''': интервики-таблицала яҙма бар.\nСтандарт исемлек төҙөү төшөп ҡалды.",
+       "config-install-stats": "Инициализация статистикаһы",
+       "config-install-keys": "Серле асҡыстар төҙөү",
+       "config-insecure-keys": "'''Киҫәтеү''' {{PLURAL:$2|1=Ҡатнашыусы булдырған хәүефһеҙлек асҡысы  $1 ышаныслы түгел}}. Асҡысты үҙгәртеү мөмкинлеген {{PLURAL:$2|1=}} ҡарағыҙ.",
+       "config-install-updates": "Кәрәкмәген яңыртыуҙар туҡтатылды",
+       "config-install-updates-failed": "<strong>Хата:</strong> Яңыртыуға асҡыс ҡуйыу түбәндәге хата менән тамамланды: $1",
+       "config-install-sysop": "Администратор иҫәп яҙмаһын булдырыу",
+       "config-install-subscribe-fail": "mediawiki-announce яҙылып булманы: $1",
+       "config-install-subscribe-notpossible": "cURL урынлаштырылмаған һәм опция асылмай<code>allow_url_fopen</code>.",
+       "config-install-mainpage": "Килешеү буйынса эстәлекле баш битте эшләү",
+       "config-install-extension-tables": "Ҡушымталар өсөн таблица эшләү",
+       "config-install-mainpage-failed": "Баш битте ҡуйып булмай:$1",
+       "config-install-done": "<strong>Ҡотлайбыҙ!</strong>\nMediaWiki уңышлы урынлаштырылды.\n\nФайл булдырылды <code>LocalSettings.php</code>.\nБыл файлда һеҙҙеү бөтә көәләүҙәр бар.\n\n\nАвтоматик тейәү башланмаһа йәки үҙегеҙ өҙһәгеҙ түбәндәге һылтанма буйынса тейәргә була:\n\n$3\n\n<strong>Иҫкәртмә</strong>: Файлда тейәмәйенсә сыҡһағыҙ киләсәктә бына эшләй алмайһығыҙ.\n\n\nӨҫтә яҙылғандарҙы эшләгәс<strong>[$2 беҙҙеү викиҙа инегеҙ]</strong>.",
+       "config-download-localsettings": "<code>LocalSettings.php</code> тейәргә",
        "config-help": "белешмә",
+       "config-help-tooltip": "асыр өсөн сиртегеҙ",
+       "config-nofile": "\"$1\" файлын табып булмай, ул юйылған.",
+       "config-extension-link": "Беҙҙең вики-проектта [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions ҡушымта] барлығын беләһегеҙме??\n\n[//www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category категориялар буйынса ҡушымта] йәки [//www.mediawiki.org/wiki/Extension_Matrix матрица ҡсн ҡушымтаның] тулы исемлеген ҡарай алаһығыҙ.",
        "mainpagetext": "«MediaWiki» уңышлы рәүештә ҡоролдо.",
        "mainpagedocfooter": "Был вики менән эшләү тураһында мәғлүмәтте [//meta.wikimedia.org/wiki/Help:Contents ошонда] табып була.\n\n== Файҙалы сығанаҡтар ==\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Көйләүҙәр исемлеге (инг.)];\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki тураһында йыш бирелгән һорауҙар һәм яуаптар (инг.)];\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki-ның яңы версиялары тураһында хәбәрҙәр алып тороу].\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]"
 }
index 757e2e2..daaf663 100644 (file)
@@ -46,7 +46,7 @@
        "config-mssql-auth": "Аутентификацин тайп:",
        "config-site-name": "Викин цӀе:",
        "config-site-name-blank": "Язъе сайтан цӀе.",
-       "config-project-namespace": "ЦÓ\80еÑ\80ийн Ð°Ð½Ð° Ð¿Ñ\80оекÑ\82ан:",
+       "config-project-namespace": "Ð\9fÑ\80оекÑ\82ан Ñ\86Ó\80еÑ\80ийн Ð¼ÐµÑ\82Ñ\82иг:",
        "config-ns-generic": "Проект",
        "config-ns-other-default": "MyWiki",
        "config-admin-password": "Пароль:",
index 0653a72..d70571d 100644 (file)
@@ -6,7 +6,8 @@
                        "KuboF",
                        "Fitoschido",
                        "Ochilov",
-                       "Tlustulimu"
+                       "Tlustulimu",
+                       "Robin van der Vliet"
                ]
        },
        "config-desc": "Instalilo de MediaWiki",
        "config-db-name": "Nomo de datumbazo:",
        "config-charset-mysql5": "MySQL 4.1/5.0 UTF-8",
        "config-type-mysql": "MySQL (aŭ kongrua)",
+       "config-header-mysql": "MySQL-agordoj",
+       "config-header-postgres": "PostgreSQL-agordoj",
+       "config-header-sqlite": "SQLite-agordoj",
+       "config-header-oracle": "Oracle-agordoj",
+       "config-header-mssql": "Microsoft SQL Server-agordoj",
+       "config-mysql-binary": "Duuma",
        "config-mysql-utf8": "UTF-8",
        "config-site-name": "Nomo de vikio:",
        "config-ns-generic": "Projekto",
index 5b36510..3090edc 100644 (file)
@@ -26,7 +26,8 @@
                        "Macofe",
                        "AVIADOR",
                        "FuzzyDice",
-                       "Legoktm"
+                       "Legoktm",
+                       "Matiia"
                ]
        },
        "config-desc": "El instalador de MediaWiki",
        "config-install-mainpage": "Creando página principal con contenido predeterminado",
        "config-install-extension-tables": "Creando las tablas para las extensiones habilitadas",
        "config-install-mainpage-failed": "No se pudo insertar la página principal: $1",
-       "config-install-done": "<strong>¡Felicidades!</strong>\nHas instalado MediaWiki correctamente.\n\nEl instalador ha generado un  archivo <code>LocalSettings.php</code>.\nEste contiene toda su configuración.\n\nDeberás descargarlo y ponerlo en la base de la instalación de wiki (el mismo directorio que index.php). La descarga debería haber comenzado automáticamente.\n\nSi no comenzó la descarga, o si se ha cancelado, puedes reiniciar la descarga haciendo clic en el siguiente enlace:\n\n$3\n\n<strong>Nota</strong>: Si no haces esto ahora, este archivo de configuración generado no estará disponible más tarde si sales de la instalación sin descargarlo.\n\nCuando lo hayas hecho, podrás <strong>[$2  entrar en tu wiki]</strong>.",
+       "config-install-done": "<strong>¡Felicidades!</strong>\nHas instalado MediaWiki.\n\nEl instalador ha generado un archivo <code>LocalSettings.php</code>.\nEste contiene toda su configuración.\n\nDeberás descargarlo y ponerlo en la base de la instalación de wiki (el mismo directorio que index.php). La descarga debería haber comenzado automáticamente.\n\nSi no comenzó la descarga, o si se ha cancelado, puedes reiniciar la descarga haciendo clic en el siguiente enlace:\n\n$3\n\n<strong>Nota</strong>: si no haces esto ahora, este archivo de configuración generado no estará disponible más tarde si sales de la instalación sin descargarlo.\n\nCuando lo hayas hecho, podrás <strong>[$2  entrar en tu wiki]</strong>.",
        "config-download-localsettings": "Descargar <code>LocalSettings.php</code>",
        "config-help": "ayuda",
        "config-help-tooltip": "haz clic para ampliar",
        "config-nofile": "El archivo \"$1\" no se pudo encontrar. ¿Se ha eliminado?",
        "config-extension-link": "¿Sabías que tu wiki admite [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions extensiones]?\n\nPuedes navegar por las [//www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category categorías] o visitar el [//www.mediawiki.org/wiki/Extension_Matrix centro de extensiones] para ver una lista completa.",
-       "mainpagetext": "<strong>MediaWiki se ha instalado con éxito.</strong>",
+       "mainpagetext": "<strong>MediaWiki se ha instalado.</strong>",
        "mainpagedocfooter": "Consulta la [//meta.wikimedia.org/wiki/Help:Contents/es guía del usuario] para obtener información sobre el uso del software wiki.\n\n== Primeros pasos ==\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista de ajustes de configuración]\n* [//www.mediawiki.org/wiki/Manual:FAQ/es Preguntas frecuentes sobre MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de correo de anuncios de publicación de MediaWiki]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Traducir MediaWiki en tu idioma]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Aprende cómo combatir el spam en tu wiki]"
 }
index d7b279f..aa2f31e 100644 (file)
@@ -25,7 +25,8 @@
                        "Linedwell",
                        "Orlodrim",
                        "Cl3m3n7",
-                       "C13m3n7"
+                       "C13m3n7",
+                       "The RedBurn"
                ]
        },
        "config-desc": "Le programme d’installation de MediaWiki",
        "config-skins-must-enable-default": "L’habillage choisi par défaut doit être activé.",
        "config-install-alreadydone": "'''Attention''': Vous semblez avoir déjà installé MediaWiki et tentez de l'installer à nouveau.\nS'il vous plaît, allez à la page suivante.",
        "config-install-begin": "En appuyant sur {{int:config-continue}}, vous commencerez l'installation de MediaWiki.\nSi vous voulez encore apporter des modifications, appuyez sur \"{{int:config-back}}\".",
-       "config-install-step-done": "fait",
+       "config-install-step-done": "terminé",
        "config-install-step-failed": "échec",
        "config-install-extensions": "Inclusion des extensions",
        "config-install-database": "Création de la base de données",
diff --git a/includes/installer/i18n/inh.json b/includes/installer/i18n/inh.json
new file mode 100644 (file)
index 0000000..abc7fbf
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Умар"
+               ]
+       },
+       "config-help": "гӀо"
+}
index b3fc4ed..dd576ca 100644 (file)
        "config-help-tooltip": "クリックで展開",
        "config-nofile": "ファイル「$1」が見つかりませんでした。削除された可能性があります。",
        "config-extension-link": "あなたのウィキは[//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions 拡張機能]をサポートしていることをご存知ですか?\n\n[//www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category カテゴリ別で拡張機能を見る]か[//www.mediawiki.org/wiki/Extension_Matrix 拡張機能のマトリックス]で拡張機能すべてのリストをご覧になれます。",
-       "mainpagetext": "<strong>MediaWiki ã\81®ã\82¤ã\83³ã\82¹ã\83\88ã\83¼ã\83«ã\81«æ\88\90å\8a\9fã\81\97ã\81¾ã\81\97ã\81\9f。</strong>",
+       "mainpagetext": "<strong>MediaWiki ã\81¯ã\82¤ã\83³ã\82¹ã\83\88ã\83¼ã\83«æ¸\88ã\81¿ã\81§ã\81\99。</strong>",
        "mainpagedocfooter": "ウィキソフトウェアの使い方に関する情報は[//meta.wikimedia.org/wiki/Help:Contents 利用者案内]を参照してください。\n\n== はじめましょう ==\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings/ja 設定の一覧]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ/ja MediaWiki よくある質問と回答]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki リリース情報メーリングリスト]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation/ja MediaWiki のあなたの言語へのローカライズ]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]"
 }
index d911898..09a9264 100644 (file)
        "config-admin-error-password": "\"<nowiki>$1</nowiki>\" 관리자의 비밀번호를 설정하는 중 내부 오류가 발생했습니다: <pre>$2</pre>",
        "config-admin-error-bademail": "이메일 주소를 잘못 입력하였습니다.",
        "config-subscribe": "[https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce 릴리스 발표 메일링 리스트]를 구독합니다.",
-       "config-subscribe-help": "중요한 보안 알림을 포함한 릴리스 알림에 사용되는 저용량 메일링 리스트입니다.\n이 리스트를 구독하고 새 버전이 나올 때 미디어위키 설치를 업데이트해야 합니다.",
+       "config-subscribe-help": "중요한 보안 발표를 포함한 배포판 발표에 사용되는 저용량 메일링 리스트입니다.\n이 리스트를 구독하고 새 버전이 나올 때 미디어위키 설치를 업데이트해야 합니다.",
        "config-subscribe-noemail": "이메일 주소를 입력하지 않고 릴리스 발표 메일링 리스트에 가입하려 합니다.\n메일링 리스트에 가입하고자 할 경우 이메일 주소를 입력하세요.",
        "config-almost-done": "거의 다 완료했습니다!\n이제 남은 설정을 생략하고 지금 바로 위키를 설치할 수 있습니다.",
        "config-optional-continue": "더 많은 질문을 물어보세요.",
index e7bed0e..9a30139 100644 (file)
@@ -43,6 +43,7 @@
        "config-page-existingwiki": "Esamas viki",
        "config-help-restart": "Ar norite ištrinti visus išsaugotus duomenis, kuriuos jūs įvedėte ir iš naujo paleisti diegimo procesą?",
        "config-restart": "Taip, paleiskite jį iš naujo",
+       "config-welcome": "== Aplinkos patikrinimas ==\nDabar bus atlikti pagrindiniai patikrinimai, po kurių paaiškės, ar ši aplinka yra tinkama MediaWiki įrangai.\nNepamirškite įtraukti šią informaciją, jeigu norite gauti pagalbos, kaip užbaigti įdiegimą.",
        "config-sidebar": "* [//www.mediawiki.org MediaWiki namų tinklalapis]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Vartotojo gidas]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents Administratoriaus gidas]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ DUK]\n----\n* <doclink href=Readme>Skaityk mane</doclink>\n* <doclink href=ReleaseNotes>Leidimo pastabos</doclink>\n* <doclink href=Copying>Kopijavimas</doclink>\n* <doclink href=UpgradeDoc>Atnaujinimas</doclink>",
        "config-env-good": "Aplinka buvo patikrinta.\nJūs galite įdiegti MediaWiki.",
        "config-env-bad": "Aplinka buvo patikrinta.\nJūs negalite įdiegti MediaWiki.",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] yra įdiegtas",
        "config-apc": "[http://www.php.net/apc APC] yra įdiegtas",
        "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] yra įdiegtas",
+       "config-no-cache-apcu": "<strong>Įspėjimas:</strong> Nepavyko rasti [http://www.php.net/apcu APCu], [http://xcache.lighttpd.net/ XCache] or [http://www.iis.net/download/WinCacheForPhp WinCache].\nObjekto spartinimas neįjungtas.",
        "config-diff3-bad": "GNU diff3 nerastas.",
-       "config-using-server": "Naudojant serverio pavadinimas „<nowiki>$1</nowiki>“.",
+       "config-git": "Rasta Git versijų kontrolės sistema: <code>$1</code>.",
+       "config-imagemagick": "Rastas „ImageMagick“: <code>$1</code>.\nPaveikslėlių miniatiūrizavimas bus įjungtas, jeigu įgalinsite vaizdų įkėlimą.",
+       "config-using-server": "Naudojamas serverio pavadinimas „<nowiki>$1</nowiki>“.",
        "config-using-uri": "Naudojamas serverio URL „<nowiki>$1$2</nowiki>“.",
        "config-db-type": "Duomenų bazės tipas:",
        "config-db-host": "Duomenų bazės serveris:",
index 4a6526c..35835d2 100644 (file)
@@ -90,6 +90,6 @@
        "config-install-tables": "لښتيالونه جوړول",
        "config-download-localsettings": "ښکته کول <code>LocalSettings.php</code>",
        "config-help": "لارښود",
-       "mainpagetext": "'''MediaWiki په برياليتوب سره نصب شو.'''",
+       "mainpagetext": "<strong>MediaWiki نصب شو.</strong>",
        "mainpagedocfooter": "د ويکي ساوترې د کارولو د  مالوماتو په اړه [//meta.wikimedia.org/wiki/Help:Contents د کارن لارښود] سره سلا وکړۍ.\n\n== پيلول ==\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings د امستنو د سازونې لړليک]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ د ميډياويکي ډېرځليزې پوښتنې]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce د مېډياويکي د برېښليکونو لړليک]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources خپلې ژبې لپاره MediaWiki ځايتابول]"
 }
index 5ba505e..fc6997d 100644 (file)
@@ -84,6 +84,6 @@
        "config-install-step-failed": "није успело",
        "config-help": "помоћ",
        "config-help-tooltip": "кликните да проширите",
-       "mainpagetext": "'''Медијавики је успешно инсталиран.'''",
+       "mainpagetext": "<strong>Медијавики је успешно инсталиран.</strong>",
        "mainpagedocfooter": "Погледајте [//meta.wikimedia.org/wiki/Help:Contents кориснички водич] за коришћење програма.\n\n== Увод ==\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Помоћ у вези са подешавањима]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Често постављена питања]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Дописна листа о издањима Медијавикија]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Научите како да се борете против спама на Вашој вики]"
 }
index b1a97e9..3e1faf9 100644 (file)
@@ -35,6 +35,6 @@
        "config-site-name": "Ime vikija:",
        "config-license-cc-0": "Creative Commons Zero (javno vlasništvo)",
        "config-skins": "Teme",
-       "mainpagetext": "'''MedijaViki je uspešno instaliran.'''",
+       "mainpagetext": "<strong>Medijaviki je uspešno instaliran.</strong>",
        "mainpagedocfooter": "Molimo vidite [//meta.wikimedia.org/wiki/Help:Contents korisnički vodič] za informacije o upotrebi viki softvera.\n\n== Za početak ==\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Pomoć u vezi sa podešavanjima]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Najčešće postavljena pitanja]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mejling lista o izdanjima MedijaVikija]"
 }
index 57c4790..2644f3f 100644 (file)
@@ -15,7 +15,7 @@
        "config-localsettings-upgrade": "Một tập tin <code>LocalSettings.php</code> đã được phát hiện.\nĐể nâng cấp bản cài đặt này, xin nhập giá trị của <code>$wgUpgradeKey</code> trong hộp thoại bên dưới đây.\nBạn sẽ tìm thấy nó trong <code>LocalSettings.php</code>.",
        "config-localsettings-cli-upgrade": "Một tập tin <code>LocalSettings.php</code> đã được phát hiện.\nĐể nâng cấp bản cài đặt này, hãy chạy <code>update.php</code> thay thế.",
        "config-localsettings-key": "Chìa khóa nâng cấp:",
-       "config-localsettings-badkey": "Bạn đã cung cấp một chìa khóa sai.",
+       "config-localsettings-badkey": "Bạn đã cung cấp một chìa khóa nâng cấp sai.",
        "config-upgrade-key-missing": "Một bản cài đặt MediaWiki sẵn đã được phát hiện.\nĐể nâng cấp bản cài đặt này, hãy thêm dòng sau vào cuối <code>LocalSettings.php</code>:\n\n$1",
        "config-localsettings-incomplete": "Tập tin <code>LocalSettings.php</code> đã tồn tại hình như không hoàn chỉnh.\nBiến $1 chưa được đặt.\nXin hãy thay đổi <code>LocalSettings.php</code> để đặt biến này, rồi bấm “{{int:Config-continue}}”.",
        "config-localsettings-connection-error": "Đã xuất hiện lỗi khi kết nối với cơ sở dữ liệu dùng cấu hình trong <code>LocalSettings.php</code>. Xin hãy sửa lại cấu hình và thử lại.\n\n$1",
        "config-no-db": "Không tìm thấy một trình điều khiển cơ sở dữ liệu phù hợp! Bạn cần phải cài một trình điều khiển cơ sở dữ liệu cho PHP.\n{{PLURAL:$2|Loại|Các loại}} cơ sở dữ liệu sau đây được hỗ trợ: $1.\n\nNếu bạn đã biên dịch PHP lấy, cấu hình lại nó mà kích hoạt một trình khách cơ sở dữ liệu, ví dụ bằng lệnh <code>./configure --with-mysqli</code>.\nNếu bạn đã cài PHP từ một gói Debian hoặc Ubuntu, thì bạn cũng cần phải cài ví dụ gói <code>php5-mysql</code>.",
        "config-outdated-sqlite": "<strong>Chú ý:</strong> Bạn có SQLite $1, phiên bản này thấp hơn phiên bản yêu câu tối thiểu $2. SQLite sẽ không có tác dụng.",
        "config-no-fts3": "<strong>Chú ý:</strong> SQLite được biên dịch mà không có [//sqlite.org/fts3.html mô đun FTS3], nên các chức năng tìm kiếm sẽ bị vô hiệu trên hệ thống phía sau này.",
-       "config-register-globals-error": "<strong>Lỗi: Tùy chọn <code>[http://php.net/register_globals register_globals]</code> của PHP đã được kích hoạt.\nNó phải bị vô hiệu để tiếp tục quá trình cài đặt.</strong>\nXem [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals] để biết cách thực hiện.",
-       "config-magic-quotes-gpc": "<strong>Lỗi chí tử: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-gpc magic_quotes_gpc] đang hoạt động!</strong>\nTùy chọn này sẽ làm hỏng dữ liệu nhập một cách không thể đoán trước.\nBạn không thể cài đặt hoặc sử dụng MediaWiki trừ phi tùy chọn này bị vô hiệu.",
-       "config-magic-quotes-runtime": "<strong>Lỗi chí tử: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] đang hoạt động!</strong>\nTùy chọn này sẽ làm hỏng dữ liệu nhập một cách không thể đoán trước.\nBạn không thể cài đặt hoặc sử dụng MediaWiki trừ phi tùy chọn này bị vô hiệu.",
-       "config-magic-quotes-sybase": "<strong>Lỗi chí tử: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] đang hoạt động!</strong>\nTùy chọn này sẽ làm hỏng dữ liệu nhập một cách không thể đoán trước.\nBạn không thể cài đặt hoặc sử dụng MediaWiki trừ phi tùy chọn này bị vô hiệu.",
        "config-mbstring": "<strong>Lỗi chí tử: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] được kích hoạt!</strong>\nTùy chọn này gây lỗi và có thể làm hỏng dữ liệu một cách không thể đoán trước.\nBạn không thể cài đặt hoặc sử dụng MediaWiki trừ phi tùy chọn này bị vô hiệu.",
-       "config-safe-mode": "<strong>Cảnh báo:</strong> [http://www.php.net/features.safe-mode Chế độ an toàn] của PHP đang được kích hoạt.\nNó có thể gây vấn đề, nhất là nếu dùng các chức năng tải lên tập tin và <code>math</code>.",
        "config-xml-bad": "Mô đun XML của PHP đang bị thiếu.\nMediaWiki yêu cầu các hàm trong mô đun này và sẽ không hoạt động trong cấu hình này.\nBạn có thể cần cài đặt gói RPM php-xml.",
        "config-pcre-old": "<strong>Lỗi chí tử:</strong> PCRE $1 trở lên được yêu cầu phải có.\nBản nhị phân PHP của bạn dang được liên kết với PCRE $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE Thông tin bổ sung].",
        "config-pcre-no-utf8": "<strong>Lỗi chí tử:</strong> Mô đun PCRE của PHP dường như được biên dịch mà không có hỗ trợ PCRE_UTF8.\nMediaWiki yêu cầu phải có hỗ trợ UTF-8 để hoạt động chính xác.",
@@ -75,7 +70,7 @@
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] đã được cài đặt",
        "config-apc": "[http://www.php.net/apc APC] đã được cài đặt",
        "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] đã được cài đặt",
-       "config-no-cache": "<strong>Cảnh báo:</strong> Không tìm thấy [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] hoặc [http://www.iis.net/download/WinCacheForPhp WinCache].\nVùng nhớ đệm đối tượng không được kích hoạt.",
+       "config-no-cache-apcu": "<strong>Cảnh báo:</strong> Không tìm thấy [http://www.php.net/apcu APCu], [http://xcache.lighttpd.net/ XCache], hoặc [http://www.iis.net/download/WinCacheForPhp WinCache].\nVùng nhớ đệm đối tượng không được kích hoạt.",
        "config-mod-security": "<strong>Cảnh báo:</strong> [http://modsecurity.org/ mod_security]/mod_security2 đã được kích hoạt trên máy chủ Web của bạn. Nhiều cấu hình phổ biến của phần mềm này sẽ gây vấn đề cho MediaWiki và những phần mềm khác cho phép người dùng đăng các nội dung tùy tiện.\nNếu có thể, bạn nên vô hiệu nó. Còn không, tra cứu [http://modsecurity.org/documentation/ tài liệu mod_security] hoặc liên hệ với nhà cung cấp hỗ trợ cho máy chủ nếu bạn gặp những lỗi ngẫu nhiên nào đó.",
        "config-diff3-bad": "Không tìm thấy GNU diff3.",
        "config-git": "Đã tìm thấy phần mềm điều khiển phiên bản Git: <code>$1</code>.",
        "config-ns-site-name": "Cùng với tên wiki: $1",
        "config-ns-other": "Khác (định rõ)",
        "config-ns-other-default": "WikiTôi",
-       "config-project-namespace-help": "Ví dụ sau đây của Wikipedia, nhiều wiki tách các trang sách họ với các trang nội dung, trong một \"''' không gian tên dự án'''\".\nTất cả các tiêu đề trang trong không gian tên này bắt đầu với một tiền tố nhất định, bạn có thể xác định ở đây.\nThông thường, tiền tố này được bắt nguồn từ tên của wiki, nhưng nó không thể chứa các ký tự đặc biệt như \"#\" hoặc \":\".",
+       "config-project-namespace-help": "Nhiều wiki bắt chước Wikipedia bằng cách tách các trang quy định ra khỏi các trang nội dung trong một '''không gian tên dự án'''.\nTất cả các tên trang trong không gian tên này bắt đầu với một tiền tố cụ thể, bạn có thể xác định ở đây.\nThông thường, tiền tố này bắt nguồn từ tên của wiki, nhưng nó không thể chứa các ký tự đặc biệt như “#” hoặc “:”.",
        "config-ns-invalid": "Không gian tên cụ thể \"<nowiki>$1</nowiki>\" không hợp lệ.\nXác định một không gian tên dự án khác.",
        "config-ns-conflict": "Không gian tên cụ thể \"<nowiki>$1</nowiki>\" xung đột với một không gian tên MediaWiki mặc định.\nXác định một không gian tên dự án khác.",
        "config-admin-box": "Tài khoản bảo quản viên",
        "config-install-mainpage": "Đang tạo trang đầu với nội dung mặc định",
        "config-install-extension-tables": "Đang tạo bảng cho các phần mở rộng được kích hoạt",
        "config-install-mainpage-failed": "Không thể chèn trang đầu: $1",
-       "config-install-done": "<strong>Xin chúc mừng!</strong>\nBạn đã cài đặt thành công MediaWiki.\n\nBộ cài đặt đã tạo ra một tập tin <code>LocalSettings.php</code>.\nTập tin này chứa tất cả các cấu hình của bạn.\n\nBạn sẽ cần phải tải nó về và đặt nó trong thư mục cài đặt wiki của bạn (cùng thư mục với index.php). Việc tải về có lẽ sẽ được khởi động tự động.\n\nNếu bản tải về không được cung cấp, hoặc nếu bạn hủy bỏ nó, bạn có thể khởi động lại tải về bằng cách nhấn vào liên kết dưới đây:\n\n$3\n\n<strong>Lưu ý:</strong> Nếu bạn không làm điều này ngay bây giờ, điều này sẽ tạo ra tập tin cấu hình sẽ không có giá trị cho bạn sau này nếu bạn thoát khỏi trình cài đặt mà không tải nó về.\n\nKhi đã việc tải về đã hoàn thành, bạn có thể <strong>[$2 truy cập trang wiki của bạn]</strong>.",
+       "config-install-done": "<strong>Xin chúc mừng!</strong>\nBạn đã cài đặt MediaWiki.\n\nBộ cài đặt đã tạo ra một tập tin <code>LocalSettings.php</code>.\nTập tin này chứa tất cả các cấu hình của bạn.\n\nBạn sẽ cần phải tải nó về và đặt nó trong thư mục cài đặt wiki của bạn (cùng thư mục với index.php). Việc tải về có lẽ sẽ được khởi động tự động.\n\nNếu bản tải về không được cung cấp, hoặc nếu bạn hủy bỏ nó, bạn có thể khởi động lại tải về bằng cách nhấn vào liên kết dưới đây:\n\n$3\n\n<strong>Lưu ý:</strong> Nếu bạn không làm điều này ngay bây giờ, điều này sẽ tạo ra tập tin cấu hình sẽ không có giá trị cho bạn sau này nếu bạn thoát khỏi trình cài đặt mà không tải nó về.\n\nKhi đã việc tải về đã hoàn thành, bạn có thể <strong>[$2 truy cập trang wiki của bạn]</strong>.",
        "config-download-localsettings": "Tải về <code>LocalSettings.php</code>",
        "config-help": "Trợ giúp",
        "config-help-tooltip": "nhấn chuột để mở rộng",
        "config-nofile": "Không tìm thấy tập tin “$1”. Nó có phải bị xóa không?",
        "config-extension-link": "Bạn có biết rằng wiki của bạn có hỗ trợ [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions mở rộng]?\n\nBạn có thể truy cập [//www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category phần mở rộng theo thể loại] hoặc [//www.mediawiki.org/wiki/Extension_Matrix Ma trận Mở rộng] để xem danh sách đầy đủ các phần mở rộng.",
-       "mainpagetext": "'''MediaWiki đã được cài đặt thành công.'''",
+       "mainpagetext": "'''MediaWiki đã được cài đặt.'''",
        "mainpagedocfooter": "Xin đọc [//meta.wikimedia.org/wiki/Help:Contents Hướng dẫn sử dụng] để biết thêm thông tin về cách sử dụng phần mềm wiki.\n\n== Để bắt đầu ==\n\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Danh sách các thiết lập cấu hình]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Các câu hỏi thường gặp MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Danh sách gửi thư về việc phát hành MediaWiki]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Tìm hiểu cách chống spam tại wiki của bạn]"
 }
index 1f319d3..4f57b1f 100644 (file)
        "config-no-db": "找不到合適的資料庫驅動程式!您需要安裝 PHP 資料庫驅動程式。\n目前支援以下{{PLURAL:$2|類型|類型}}的資料庫: $1 。\n\n如果您是自行編譯 PHP,您必須重新設定並開啟資料庫客戶端,例:使用 <code>./configure --with-mysqli</code> 指令參數。\n如果您是使用 Debian 或 Ubuntu 的套件安裝 PHP ,您則需要額外安裝,例:<code>php5-mysql</code> 套件。",
        "config-outdated-sqlite": "<strong>警告:</strong>您已安裝 SQLite $1,但是它的版本低於最低需求版本 $2。 因此您無法使用 SQLite。",
        "config-no-fts3": "<strong>警告:</strong> SQLite 編譯時未包含 [//sqlite.org/fts3.html FTS3 模組],後台搜尋功能將無法使用。",
-       "config-register-globals-error": "<strong>錯誤:PHP 的 <code>[http://php.net/register_globals register_globals]</code> 選項已開啟。\n要繼續安裝程序必須關閉該選項。</strong>\n請參考 [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals] 以取得操作說明。",
-       "config-magic-quotes-gpc": "<strong>嚴重:[http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-gpc magic_quotes_gpc] 已開啟!</strong>\n此選項會在無法預期的情況下損壞資料。\n除非您將該選項關閉,否鄍您無法安裝或使用 MediaWiki。",
-       "config-magic-quotes-runtime": "<strong>嚴重:[http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] 選項被開啟!</strong>\n此選項會導致資料在無法預測的情況下損壞。\n您必須將開選項關閉方可繼續安裝 MediaWiki。",
-       "config-magic-quotes-sybase": "<strong>嚴重:[http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] 選項被開啟!</strong>\n此選項會導致資料在無法預測的情況下損壞。\n您必須將開選項關閉方可繼續安裝 MediaWiki。",
        "config-mbstring": "<strong>嚴重:[http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] 選項被開啟!</strong>\n此選項會導致資料在無法預測的情況下損壞。\n您必須將開選項關閉方可繼續安裝 MediaWiki。",
-       "config-safe-mode": "<strong>警告:</strong>PHP 的 [http://www.php.net/features.safe-mode 安全模式] 選項被開啟。它可能會導致檔案上傳與數學函數 <code>math</code> 的問題。",
        "config-xml-bad": "PHP 缺少的 XML 模組。\nMediaWiki 需要使用此模組中所提供的函數,且在目前的設定下將無法繼續作業。\n您可能需要安裝 php-xml RPM 套件。",
        "config-pcre-old": "<strong>嚴重:</strong> 需要使用 PCRE $1 或更新的版本。\n您的 PHP 執行檔使用的是 PCRE $2。\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE 詳細資訊]。",
        "config-pcre-no-utf8": "<strong>嚴重:</strong> PHP 的 PCRE 模組在編譯時未包含 PCRE_UTF8 支援。\nMediaWiki 需要支援 UTF-8 才可正常運作。",
@@ -83,7 +78,6 @@
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] 已安裝",
        "config-apc": "[http://www.php.net/apc APC] 已安裝",
        "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] 已安裝",
-       "config-no-cache": "<strong>警告:</strong> 找不到 [http://www.php.net/apc APC]、[http://xcache.lighttpd.net/ XCache] 或 [http://www.iis.net/download/WinCacheForPhp WinCache]。\n無法開啟物件快取功能。",
        "config-mod-security": "<strong>警告:</strong>您的網頁伺服器已開啟 [http://modsecurity.org/ mod_security] 模組,如果設定不恰當會導致使用者可在 MediaWiki 或其他應用程式發佈任意的內容。\n若您遇到任何問題,請參考 [http://modsecurity.org/documentation/ mod_security 文件] 或聯繫您的伺服器技術支援人員。",
        "config-diff3-bad": "找不到 GNU diff3。",
        "config-git": "找到 Git 版本控制軟體:<code>$1</code>。",
        "config-ns-generic": "專案",
        "config-ns-site-name": "同 Wiki 名稱:$1",
        "config-ns-other": "其他 (請註明)",
-       "config-ns-other-default": "我的 Wiki",
+       "config-ns-other-default": "我的 wiki",
        "config-project-namespace-help": "許多 Wiki 以維基百科(Wikipedia)做為範例將政策頁面從內容頁面抽離,放置在 \"'''專案命名空間'''\" 中。\n所有在此命名空間裡的頁面都會有特定的字首,您可以在此處設定。\n通常這些字首是由該 Wiki 的名稱所衍伸出來,但無法使用標點符號,如 \"#\" 或 \":\"。",
        "config-ns-invalid": "您指定的命名空間 \"<nowiki>$1</nowiki>\" 無效,\n請指定另一個專案命名空間。",
        "config-ns-conflict": "您指定的命名空間 \"<nowiki>$1</nowiki>\" 與 MediaWiki 預設的命名空間衝突。\n請指定另一個專案命名空間。",
        "config-profile-wiki": "開放式 Wiki",
        "config-profile-no-anon": "需要註冊帳號",
        "config-profile-fishbowl": "僅授權的編輯者",
-       "config-profile-private": "封閉式 Wiki",
+       "config-profile-private": "私人 wiki",
        "config-profile-help": "Wiki 最佳的運作方式是盡可能讓大家都可以編輯文件。\n在 MediaWiki,可以很輕易的審查最近做的所有變更動作,並且可以還原由新手或惡意使用者造成的損害。\n\n不論如何,很多人發現 MediaWiki 可以廣泛的運用在各種地方,但並不是很容易可以說服每個人都遵守對 Wiki 有益的方式。\n所以您必須做出以下選擇。\n\n使用 <strong>{{int:config-profile-wiki}}</strong> 模式,允許所有人編輯文章,包含未匿名使用者。\n使用 <strong>{{int:config-profile-no-anon}}</strong> 模式,允許所有人編輯文章,不包含未登入的使用者。此模式較能管理所有使用者的言論,但會扼殺臨時使用者的貢獻機會。\n\n使用 <strong>{{int:config-profile-fishbowl}}</strong> 模式,僅經核准的使用者可以編輯,所有人可以檢視頁面,包含修訂的記錄。\n使用 <strong>{{int:config-profile-private}}</strong> 模式,僅經核准的使用者可以編輯、檢視頁面。\n\n有關更多複雜的使用者權限設定可在安裝程序結束後設定,請參考 [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights 相關文件說明]。",
        "config-license": "版權聲明與授權條款:",
        "config-license-none": "無授權條款頁腳",
index ef3d61d..0a0a7a2 100644 (file)
@@ -506,7 +506,7 @@ class JobRunner implements LoggerAwareInterface {
 
                $ms = intval( 1000 * $dbwSerial->pendingWriteQueryDuration() );
                $msg = $job->toString() . " COMMIT ENQUEUED [{$ms}ms of writes]";
-               $this->logger->warning( $msg );
+               $this->logger->info( $msg );
                $this->debugCallback( $msg );
 
                // Wait for an exclusive lock to commit
index 616c6d6..d636dc6 100644 (file)
@@ -216,7 +216,7 @@ class JobSpecification implements IJobSpecification {
                        'opts'   => $this->opts,
                        'title'  => [
                                'ns'  => $this->title->getNamespace(),
-                               'key' => $this->title->getDbKey()
+                               'key' => $this->title->getDBkey()
                        ]
                ];
        }
index a81cade..7f50055 100644 (file)
@@ -116,7 +116,7 @@ class BacklinkJobUtils {
                        foreach ( array_chunk( $titles, $cSize ) as $titleBatch ) {
                                $pages = [];
                                foreach ( $titleBatch as $tl ) {
-                                       $pages[$tl->getArticleId()] = [ $tl->getNamespace(), $tl->getDBKey() ];
+                                       $pages[$tl->getArticleID()] = [ $tl->getNamespace(), $tl->getDBkey() ];
                                }
                                $jobs[] = new $class(
                                        $title, // maintain parent job title
index 3d5d383..60ec922 100644 (file)
@@ -21,8 +21,6 @@
  * @ingroup Cache
  */
 
-use Psr\Log\LoggerInterface;
-
 /**
  * Wrapper around a BagOStuff that caches data in memory
  *
index c96c0db..039161a 100644 (file)
@@ -184,7 +184,7 @@ class LogEventsList extends ContextSource {
                $selector = $this->getTypeSelector();
                $selector->setDefault( $queryType );
 
-               return $selector->getHtml();
+               return $selector->getHTML();
        }
 
        /**
index 11ae5d6..8518c91 100644 (file)
@@ -209,7 +209,7 @@ class LogPager extends ReverseChronologicalPager {
 
                $doUserRightsLogLike = false;
                if ( $this->types == [ 'rights' ] ) {
-                       $parts = explode( $wgUserrightsInterwikiDelimiter, $title->getDBKey() );
+                       $parts = explode( $wgUserrightsInterwikiDelimiter, $title->getDBkey() );
                        if ( count( $parts ) == 2 ) {
                                list( $name, $database ) = array_map( 'trim', $parts );
                                if ( strstr( $database, '*' ) ) { // Search for wildcard in database name
index 4f8f6b3..fe24c34 100644 (file)
@@ -155,7 +155,7 @@ class EmailNotification {
                                $title,
                                [
                                        'editor' => $editor->getName(),
-                                       'editorID' => $editor->getID(),
+                                       'editorID' => $editor->getId(),
                                        'timestamp' => $timestamp,
                                        'summary' => $summary,
                                        'minorEdit' => $minorEdit,
@@ -232,7 +232,7 @@ class EmailNotification {
                                        if ( $watchingUser->getOption( 'enotifwatchlistpages' )
                                                && ( !$minorEdit || $watchingUser->getOption( 'enotifminoredits' ) )
                                                && $watchingUser->isEmailConfirmed()
-                                               && $watchingUser->getID() != $userTalkId
+                                               && $watchingUser->getId() != $userTalkId
                                                && !in_array( $watchingUser->getName(), $wgUsersNotifiedOnAllChanges )
                                                && !( $wgBlockDisablesLogin && $watchingUser->isBlocked() )
                                        ) {
index b91fb8a..56b20ac 100644 (file)
@@ -55,6 +55,6 @@ class BitmapHandler_ClientOnly extends BitmapHandler {
                        return new TransformParameterError( $params );
                }
 
-               return new ThumbnailImage( $image, $image->getURL(), $image->getLocalRefPath(), $params );
+               return new ThumbnailImage( $image, $image->getUrl(), $image->getLocalRefPath(), $params );
        }
 }
index d4ef8a8..cd249a8 100644 (file)
@@ -419,7 +419,8 @@ class DjVuHandler extends ImageHandler {
                                }
 
                                return [ 'pageCount' => $count, 'dimensionsByPage' => $dimsByPage ];
-                       }
+                       },
+                       [ 'pcTTL' => WANObjectCache::TTL_INDEFINITE ]
                );
        }
 
index 9a6547f..9176b54 100644 (file)
@@ -395,7 +395,7 @@ class ThumbnailImage extends MediaTransformOutput {
                                $query
                        );
                } elseif ( !empty( $options['file-link'] ) ) {
-                       $linkAttribs = [ 'href' => $this->file->getURL() ];
+                       $linkAttribs = [ 'href' => $this->file->getUrl() ];
                } else {
                        $linkAttribs = false;
                        if ( !empty( $options['title'] ) ) {
index 7e77b25..2bb6d13 100644 (file)
@@ -468,7 +468,7 @@ class SvgHandler extends ImageHandler {
                        return ( $value > 0 );
                } elseif ( $name == 'lang' ) {
                        // Validate $code
-                       if ( $value === '' || !Language::isValidBuiltinCode( $value ) ) {
+                       if ( $value === '' || !Language::isValidBuiltInCode( $value ) ) {
                                wfDebug( "Invalid user language code\n" );
 
                                return false;
index f777230..62b5c2c 100644 (file)
@@ -229,7 +229,7 @@ class SVGReader {
                }
                // @todo Find and store type of xml snippet. metadata['metadataType'] = "rdf"
                if ( method_exists( $this->reader, 'readInnerXML' ) ) {
-                       $this->metadata[$metafield] = trim( $this->reader->readInnerXML() );
+                       $this->metadata[$metafield] = trim( $this->reader->readInnerXml() );
                } else {
                        throw new MWException( "The PHP XMLReader extension does not come " .
                                "with readInnerXML() method. Your libxml is probably out of " .
index f6483a1..f1f2161 100644 (file)
@@ -335,7 +335,7 @@ abstract class TransformationalImageHandler extends ImageHandler {
                        'height' => $scalerParams['clientHeight']
                ];
 
-               return new ThumbnailImage( $image, $image->getURL(), null, $params );
+               return new ThumbnailImage( $image, $image->getUrl(), null, $params );
        }
 
        /**
index 526b45e..6ac675e 100644 (file)
@@ -155,7 +155,7 @@ class XCFHandler extends BitmapHandler {
         * @return string
         */
        public function getMetadata( $file, $filename ) {
-               $header = self::getXCFMetadata( $filename );
+               $header = self::getXCFMetaData( $filename );
                $metadata = [];
                if ( $header ) {
                        // Try to be consistent with the names used by PNG files.
index f6b490a..b561407 100644 (file)
@@ -225,7 +225,7 @@ class Article implements Page {
         */
        protected function getContentObject() {
 
-               if ( $this->mPage->getID() === 0 ) {
+               if ( $this->mPage->getId() === 0 ) {
                        # If this is a MediaWiki:x message, then load the messages
                        # and return the message value for x.
                        if ( $this->getTitle()->getNamespace() == NS_MEDIAWIKI ) {
@@ -282,7 +282,7 @@ class Article implements Page {
                                $this->mRevision = Revision::newFromId( $oldid );
                                if ( $this->mRevision !== null ) {
                                        // Revision title doesn't match the page title given?
-                                       if ( $this->mPage->getID() != $this->mRevision->getPage() ) {
+                                       if ( $this->mPage->getId() != $this->mRevision->getPage() ) {
                                                $function = [ get_class( $this->mPage ), 'newFromID' ];
                                                $this->mPage = call_user_func( $function, $this->mRevision->getPage() );
                                        }
@@ -768,7 +768,7 @@ class Article implements Page {
                                ->params( $oldid )
                                ->numParams( 1 )
                                ->parseAsBlock();
-                       $this->getContext()->getOutput()->addHtml( $msg );
+                       $this->getContext()->getOutput()->addHTML( $msg );
                        return;
                }
 
@@ -863,7 +863,7 @@ class Article implements Page {
                        }
                }
 
-               if ( $this->mPage->getID() === 0 || $this->getOldID() ) {
+               if ( $this->mPage->getId() === 0 || $this->getOldID() ) {
                        # Non-articles (special pages etc), and old revisions
                        return [
                                'index' => 'noindex',
@@ -1445,7 +1445,7 @@ class Article implements Page {
                $outputPage->addSubtitle( "<div id=\"mw-{$infomsg}\">" .
                        $context->msg( $infomsg, $td )
                                ->rawParams( $userlinks )
-                               ->params( $revision->getID(), $tddate, $tdtime, $revision->getUserText() )
+                               ->params( $revision->getId(), $tddate, $tdtime, $revision->getUserText() )
                                ->rawParams( Linker::revComment( $revision, true, true ) )
                                ->parse() .
                        "</div>"
@@ -1961,7 +1961,7 @@ class Article implements Page {
                $cacheable = false;
 
                if ( HTMLFileCache::useFileCache( $this->getContext() ) ) {
-                       $cacheable = $this->mPage->getID()
+                       $cacheable = $this->mPage->getId()
                                && !$this->mRedirectedFrom && !$this->getTitle()->isRedirect();
                        // Extension may have reason to disable file caching on some pages.
                        if ( $cacheable ) {
index e569762..106911c 100644 (file)
@@ -160,7 +160,7 @@ class ImagePage extends Article {
                }
 
                # No need to display noarticletext, we use our own message, output in openShowImage()
-               if ( $this->mPage->getID() ) {
+               if ( $this->mPage->getId() ) {
                        # NS_FILE is in the user language, but this section (the actual wikitext)
                        # should be in page content language
                        $pageLang = $this->getTitle()->getPageViewLanguage();
@@ -299,7 +299,7 @@ class ImagePage extends Article {
         */
        public function getContentObject() {
                $this->loadFile();
-               if ( $this->mPage->getFile() && !$this->mPage->getFile()->isLocal() && 0 == $this->getID() ) {
+               if ( $this->mPage->getFile() && !$this->mPage->getFile()->isLocal() && 0 == $this->getId() ) {
                        return null;
                }
                return parent::getContentObject();
@@ -565,7 +565,7 @@ EOT
                                if ( is_null( $currentLanguage ) ) {
                                        $currentLanguage = $defaultLang;
                                }
-                               $out->addHtml( $this->doRenderLangOpt( $renderLangOptions, $currentLanguage, $defaultLang ) );
+                               $out->addHTML( $this->doRenderLangOpt( $renderLangOptions, $currentLanguage, $defaultLang ) );
                        }
 
                        // Add cannot animate thumbnail warning
@@ -592,7 +592,7 @@ EOT
                        }
                } else {
                        # Image does not exist
-                       if ( !$this->getID() ) {
+                       if ( !$this->getId() ) {
                                # No article exists either
                                # Show deletion log to be consistent with normal articles
                                LogEventsList::showLogExtract(
@@ -623,7 +623,7 @@ EOT
                        // by Article::View().
                        $out->setRobotPolicy( 'noindex,nofollow' );
                        $out->wrapWikiMsg( "<div id='mw-imagepage-nofile' class='plainlinks'>\n$1\n</div>", $nofile );
-                       if ( !$this->getID() && $wgSend404Code ) {
+                       if ( !$this->getId() && $wgSend404Code ) {
                                // If there is no image, no shared image, and no description page,
                                // output a 404, to be consistent with Article::showMissingArticle.
                                $request->response()->statusHeader( 404 );
@@ -635,7 +635,7 @@ EOT
        /**
         * Make the text under the image to say what size preview
         *
-        * @param $params Array parameters for thumbnail
+        * @param $params array parameters for thumbnail
         * @param $sizeLinkBigImagePreview HTML for the current size
         * @return string HTML output
         */
@@ -704,7 +704,7 @@ EOT
                $descText = $this->mPage->getFile()->getDescriptionText( $this->getContext()->getLanguage() );
 
                /* Add canonical to head if there is no local page for this shared file */
-               if ( $descUrl && $this->mPage->getID() == 0 ) {
+               if ( $descUrl && $this->mPage->getId() == 0 ) {
                        $out->setCanonicalUrl( $descUrl );
                }
 
index d81efa6..0e3512b 100644 (file)
@@ -2880,7 +2880,7 @@ class WikiPage implements Page, IDBAccessObject {
                $dbw->startAtomic( __METHOD__ );
 
                $this->loadPageData( self::READ_LATEST );
-               $id = $this->getID();
+               $id = $this->getId();
                // T98706: lock the page from various other updates but avoid using
                // WikiPage::READ_LOCKING as that will carry over the FOR UPDATE to
                // the revisions queries (which also JOIN on user). Only lock the page
index 2c415d6..31c9c6d 100644 (file)
@@ -115,7 +115,7 @@ abstract class ReverseChronologicalPager extends IndexPager {
 
                // Treat the given time in the wiki timezone and get a UTC timestamp for the database lookup
                $timestamp = MWTimestamp::getInstance( "${ymd}000000" );
-               $timestamp->setTimeZone( $this->getConfig()->get( 'Localtimezone' ) );
+               $timestamp->setTimezone( $this->getConfig()->get( 'Localtimezone' ) );
 
                $this->mOffset = $this->mDb->timestamp( $timestamp->getTimestamp() );
        }
index 1cc0efc..a55ddf3 100644 (file)
@@ -634,7 +634,7 @@ class CoreParserFunctions {
                if ( is_null( $t ) ) {
                        return '';
                }
-               return wfEscapeWikiText( wfUrlEncode( str_replace( ' ', '_', $t->getRootText() ) ) );
+               return wfEscapeWikiText( wfUrlencode( str_replace( ' ', '_', $t->getRootText() ) ) );
        }
        public static function basepagename( $parser, $title = null ) {
                $t = Title::newFromText( $title );
@@ -648,7 +648,7 @@ class CoreParserFunctions {
                if ( is_null( $t ) ) {
                        return '';
                }
-               return wfEscapeWikiText( wfUrlEncode( str_replace( ' ', '_', $t->getBaseText() ) ) );
+               return wfEscapeWikiText( wfUrlencode( str_replace( ' ', '_', $t->getBaseText() ) ) );
        }
        public static function talkpagename( $parser, $title = null ) {
                $t = Title::newFromText( $title );
index d7ba266..5ee0c5a 100644 (file)
@@ -3000,7 +3000,7 @@ class Parser {
                                $value = wfEscapeWikiText( $this->mTitle->getRootText() );
                                break;
                        case 'rootpagenamee':
-                               $value = wfEscapeWikiText( wfUrlEncode( str_replace(
+                               $value = wfEscapeWikiText( wfUrlencode( str_replace(
                                        ' ',
                                        '_',
                                        $this->mTitle->getRootText()
@@ -3010,7 +3010,7 @@ class Parser {
                                $value = wfEscapeWikiText( $this->mTitle->getBaseText() );
                                break;
                        case 'basepagenamee':
-                               $value = wfEscapeWikiText( wfUrlEncode( str_replace(
+                               $value = wfEscapeWikiText( wfUrlencode( str_replace(
                                        ' ',
                                        '_',
                                        $this->mTitle->getBaseText()
index bd5afaf..916cfc2 100644 (file)
@@ -64,7 +64,7 @@ class ParserCache {
                global $wgRequest;
 
                // idhash seem to mean 'page id' + 'rendering hash' (r3710)
-               $pageid = $article->getID();
+               $pageid = $article->getId();
                $renderkey = (int)( $wgRequest->getVal( 'action' ) == 'render' );
 
                $key = wfMemcKey( 'pcache', 'idhash', "{$pageid}-{$renderkey}!{$hash}" );
@@ -76,7 +76,7 @@ class ParserCache {
         * @return mixed|string
         */
        protected function getOptionsKey( $article ) {
-               $pageid = $article->getID();
+               $pageid = $article->getId();
                return wfMemcKey( 'pcache', 'idoptions', "{$pageid}" );
        }
 
index d2559f7..729b9db 100644 (file)
@@ -860,7 +860,7 @@ class ParserOptions {
                                                'page' => $title->getArticleID(),
                                                'user_text' => $user->getName(),
                                                'user' => $user->getId(),
-                                               'parent_id' => $title->getLatestRevId(),
+                                               'parent_id' => $title->getLatestRevID(),
                                                'title' => $title,
                                                'content' => $content
                                        ] );
index c689979..0aa08be 100644 (file)
@@ -88,7 +88,7 @@ class ResourceLoader implements LoggerAwareInterface {
        private $logger;
 
        /** @var string JavaScript / CSS pragma to disable minification. **/
-       const FILTER_NOMIN = ' /* @nomin */ ';
+       const FILTER_NOMIN = '/*@nomin*/';
 
        /**
         * Load information stored in the database about modules.
@@ -1362,8 +1362,8 @@ MESSAGE;
         * @return string
         */
        public static function makeLoaderConditionalScript( $script ) {
-               return "(window.RLQ = window.RLQ || []).push(function () {\n" .
-                       trim( $script ) . "\n} );";
+               return '(window.RLQ=window.RLQ||[]).push(function(){' .
+                       trim( $script ) . '});';
        }
 
        /**
@@ -1379,8 +1379,8 @@ MESSAGE;
                $js = self::makeLoaderConditionalScript( $script );
                return new WrappedString(
                        Html::inlineScript( $js ),
-                       "<script>(window.RLQ = window.RLQ || []).push(function () {\n",
-                       "\n} );</script>"
+                       '<script>(window.RLQ=window.RLQ||[]).push(function(){',
+                       '});</script>'
                );
        }
 
@@ -1396,7 +1396,7 @@ MESSAGE;
                        'mw.config.set',
                        [ $configuration ],
                        ResourceLoader::inDebugMode()
-               ) . ResourceLoader::FILTER_NOMIN;
+               );
        }
 
        /**
index 43fd2db..f784d03 100644 (file)
@@ -272,7 +272,7 @@ class ResourceLoaderImage {
         */
        protected function variantize( $variantConf, ResourceLoaderContext $context ) {
                $dom = new DomDocument;
-               $dom->loadXml( file_get_contents( $this->getPath( $context ) ) );
+               $dom->loadXML( file_get_contents( $this->getPath( $context ) ) );
                $root = $dom->documentElement;
                $wrapper = $dom->createElement( 'g' );
                while ( $root->firstChild ) {
@@ -280,7 +280,7 @@ class ResourceLoaderImage {
                }
                $root->appendChild( $wrapper );
                $wrapper->setAttribute( 'fill', $variantConf['color'] );
-               return $dom->saveXml();
+               return $dom->saveXML();
        }
 
        /**
@@ -295,7 +295,7 @@ class ResourceLoaderImage {
         */
        protected function massageSvgPathdata( $svg ) {
                $dom = new DomDocument;
-               $dom->loadXml( $svg );
+               $dom->loadXML( $svg );
                foreach ( $dom->getElementsByTagName( 'path' ) as $node ) {
                        $pathData = $node->getAttribute( 'd' );
                        // Make sure there is at least one space between numbers, and that leading zero is not omitted.
@@ -305,7 +305,7 @@ class ResourceLoaderImage {
                        $pathData = preg_replace( '/([ -])0(\d)/', '$1$2', $pathData );
                        $node->setAttribute( 'd', $pathData );
                }
-               return $dom->saveXml();
+               return $dom->saveXML();
        }
 
        /**
index bf4e8a7..cea1f39 100644 (file)
@@ -54,8 +54,7 @@ class ResourceLoaderUserTokensModule extends ResourceLoaderModule {
        /**
         * Generate the JavaScript content of this module.
         *
-        * Add '@nomin' annotation to prevent the module's contents from getting
-        * cached (T84960).
+        * Add FILTER_NOMIN annotation to prevent needless minification and caching (T84960).
         *
         * @param ResourceLoaderContext $context
         * @return string
index bbdfdc3..5831b09 100644 (file)
@@ -147,7 +147,7 @@ class BotPasswordSessionProvider extends ImmutableSessionProviderWithCookie {
                }
 
                $status = $bp->getRestrictions()->check( $request );
-               if ( !$status->isOk() ) {
+               if ( !$status->isOK() ) {
                        $this->logger->info(
                                'Session "{session}": Restrictions check failed',
                                [
index 0a304a9..da7bc57 100644 (file)
@@ -197,13 +197,17 @@ final class SessionManager implements SessionManagerInterface {
                }
 
                $session = null;
+               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, [ 'id' => $id, 'idIsSafe' => true ] );
 
-               // Test this here to provide a better log message for the common case
-               // of "no such ID"
+               // If we already have the backend loaded, use it directly
+               if ( isset( $this->allSessionBackends[$id] ) ) {
+                       return $this->getSessionFromInfo( $info, $request );
+               }
+
+               // Test if the session is in storage, and if so try to load it.
                $key = wfMemcKey( 'MWSession', $id );
                if ( is_array( $this->store->get( $key ) ) ) {
-                       $create = false;
-                       $info = new SessionInfo( SessionInfo::MIN_PRIORITY, [ 'id' => $id, 'idIsSafe' => true ] );
+                       $create = false; // If loading fails, don't bother creating because it probably will fail too.
                        if ( $this->loadSessionInfoFromStore( $info, $request ) ) {
                                $session = $this->getSessionFromInfo( $info, $request );
                        }
index b80788b..3cc1d8f 100644 (file)
@@ -451,7 +451,7 @@ abstract class Skin extends ContextSource {
        }
 
        /**
-        * @return string
+        * @return string HTML
         */
        function getCategoryLinks() {
                global $wgUseCategoryBrowser;
@@ -542,25 +542,27 @@ abstract class Skin extends ContextSource {
        }
 
        /**
-        * @return string
+        * @return string HTML
         */
        function getCategories() {
                $out = $this->getOutput();
-
                $catlinks = $this->getCategoryLinks();
 
-               $classes = 'catlinks';
-
                // Check what we're showing
                $allCats = $out->getCategoryLinks();
                $showHidden = $this->getUser()->getBoolOption( 'showhiddencats' ) ||
                                                $this->getTitle()->getNamespace() == NS_CATEGORY;
 
+               $classes = [ 'catlinks' ];
                if ( empty( $allCats['normal'] ) && !( !empty( $allCats['hidden'] ) && $showHidden ) ) {
-                       $classes .= ' catlinks-allhidden';
+                       $classes[] = 'catlinks-allhidden';
                }
 
-               return "<div id='catlinks' class='$classes' data-mw='interface'>{$catlinks}</div>";
+               return Html::rawElement(
+                       'div',
+                       [ 'id' => 'catlinks', 'class' => $classes, 'data-mw' => 'interface' ],
+                       $catlinks
+               );
        }
 
        /**
index 419c4b4..92311b5 100644 (file)
@@ -650,33 +650,42 @@ class SkinTemplate extends Skin {
                                'active' => false
                        ];
                } else {
+                       $useCombinedLoginLink = $this->useCombinedLoginLink();
+                       $loginlink = $this->getUser()->isAllowed( 'createaccount' ) && $useCombinedLoginLink
+                               ? 'nav-login-createaccount'
+                               : 'pt-login';
+                       $is_signup = $request->getText( 'type' ) == 'signup';
+
+                       $login_url = [
+                               'text' => $this->msg( $loginlink )->text(),
+                               'href' => self::makeSpecialUrl( 'Userlogin', $returnto ),
+                               'active' => $title->isSpecial( 'Userlogin' )
+                                       && ( $loginlink == 'nav-login-createaccount' || !$is_signup ),
+                       ];
+                       $createaccount_url = [
+                               'text' => $this->msg( 'pt-createaccount' )->text(),
+                               'href' => self::makeSpecialUrl( 'Userlogin', "$returnto&type=signup" ),
+                               'active' => $title->isSpecial( 'Userlogin' ) && $is_signup,
+                       ];
+
                        // No need to show Talk and Contributions to anons if they can't contribute!
                        if ( User::groupHasPermission( '*', 'edit' ) ) {
+                               // Show the text "Not logged in"
+                               $personal_urls['anonuserpage'] = [
+                                       'text' => $this->msg( 'notloggedin' )->text()
+                               ];
 
-                               // Because of caching, we can't link directly to the anonymous
-                               // user page (for example [[User:127.0.0.1]]), talk page, and
-                               // contributions pages. Instead we use the special page
-                               // shortcuts (which work correctly regardless of caching). This
-                               // means we can't determine whether these links are active or
-                               // not, but since major skins (MonoBook, Vector) don't use this
-                               // information, it's not a huge loss.
-
-                               // Only show (red) link to anon user page if anon users are
-                               // allowed to create that page
-                               if ( User::groupHasPermission( '*', 'createpage' ) ) {
-                                       $personal_urls[ 'anonuserpage' ] = [
-                                               'text'   => $this->msg( 'anonuserpage' )->text(),
-                                               'href'   => self::makeSpecialUrlSubpage( 'Mypage', false ),
-                                               'active' => false
-                                       ];
-                               }
-
+                               // Because of caching, we can't link directly to the IP talk and
+                               // contributions pages. Instead we use the special page shortcuts
+                               // (which work correctly regardless of caching). This means we can't
+                               // determine whether these links are active or not, but since major
+                               // skins (MonoBook, Vector) don't use this information, it's not a
+                               // huge loss.
                                $personal_urls['anontalk'] = [
                                        'text' => $this->msg( 'anontalk' )->text(),
                                        'href' => self::makeSpecialUrlSubpage( 'Mytalk', false ),
                                        'active' => false
                                ];
-
                                $personal_urls['anoncontribs'] = [
                                        'text' => $this->msg( 'anoncontribs' )->text(),
                                        'href' => self::makeSpecialUrlSubpage( 'Mycontributions', false ),
@@ -684,21 +693,11 @@ class SkinTemplate extends Skin {
                                ];
                        }
 
-                       $is_signup = $request->getText( 'type' ) === 'signup';
-
-                       if ( $this->getUser()->isAllowed( 'createaccount' ) && !( $this->useCombinedLoginLink() ) ) {
-                               $personal_urls[ 'createaccount' ] = [
-                                       'text' => $this->msg( 'pt-createaccount' )->text(),
-                                       'href' => self::makeSpecialUrl( 'Userlogin', "$returnto&type=signup" ),
-                                       'active' => $title->isSpecial( 'Userlogin' ) && $is_signup,
-                               ];
+                       if ( $this->getUser()->isAllowed( 'createaccount' ) && !$useCombinedLoginLink ) {
+                               $personal_urls['createaccount'] = $createaccount_url;
                        }
 
-                       $personal_urls['login'] = [
-                               'text' => $this->msg( 'pt-login' )->text(),
-                               'href' => self::makeSpecialUrl( 'Userlogin', $returnto ),
-                               'active' => $title->isSpecial( 'Userlogin' ) && !$is_signup,
-                       ];
+                       $personal_urls['login'] = $login_url;
                }
 
                Hooks::run( 'PersonalUrls', [ &$personal_urls, &$title, $this ] );
index 2d0d020..5adc315 100644 (file)
@@ -332,7 +332,7 @@ class SpecialChangePassword extends FormSpecialPage {
                $dbw->update(
                        'user',
                        [ 'user_password_expires' => $dbw->timestampOrNull( $newExpire ) ],
-                       [ 'user_id' => $user->getID() ],
+                       [ 'user_id' => $user->getId() ],
                        __METHOD__
                );
        }
index 5a351a7..7b8aa4c 100644 (file)
@@ -85,7 +85,7 @@ class SpecialContributions extends IncludableSpecialPage {
 
                        return;
                }
-               $id = $userObj->getID();
+               $id = $userObj->getId();
 
                if ( $this->opts['contribs'] != 'newbie' ) {
                        $target = $nt->getText();
index b790fdf..6256bbf 100644 (file)
@@ -470,7 +470,7 @@ class DeletedContributionsPage extends SpecialPage {
                }
                $links = '';
                $nt = $userObj->getUserPage();
-               $id = $userObj->getID();
+               $id = $userObj->getId();
                $talk = $nt->getTalkPage();
                if ( $talk ) {
                        # Talk page link
index e76988d..9c1f224 100644 (file)
@@ -307,32 +307,25 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
        private function getWatchlist() {
                $list = [];
 
-               $index = $this->getRequest()->wasPosted() ? DB_MASTER : DB_SLAVE;
-               $dbr = wfGetDB( $index );
-
-               $res = $dbr->select(
-                       'watchlist',
-                       [
-                               'wl_namespace', 'wl_title'
-                       ], [
-                               'wl_user' => $this->getUser()->getId(),
-                       ],
-                       __METHOD__
+               $watchedItems = WatchedItemStore::getDefaultInstance()->getWatchedItemsForUser(
+                       $this->getUser(),
+                       [ 'forWrite' => $this->getRequest()->wasPosted() ]
                );
 
-               if ( $res->numRows() > 0 ) {
+               if ( $watchedItems ) {
                        /** @var Title[] $titles */
                        $titles = [];
-                       foreach ( $res as $row ) {
-                               $title = Title::makeTitleSafe( $row->wl_namespace, $row->wl_title );
+                       foreach ( $watchedItems as $watchedItem ) {
+                               $namespace = $watchedItem->getLinkTarget()->getNamespace();
+                               $dbKey = $watchedItem->getLinkTarget()->getDBkey();
+                               $title = Title::makeTitleSafe( $namespace, $dbKey );
 
-                               if ( $this->checkTitle( $title, $row->wl_namespace, $row->wl_title )
+                               if ( $this->checkTitle( $title, $namespace, $dbKey )
                                        && !$title->isTalkPage()
                                ) {
                                        $titles[] = $title;
                                }
                        }
-                       $res->free();
 
                        GenderCache::singleton()->doTitlesArray( $titles );
 
@@ -421,7 +414,7 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
                        $action = $title ? 'cleaning up' : 'deleting';
                        wfDebug( "User {$user->getName()} has broken watchlist item ns($namespace):$dbKey, $action.\n" );
 
-                       $store->removeWatch( $user, new TitleValue( $namespace, $dbKey ) );
+                       $store->removeWatch( $user, new TitleValue( (int)$namespace, $dbKey ) );
 
                        // Can't just do an UPDATE instead of DELETE/INSERT due to unique index
                        if ( $title ) {
index 3528be0..fb1943f 100644 (file)
@@ -154,6 +154,10 @@ class SpecialEmailUser extends UnlistedSpecialPage {
 
                $this->mTargetObj = $ret;
 
+               // Set the 'relevant user' in the skin, so it displays links like Contributions,
+               // User logs, UserRights, etc.
+               $this->getSkin()->setRelevantUser( $this->mTargetObj );
+
                $context = new DerivativeContext( $this->getContext() );
                $context->setTitle( $this->getPageTitle() ); // Remove subpage
                $form = new HTMLForm( $this->getFormFields(), $context );
index 35861e3..68960d3 100644 (file)
@@ -79,7 +79,7 @@ class FileDuplicateSearchPage extends QueryPage {
                }
                $html[] = $this->closeList();
 
-               $this->getOutput()->addHtml( implode( "\n", $html ) );
+               $this->getOutput()->addHTML( implode( "\n", $html ) );
        }
 
        public function getQueryInfo() {
@@ -122,7 +122,7 @@ class FileDuplicateSearchPage extends QueryPage {
                        ],
                ];
                $hiddenFields = [
-                       'title' => $this->getPageTitle()->getPrefixedDBKey(),
+                       'title' => $this->getPageTitle()->getPrefixedDBkey(),
                ];
                $htmlForm = HTMLForm::factory( 'inline', $formFields, $this->getContext() );
                $htmlForm->addHiddenFields( $hiddenFields );
index e20382c..37dba53 100644 (file)
@@ -168,12 +168,12 @@ class SpecialJavaScriptTest extends SpecialPage {
 </div>
 HTML;
 
-               $out->addHtml( $this->getSummaryHtml() . $baseHtml );
+               $out->addHTML( $this->getSummaryHtml() . $baseHtml );
 
                // The testrunner configures QUnit and essentially depends on it. However, test suites
                // are reusable in environments that preload QUnit (or a compatibility interface to
                // another framework). Therefore we have to load it ourselves.
-               $out->addHtml( ResourceLoader::makeInlineScript(
+               $out->addHTML( ResourceLoader::makeInlineScript(
                        Xml::encodeJsCall( 'mw.loader.using', [
                                [ 'jquery.qunit', 'jquery.qunit.completenessTest' ],
                                new XmlJsCode(
index ed7e954..49fa417 100644 (file)
@@ -96,12 +96,12 @@ class ListDuplicatedFilesPage extends QueryPage {
                // Future version might include a list of the first 5 duplicates
                // perhaps separated by an "↔".
                $image1 = Title::makeTitle( $result->namespace, $result->title );
-               $dupeSearch = SpecialPage::getTitleFor( 'FileDuplicateSearch', $image1->getDBKey() );
+               $dupeSearch = SpecialPage::getTitleFor( 'FileDuplicateSearch', $image1->getDBkey() );
 
                $msg = $this->msg( 'listduplicatedfiles-entry' )
                        ->params( $image1->getText() )
                        ->numParams( $result->value - 1 )
-                       ->params( $dupeSearch->getPrefixedDBKey() );
+                       ->params( $dupeSearch->getPrefixedDBkey() );
 
                return $msg->parse();
        }
index 16471fe..6c856e9 100644 (file)
@@ -52,6 +52,8 @@ class SpecialListFiles extends IncludableSpecialPage {
                if ( $this->including() ) {
                        $out->addParserOutputContent( $pager->getBodyOutput() );
                } else {
+                       $user = $pager->getRelevantUser();
+                       $this->getSkin()->setRelevantUser( $user );
                        $pager->getForm();
                        $out->addParserOutputContent( $pager->getFullOutput() );
                }
@@ -91,6 +93,13 @@ class ImageListPager extends TablePager {
 
        protected $mUserName = null;
 
+       /**
+        * The relevant user
+        *
+        * @var User|null
+        */
+       protected $mUser = null;
+
        protected $mSearch = '';
 
        protected $mIncluding = false;
@@ -108,20 +117,18 @@ class ImageListPager extends TablePager {
 
                if ( $userName !== null && $userName !== '' ) {
                        $nt = Title::newFromText( $userName, NS_USER );
-                       $user = User::newFromName( $userName, false );
-                       if ( !is_null( $nt ) ) {
+                       if ( is_null( $nt ) ) {
+                               $this->outputUserDoesNotExist( $userName );
+                       } else {
                                $this->mUserName = $nt->getText();
+                               $user = User::newFromName( $this->mUserName, false );
+                               if ( $user ) {
+                                       $this->mUser = $user;
+                               }
+                               if ( !$user || ( $user->isAnon() && !User::isIP( $user->getName() ) ) ) {
+                                       $this->outputUserDoesNotExist( $userName );
+                               }
                        }
-                       if ( !$user || ( $user->isAnon() && !User::isIP( $user->getName() ) ) ) {
-                               $this->getOutput()->wrapWikiMsg(
-                                       "<div class=\"mw-userpage-userdoesnotexist error\">\n$1\n</div>",
-                                       [
-                                               'listfiles-userdoesnotexist',
-                                               wfEscapeWikiText( $userName ),
-                                       ]
-                               );
-                       }
-
                }
 
                if ( $search !== '' && !$this->getConfig()->get( 'MiserMode' ) ) {
@@ -149,6 +156,30 @@ class ImageListPager extends TablePager {
                parent::__construct( $context );
        }
 
+       /**
+        * Get the user relevant to the ImageList
+        *
+        * @return User|null
+        */
+       function getRelevantUser() {
+               return $this->mUser;
+       }
+
+       /**
+        * Add a message to the output stating that the user doesn't exist
+        *
+        * @param string $userName Unescaped user name
+        */
+       protected function outputUserDoesNotExist( $userName ) {
+               $this->getOutput()->wrapWikiMsg(
+                       "<div class=\"mw-userpage-userdoesnotexist error\">\n$1\n</div>",
+                       [
+                               'listfiles-userdoesnotexist',
+                               wfEscapeWikiText( $userName ),
+                       ]
+               );
+       }
+
        /**
         * Build the where clause of the query.
         *
@@ -482,7 +513,7 @@ class ImageListPager extends TablePager {
                                                htmlspecialchars( $filePage->getText() )
                                        );
                                        $download = Xml::element( 'a',
-                                               [ 'href' => wfLocalFile( $filePage )->getURL() ],
+                                               [ 'href' => wfLocalFile( $filePage )->getUrl() ],
                                                $imgfile
                                        );
                                        $download = $this->msg( 'parentheses' )->rawParams( $download )->escaped();
index da31f00..7eb3757 100644 (file)
@@ -388,7 +388,7 @@ class UsersPager extends AlphabeticPager {
         * @return string
         */
        protected static function buildGroupLink( $group, $username ) {
-               return User::makeGroupLinkHtml(
+               return User::makeGroupLinkHTML(
                        $group,
                        User::getGroupMember( $group, $username )
                );
index ed12e04..8ba90a6 100644 (file)
@@ -154,7 +154,7 @@ class MediaStatisticsPage extends QueryPage {
         * Output closing </table>
         */
        protected function outputTableEnd() {
-               $this->getOutput()->addHtml( Html::closeElement( 'table' ) );
+               $this->getOutput()->addHTML( Html::closeElement( 'table' ) );
                $this->getOutput()->addWikiText(
                                $this->msg( 'mediastatistics-bytespertype' )
                                        ->numParams( $this->totalPerType )
index 9e28908..629a508 100644 (file)
@@ -196,7 +196,7 @@ class NewFilesPager extends ReverseChronologicalPager {
                $user = User::newFromId( $row->img_user );
 
                $title = Title::makeTitle( NS_FILE, $name );
-               $ul = Linker::link( $user->getUserpage(), $user->getName() );
+               $ul = Linker::link( $user->getUserPage(), $user->getName() );
                $time = $this->getLanguage()->userTimeAndDate( $row->img_timestamp, $this->getUser() );
 
                $this->gallery->add(
index f1b231d..ab29d13 100644 (file)
@@ -265,11 +265,11 @@ class SpecialNewpages extends IncludableSpecialPage {
                );
                $htmlForm->setMethod( 'get' );
 
-               $out->addHtml( Xml::fieldset( $this->msg( 'newpages' )->text() ) );
+               $out->addHTML( Xml::fieldset( $this->msg( 'newpages' )->text() ) );
 
                $htmlForm->show();
 
-               $out->addHtml(
+               $out->addHTML(
                        Html::rawElement(
                                'div',
                                null,
index 44f31a5..c3ed91f 100644 (file)
@@ -218,7 +218,7 @@ class SpecialPasswordReset extends FormSpecialPage {
 
                $firstUser = $users[0];
 
-               if ( !$firstUser instanceof User || !$firstUser->getID() ) {
+               if ( !$firstUser instanceof User || !$firstUser->getId() ) {
                        // Don't parse username as wikitext (bug 65501)
                        return [ [ 'nosuchuser', wfEscapeWikiText( $data['Username'] ) ] ];
                }
index d4c1004..efb1748 100644 (file)
@@ -206,7 +206,7 @@ class SpecialRandomInCategory extends FormSpecialPage {
                        'tables' => [ 'categorylinks', 'page' ],
                        'fields' => [ 'page_title', 'page_namespace' ],
                        'conds' => array_merge( [
-                               'cl_to' => $this->category->getDBKey(),
+                               'cl_to' => $this->category->getDBkey(),
                        ], $this->extra ),
                        'options' => [
                                'ORDER BY' => 'cl_timestamp ' . $dir,
index 7be95fa..de77380 100644 (file)
@@ -366,7 +366,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                $rclistOutput .= $list->endRecentChangesList();
 
                if ( $rows->numRows() === 0 ) {
-                       $this->getOutput()->addHtml(
+                       $this->getOutput()->addHTML(
                                '<div class="mw-changeslist-empty">' .
                                $this->msg( 'recentchanges-noresult' )->parse() .
                                '</div>'
@@ -399,7 +399,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                $extraOpts = $this->getExtraOptions( $opts );
                $extraOptsCount = count( $extraOpts );
                $count = 0;
-               $submit = ' ' . Xml::submitbutton( $this->msg( 'recentchanges-submit' )->text() );
+               $submit = ' ' . Xml::submitButton( $this->msg( 'recentchanges-submit' )->text() );
 
                $out = Xml::openElement( 'table', [ 'class' => 'mw-recentchanges-table' ] );
                foreach ( $extraOpts as $name => $optionRow ) {
index a259ac2..57a3d92 100644 (file)
@@ -57,7 +57,7 @@ class SpecialRecentChangesLinked extends SpecialRecentChanges {
                $outputPage = $this->getOutput();
                $title = Title::newFromText( $target );
                if ( !$title || $title->isExternal() ) {
-                       $outputPage->addHtml( '<div class="errorbox">' . $this->msg( 'allpagesbadtitle' )
+                       $outputPage->addHTML( '<div class="errorbox">' . $this->msg( 'allpagesbadtitle' )
                                        ->parse() . '</div>' );
 
                        return false;
index 206e400..c0ed4c9 100644 (file)
@@ -99,7 +99,7 @@ class SpecialRedirect extends FormSpecialPage {
                        return null;
                }
                // Default behavior: Use the direct link to the file.
-               $url = $file->getURL();
+               $url = $file->getUrl();
                $request = $this->getRequest();
                $width = $request->getInt( 'width', -1 );
                $height = $request->getInt( 'height', -1 );
@@ -110,7 +110,7 @@ class SpecialRedirect extends FormSpecialPage {
                        // ... and we can
                        if ( $mto && !$mto->isError() ) {
                                // ... change the URL to point to a thumbnail.
-                               $url = $mto->getURL();
+                               $url = $mto->getUrl();
                        }
                }
 
index 9bb5d95..dfab8d4 100644 (file)
@@ -299,7 +299,7 @@ class SpecialSearch extends SpecialPage {
                }
 
                // start rendering the page
-               $out->addHtml(
+               $out->addHTML(
                        Xml::openElement(
                                'form',
                                [
@@ -323,7 +323,7 @@ class SpecialSearch extends SpecialPage {
                $num = $titleMatchesNum + $textMatchesNum;
                $totalRes = $numTitleMatches + $numTextMatches;
 
-               $out->addHtml(
+               $out->addHTML(
                        # This is an awful awful ID name. It's not a table, but we
                        # named it poorly from when this was a table so now we're
                        # stuck with it
@@ -342,7 +342,7 @@ class SpecialSearch extends SpecialPage {
                        return;
                }
 
-               $out->addHtml( "<div class='searchresults'>" );
+               $out->addHTML( "<div class='searchresults'>" );
 
                // prev/next links
                $prevnext = null;
@@ -429,7 +429,7 @@ class SpecialSearch extends SpecialPage {
                        $out->addHTML( "<p class='mw-search-pager-bottom'>{$prevnext}</p>\n" );
                }
 
-               $out->addHtml( "</div>" );
+               $out->addHTML( "</div>" );
 
                Hooks::run( 'SpecialSearchResultsAppend', [ $this, $out, $term ] );
 
@@ -551,7 +551,7 @@ class SpecialSearch extends SpecialPage {
                ) {
                        // invalid title
                        // preserve the paragraph for margins etc...
-                       $this->getOutput()->addHtml( '<p></p>' );
+                       $this->getOutput()->addHTML( '<p></p>' );
 
                        return;
                }
@@ -580,7 +580,7 @@ class SpecialSearch extends SpecialPage {
                        $this->getOutput()->wrapWikiMsg( "<p class=\"$linkClass\">\n$1</p>", $params );
                } else {
                        // preserve the paragraph for margins etc...
-                       $this->getOutput()->addHtml( '<p></p>' );
+                       $this->getOutput()->addHTML( '<p></p>' );
                }
        }
 
index 2ff2122..e79fd6e 100644 (file)
@@ -297,7 +297,7 @@ class SpecialTags extends SpecialPage {
 
                        $headerText = $this->msg( 'tags-create-warnings-above', $tag,
                                count( $status->getWarningsArray() ) )->parseAsBlock() .
-                               $out->parse( $status->getWikitext() ) .
+                               $out->parse( $status->getWikiText() ) .
                                $this->msg( 'tags-create-warnings-below' )->parseAsBlock();
 
                        $subform = new HTMLForm( $fields, $this->getContext() );
@@ -311,7 +311,7 @@ class SpecialTags extends SpecialPage {
                        $out->addBacklinkSubtitle( $this->getPageTitle() );
                        return true;
                } else {
-                       $out->addWikiText( "<div class=\"error\">\n" . $status->getWikitext() .
+                       $out->addWikiText( "<div class=\"error\">\n" . $status->getWikiText() .
                                "\n</div>" );
                        return false;
                }
index d14e02f..cc7a091 100644 (file)
@@ -218,7 +218,7 @@ class SpecialUnblock extends SpecialPage {
                if ( $block->mHideName ) {
                        # Something is deeply FUBAR if this is not a User object, but who knows?
                        $id = $block->getTarget() instanceof User
-                               ? $block->getTarget()->getID()
+                               ? $block->getTarget()->getId()
                                : User::idFromName( $block->getTarget() );
 
                        RevisionDeleteUser::unsuppressUserName( $block->getTarget(), $id );
@@ -229,7 +229,7 @@ class SpecialUnblock extends SpecialPage {
                        $page = Title::makeTitle( NS_USER, '#' . $block->getId() );
                } else {
                        $page = $block->getTarget() instanceof User
-                               ? $block->getTarget()->getUserpage()
+                               ? $block->getTarget()->getUserPage()
                                : Title::makeTitle( NS_USER, $block->getTarget() );
                }
 
index f2da81f..555fe5c 100644 (file)
@@ -306,6 +306,8 @@ class SpecialUploadStash extends UnlistedSpecialPage {
                if ( $size > self::MAX_SERVE_BYTES ) {
                        throw new SpecialUploadStashTooLargeException();
                }
+               // Cancel output buffering and gzipping if set
+               wfResetOutputBuffers();
                self::outputFileHeaders( $contentType, $size );
                print $content;
 
@@ -367,13 +369,14 @@ class SpecialUploadStash extends UnlistedSpecialPage {
 
                $context = new DerivativeContext( $this->getContext() );
                $context->setTitle( $this->getPageTitle() ); // Remove subpage
-               $form = new HTMLForm( [
+               $form = HTMLForm::factory( 'ooui', [
                        'Clear' => [
                                'type' => 'hidden',
                                'default' => true,
                                'name' => 'clear',
                        ]
                ], $context, 'clearStashedUploads' );
+               $form->setSubmitDestructive();
                $form->setSubmitCallback( [ __CLASS__, 'tryClearStashedUploads' ] );
                $form->setSubmitTextMsg( 'uploadstash-clear' );
 
@@ -389,17 +392,27 @@ class SpecialUploadStash extends UnlistedSpecialPage {
                        sort( $files );
                        $fileListItemsHtml = '';
                        foreach ( $files as $file ) {
-                               // TODO: Use Linker::link or even construct the list in plain wikitext
-                               $fileListItemsHtml .= Html::rawElement( 'li', [],
-                                       Html::element( 'a', [ 'href' =>
-                                               $this->getPageTitle( "file/$file" )->getLocalURL() ], $file )
-                               );
+                               $itemHtml = Linker::linkKnown( $this->getPageTitle( "file/$file" ), htmlspecialchars( $file ) );
+                               try {
+                                       $fileObj = $this->stash->getFile( $file );
+                                       $thumb = $fileObj->generateThumbName( $file, [ 'width' => 220 ] );
+                                       $itemHtml .=
+                                               $this->msg( 'word-separator' )->escaped() .
+                                               $this->msg( 'parentheses' )->rawParams(
+                                                       Linker::linkKnown(
+                                                               $this->getPageTitle( "thumb/$file/$thumb" ),
+                                                               $this->msg( 'uploadstash-thumbnail' )->escaped()
+                                                       )
+                                               )->escaped();
+                               } catch ( Exception $e ) {
+                               }
+                               $fileListItemsHtml .= Html::rawElement( 'li', [], $itemHtml );
                        }
-                       $this->getOutput()->addHtml( Html::rawElement( 'ul', [], $fileListItemsHtml ) );
+                       $this->getOutput()->addHTML( Html::rawElement( 'ul', [], $fileListItemsHtml ) );
                        $form->displayForm( $formResult );
-                       $this->getOutput()->addHtml( Html::rawElement( 'p', [], $refreshHtml ) );
+                       $this->getOutput()->addHTML( Html::rawElement( 'p', [], $refreshHtml ) );
                } else {
-                       $this->getOutput()->addHtml( Html::rawElement( 'p', [],
+                       $this->getOutput()->addHTML( Html::rawElement( 'p', [],
                                Html::element( 'span', [], $this->msg( 'uploadstash-nofiles' )->text() )
                                . ' '
                                . $refreshHtml
index 8d45468..49d3345 100644 (file)
@@ -275,7 +275,7 @@ class LoginForm extends SpecialPage {
         */
        public function execute( $subPage ) {
                // Make sure session is persisted
-               $session = MediaWiki\Session\SessionManager::getGlobalSession();
+               $session = SessionManager::getGlobalSession();
                $session->persist();
 
                $this->load();
@@ -792,7 +792,7 @@ class LoginForm extends SpecialPage {
                }
 
                $isAutoCreated = false;
-               if ( $u->getID() == 0 ) {
+               if ( $u->getId() == 0 ) {
                        $status = $this->attemptAutoCreate( $u );
                        if ( $status !== self::SUCCESS ) {
                                return $status;
@@ -1716,7 +1716,7 @@ class LoginForm extends SpecialPage {
                        $wgCookieSecure = false;
                }
 
-               MediaWiki\Session\SessionManager::getGlobalSession()->resetId();
+               SessionManager::getGlobalSession()->resetId();
        }
 
        /**
index 29261f3..740f2f7 100644 (file)
@@ -119,7 +119,7 @@ class UserrightsPage extends SpecialPage {
                }
 
                $fetchedStatus = $this->fetchUser( $this->mTarget );
-               if ( $fetchedStatus->isOk() ) {
+               if ( $fetchedStatus->isOK() ) {
                        $this->mFetchedUser = $fetchedStatus->value;
                        if ( $this->mFetchedUser instanceof User ) {
                                // Set the 'relevant user' in the skin, so it displays links like Contributions,
@@ -627,7 +627,7 @@ class UserrightsPage extends SpecialPage {
         * @return string
         */
        private static function buildGroupLink( $group ) {
-               return User::makeGroupLinkHtml( $group, User::getGroupName( $group ) );
+               return User::makeGroupLinkHTML( $group, User::getGroupName( $group ) );
        }
 
        /**
@@ -637,7 +637,7 @@ class UserrightsPage extends SpecialPage {
         * @return string
         */
        private static function buildGroupMemberLink( $group ) {
-               return User::makeGroupLinkHtml( $group, User::getGroupMember( $group ) );
+               return User::makeGroupLinkHTML( $group, User::getGroupMember( $group ) );
        }
 
        /**
index 5b452a6..ce5cbeb 100644 (file)
@@ -132,7 +132,7 @@ class SpecialVersion extends SpecialPage {
                                        $this->softwareInformation() .
                                        $this->getEntryPointInfo()
                                );
-                               $out->addHtml(
+                               $out->addHTML(
                                        $this->getSkinCredits() .
                                        $this->getExtensionCredits() .
                                        $this->getExternalLibraries() .
index b1c3f16..baa55f0 100644 (file)
@@ -160,7 +160,7 @@ class SpecialWhatLinksHere extends IncludableSpecialPage {
                        ];
                        $on['rd_namespace'] = $target->getNamespace();
                        // Inner LIMIT is 2X in case of stale backlinks with wrong namespaces
-                       $subQuery = $dbr->selectSqlText(
+                       $subQuery = $dbr->selectSQLText(
                                [ $table, 'redirect', 'page' ],
                                [ $fromCol, 'rd_from' ],
                                $conds[$table],
index fb25249..9d7b294 100644 (file)
@@ -241,12 +241,14 @@ abstract class UploadBase {
         */
        protected function setTempFile( $tempPath, $fileSize = null ) {
                $this->mTempPath = $tempPath;
+               $this->mFileSize = $fileSize ?: null;
                if ( strlen( $this->mTempPath ) && file_exists( $this->mTempPath ) ) {
                        $this->tempFileObj = new TempFSFile( $this->mTempPath );
-                       $this->mFileSize = $fileSize ?: filesize( $this->mTempPath );
+                       if ( !$fileSize ) {
+                               $this->mFileSize = filesize( $this->mTempPath );
+                       }
                } else {
                        $this->tempFileObj = null;
-                       $this->mFileSize = null;
                }
        }
 
index ebb4ebb..0323b68 100644 (file)
@@ -142,7 +142,7 @@ class UploadFromChunks extends UploadFromFile {
                $tStart = microtime( true );
                $status = $this->repo->concatenate( $fileList, $tmpPath, FileRepo::DELETE_SOURCE );
                $tAmount = microtime( true ) - $tStart;
-               if ( !$status->isOk() ) {
+               if ( !$status->isOK() ) {
                        return $status;
                }
 
@@ -234,7 +234,7 @@ class UploadFromChunks extends UploadFromFile {
                wfDebug( __METHOD__ . " update chunk status for {$this->mFileKey} offset:" .
                        $this->getOffset() . ' inx:' . $this->getChunkIndex() . "\n" );
 
-               $dbw = $this->repo->getMasterDb();
+               $dbw = $this->repo->getMasterDB();
                // Use a quick transaction since we will upload the full temp file into shared
                // storage, which takes time for large files. We don't want to hold locks then.
                $dbw->update(
@@ -256,7 +256,7 @@ class UploadFromChunks extends UploadFromFile {
        private function getChunkStatus() {
                // get Master db to avoid race conditions.
                // Otherwise, if chunk upload time < replag there will be spurious errors
-               $dbw = $this->repo->getMasterDb();
+               $dbw = $this->repo->getMasterDB();
                $row = $dbw->selectRow(
                        'uploadstash',
                        [
index 342bd79..6639c34 100644 (file)
@@ -286,7 +286,7 @@ class UploadFromUrl extends UploadBase {
                }
 
                wfDebugLog( 'fileupload', $status );
-               if ( $status->isOk() ) {
+               if ( $status->isOK() ) {
                        wfDebugLog( 'fileupload', 'Download by URL completed successfuly.' );
                } else {
                        wfDebugLog(
index d5e573b..c171ded 100644 (file)
@@ -276,7 +276,7 @@ class UploadStash {
 
                // insert the file metadata into the db.
                wfDebug( __METHOD__ . " inserting $stashPath under $key\n" );
-               $dbw = $this->repo->getMasterDb();
+               $dbw = $this->repo->getMasterDB();
 
                $serializedFileProps = serialize( $fileProps );
                if ( strlen( $serializedFileProps ) > self::MAX_US_PROPS_SIZE ) {
@@ -336,7 +336,7 @@ class UploadStash {
                }
 
                wfDebug( __METHOD__ . ' clearing all rows for user ' . $this->userId . "\n" );
-               $dbw = $this->repo->getMasterDb();
+               $dbw = $this->repo->getMasterDB();
                $dbw->delete(
                        'uploadstash',
                        [ 'us_user' => $this->userId ],
@@ -364,7 +364,7 @@ class UploadStash {
                                . ' No user is logged in, files must belong to users' );
                }
 
-               $dbw = $this->repo->getMasterDb();
+               $dbw = $this->repo->getMasterDB();
 
                // this is a cheap query. it runs on the master so that this function
                // still works when there's lag. It won't be called all that often.
@@ -399,7 +399,7 @@ class UploadStash {
                // Ensure we have the UploadStashFile loaded for this key
                $this->getFile( $key, true );
 
-               $dbw = $this->repo->getMasterDb();
+               $dbw = $this->repo->getMasterDB();
 
                $dbw->delete(
                        'uploadstash',
@@ -430,7 +430,7 @@ class UploadStash {
                                . ' No user is logged in, files must belong to users' );
                }
 
-               $dbr = $this->repo->getSlaveDb();
+               $dbr = $this->repo->getSlaveDB();
                $res = $dbr->select(
                        'uploadstash',
                        'us_key',
@@ -507,9 +507,9 @@ class UploadStash {
                $dbr = null;
                if ( $readFromDB === DB_MASTER ) {
                        // sometimes reading from the master is necessary, if there's replication lag.
-                       $dbr = $this->repo->getMasterDb();
+                       $dbr = $this->repo->getMasterDB();
                } else {
-                       $dbr = $this->repo->getSlaveDb();
+                       $dbr = $this->repo->getSlaveDB();
                }
 
                $row = $dbr->selectRow(
index c758f26..7346a90 100644 (file)
@@ -429,7 +429,7 @@ class BotPassword implements IDBAccessObject {
 
                // Check restrictions
                $status = $bp->getRestrictions()->check( $request );
-               if ( !$status->isOk() ) {
+               if ( !$status->isOK() ) {
                        return Status::newFatal( 'botpasswords-restriction-failed' );
                }
 
index 14548f4..7a70773 100644 (file)
@@ -32,7 +32,7 @@ use MediaWiki\Session\Token;
  *
  * @since 1.27
  */
-class LoggedOutEditToken extends MediaWiki\Session\Token {
+class LoggedOutEditToken extends Token {
        public function __construct() {
                parent::__construct( '', '', false );
        }
index 09124bf..027edf9 100644 (file)
@@ -200,6 +200,7 @@ class User implements IDBAccessObject {
 
        /** Cache variables */
        // @{
+       /** @var int */
        public $mId;
        /** @var string */
        public $mName;
@@ -2052,7 +2053,8 @@ class User implements IDBAccessObject {
                        // Don't load if this was initialized from an ID
                        $this->load();
                }
-               return $this->mId;
+
+               return (int)$this->mId;
        }
 
        /**
@@ -2162,7 +2164,7 @@ class User implements IDBAccessObject {
                // Get the "last viewed rev" timestamp from the oldest message notification
                $timestamp = $dbr->selectField( 'user_newtalk',
                        'MIN(user_last_timestamp)',
-                       $this->isAnon() ? [ 'user_ip' => $this->getName() ] : [ 'user_id' => $this->getID() ],
+                       $this->isAnon() ? [ 'user_ip' => $this->getName() ] : [ 'user_id' => $this->getId() ],
                        __METHOD__ );
                $rev = $timestamp ? Revision::loadFromTimestamp( $dbr, $utp, $timestamp ) : null;
                return [ [ 'wiki' => wfWikiID(), 'link' => $utp->getLocalURL(), 'rev' => $rev ] ];
@@ -3268,7 +3270,7 @@ class User implements IDBAccessObject {
                if ( $this->getId() ) {
                        $dbw->insert( 'user_groups',
                                [
-                                       'ug_user' => $this->getID(),
+                                       'ug_user' => $this->getId(),
                                        'ug_group' => $group,
                                ],
                                __METHOD__,
@@ -3306,14 +3308,14 @@ class User implements IDBAccessObject {
                $dbw = wfGetDB( DB_MASTER );
                $dbw->delete( 'user_groups',
                        [
-                               'ug_user' => $this->getID(),
+                               'ug_user' => $this->getId(),
                                'ug_group' => $group,
                        ], __METHOD__
                );
                // Remember that the user was in this group
                $dbw->insert( 'user_former_groups',
                        [
-                               'ufg_user' => $this->getID(),
+                               'ufg_user' => $this->getId(),
                                'ufg_group' => $group,
                        ],
                        __METHOD__,
@@ -3338,7 +3340,7 @@ class User implements IDBAccessObject {
         * @return bool
         */
        public function isLoggedIn() {
-               return $this->getID() != 0;
+               return $this->getId() != 0;
        }
 
        /**
@@ -3989,6 +3991,7 @@ class User implements IDBAccessObject {
                if ( $this->isLoggedIn() && $this->isBlocked() ) {
                        return $this->spreadBlock();
                }
+
                return false;
        }
 
index a14a376..93ce8eb 100644 (file)
@@ -4464,7 +4464,7 @@ class Language {
         * @return array Array of message keys (strings)
         */
        public static function getMessageKeysFor( $code ) {
-               return self::getLocalisationCache()->getSubItemList( $code, 'messages' );
+               return self::getLocalisationCache()->getSubitemList( $code, 'messages' );
        }
 
        /**
index 7a46aac..6c49aa4 100644 (file)
@@ -180,7 +180,7 @@ class Names {
                'gv' => 'Gaelg',                # Manx
                'ha' => 'Hausa',        # Hausa
                'hak' => '客家語/Hak-kâ-ngî',      # Hakka
-               'haw' => 'Hawai`i',             # Hawaiian
+               'haw' => 'Hawaiʻi',            # Hawaiian
                'he' => 'עברית',   # Hebrew
                'hi' => 'हिन्दी',   # Hindi
                'hif' => 'Fiji Hindi',  # Fijian Hindi (multiple scripts - defaults to Latin)
index 358fa89..1370b5a 100644 (file)
        "moredotdotdot": "المزيد...",
        "morenotlisted": "هذه القائمة غير مكتملة.",
        "mypage": "صفحة",
-       "anonuserpage": "مستخدم غير معروف",
        "mytalk": "نقاش",
        "anontalk": "نقاش",
        "navigation": "تصفح",
index 876d222..f547a60 100644 (file)
        "nocookieslogin": "{{SITENAME}} usa «cookies» pa identificar a los usuarios.\nTien les «cookies» desactivaes.\nPor favor activeles y vuelva a intentalo.",
        "nocookiesfornew": "La cuenta nun se creó porque nun pudimos confirmar l'orixe.\nComprueba que tienes activaes les «cookies», recarga esta páxina y vuelvi a intentalo.",
        "noname": "Nun conseñasti un nome d'usuariu válidu.",
-       "loginsuccesstitle": "Aniciu de sesión correutu",
+       "loginsuccesstitle": "Identificáu",
        "loginsuccess": "'''Aniciasti sesión en {{SITENAME}} como «$1».'''",
        "nosuchuser": "Nun hai nengún usuariu col nome «$1».\nLos nomes d'usuariu distinguen mayúscules y minúscules.\nMira que tea bien escritu o [[Special:UserLogin/signup|crea una cuenta nueva]].",
        "nosuchusershort": "Nun hai nengún usuariu col nome «$1».\nMira que tea bien escritu.",
        "createaccount-title": "Creación de cuenta pa {{SITENAME}}",
        "createaccount-text": "Daquién creó una cuenta cola to direición de corréu electrónicu en {{SITENAME}} ($4) col nome «$2», y cola contraseña «$3».\nAgora tendríes d'aniciar sesión y camudar la contraseña.\n\nPues escaecer esti mensaxe si esta cuenta creóse por error.",
        "login-throttled": "Ficisti demasiaos intentos d'aniciu de sesión recientes.\nPor favor espera $1 enantes d'intentalo otra vuelta.",
-       "login-abort-generic": "Falló la identificación - Encaboxao",
+       "login-abort-generic": "Falló l'aniciu de sesión - Encaboxao",
        "login-migrated-generic": "La to cuenta migróse ya'l to nome d'usuariu yá nun esiste nesta wiki.",
        "loginlanguagelabel": "Llingua: $1",
        "suspicious-userlogout": "La to solicitú de zarrar sesión refugose porque paez qu'unvióla un restolador frañíu o un proxy de caché.",
        "newpassword": "Contraseña nueva:",
        "retypenew": "Vuelvi a escribir la contraseña nueva:",
        "resetpass_submit": "Configurar la contraseña y aniciar sesión",
-       "changepassword-success": "¡Camudóse la contraseña correutamente!",
+       "changepassword-success": "Camudóse la contraseña.",
        "changepassword-throttled": "Ficisti demasiaos intentos d'aniciu de sesión recientes.\nPor favor espera $1 enantes d'intentalo otra vuelta.",
        "botpasswords": "Contraseñes de bots",
        "botpasswords-summary": "Les <em>contraseñes de bot</em> permiten l'accesu a una cuenta d'usuariu por aciu de la API sin usar les credenciales d'accesu de la cuenta principal. Los permisos d'usuariu disponibles al aniciar sesión con una contraseña de bot puen tar torgaos.\n\nSi nun sabes pa qué val esto, probablemente nun tendríes d'usalo. Naide tendría de pidite nunca que xeneres una d'estes y que-y la deas.",
        "botpasswords-insert-failed": "Nun pudo amestase'l nome de bot «$1». ¿Taba añadíu yá?",
        "botpasswords-update-failed": "Nun pudo anovase'l nome de bot «$1». ¿Desaniciaríase?",
        "botpasswords-created-title": "Creóse la contraseña de bot",
-       "botpasswords-created-body": "La contraseña de bot «$1» creóse correchamente.",
+       "botpasswords-created-body": "Creóse la contraseña del bot llamáu «$1» del usuariu «$2».",
        "botpasswords-updated-title": "Anovóse la contraseña de bot",
-       "botpasswords-updated-body": "La contraseña de bot «$1» anovóse correchamente.",
+       "botpasswords-updated-body": "Anovóse la contraseña del bot llamáu «$1» del usuariu «$2».",
        "botpasswords-deleted-title": "Desanicióse la contraseña de bot",
-       "botpasswords-deleted-body": "La contraseña de bot «$1» desanicióse.",
+       "botpasswords-deleted-body": "Desanicióse la contraseña del bot llamáu «$1» del usuariu «$2».",
        "botpasswords-newpassword": "La nueva contraseña p'aniciar sesión con strong>$1</strong> ye <strong>$2</strong>. <em>Por favor, rexistra esto pa referencies futures.</em>",
        "botpasswords-no-provider": "BotPasswordsSessionProvider nun ta disponible.",
        "botpasswords-restriction-failed": "Hai torgues de contraseña de bot que torgaron esti aniciu de sesión.",
        "resetpass-no-info": "Tienes d'aniciar sesión pa entrar direutamente a esta páxina.",
        "resetpass-submit-loggedin": "Camudar la contraseña",
        "resetpass-submit-cancel": "Encaboxar",
-       "resetpass-wrong-oldpass": "Contraseña temporal o actual inválida.\nSeique yá camudaras correutamente la contraseña o que pidieras una nueva contraseña temporal.",
+       "resetpass-wrong-oldpass": "Contraseña temporal o actual inválida.\nSeique yá camudaras la contraseña o que pidieras una nueva contraseña temporal.",
        "resetpass-recycled": "Por favor, cambie la so contraseña por otra distinta de la actual.",
        "resetpass-temp-emailed": "Anició sesión con un códigu temporal unviáu per corréu electrónicu.\nPa completar l'aniciu de sesión, tien de definir una nueva contraseña equí:",
        "resetpass-temp-password": "Contraseña temporal:",
        "previewnote": "'''Alcuerdate de qu'esto ye sólo una vista previa.'''\n¡Los cambios entá nun se guardaron!",
        "continue-editing": "Dir al área d'edición",
        "previewconflict": "Esta vista previa amuesa'l testu del área d'edición d'arriba tal como apaecerá si escueyes guardar.",
-       "session_fail_preview": "'''¡Sentímoslo muncho! Nun pudimos procesar la to edición porque hebo una perda de datos de la sesión.'''\nPor favor, vuelvi a intentalo.\nSi inda nun funciona, intenta [[Special:UserLogout|colar]] y volver a aniciar sesión.",
+       "session_fail_preview": "¡Sentímoslo muncho! Nun pudimos procesar la edición porque hebo una perda de datos de la sesión.\n\nSeique zarróse la sesión. <strong>Comprueba si tienes abierta la sesión y vuelve a intentalo</strong>.\nSi inda nun funcionara, tenta [[Special:UserLogout|colar]] y volver a aniciar sesión y comprueba que'l restolador permite les cookies d'esti sitiu.",
        "session_fail_preview_html": "¡Sentímoslo! Nun pudo procesase la to edición por aciu d'una perda de datos de la sesión.\n\n<em>Como {{SITENAME}} tien el HTML puru activáu, la vista previa ta tapecida como precaución escontra ataques en JavaScript.</em>\n\n<strong>Si esti ye un intentu llexítimu d'edición, por favor vuelvi a intentalo.</strong>\nSi inda nun funciona, intenta [[Special:UserLogout|colar]] y volver a aniciar sesión, y comprueba que'l to restolador permite les cookies d'esti sitiu.",
        "token_suffix_mismatch": "'''La to edición nun s'aceutó porque'l to navegador mutiló los caráuteres de puntuación nel editor.'''\nLa edición nun foi aceutada pa prevenir corrupciones na páxina de testu.\nDacuando esto pasa por usar un serviciu proxy anónimu basáu en web que tenga fallos.",
        "edit_form_incomplete": "'''Delles partes del formulariu d'edición nun llegaron al sirvidor; comprueba que les ediciones tean intactes y vuelvi a tentalo.'''",
        "revdelete-unsuppress": "Desaniciar les torgues nes revisiones restauraes",
        "revdelete-log": "Motivu:",
        "revdelete-submit": "Aplicar a {{PLURAL:$1|la revisión seleicionada|les revisiones seleicionaes}}",
-       "revdelete-success": "'''Visibilidá de revisiones anovada correutamente.'''",
+       "revdelete-success": "Cambiada la visibilidá de revisiones.",
        "revdelete-failure": "'''La visibilida de revisiones nun se pudo anovar:'''\n$1",
-       "logdelete-success": "Configuróse correutamente la visibilidá del rexistru.",
+       "logdelete-success": "Configuróse la visibilidá del rexistru.",
        "logdelete-failure": "'''Nun se pudo configurar la visibilidá del rexistru:'''\n$1",
        "revdel-restore": "camudar visibilidá",
        "pagehist": "Historial de la páxina",
        "mergehistory-done": "$3 {{PLURAL:$3|revisión|revisiones}} de $1 {{PLURAL:$3|fusionóse|fusionáronse}} en [[:$2]].",
        "mergehistory-fail": "Nun pudo facese la fusión d'historiales, por favor comprueba los parámetros de páxina y hora.",
        "mergehistory-fail-bad-timestamp": "La marca de tiempu ye inválida.",
+       "mergehistory-fail-invalid-source": "La páxina d'orixe ye inválida.",
+       "mergehistory-fail-invalid-dest": "La páxina de destín ye inválida.",
+       "mergehistory-fail-no-change": "La fusión d'historiales nun fusionó nenguna revisión. Por favor, comprueba los parámetros de páxina y tiempu.",
+       "mergehistory-fail-permission": "Permisos insuficientes pa fusionar los historiales.",
+       "mergehistory-fail-self-merge": "Les páxines d'orixe y destín son la mesma.",
+       "mergehistory-fail-timestamps-overlap": "Les revisiones de la fonte se sobreponen o vienen después de les revisiones del destín.",
        "mergehistory-fail-toobig": "Nun pudo fusionase l'historial porque moveríense más del máximu de $1 {{PLURAL:$1|revisión|revisiones}}.",
        "mergehistory-no-source": "La páxina d'orixe $1 nun esiste.",
        "mergehistory-no-destination": "La páxina de destín $1 nun esiste.",
        "userrights-changeable-col": "Grupos que pues camudar",
        "userrights-unchangeable-col": "Grupos que nun pues camudar",
        "userrights-conflict": "¡Conflictu de cambiu de permisos d'usuariu! Por favor, revise y confirme los cambios.",
-       "userrights-removed-self": "Retiró correutamente los sos propios drechos. Poro, yá nun tendrá accesu a esta páxina.",
+       "userrights-removed-self": "Desaniciasti los tos propios permisos. Poro, yá nun tienes accesu a esta páxina.",
        "group": "Grupu:",
        "group-user": "Usuarios",
        "group-autoconfirmed": "Usuarios autoconfirmaos",
        "recentchangeslinked-page": "Nome de la páxina:",
        "recentchangeslinked-to": "Amosar los cambios de les páxines qu'enllacen en cuenta de los de la páxina dada",
        "recentchanges-page-added-to-category": "[[:$1]] amestóse a la categoría",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] y {{PLURAL:$2|otra páxina|otres $2 páxines}} amestaes a la categoría",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] y [[Special:WhatLinksHere/$1|{{PLURAL:$2|otra páxina|otres $2 páxines}}]] amestaes a la categoría",
        "recentchanges-page-removed-from-category": "[[:$1]] desanicióse de la categoría",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] y {{PLURAL:$2|otra páxina|otres $2 páxines}} desaniciaes de la categoría",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] y [[Special:WhatLinksHere/$1|{{PLURAL:$2|otra páxina|otres $2 páxines}}]] desaniciaes de la categoría",
        "autochange-username": "Cambiu automáticu de MediaWiki",
        "upload": "Xubir ficheru",
        "uploadbtn": "Xubir ficheru",
        "backend-fail-read": "Nun se pudo lleer el ficheru $1.",
        "backend-fail-create": "Nun se pudo escribir el ficheru $1.",
        "backend-fail-maxsize": "Nun se pudo escribir el ficheru  $1  porque ye mayor de {{PLURAL:$2|un byte|$2 bytes}}.",
-       "backend-fail-readonly": "Nesti momentu el motor d'almacenamientu \"$1\" ta en mou de sólo llectura. El motivu dau foi: \"$2\"",
+       "backend-fail-readonly": "Nesti momentu el motor d'almacenamientu \"$1\" ta en mou de sólo llectura. El motivu dau ye: <em>$2</em>",
        "backend-fail-synced": "El ficheru \"$1\" ta nún estáu inconsistente colos motores d'almacenamientu internos",
        "backend-fail-connect": "Nun se pudo coneutar col motor d'almacenamientu \"$1\".",
        "backend-fail-internal": "Hebo un fallu desconocíu nel motor d'almacenamientu \"$1\".",
        "uploadstash-summary": "Esta páxina ufre accesu a ficheros que tan xubíos (o en procesu de xubía), pero qu'entá nun s'espublizaron na wiki. Estos ficheros nun son visibles pa naide, sacante l'usuariu que los xubió.",
        "uploadstash-clear": "Desaniciar los ficheros de la reserva",
        "uploadstash-nofiles": "Nun tienes ficheros na reserva.",
-       "uploadstash-badtoken": "Nun se pudo facer esa operación, seique porque caducó la identificación pa editar. Vuelvi a intentalo.",
-       "uploadstash-errclear": "Nun se pudieron desaniciar los ficheros.",
+       "uploadstash-badtoken": "Nun pudo facese esa operación. Seique caducó la identificación pa editar. Vuelve a tentalo.",
+       "uploadstash-errclear": "Falló'l desaniciu de los ficheros.",
        "uploadstash-refresh": "Anovar la llista de ficheros",
        "invalid-chunk-offset": "Allugamientu inválidu del fragmentu",
        "img-auth-accessdenied": "Accesu denegáu",
        "apihelp": "Ayuda de la API",
        "apihelp-no-such-module": "Nun s'alcuentra'l módulu «$1».",
        "apisandbox": "Zona de pruebes API",
+       "apisandbox-jsonly": "Necesítase JavaScript pa usar la zona de pruebes de la API.",
        "apisandbox-api-disabled": "La API ta desactivada nesti sitiu.",
        "apisandbox-intro": "Usa esta páxina pa esperimentar cola <strong>API de serviciu web de MediaWiki</strong>.\nConsulta [[mw:API:Main page|la documentación de la API]] pa más detalles tocante al so usu. Exemplu: [//www.mediawiki.org/wiki/API#A_simple_example llamar al conteníu d'una Páxina principal]. Seleiciona una aición pa ver más exemplos.\n\nTen presente que, anque esto ye una zona de pruebes, les aiciones que faigas nesta páxina puen camudar la wiki.",
        "apisandbox-fullscreen": "Espander el panel",
+       "apisandbox-fullscreen-tooltip": "Espander el panel de la zona de pruebes pa llenar la pantalla del navegador.",
+       "apisandbox-unfullscreen": "Amosar la páxina",
+       "apisandbox-unfullscreen-tooltip": "Amenorgar el panel de la zona de pruebes pa que tean disponibles los enllaces de navegación de MediaWiki.",
        "apisandbox-submit": "Facer solicitú",
        "apisandbox-reset": "Llimpiar",
+       "apisandbox-retry": "Reintentar",
+       "apisandbox-loading": "Cargando la información pal módulu de la API «$1»...",
+       "apisandbox-load-error": "Asocedió un error al cargar la información del módulu de la API «$1»: $2",
+       "apisandbox-no-parameters": "Esti módulu de la API nun tien parámetros.",
+       "apisandbox-helpurls": "Enllaces d'ayuda",
        "apisandbox-examples": "Exemplos",
+       "apisandbox-dynamic-parameters": "Más parámetros",
+       "apisandbox-dynamic-parameters-add-label": "Amestar parámetru:",
+       "apisandbox-dynamic-parameters-add-placeholder": "Nome del parámetru",
+       "apisandbox-dynamic-error-exists": "Yá existe un parámetru llamáu «$1».",
+       "apisandbox-deprecated-parameters": "Parámetros anticuaos",
+       "apisandbox-fetch-token": "Rellenu automáticu del pase",
+       "apisandbox-submit-invalid-fields-title": "Dalgunos campos son inválidos",
+       "apisandbox-submit-invalid-fields-message": "Por favor, igua los campos señalaos y téntalo nuevamente.",
        "apisandbox-results": "Resultaos",
+       "apisandbox-sending-request": "Unviando solicitú a la API...",
+       "apisandbox-loading-results": "Recibiendo los resultaos de la API...",
+       "apisandbox-results-error": "Asocedió un error al cargar la respuesta de la consulta API: $1.",
        "apisandbox-request-url-label": "URL de la solicitú:",
        "apisandbox-request-time": "Duración de la solicitú: {{PLURAL:$1|$1 ms}}",
+       "apisandbox-results-fixtoken": "Igua'l token y vuelve a unviar",
+       "apisandbox-results-fixtoken-fail": "Nun pudo recuperase'l token «$1».",
+       "apisandbox-alert-page": "Los campos d'esta páxina nun son válidos.",
+       "apisandbox-alert-field": "El valor d'esti campu nun ye válidu.",
        "booksources": "Fontes de llibros",
        "booksources-search-legend": "Busca de fontes de llibros",
        "booksources-search": "Buscar",
        "delete-toobig": "Esta páxina tien un historial d'ediciones grande, más de $1 {{PLURAL:$1|revisión|revisiones}}.\nRestrinxóse l'esborráu d'estes páxines pa evitar perturbaciones accidentales de {{SITENAME}}.",
        "delete-warning-toobig": "Esta páxina tien un historial d'ediciones grande, más de $1 {{PLURAL:$1|revisión|revisiones}}.\nEsborralu pue perturbar les operaciones de la base de datos de {{SITENAME}};\nobra con precaución.",
        "deleteprotected": "Nun pues desaniciar esta páxina porque ta protexida.",
-       "deleting-backlinks-warning": "'''Avisu:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Otres páxines]] enllacen a, o trescluyen de, la páxina que ta a piques de desaniciar.",
+       "deleting-backlinks-warning": "<strong>Avisu:</strong> [[Special:WhatLinksHere/{{FULLPAGENAME}}|Otres páxines]] enllacen a, o trescluyen de, la páxina que tas a piques de desaniciar.",
        "rollback": "Revertir ediciones",
        "rollbacklink": "revertir",
        "rollbacklinkcount": "revertir $1 {{PLURAL:$1|edición|ediciones}}",
        "changecontentmodel-title-label": "Títulu de la páxina",
        "changecontentmodel-model-label": "Nuevu modelu de conteníu",
        "changecontentmodel-reason-label": "Motivu:",
+       "changecontentmodel-submit": "Camudar",
        "changecontentmodel-success-title": "Cambióse'l modelu de conteníu",
        "changecontentmodel-success-text": "Cambióse'l tipu de conteníu de [[:$1]].",
        "changecontentmodel-cannot-convert": "El conteníu de [[:$1]] nun puede convertise a un tipu de $2.",
        "changecontentmodel-nodirectediting": "El modelu de conteníu $1 nun tien encontu pa edición direuta",
        "log-name-contentmodel": "Rexistru de cambios del modelu de conteníu",
        "log-description-contentmodel": "Socesos rellacionaos colos modelos de conteníu d'una páxina",
+       "logentry-contentmodel-new": "$1 {{GENDER:$2|creó}} la páxina $3 usando un modelu de conteníu non predetermináu «$5»",
        "logentry-contentmodel-change": "$1 {{GENDER:$2|cambió}}'l modelu de conteníu de la páxina $3 dende «$4» a «$5»",
        "logentry-contentmodel-change-revertlink": "revertir",
        "logentry-contentmodel-change-revert": "revertir",
        "import-nonewrevisions": "Nun s'importó denguna revision (o yá taben toes presentes, o se saltaron por errores).",
        "xml-error-string": "$1 na llinia $2, col $3 (byte $4): $5",
        "import-upload": "Xubir datos XML",
-       "import-token-mismatch": "Perdiéronse los datos de la sesión. Intentalo otra vuelta.",
+       "import-token-mismatch": "Perda de datos de la sesión.\n\nSeique zarróse la sesión. <strong>Comprueba si tienes abierta la sesión y vuelve a intentalo</strong>.\nSi inda nun funcionara, tenta [[Special:UserLogout|colar]] y volver a aniciar sesión y comprueba que'l restolador permite les cookies d'esti sitiu.",
        "import-invalid-interwiki": "Nun se puede importar d'esi wiki.",
        "import-error-edit": "La páxina «$1» nun s'importó porque nun tienes permisu pa editala.",
        "import-error-create": "La páxina «$1» nun s'importó porque nun tienes permisu pa creala.",
        "tags-delete-not-allowed": "Les etiquetes definíes por una estensión nun puen desaniciase mentanto la estensión nun lo permita específicamente.",
        "tags-delete-not-found": "La etiqueta «$1» nun esiste.",
        "tags-delete-too-many-uses": "La etiqueta «$1» aplícase a más {{PLURAL:$2|d'una revisión|de $2 revisiones}}, lo que quier dicir que nun pue desaniciase.",
-       "tags-delete-warnings-after-delete": "La etiqueta «$1» desanicióse correutamente, pero {{PLURAL:$2|alcontróse'l siguiente avisu|alcontráronse los siguientes avisos}}:",
+       "tags-delete-warnings-after-delete": "Desanicióse la etiqueta «$1», pero {{PLURAL:$2|alcontróse'l siguiente avisu|alcontráronse los siguientes avisos}}:",
        "tags-activate-title": "Activar etiqueta",
        "tags-activate-question": "Tas a piques d'activar la etiqueta «$1».",
        "tags-activate-reason": "Motivu:",
        "tags-edit-revision-legend": "Amestar o desaniciar etiquetes {{PLURAL:$1|d'esta revisión|de toles $1 revisiones}}",
        "tags-edit-logentry-legend": "Amestar o desaniciar etiquetes {{PLURAL:$1|d'esta entrada del rexistru|de les $1 entraes del rexistru}}",
        "tags-edit-existing-tags": "Etiquetes esistentes:",
-       "tags-edit-existing-tags-none": "''Nenguna''",
+       "tags-edit-existing-tags-none": "<em>Nenguna</em>",
        "tags-edit-new-tags": "Etiquetes nueves:",
        "tags-edit-add": "Amestar estes etiquetes:",
        "tags-edit-remove": "Desaniciar estes etiquetes:",
        "tags-edit-reason": "Motivu:",
        "tags-edit-revision-submit": "Aplicar los cambios a {{PLURAL:$1|esta revisión|$1 revisiones}}",
        "tags-edit-logentry-submit": "Aplicar los cambios a {{PLURAL:$1|esta entrada del rexistru|$1 entraes del rexistru}}",
-       "tags-edit-success": "Los cambios aplicáronse correutamente.",
+       "tags-edit-success": "Aplicáronse los cambios.",
        "tags-edit-failure": "Nun pudieron aplicase los cambios:\n$1",
        "tags-edit-nooldid-title": "Revisión de destín inválida",
        "tags-edit-nooldid-text": "O nun conseñasti una revisión sobre la qu'aplicar esta función, o la revisión conseñada nun esiste.",
        "expand_templates_generate_xml": "Amosar l'árbole d'análisis sintáuticu XML",
        "expand_templates_generate_rawhtml": "Ver el HTML en bruto",
        "expand_templates_preview": "Vista previa",
-       "expand_templates_preview_fail_html": "<em>Como {{SITENAME}} tien activáu el códigu HTML puru y hebo una perda de datos de la sesión, la vista previa ta tapecida como precaución escontra ataques de JavaScript.</em>\n\n<strong>Si esti ye un intentu llexítimu d'accesu a la vista previa, vuelvi a intentalo.</strong>\nSi inda nun funciona, intenta [[Special:UserLogout|salir]] y volver a entrar na to cuenta.",
+       "expand_templates_preview_fail_html": "<em>Como {{SITENAME}} tien activáu el códigu HTML puru y hebo una perda de datos de la sesión, la vista previa ta tapecida como precaución escontra ataques de JavaScript.</em>\n\n<strong>Si esti ye un intentu llexítimu d'accesu a la vista previa, vuelve a tentalo.</strong>\nSi inda nun funciona, tenta [[Special:UserLogout|salir]] y volver a entrar na to cuenta, y comprueba que'l to restolador permite les cookies d'esti sitiu.",
        "expand_templates_preview_fail_html_anon": "<em>Como {{SITENAME}} tien activáu el códigu HTML puru y nun aniciasti sesión, la vista previa ta tapecida como precaución escontra ataques de JavaScript.</em>\n\n<strong>Si esti ye un intentu llexítimu d'accesu a la vista previa, intenta [[Special:UserLogin|entrar]] y vuelvi a intentalo.</strong>",
        "expand_templates_input_missing": "Fai falta dar daqué de testu d'entrada.",
        "pagelanguage": "Cambiar la llingua de la páxina",
index 6567c75..58851fd 100644 (file)
                        "아라",
                        "Ләйсән",
                        "Macofe",
-                       "Азат Хәлилов"
+                       "Азат Хәлилов",
+                       "Айбикә",
+                       "З. ӘЙЛЕ",
+                       "Янмурза Баки",
+                       "Айсар",
+                       "Lizalizaufa"
                ]
        },
        "tog-underline": "Һылтанмалар аҫтына һыҙыу:",
-       "tog-hideminor": "Әһәмиәте ҙур булмаған төҙәтеүҙәрҙе һуңғы үҙгәртеүҙәр исемлегендә күрһәтмәҫкә",
+       "tog-hideminor": "Һуңғы үҙгәртеүҙәрҙең бәләкәй төҙәтеүҙәрен күрһәтмәҫкә",
        "tog-hidepatrolled": "Һуңғы үҙгәртеүҙәр исемлегендә тикшерелгән үҙгәртеүҙәрҙе йәшер",
-       "tog-newpageshidepatrolled": "ЯңÑ\8b Ð±Ð¸Ñ\82Ñ\82Ó\99Ñ\80 Ð¸Ñ\81емлегендÓ\99 Ñ\82икÑ\88еÑ\80елгÓ\99н Ò¯Ò\99гÓ\99Ñ\80Ñ\82еүÒ\99Ó\99Ñ\80Ò\99е Ð¹Ó\99Ñ\88еÑ\80",
-       "tog-hidecategorization": "Биттәр категоризацияһын йәшереү",
+       "tog-newpageshidepatrolled": "ТикÑ\88еÑ\80елгÓ\99н Ð±Ð¸Ñ\82Ñ\82Ó\99Ñ\80Ò\99е Ñ\8fÒ£Ñ\8b Ð±Ð¸Ñ\82Ñ\82Ó\99Ñ\80 Ñ\82еÒ\99мÓ\99һендÓ\99 ÐºÒ¯Ñ\80Ò»Ó\99Ñ\82мÓ\99ҫкÓ\99",
+       "tog-hidecategorization": "Биттәрҙең категоризацияһын йәшерергә",
        "tog-extendwatchlist": "Барлыҡ үҙгәртеүҙәрҙе үҙ эсенә алған, киңәйтелгән күҙәтеү исемлеге",
        "tog-usenewrc": "Һуңғы төҙәтеүҙәр һәм күҙәтеү исемлегендәге үҙгәрештәрҙе төркөмдәргә бүлергә",
-       "tog-numberheadings": "Ð\91аÑ\88иÑ\81емдÓ\99Ñ\80Ò\99е автоматик рәүештә номерланһын",
+       "tog-numberheadings": "Ð\90Ñ\82амалаÑ\80 автоматик рәүештә номерланһын",
        "tog-showtoolbar": "Мөхәррирләгән ваҡытта өҫкө ҡоралдар панелен күрһәтергә (JavaScript кәрәк)",
        "tog-editondblclick": "Биттәрҙе ике сиртеү менән мөхәррирләргә",
-       "tog-editsectiononrightclick": "Бүлектәрҙе исемдәренә төрткөнөң уң яғына сиртеп үҙгәртергә",
+       "tog-editsectiononrightclick": "Бүлектәрҙе исемдәрен төрткөнөң уң яғына баҫып үҙгәртергә",
        "tog-watchcreations": "Мин төҙөгән биттәрҙе һәм күсергән файлдарҙы күҙәтеү исемлегенә өҫтәргә",
        "tog-watchdefault": "Мин үҙгәрткән биттәр һәм файлдар аңлатмаһын күҙәтеү исемлегенә өҫтәргә",
        "tog-watchmoves": "Мин исемен үҙгәрткән биттәрҙе һәм файлдарҙы күҙәтеү исемлегенә өҫтәргә",
        "moredotdotdot": "Дауамы...",
        "morenotlisted": "Был исемлек тулы түгел",
        "mypage": "Бит",
-       "anonuserpage": "Билдәһеҙ ҡатнашыусы",
        "mytalk": "Әңгәмә",
        "anontalk": "Әңгәмә",
        "navigation": "Төп йүнәлештәр",
        "botpasswords": "Роботтар серһүҙе.",
        "botpasswords-summary": "<em>ПРобот пароле</em> API иҫәп яҙмаһына логин һәм паролһыҙ инергә мөмкинлек бирә. Робот пароле менән ингәндә ҡулланыусы хоҡуғы сикләнгән булыуы мөмкин.\n\nНи өсөн икәнен белмәһәгеҙ, быны эшләмәүегеҙ яҡшыраҡ.",
        "botpasswords-disabled": "Роботтар серһүҙе һүндерелгән.",
-       "botpasswords-no-central-id": "РобоÑ\82 Ñ\81еÑ\80Ò»Ò¯Ò\99ен Ò\93улланыу өсөн үҙәк иҫәп яҙмаһына инергә кәрәк.",
+       "botpasswords-no-central-id": "РобоÑ\82 Ñ\81еÑ\80Ò»Ò¯Ò\99ен Ò¡улланыу өсөн үҙәк иҫәп яҙмаһына инергә кәрәк.",
        "botpasswords-existing": "Робот серһүҙҙәре.",
        "botpasswords-createnew": "Робот өсөн яңы серһүҙ булдырырға.",
        "botpasswords-editexisting": "Робот серһүҙен мөхәррирләргә.",
        "edit-already-exists": "Яңы бит яһап булмай.\nУл былай ҙа бар.",
        "defaultmessagetext": "Алдан билдәләнгән яҙма",
        "content-failed-to-parse": "$2 эстәлеге $1 төрөнә тура килмәй: $3.",
-       "invalid-content-data": "ЯÑ\80амаған мәғлүмәт",
+       "invalid-content-data": "ТÑ\8bйÑ\8bлған мәғлүмәт",
        "content-not-allowed-here": "\"$1\" эстәлеге [[$2]] бит өсөн ярамай",
        "editwarning-warning": "Икенсе биткә күсеү һеҙ индергән үҙгәрештәрҙең юғалыуына килтереүе мөмкин.\nӘгәр системала танылыу үтһәгеҙ, көйләүҙәрегеҙ битенең \"Мөхәррирләү\" бүлегендә был киҫәтеүҙе һүндерә алаһығыҙ.",
-       "editpage-notsupportedcontentformat-title": "ЯÑ\80амаÒ\93ан Ñ\8dÑ\81Ñ\82Ó\99лек Ñ\84оÑ\80маÑ\82Ñ\8b",
+       "editpage-notsupportedcontentformat-title": "Ð\99өкмÓ\99Ñ\82ке Ñ\84оÑ\80маÑ\82Ñ\8b Ð°Ñ\81Ñ\8bлмай",
        "editpage-notsupportedcontentformat-text": "$1 эстәлеге форматы $2 моделе форматы менән тап килмәй.",
-       "content-model-wikitext": "викиÑ\8fÒ\99ма",
+       "content-model-wikitext": "викиÑ\82екÑ\81Ñ\82",
        "content-model-text": "ғәҙәти яҙма",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
-       "content-json-empty-object": "Ð\91Ñ\83Ñ\88 Ð½Ó\99мÓ\99",
+       "content-json-empty-object": "Ð\91Ñ\83Ñ\88 Ð¾Ð±Ñ\8aекÑ\82",
        "content-json-empty-array": "Буш массив",
        "duplicate-args-warning": "<strong>Иғтибар:</strong> [[:$1]] берәүҙән артыҡ [[:$2]]  параметры  «$3» менән саҡыра. Һуңғы дәүмәл ҡулланыласаҡ.",
        "duplicate-args-category": "Ҡалыпты сығарғанда ҡабатланған аргументтарҙы ҡулланған биттәр",
        "mergehistory-fail": "Бит тарихтарын берләштереп булманы, зирһар, бит һәм ваҡыт параметрҙарын яңынан тикшерегеҙ.",
        "mergehistory-fail-bad-timestamp": "Ваҡыт тамғаһы дөрөҫ түгел.",
        "mergehistory-fail-invalid-source": "Сығанаҡ бит дөрөҫ түгел.",
-       "mergehistory-fail-invalid-dest": "Маҡсат бите дҡрҡҫ түгел.",
+       "mergehistory-fail-invalid-dest": "Маҡсат бите дөрөҫ түгел.",
        "mergehistory-fail-no-change": "Бит таризы версиялары ҡушылманы. Зинһар өсөн, бит һәм ваҡыт параметрҙарын тикшерегеҙ.",
        "mergehistory-fail-permission": "Бит тарихын ҡушыу өсөн хоҡуҡтар етәрлек түгел.",
        "mergehistory-fail-self-merge": "Сығанаҡ һәм маҡсат бит бер төрлө.",
        "recentchangeslinked-page": "Бит исеме:",
        "recentchangeslinked-to": "Киреһенсә, был биткә һылтанма яһаған биттәрҙәге үҙгәртеүҙәрҙе күрһәтергә",
        "recentchanges-page-added-to-category": "[[:$1]] категорияға өҫтәлгән",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] һәм {{PLURAL:$2|бер бит|$2 биттәр}} категорияға өҫтәлгән",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] һәм [[Special:WhatLinksHere/$1|{{PLURAL:$2|one page|$2 pages}}]]  категорияға өҫтәлгән",
        "recentchanges-page-removed-from-category": "[[:$1]] категориянан алынған",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] һәм {{PLURAL:$2|бер бит|$2 биттәр}} категориянан алынған",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] һәм [[Special:WhatLinksHere/$1|{{PLURAL:$2|one page|$2 pages}}]]  категориянан алынған",
        "autochange-username": "Автоматик рәүештә MediaWiki үҙгәртелә",
        "upload": "Файл тейәү",
        "uploadbtn": "Файлды тейәргә",
        "fileexists-shared-forbidden": "Бындай исемле файл дөйөм файл һаҡлағыста бар инде.\nӘгәр һеҙ шулай ҙа был файлды тейәргә теләһәгеҙ, зинһар, кире ҡайтығыҙ һәм яңы исем һайлағыҙ.\n[[File:$1|thumb|center|$1]]",
        "file-exists-duplicate": "Был файл түбәндәге {{PLURAL:$1|1=файл|файлдар}} менән тап килә:",
        "file-deleted-duplicate": "Оҡшаш файл ([[:$1]]) юйылғайны инде. Уны ҡайтанан тейәр алдынан, зинһар, файлды юйыу тарихын ҡарағыҙ.",
-       "file-deleted-duplicate-notitle": "Ð\9eÑ\88оÒ\93а Ð¾Ò¡Ñ\88аÒ\93ан Ñ\84айл Ñ\8eйÑ\8bлÒ\93ан,Ó\99 Ð¸Ñ\81еме Ñ\82Ñ\8bйÑ\8bлÒ\93ан Ð±Ñ\83лÒ\93ан. Ð¯Ò¯ынан тейәү алдынан администратор хоҡуғы булған кешенән тыйылған файлдарҙы ҡарап сығыуын һорарға кәрәк.",
+       "file-deleted-duplicate-notitle": "Ð\9eÑ\88оÒ\93а Ð¾Ò¡Ñ\88аÒ\93ан Ñ\84айл Ñ\8eйÑ\8bлÒ\93ан,Ó\99 Ð¸Ñ\81еме Ñ\82Ñ\8bйÑ\8bлÒ\93ан Ð±Ñ\83лÒ\93ан. Ð¯Ò£ынан тейәү алдынан администратор хоҡуғы булған кешенән тыйылған файлдарҙы ҡарап сығыуын һорарға кәрәк.",
        "uploadwarning": "Киҫәтеү",
        "uploadwarning-text": "Зинһар, түбәндәге файл тасуирламаһын үҙгәртегеҙ һәм яңынан ҡабатлап ҡарағыҙ.",
        "savefile": "Һөҙгөстө яҙҙырып ҡуйырға",
        "uploaded-href-attribute-svg": "SVG-файлында href-атрибуты  <code><$1 $2=\"$3\"></code> тик http:// йәки https:// башланған маҡсатҡа рөхсәт ителә.",
        "uploaded-href-unsafe-target-svg": "Тейәлгән SVG-файлда хәүефле мәғлүмәт табылды: URI <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploaded-animate-svg": "Тейәлгән SVG-файлында тег «animate»  табылды,  «from»-атрибут <code>&lt;$1 $2=\"$3\"&gt;</code> ярҙамында һылтанманы үҙгәртә ала.",
-       "uploaded-setting-event-handler-svg": "ТейÓ\99лгÓ\99н SVG-Ñ\84айлда  <code>&lt;$1 $2=\"$3\"&gt;</code> ÐºÐ¾Ð´Ñ\8b Ñ\82абÑ\8bлдÑ\8b, Ð°Ñ\82Ñ\80ибÑ\83Ñ\82Ñ\82аÑ\80 Ò\93уйыу блокланды.",
+       "uploaded-setting-event-handler-svg": "ТейÓ\99лгÓ\99н SVG-Ñ\84айлда  <code>&lt;$1 $2=\"$3\"&gt;</code> ÐºÐ¾Ð´Ñ\8b Ñ\82абÑ\8bлдÑ\8b, Ð°Ñ\82Ñ\80ибÑ\83Ñ\82Ñ\82аÑ\80 Ò¡уйыу блокланды.",
        "uploaded-setting-href-svg": "«href» атрибутына  «set» тегын ҡуйыу блокланды.",
-       "uploaded-wrong-setting-svg": "«set» тегын файҙаланыу  блокландыо. Тейәлгән SVG-файлында  <code>&lt;set to=\"$1\"&gt;</code> конструкцияһы табылды.",
+       "uploaded-wrong-setting-svg": "«set» тегын файҙаланыу  блокланды. Тейәлгән SVG-файлында  <code>&lt;set to=\"$1\"&gt;</code> конструкцияһы табылды.",
        "uploaded-setting-handler-svg": "SVG«handler» атрибутын өҫтәүсе SVG блокланды.Тейәлгән SVG-файлда  <code>$1=\"$2\"</code> конструкцияһы табылды.",
        "uploaded-remote-url-svg": "SVG«handler» атрибутын өҫтәүсе SVG блокланды.Тейәлгән SVG-файлда  <code>$1=\"$2\"</code> конструкцияһы табылды.",
        "uploaded-image-filter-svg": "Тейәлгән SVG-файлда рәсемдәр фильтры табылды URL-адресом <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "upload-options": "Тейәү көйләүҙәре",
        "watchthisupload": "Файлды күҙәтергә",
        "filewasdeleted": "Бындай исемле файл бығаса булған һәм юйылған. Зинһар, ҡабаттан тейәр алдынан $1 битен ҡарағыҙ.",
-       "filename-thumb-name": "Файл исеме рәсемдең бәләкәйләтелгән исеменә оөңҡшаған. Зинһар өсөн, бындай миниатюраларҙы вики-проектҡа тейәмәгеҙ. Әгәр һеҙгә был файл бик кәрәк булһа, исемен эстәлегенә ярашлы үҙгәртегеҙ.",
+       "filename-thumb-name": "Файл исеме рәсемдең бәләкәйләтелгән исеменә оҡшаған. Зинһар, бындай миниатюраларҙы вики-проектҡа тейәмәгеҙ. Әгәр һеҙгә был файл бик кәрәк булһа, исемен эстәлегенә ярашлы үҙгәртегеҙ.",
        "filename-bad-prefix": "Тейәлә торған файлдың исеме ''«$1»''' менән башлана һәм ул цифрлы камераларҙа файлдарға уҙенән-үҙе бирелә торған исемгә оҡшаған.\nЗинһар, файлды яҡшыраҡ тасуирлаған исем һайлағыҙ.",
        "upload-proto-error": "Протокол дөрөҫ түгел",
        "upload-proto-error-text": "Алыҫтан тейәү өсөн <code>http://</code> йәки <code>ftp://</code> менән башланған адрес кәрәк.",
        "upload-too-many-redirects": "URL бигерәк күп йүнәлтмәләр яһай.",
        "upload-http-error": "HTTP хата килеп сыҡты: $1",
        "upload-copy-upload-invalid-domain": "Был доменға ҡараған сайттарҙан файл күсереү асыҡ түгел",
-       "upload-foreign-cant-upload": "Вики ситтәге репозиторийға фаәл тейәргә көйләнмәгән.",
+       "upload-foreign-cant-upload": "Вики ситтәге репозиторийға файл тейәргә көйләнмәгән.",
        "upload-dialog-title": "Файлды тейәргә",
        "upload-dialog-button-cancel": "Кире алырға",
        "upload-dialog-button-done": "Әҙер",
        "foreign-structured-upload-form-label-infoform-date": "Дата",
        "foreign-structured-upload-form-label-own-work-message-local": "Тейәлгән файл  {{SITENAME}} лицензия сәйәсәтенә ярашлы икәнен раҫлайым.",
        "foreign-structured-upload-form-label-not-own-work-message-local": "{{SITENAME}} ҡағиҙәләренә ярашлы файлды тейәй алмаһағыҙ, диалог теҙерәһен ябығыҙ ҙа тейәү !с!н башҡа ысулды һайлағыҙ.",
-       "foreign-structured-upload-form-label-not-own-work-message-default": "{{SITENAME}} ҡағиҙәләренә ярашлы файлды тейәй алмаһағыҙ, диалог теҙерәһен ябығыҙ ҙа тейәү !с!н башҡа ысулды һайлағыҙ.",
+       "foreign-structured-upload-form-label-not-own-work-local-local": "Ошонда эшләп ҡарағыҙ[[Special:Upload|килешеү буйынса тейәү бите]].",
+       "foreign-structured-upload-form-label-own-work-message-default": "Был файлды дөйөм репозиторийға күсереүемде аңлайым. Быны ҡулланыусы килешеүе һәм лицензия сәйәсәтенә ярашлы эшләүемде раҫлайым.",
+       "foreign-structured-upload-form-label-not-own-work-message-default": "{{SITENAME}} ҡағиҙәләренә ярашлы файлды тейәй алмаһағыҙ, диалог теҙерәһен ябығыҙ ҙа тейәү өсөн башҡа ысулды һайлағыҙ.",
        "foreign-structured-upload-form-label-not-own-work-local-default": "{{SITENAME}} талаптарына ярашлы файлы тейәп булһа,  [[Special:Upload|тейәү битен]] ҡарағыҙ.",
+       "foreign-structured-upload-form-label-own-work-message-shared": "Мин ошо файлдың авторы икәнемде раҫлайым һәм был файлды   Викискладта [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0] лицензияһы аҫтынан кире алмаҫҡа урынлаштырырға ризалы! бирәм, шулай уҡ  [https://wikimediafoundation.org/wiki/ҡулланыу шарттары] менән килешәм.",
+       "foreign-structured-upload-form-label-not-own-work-message-shared": "Әгәр ошо файлдың авторы түгелһегеҙ һәм уны икенсе лицензия аҫтында сығарырға теләйһегеҙ икән,  [https://commons.wikimedia.org/wiki/Special:UploadWizard Викискладҡа күсереү оҫталары] мөмкинлеген файҙаланығыҙ.",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "{{SITENAME}} талаптарына ярашлы файлы тейәп булһа,  [[Special:Upload|тейәү битен]] ҡарағыҙ.",
        "backend-fail-stream": "$1 файлын трансляциялап булмай.",
        "backend-fail-backup": "$1 файлының резерв күсермәһен эшләп булмай.",
        "unwatchedpages": "Бер кем дә күҙәтмәгән биттәр",
        "listredirects": "Йүнәлтеүҙәр исемлеге",
        "listduplicatedfiles": "Күсермәләр менән файлдар исемлеге",
+       "listduplicatedfiles-summary": "Был файлдар исемлеге, һуңғы файл башҡа ҡайһы бер файлдарҙың дубликаты һанала. Тик локаль файрдар иҫәпләнә.",
        "listduplicatedfiles-entry": " [[:File:$1|$1]] файлының — [[$3|{{PLURAL:$2|$2 дубликаты}}]] бар.",
        "unusedtemplates": "Ҡулланылмаған ҡалыптар",
        "unusedtemplatestext": "Был биттә {{ns:template}} исемдәр арауығының бөтә башҡа биттәргә индерелмәгән биттәре исемлеге килтерелгән.\nҠалыпты юйыр алдынан, уға башҡа һылтанмалар юҡлығын тикшерергә онотмағыҙ.",
        "unusedimages": "Ҡулланылмаған файлдар",
        "wantedcategories": "Кәрәкле категориялар",
        "wantedpages": "Кәрәкле биттәр",
+       "wantedpages-summary": "Иң күп һылтанмалары булған ғәмәлдәге биттәр, булмаған биттәргә һылтанмаһы булған биттәр күрһәтермәгән. Ғәмәлдә булмаған биттәргә һылтанмаларҙы ҡарау өсөн [[{{#special:BrokenRedirects}}|ғәмәлдә булмаған йүнәлтеүҙәр]].",
        "wantedpages-badtitle": "Һорау һөҙөмтәләрендә дөрөҫ булмаған исем: $1",
        "wantedfiles": "Кәрәкле файлдар",
        "wantedfiletext-cat": "Киләһе файлдарҙы улар булмаған хәлдә ҡулланырға тырышыла. Тыш һаҡлағыстарҙа булған файлдар был исемлеккә яңылыш эләгеүе мөмкин. Бындай хаталы белдереүҙәр <del>һыҙыҡ</del> менән күрһәтеләсәк. Шулай уҡ, булмаған файлдарҙы алған биттәр киләһе исемлектә күрһәтелгән: [[:$1]]",
+       "wantedfiletext-cat-noforeign": "Түбәндәге файлдар ҡулланыла, әммә ғәмәлдә юҡ. Бынан тыш был файлға һылтаныусы биттәр ғәмәлдә юҡ һәм [[:$1]] битендә иҫәпләнә.",
        "wantedfiletext-nocat": "Киләһе файлдарҙы улар булмаған хәлдә ҡулланырға тырышыла. Тыш һаҡлағыстарҙа булған файлдар был исемлеккә яңылыш эләгеүе мөмкин. Бындай хаталы белдереүҙәр <del>һыҙыҡ</del> менән күрһәтеләсәк.",
        "wantedfiletext-nocat-noforeign": "Түбәндәге файл ҡулланыла, әммә ул юҡ.",
        "wantedtemplates": "Кәрәкле ҡалыптар",
        "deadendpagestext": "Түбәндәге биттәр {{SITENAME}} проектының башҡа биттәренә һылтанма яһамай.",
        "protectedpages": "Һаҡланған биттәр",
        "protectedpages-indef": "Сикләнмәгән һаҡлауҙар ғына",
+       "protectedpages-summary": "Бында әлегә мәлдә булған һәм һаҡланыулы биттәр килтерелгән. Исемлекте ҡарау өсөн [[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]].",
        "protectedpages-cascade": "Эҙмә-эҙлекле һаҡлауҙар ғына",
        "protectedpages-noredirect": "Йүнәлтеүҙәрҙе йәшерергә",
        "protectedpagesempty": "Әлеге ваҡытта күрһәтелгән шарттар менән һаҡланған биттәр юҡ.",
        "protectedpages-unknown-timestamp": "Билдәһеҙ",
        "protectedpages-unknown-performer": "Билдәһеҙ ҡатнашыусы",
        "protectedtitles": "Тыйылған исемдәр",
+       "protectedtitles-summary": "Бында яңынан булдырыуҙан һаҡланған атамалар килтерелгән. Исмелекте ҡарау өсөн: [[{{#special:ProtectedPages}}|{{int:protectedpages}}]].",
        "protectedtitlesempty": "Әлеге ваҡытта күрһәтелгән шарттар менән һаҡланған исемдәр юҡ.",
        "protectedtitles-submit": "Күренгән исем",
        "listusers": "Ҡатнашыусылар исемлеге",
        "apisandbox": "API һынау урыны",
        "apisandbox-jsonly": " API-һынап ҡарау урыны өсөн  JavaScript талап ителә.",
        "apisandbox-api-disabled": "Был сайтта API һүндерелгән.",
-       "apisandbox-intro": "''MediaWiki API''' өйрәнеү бите.  API ҡулланыу тураһында белешмә алыу өсөн [//www.mediawiki.org/wiki/API:Main_page API документацияһы]на мөрәжәғәт итегеҙ. Мәҫәләң, [//www.mediawiki.org/wiki/API#A_simple_example Башбит эстәлеген нисек алырға]. Башҡа миҫалдарҙы күреү өсөн ғәмәлде ҡулланығыҙ.",
+       "apisandbox-intro": "Был битте <strong>MediaWiki API</strong> менән тәжрибәләр өсөн ҡулланығыҙ. API ҡулланыуҙа тулыраҡ мәғлүмәт өсөн    [[mw:API:Main page| API документацияһы]] мөрәжәғәт итегеҙ. Мәҫәлән, [//www.mediawiki.org/wiki/API#A_simple_example Баш биттең йөкмәткеһен нисек алырға]. Башҡа миҫалдарҙы ҡарау өсөн ғәмәл һайлағыҙ. Иғтибар, тәжрибәләр өсөн ҡулланылһа ла, был биттә башҡарылған ғәмәлдәр викиға үҙгәрештәр индерә ала.",
        "apisandbox-fullscreen": "Панелды асырға",
        "apisandbox-fullscreen-tooltip": "Браузер тәҙрәһен тултырыу өсөн һынап ҡарау панелен асырға.",
        "apisandbox-unfullscreen": "Битте күрһәтергә",
        "apisandbox-dynamic-error-exists": " «$1» исемле параметр бар.",
        "apisandbox-deprecated-parameters": "Иҫкергән параметрҙар",
        "apisandbox-fetch-token": "Торенды автоматик тултырыу",
-       "apisandbox-submit-invalid-fields-title": "Ҡайһы бер ҡырҙыр дөрөҫ түгел",
+       "apisandbox-submit-invalid-fields-title": "Ҡайһы бер ҡырҙар дөрөҫ түгел",
        "apisandbox-submit-invalid-fields-message": "Билдәләнгән ҡырҙырҙы тәҙәтегеҙ һәм яңынан эшләр ҡарағыҙ.",
        "apisandbox-results": "Һөҙөмтә",
        "apisandbox-sending-request": "API-ғариза ебәреү",
        "listgrouprights-removegroup-self-all": "Үҙенең иҫәп яҙмаһынан бөтә төркөмдәрҙе юйыу",
        "listgrouprights-namespaceprotection-header": "Исемдәр арауығы сикләүҙәре",
        "listgrouprights-namespaceprotection-namespace": "Исемдәр арауығы",
-       "listgrouprights-namespaceprotection-restrictedto": "Ҡулланыусы мәхәррирләй мөкинлеген биргән хоҡуҡтар",
+       "listgrouprights-namespaceprotection-restrictedto": "Ҡулланыусыға мәхәррирләү мөкинлеген биргән хоҡуҡтар",
        "listgrants": "Рөхсәттәр",
+       "listgrants-summary": "Түбәндә ҡайһы ҡулланыусы хоҡуҡтарына бәйләнгәнлеген дә күрһәткән рөхсәт итеүҙәр исемлеге килтерелә. Ҡатнашыусылар ҡатнашыусы ҡушымталарға биргән сикле хоҡуҡтар менән ҡушымталарға үҙҙәренең иҫәп яҙмаларын ҡулланырға рөхсәт итә ала. Әммә ҡатнашыусы исеменән ғәмәлдә булған ҡушымта, иҫәп яҙмаһында булмаған хоҡуҡтар менән ҡуллана ала. Айырым хоҡуҡтар тураһында [[{{MediaWiki:Listgrouprights-helppage}}|өҫтәмә мөғлүмәт]] алырға була.",
        "listgrants-grant": "Рөхсәт",
        "listgrants-rights": "Хоҡуҡтар",
        "trackingcategories": "Категорияларҙы күҙәтеү",
+       "trackingcategories-summary": "Был биттә MediaWiki программа тәьминиәте тарафынан автоматик рәүештә тултырылған күҙәтеүсе категориялар күрһәтелгән. Уларҙың исемен {{ns:8}} исемдәр киңлегендәге тейешле система хәбәрҙәрен үҙгәртеп алыштырырға була.",
+       "trackingcategories-msg": "Күҙәтеүсе категория",
        "trackingcategories-name": "Хәбәр исеме",
+       "trackingcategories-desc": "Категорияға индереү критерийҙары",
+       "noindex-category-desc": "Бит эҙләүсе роботтар тарафынан индексацияланмай, сөнки унда \"тылсымлы һүҙ\" <code><nowiki>__NOINDEX__</nowiki></code> бар һәм ул был флаг рөхсәт ителгән исемдәр киңлегендә урынлашҡан.",
+       "index-category-desc": "Биттә «тылсымлы һүҙ» бар<nowiki>__INDEX__</nowiki> (бит рөхсәт ителгән исемдәр арауығында ята), шуға күрә эҙләү системаһында индекслана.",
+       "post-expand-template-inclusion-category-desc": "Барлыҡ ҡалыптарҙы ла күрһәткәндән һуң биттең күләме арта<code>$wgMaxArticleSize</code>, шуға күрә ҡайһы берҙәре тулыһынса күрһәтелмәне.",
+       "post-expand-template-argument-category-desc": "Бит <code>$wgMaxArticleSize</code> ҡалып дәлиле асылғандан һуң ҙурыраҡ була(фигуралы өс йәйә, мәҫәлән<code>({{{Foo}}})</code>).",
+       "expensive-parserfunction-category-desc": "Биттә ресурс һыйҙырышлығы ҙур булған (<code>#ifexist</code> кеүек) функциялар күп ҡулланыла.Тулыраҡ -[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit] битендә.",
+       "broken-file-category-desc": "Был бит булмаған файлға һылтана",
+       "hidden-category-category-desc": "Был категорияла <code><nowiki>__HIDDENCAT__</nowiki></code> тамғаһы бар, был категория бүлегендә битте күрһәтмәй.",
+       "trackingcategories-nodesc": "Тасуирлама юҡ.",
+       "trackingcategories-disabled": "Категория һүндерелгән.",
        "mailnologin": "Хат ебәреү өсөн адрес юҡ",
        "mailnologintext": "Башҡа ҡатнашыусыларға хат ебәреү өсөн, һеҙ [[Special:UserLogin|танылырға]] һәм [[Special:Preferences|көйләүҙәрегеҙҙә]] ысын электрон адрес почтаһы кереткән булырға тейешһегеҙ.",
        "emailuser": "Ҡатнашыусыға хат",
        "mywatchlist": "Күҙәтеү исемлеге",
        "watchlistfor2": "$1 $2 өсөн",
        "nowatchlist": "Һеҙҙең күҙәтеү исемлегегеҙ буш.",
-       "watchlistanontext": "Күҙәтеү исемлеген ҡарау йәки мөхәррирләү өсөн $1 кәрәк.",
+       "watchlistanontext": "Күҙәтеү исемлеген ҡарау йәки мөхәррирләү өсөн  кәрәк.",
        "watchnologin": "Үҙегеҙҙе танытырға кәрәк",
        "addwatch": "Күҙәтеү исемлегенә өҫтәргә",
        "addedwatchtext": "\"[[:$1]]\" бите [[Special:Watchlist|күҙәтеү исемлегегеҙгә]] өҫтәлде.\nБыл биттә һәм уның фекер алышыу битендә буласаҡ бар үҙгәртеүҙәр ундағы исемлектә күрһәтеләсәк.",
+       "addedwatchtext-short": "\"$1\" бите Һеҙҙең күҙәтеү исемлегенә өҫтәлгән",
        "removewatch": "Күҙәтеү исемлегенән сығарырға",
-       "removedwatchtext": "«[[:$1]]» бите [[Special:Watchlist|күҙәтеү исемлегегеҙҙән]] сығарылды.",
+       "removedwatchtext": "«[[:$1]]» мәҡәләһе һәм уның фекер алышыу бите һеҙҙең [[Special:Watchlist|күҙәтеү исемлегенән]] сығарылды.",
+       "removedwatchtext-short": "\"$1\" бите һеҙҙең күҙәтеү исемлегенән алып ташланды.",
        "watch": "Күҙәтергә",
        "watchthispage": "Был битте күҙәтергә",
        "unwatch": "Күҙәтмәҫкә",
        "wlheader-enotif": "Электрон почта аша белдереү индерелгән.",
        "wlheader-showupdated": "Һеҙҙең аҙаҡҡы кереүегеҙҙән һуң үҙгәргән биттәр '''ҡалын''' шрифт менән күрһәтелгән.",
        "wlnote": "Түбәндә $3 $4 ваҡытына тиклем аҙаҡҡы {{PLURAL:$2|1=сәғәт|'''$2''' сәғәт}} эсендә эшләнгән {{PLURAL:$1|1=үҙгәртеү|'''$1''' үҙгәртеү}} күрһәтелгән.",
-       "wlshowlast": "Һуңғы $1 сәғәт $2 көн өсөн күрһәт",
+       "wlshowlast": "Һуңғы $1 сәғәт $2 көн эсендәгеһен күрһәтеү",
+       "watchlist-hide": "Йәшереү",
+       "watchlist-submit": "Күрһәтергә",
+       "wlshowtime": "Күрһәтеү өсөн ваҡыт арауығы",
+       "wlshowhideminor": "Әҙ генә үҙгәрештәр",
+       "wlshowhidebots": "Бот",
+       "wlshowhideliu": "танылған ҡулланыусылар",
+       "wlshowhideanons": "Аноним ҡулланыусылар",
+       "wlshowhidepatr": "Тикшерелгән төҙәтеүҙәр",
+       "wlshowhidemine": "Минең үҙгәртеүҙәр",
+       "wlshowhidecategorization": "Биттәрҙе категориялаштырыу",
        "watchlist-options": "Күҙәтеү исемлеге көйләүҙәре",
        "watching": "Күҙәтеү исемлегенә өҫтәү...",
        "unwatching": "Күҙәтеү исемлегенән сығарыу...",
        "deletepage": "Битте юйырға",
        "confirm": "Раҫларға",
        "excontent": "эстәлеге: \"$1\"",
-       "excontentauthor": "эстәлеге: \"$1\" (һәм берҙән-бер авторы \"[[Special:Contributions/$2|$2]]\" ине)",
+       "excontentauthor": "эстәлеге: \"$1\" (һәм берҙән-бер авторы \"[[Special:Contributions/$2|$2]] ([[User talk:$2|фекер алышыу]])\" ине)",
        "exbeforeblank": "юйыуға тиклемге эсләлеге: \"$1\"",
        "delete-confirm": "$1 — юйырға",
        "delete-legend": "Юйырға",
-       "historywarning": "'''Киҫәтеү:''' һеҙ юйырға йыйынған биттең тарихында яҡынса $1 {{PLURAL:$1|өлгө}} бар:",
+       "historywarning": "<strong>Иғтибар:</strong> һеҙ юйырға йыйынған биттең тарихында яҡынса $1 {{PLURAL:$1|өлгө}} бар:",
+       "historyaction-submit": "Күрһәтергә",
        "confirmdeletetext": "Һеҙ был биттең (йәки рәсемдең) һәм уның мәғлүмәттәр базаһындағы үҙгәртеүҙәр тарихының тулыһынса юйылыуын һоранығыҙ.\nЗинһар, быны эшләргә теләгәнегеҙҙе, үҙ хәрәкәттәрегеҙҙең һөҙөмтәләрен аңлағанығыҙҙы һәм [[{{MediaWiki:Policy-url}}]] бүлегендә белдереп кителгән ҡағиҙәләр буйынса эшләгәнегеҙҙе раҫлағыҙ.",
        "actioncomplete": "Ғәмәл үтәлде",
        "actionfailed": "Ғәмәл үтәлмәне",
        "delete-edit-reasonlist": "Сәбәптәр исемлеген мөхәррирләргә",
        "delete-toobig": "Был биттең үҙгәртеүҙәр тарихы бик оҙон, $1 {{PLURAL:$1|өлгөнән}} күберәк.\n{{SITENAME}} проектының эшмәкәрлеге боҙолмауы маҡсатында бындай биттәрҙе юйыу тыйылған.",
        "delete-warning-toobig": "Был биттең үҙгәртеүҙәр тарихы бик оҙон, $1 {{PLURAL:$1|өлгөнән}} күберәк.\nБитте юйыу {{SITENAME}} проектының эшмәкәрлеге боҙолоуына килтереүе мөмкин, һаҡлыҡ менән эш итегеҙ.",
+       "deleteprotected": "Был бит һаҡланған, уны юйҙыра алмайһығыҙ.",
+       "deleting-backlinks-warning": "<strong>Иҫкәртеү:</strong> [[Special:WhatLinksHere/{{FULLPAGENAME}}|Башҡа ҡатнашыусылар]] һеҙ юйырға теләгән биткә һылтана.",
        "rollback": "Үҙгәртеүҙәрҙе кире ҡайтарырға",
        "rollbacklink": "кире",
        "rollbacklinkcount": "$1 {{PLURAL:$1|1=төҙәтеүҙе|төҙәтеүҙе}} кире алырға",
        "rollback-success": "$1 уҙгәртеүҙәре кире алдынды;\n$2 өлгөһөнә ҡайтыу.",
        "sessionfailure-title": "Сеанс хатаһы",
        "sessionfailure": "Хәҙерге сеанста хаталар килеп сыҡҡан, булырға тейеш;\n\"сеансты баҫып алыу\"ға юл ҡуймау өсөн был ғәмәл үтәлмәне.\nАлдағы биткә кире  ҡайтығыҙ, битте яңыртығыҙ һәм яңынан ҡабатлап ҡарағыҙ.",
+       "changecontentmodel": "Биттең контент моделен мөхәррирләү",
+       "changecontentmodel-legend": "Модель эстәлеген үҙгәртергә",
+       "changecontentmodel-title-label": "Бит исемдәре",
+       "changecontentmodel-model-label": "Эстәлектең яңы моделе",
+       "changecontentmodel-reason-label": "Сәбәп",
+       "changecontentmodel-submit": "Үҙгәртергә",
+       "changecontentmodel-success-title": "Эстәлек моделе үҙгәртелде",
+       "changecontentmodel-success-text": "[[:$1]] эстәлек моделе үҙгәртелде",
+       "changecontentmodel-cannot-convert": "[[:$1]]  эстәлеге $2 тибына үҙгәртелә алмай",
+       "changecontentmodel-nodirectediting": "$1 эстәлеге моделен тураға мөхәррирләп булмай",
+       "log-name-contentmodel": "Эстәлек моделен үҙгәртеүҙәр журналы",
+       "log-description-contentmodel": "Эстәлек моделен үҙгәртеүҙәр менән бәйле ваҡиғалар",
+       "logentry-contentmodel-new": "$1 $3 {{GENDER:$2|}} битен булдырҙы, стандарт булмаған «$5» моделе ҡулланылды.",
+       "logentry-contentmodel-change": "$3 битендәге $1 {{GENDER:$2||}} эстәлек моделен $3  «$4» -тән «$5»-кә үҙгәртте.",
+       "logentry-contentmodel-change-revertlink": "кире алырға",
+       "logentry-contentmodel-change-revert": "кирегә",
        "protectlogpage": "Һаҡлау яҙмалары",
        "protectlogtext": "Түбәндә битте һаҡлауҙы үҙгәртеү яҙмалары килтерелгән.\nҺеҙ шулай уҡ хәҙерге ваҡытта [[Special:ProtectedPages|һаҡланған биттәр исемлеген]] ҡарай алаһығыҙ.",
        "protectedarticle": "«[[$1]]» битен һаҡлаған",
        "protect-locked-blocked": "Һеҙҙең исәп яҙмағыҙ бикләнгән ваҡытта һеҙ биттең һаҡлау дәрәжәһен үҙгәртә алмайһығыҙ.\n'''$1''' битенең хәҙерге һаҡлау көйләүҙәре:",
        "protect-locked-dblock": "Һаҡлау дәрәжәһе үҙгәртелә алмай, сөнки төп мәғлүмәттәр базаһы ваҡытлыса бикле.\n'''$1''' битенең хәҙерге һаҡлау көйләүҙәре:",
        "protect-locked-access": "Биттең һаҡлау дәрәжеһен үҙгәртер өсөн иҫәп яҙыуығыҙҙың хоҡуҡтары етәрле түгел. '''$1''' битенең хәҙерге һаҡлау көйләүҙәре:",
-       "protect-cascadeon": "Был бит һаҡланған, сөнки ул эҙмә-эҙлекле һаҡлау ҡуйылған {{PLURAL:$1|1=биткә|биттәргә}} керә. Һеҙ был биттең һаҡлау дәрәжәһен үҙгәртә алаһығыҙ, ләкин был эҙмә-эҙлекле һаҡлауға йоғонто яһамаясаҡ.",
+       "protect-cascadeon": "Был бит һаҡланған, сөнки ул эҙмә-эҙлекле һаҡлау ҡуйылған {{PLURAL:$1|1=биткә|биттәргә}} керә. Һеҙ был биттең һаҡлауға дәрәжәһен үҙгәртә алаһығыҙ, ләкин был эҙмә-эҙлекле һаҡлауға йоғонто яһамаясаҡ.",
        "protect-default": "Бар ҡулланыусыларға рөхсәт бирергә",
        "protect-fallback": "«$1» хоҡуҡлы ҡатнашыусыларға ғына рөхсәте ителгән",
        "protect-level-autoconfirmed": "Үҙенән-үҙе раҫланған ҡатнашыусыларға ғына рөхсәт ителгән",
        "protect-othertime": "Башҡа ваҡыт:",
        "protect-othertime-op": "башҡа ваҡыт",
        "protect-existing-expiry": "Хәҙерге тамамланыу ваҡыты: $2 $3",
+       "protect-existing-expiry-infinity": "Тамамланыу ваҡыты: сикләнмәгән",
        "protect-otherreason": "Башҡа/өҫтәмә сәбәп:",
        "protect-otherreason-op": "Башҡа сәбәп",
        "protect-dropdown": "*Ғәҙәттәге һаҡлау сәбәптәре:\n** Үтә ныҡлы вандаллыҡ\n** Үтә ныҡлы спам\n** Файҙаһыҙ үҙгәртеүҙәр ярышы\n** Киң танылған бит",
        "namespace": "Исемдәр арауығы:",
        "invert": "Һайланғандарҙы әйләндерергә",
        "tooltip-invert": "Һайланған исемдәр арауығындағы (һәм бәйле исемдәр арауығындағы, әгәр күрһәтелһә) биттәрҙәге үҙгәртеүҙәрҙе йәшерер өсөн был билдәне ҡуйығыҙ.",
+       "tooltip-whatlinkshere-invert": "Был тамғаны һайланған исемдәр арауығындағы һылтанмаларҙы йәшереү өсөн ҡуйығыҙ.",
        "namespace_association": "Бәйле арауыҡ",
        "tooltip-namespace_association": "Һайланған исемдәр арауығы менән бәйле әңгәмә(йәки тема) исем арауыҡтарын ҡушыр өсөн был билдәне ҡуйығыҙ.",
        "blanknamespace": "(Төп)",
        "mycontris": "Башҡарған эштәр",
        "anoncontribs": "Иғәнәләр",
        "contribsub2": "{{GENDER:$3|$1}} башҡарған эше ($2)",
+       "contributions-userdoesnotexist": "«$1» исемле иҫәп яҙыуы юҡ.",
        "nocontribs": "Күрһәтелгән шарттарға яуап биргән үҙгәртеүҙәр табылманы.",
        "uctop": "(ағымдағы)",
        "month": "Айҙан башлап (һәм элегерәк):",
        "sp-contributions-newbies-sub": "Яңы иҫәп яҙмалары өсөн",
        "sp-contributions-newbies-title": "Яңы теркәлгән ҡатнашыусылар башҡарған эш",
        "sp-contributions-blocklog": "блоклау яҙмалары",
+       "sp-contributions-suppresslog": "Ҡулланыусыларҙың юйылған өлөшө",
        "sp-contributions-deleted": "юйылған үҙгәртеүҙәр",
        "sp-contributions-uploads": "тейәүҙәр",
        "sp-contributions-logs": "журналдар",
        "sp-contributions-search": "Башҡарған эште эҙләү",
        "sp-contributions-username": "Ҡулланыусының IP-адресы йәки исеме:",
        "sp-contributions-toponly": "Һуңғы өлгөләрҙе генә күрһәтергә",
+       "sp-contributions-newonly": "Яңы бит яһаған төҙәтеүҙәрҙе генә күрһәтергә",
        "sp-contributions-submit": "Эҙлә",
        "whatlinkshere": "Бында һылтанмалар",
        "whatlinkshere-title": "«$1» битенә һылтанған биттәр",
        "whatlinkshere-hidelinks": "Һылтанмаларҙы $1",
        "whatlinkshere-hideimages": "файл һылтанмаларын $1",
        "whatlinkshere-filters": "Һайлау",
+       "whatlinkshere-submit": "Күсергә",
        "autoblockid": "Автобикләү #$1",
        "block": "Ҡатнашыусыны бикләү",
        "unblock": "Бикләнгән ҡатнашыусыны азат итеү",
-       "blockip": "Ҡатнашыусыны бикләү",
+       "blockip": "{{GENDER:$1|Ҡатнашыусыны}} бикләү",
        "blockip-legend": "Ҡатнашыусыны бикләү",
-       "blockiptext": "Билдәләнгән IP адрестан яҙыу мөмкинлеген бикләү өсөн, түбәндәге форманы ҡулланығыҙ.\nБыл бары тик вандаллыҡҡа юл ҡуймау өсөн генә һәм [[{{MediaWiki:Policy-url}}|ҡағиҙәләр]] буйынса ғына эшләнергә тейеш.\nТүбәндә бикләү сәбәбен күрһәтегеҙ (мәҫәлән, вандаллыҡ эҙҙәре булған бер нисә биттең цитатаһын килтерегеҙ).",
+       "blockiptext": "Билдәләнгән IP адрестан яҙыу мөмкинлеген бикләү өсөн, түбәндәге форманы ҡулланығыҙ.\nБыл бары тик вандаллыҡҡа юл ҡуймау өсөн генә һәм [[{{MediaWiki:Policy-url}}|ҡағиҙәләр]] буйынса ғына эшләнергә тейеш.\nТүбәндә бикләү сәбәбен күрһәтегеҙ (мәҫәлән, вандаллыҡ эҙҙәре булған бер нисә биттең цитатаһын килтерегеҙ).$1 $2",
        "ipaddressorusername": "Ҡатнашыусының IP-адресы йәки исеме:",
        "ipbexpiry": "Тамамлана:",
        "ipbreason": "Сәбәп:",
        "blockipsuccesstext": "[[Special:Contributions/$1|$1]] бикләнде.<br />\nБиктәрҙе күреү өсөн [[Special:BlockList|бикләнгән IP адрестарҙы]] ҡарағыҙ.",
        "ipb-blockingself": "Һеҙ үҙегеҙҙе бикләргә теләйһегеҙ! Быны эшләүҙе раҫлайһығыҙмы?",
        "ipb-confirmhideuser": "\"Ҡулланыусыны йәшер\" ғәмәлдә саҡта ҡулланыусыны блокларға теләйһегеҙ. Уның исеме исемлектәрҙә һәм журналдарҙа күренмәйәсәк. Быны эшләргә теләүегеҙҙе раҫлайһығыҙмы?",
+       "ipb-confirmaction": "Быны башҡарырға теләһегеҙ түбәндә тамға ҡуйығыҙ «{{int:ipb-confirm}}».",
        "ipb-edit-dropdown": "Бикләү сәбәптәрен мөхәррирләргә",
        "ipb-unblock-addr": "$1 биген алырға",
        "ipb-unblock": "Ҡатнашыусының йәки IP адрестың биген алырға",
        "unblocked": "[[User:$1|$1]] бикләнгән",
        "unblocked-range": "$1 биге сиселде",
        "unblocked-id": "$1 биге алынған",
+       "unblocked-ip": "[[Special:Contributions/$1|$1]] блоктан азат ителде",
        "blocklist": "Тыйылған ҡатнашыусылар",
        "ipblocklist": "Тыйылған ҡатнашыусылар",
        "ipblocklist-legend": "Бикләнгән ҡатнашыусыны эҙләү",
        "block-log-flags-hiddenname": "ҡатнашыусы исеме йәшерелгән",
        "range_block_disabled": "Хакимдәргә бикләү арауыҡтарын булдырыу тыйылған.",
        "ipb_expiry_invalid": "Тамамланыу ваҡыты дөрөҫ түгел.",
+       "ipb_expiry_old": "Һаҡлауҙың тамамланыу ваҡыты үткән көнгә ҡуйылған.",
        "ipb_expiry_temp": "Бикләү ваҡытында ҡатнашыусы исеме йәшерелһә, бикләү ваҡыты сикһеҙ булырға тейеш.",
-       "ipb_hide_invalid": "Иҫәп яҙмаһын йәшереү мөмкин түгел, ул бигерәк күп үҙгәртеүҙәр яһаған, булырға тейеш.",
+       "ipb_hide_invalid": "Иҫәп яҙмаһын йәшереү мөмкин түгел,  {{PLURAL:$1|бер|$1 бер нисә}} төҙәтеү эшләнгән.",
        "ipb_already_blocked": "\"$1\" бикләнгән инде.",
        "ipb-needreblock": "$1 бикләнгән инде.\nБикләү көйләүҙәрен үҙгәртергә теләйһегеҙме?",
        "ipb-otherblocks-header": "Башҡа {{PLURAL:$1|1=бикләү|бикләүҙәр}}",
        "move-page": "$1 — исемен үҙгәртеү",
        "move-page-legend": "Биттең исемен үҙгәртеү",
        "movepagetext": "Аҫтағы ҡалыпты ҡулланып, биттең исемен үҙгәртә һәм уның үҙгәртеүҙәр журналын яңы урынға күсерә алаһығыҙ.\nБиттең элекке исеме яңы биткә йүнәлтеү булып ҡаласаҡ.\nҺеҙ элекке исемгә булған йүнәлтеүҙәрҙе автоматик рәүештә яңы исемгә күсерә алаһығыҙ.\nӘгәр быны эшләмәһәгеҙ, [[Special:DoubleRedirects|икеле]] һәм [[Special:BrokenRedirects|өҙөлгән йүнәлтеүҙәр]] барлығын тикшерегеҙ.\nҺылтанмаларҙың кәрәкле урынға күрһәтеүен дауам итеүе өсөн һеҙ яуаплы.\n\nИғтибар итегеҙ: әгәр яңы һайланған исемдәге тағы бер бит бар икән, биттең исеме '''үҙгәртелмәйәсәк'''; ул бит йүнәлтеүсе  йәки буш булһа һәм төҙәтеүҙәр тарихына эйә булмаһа ғына,  был мөмкин.\nТимәк, биттең исемен яңылыш үҙгәртһәгеҙ, битте элекке исеменә кире ҡайтара алаһығыҙ, ләкин булған битте юя алмайһығыҙ.\n\n'''Иҫкәртеү!'''\n\"Популяр\" биттәрҙең исемен үҙгәртеү күләмле һәм көтөлмәгән һөҙөмтәләргә килтерергә мөмкин.\nДауам итерҙән алда, ихтимал булған һөҙөмтәләрҙе аңлауығыҙға ышанығыҙ.",
-       "movepagetext-noredirectfixer": "Аҫтағы форманы ҡулланыу биттең исемен үҙгәртә һәм уның үҙгәртеүҙәр яҙмаһын яңы урынға күсерә.\nБиттең элекке исеме яңы биткә йүнәлтеү булып ҡаласаҡ.\nҺеҙ элекке исемгә булған йүнәлтеүҙәрҙе автоматик рәүештә яңы исемгә күсерә алаһығыз.\nӘгәр быны эшләмәһәгеҙ, [[Special:DoubleRedirects|икеле]] һәм [[Special:BrokenRedirects|өҙөлгән йүнәлтеүҙәрҙе]] тикшерегеҙ.\nҺылтанмаларҙың кәрәкле урынға күрһәтеүҙәренең дауам итеүе өсөн һеҙ яуаплы.\n\nИғтибар итегеҙ, әгәр яңы исемле бит бар икән, биттең исеме '''үҙгәртелмәйәсәк'''; элекке бит йүнәлтеү, буш һәм үҙгәртеү тарихына эйә булмаған осраҡтарҙан башҡа.\nБыл шуны аңлата: бит исемен яңылыш үҙгәртһәгеҙ, битте кире ҡайтара алаһығыҙ, ләкин булған битте юя алмайһығыҙ.\n\n'''Иғтибар!'''\nПопуляр биттәрҙең исемен үҙгәртеү көтмәгән һөҙөмтәләргә килтерүе мөмкин.\nДауам итерҙән алда, бөтә буласаҡ һөҙөмтәләрҙе аңлауығыҙҙы уйлағыҙ.",
+       "movepagetext-noredirectfixer": "Аҫтағы форманы ҡулланыу биттең исемен үҙгәртә һәм уның үҙгәртеүҙәр яҙмаһын яңы урынға күсерә.\nБиттең элекке исеме яңы биткә йүнәлтеү булып ҡаласаҡ.\nҺеҙ элекке исемгә булған йүнәлтеүҙәрҙе автоматик рәүештә яңы исемгә күсерә алаһығыз.\nӘгәр быны эшләмәһәгеҙ, [[Special:DoubleRedirects|икеле]] һәм [[Special:BrokenRedirects|өҙөлгән йүнәлтеүҙәрҙе]] тикшерегеҙ.\nҺылтанмаларҙың кәрәкле урынға күрһәтеүҙәренең дауам итеүе өсөн һеҙ яуаплы.\n\nИғтибар итегеҙ, әгәр яңы исемле бит бар икән, биттең исеме '''үҙгәртелмәйәсәк'''; элекке бит йүнәлтеү, буш һәм үҙгәртеү тарихына эйә булмаған осраҡтарҙан башҡа.\nБыл шуны аңлата: бит исемен яңылыш үҙгәртһәгеҙ, битте кире ҡайтара алаһығыҙ, ләкин булған битте юя алмайһығыҙ.\n\n<strong>Иғтибар:</strong>\nПопуляр биттәрҙең исемен үҙгәртеү көтмәгән һөҙөмтәләргә килтерүе мөмкин.\nДауам итерҙән алда, бөтә буласаҡ һөҙөмтәләрҙе аңлауығыҙҙы уйлағыҙ.",
        "movepagetalktext": "Фекер алышыу битенең исеме лә үҙгәртеләсәк, '''киләһе осраҡтарҙан тыш''':\n*Бындай исемле фекер алышыу бите бар, йәки\n*Аҫтағы юлды билдәләмәгәнһегеҙ.\n\nБындай осраҡтарҙа, кәрәкле булһа, биттәрҙе үҙегеҙҙең күсереүегеҙ йәки исемен үҙгәртеүегеҙ кәрәк буласаҡ.",
        "moveuserpage-warning": "'''Иғтибар:''' Һеҙ ҡатнашыусы битенең исемен үҙгәртергә йыйынаһығыҙ. Зинһар, биттең генә исеме үҙгәрәсәк, ҡатнашыусы исеме ''үҙгәрмәйәсәк'', икәнен күҙ үңында тотоғоҙ.",
+       "movecategorypage-warning": "<strong>Иҫкәрмә:</strong> Һеҙ категория битенең атамаһын үҙгәртергә теләйһегеҙ.Зинһар, ошо бит кенә үҙгәртелеүенә иғтибар итегеҙ, ә иҫке категориялағы башҡа биттәр<em>не</em> яңынан категорияланасаҡ.",
        "movenologintext": "Биттең исемен үҙгәртеү өсөн, һеҙ [[Special:UserLogin|танылырға]] тейешһегеҙ.",
        "movenotallowed": "Һеҙҙең бит исемен үҙгәртергә хоҡуғығыҙ юҡ",
        "movenotallowedfile": "Һеҙҙең файл исемен үҙгәртергә хоҡуғығыҙ юҡ",
        "cant-move-user-page": "Һеҙҙең ҡатнашыусы битенең исемен үҙгәртергә хоҡуғығыҙ юҡ",
        "cant-move-to-user-page": "Һеҙҙең битте ҡатнашыусы бите итеп үҙгәртергә хоҡуғығыҙ юҡ (ҡатнашыусы биттәренән тыш).",
-       "newtitle": "Яңы исем",
+       "cant-move-category-page": "Һеҙҙең категория исемен үҙгәртергә хоҡуғығыҙ юҡ",
+       "cant-move-to-category-page": "Һеҙҙең битте категория бите тип төҙәтергә хоҡуғығыҙ юҡ.",
+       "newtitle": "Яңы атама",
        "move-watch": "Был битте күҙәтеү исемлегенә өҫтәргә",
        "movepagebtn": "Биттең исемен үҙгәртергә",
        "pagemovedsub": "Бит исеме үҙгәртелде",
        "movepage-max-pages": "$1 {{PLURAL:$1|биттең}} исеме үҙгәртелде, бынан күберәк биттең исемен автоматик рәүештә үҙгәртеү мөмкин түгел.",
        "movelogpage": "Исем үҙгәртеү яҙмалары",
        "movelogpagetext": "Түбәндә — исемдәре үҙгәртелгән биттәр.",
-       "movesubpage": "{{PLURAL:$1|кергән бит}}",
-       "movesubpagetext": "Был биткә түбәндә килтерелгән $1 {{PLURAL:$1|бит}} кергән.",
+       "movesubpage": "{{PLURAL:$1|ярҙамсы бит}}",
+       "movesubpagetext": "Был биттә $1 {{PLURAL:$1|ярҙамсы бит}}.",
        "movenosubpage": "Был биткә бер бит тә кермәгән.",
        "movereason": "Сәбәп:",
        "revertmove": "кирегә",
-       "delete_and_move_text": "==Юйыу талап ителә==\n[[:$1|«$1»]] исемле бит бар инде. Исем үҙгәртеүҙе дауам итеү өсөн, уны юйырға теләйһегеҙме?",
+       "delete_and_move_text": "[[:$1|«$1»]] исемле бит бар инде. Исем үҙгәртеүҙе дауам итеү өсөн, уны юйырға теләйһегеҙме?",
        "delete_and_move_confirm": "Эйе, битте юйырға",
        "delete_and_move_reason": "Исем үҙгәртеүҙе дауам итеү өсөн юйылды «[[$1]]»",
        "selfmove": "Хәҙерге һәм яңы исемдәр тап килә. Исем үҙгәртеү мөмкин түгел.",
        "export-download": "Файлды һаҡларға",
        "export-templates": "Ҡалыптарҙы индерергә",
        "export-pagelinks": "Бәйле биттәрҙе ошо тәрәнлек менән индерергә:",
+       "export-manual": "Битте ҡулдан өҫтәргә",
        "allmessages": "Система хәбәрҙәре",
        "allmessagesname": "Хәбәр",
        "allmessagesdefault": "Ғәҙәттәге яҙма",
        "thumbnail-temp-create": "Эскиздың ваҡытлыса файлын яһап булмай",
        "thumbnail-dest-create": "Маҡсат урында эскизды һаҡлап булмай",
        "thumbnail_invalid_params": "Шартлы рәсем шарттары дөрөҫ түгел",
+       "thumbnail_toobigimagearea": "Күләме $1 ҙур булған файл",
        "thumbnail_dest_directory": "Кәрәкле директорияны булдырып булмай",
        "thumbnail_image-type": "Был рәсем төрө ҡулланылмай",
        "thumbnail_gd-library": "GD йыйынтығының төҙөлөшө тулы түгел, $1 функцияһы юҡ",
        "thumbnail_image-missing": "$1 файлы юҡ, булырға тейеш",
+       "thumbnail_image-failure-limit": "Был эскизды булдырыу өсөн иң күп маташыу $1 булды. Һуңынан ғабатлап ҡарағыҙ.",
        "import": "Биттәрҙе тейәү",
-       "importinterwiki": "Ð\92ики Ð¿Ñ\80оекÑ\82Ñ\82аÑ\80-аÑ\80а Ð¸Ð½Ð´ереү",
+       "importinterwiki": "баÑ\88ҡа Ð²Ð¸ÐºÐ¸-пÑ\80оекÑ\82Ñ\82ан Ð±Ð¸Ñ\82Ñ\82Ó\99Ñ\80Ò\99е ÐºÒ¯Ñ\81ереү",
        "import-interwiki-text": "Вики проектты һәм тейәлә торған биттең исемен күрһәтегеҙ.\nҮҙгәртеү ваҡыттары һәм автор исемдәре һаҡланасаҡ.\nБөтә вики проекттары-ара тейәүҙәр [[Special:Log/import|тейәү яҙмалары журналында]] теркәлә.",
+       "import-interwiki-sourcewiki": "Сығанаҡ вики-проект:",
        "import-interwiki-sourcepage": "Сығанаҡ бит:",
        "import-interwiki-history": "Был биттең бөтә үҙгәртеү тарихын яҙҙырырға",
        "import-interwiki-templates": "Бөтә ҡалыптарҙы индерергә",
        "import-interwiki-submit": "Тейәргә",
+       "import-mapping-default": "Килешеү буйынса урынлашҡан ергә импортлау",
+       "import-mapping-namespace": "Исемдәр арауығына импортлау",
+       "import-mapping-subpage": "Ярҙамсы бит итеп киләһе биткә импортлау",
        "import-upload-filename": "Файл исеме:",
        "import-comment": "Иҫкәрмә:",
        "importtext": "Зинһар, файлды сығанаҡ викинан [[Special:Export|махсус ҡорал]] ярҙамында сығарығыҙ. Артабан уны компьютерығыҙға һаҡлағыҙ һәм бында тейәгеҙ.",
        "importstart": "Биттәрҙе тейәү...",
        "import-revision-count": "$1 {{PLURAL:$1|1=өлгө|өлгө}}",
        "importnopages": "Тейәү өсөн биттәр юҡ.",
-       "imported-log-entries": "Журналдан $1 {{PLURAL:$1|яҙма}} тейәлде.",
+       "imported-log-entries": "Журналдың {{PLURAL:$1| $1 яҙмаһы импортланды}}",
        "importfailed": "Тейәү хатаһы: <nowiki>$1</nowiki>",
        "importunknownsource": "Сығанаҡ биттең төрө билдәһеҙ",
        "importcantopen": "Тейәлә торған битте асып булмай",
        "import-nonewrevisions": "Бөтә өлгөләр бығаса тейәлгән булған.",
        "xml-error-string": "$2 юлда, $3 урында ($4 байт) $1: $5",
        "import-upload": "XML-мәғлүмәт тейәргә",
-       "import-token-mismatch": "Сессия мәғлүмәттәре юғалған.\nЗинһар, тағы ҡабатлап ҡарағыҙ.",
+       "import-token-mismatch": "Сессия мәғлүмәттәре юғалған.\nЗинһар, тағы ҡабатлап ҡарағыҙ. [[Special:UserLogout|системанан сығырға]]",
        "import-invalid-interwiki": "Күрһәтелгән вики проекттан тейәү мөмкин түгел.",
        "import-error-edit": "«$1» битен импортлап булманы, сөнки һеҙгә ул битте мөхәррирләү тыйылған.",
        "import-error-create": "«$1» битен импортлап булманы, сөнки һеҙгә ул битте яһау тыйылған.",
        "import-error-special": " «$1» бите импортҡа сығарылманы, сөнки ул биттәр яһау мөмкин булмаған исемдәр арауығына ҡарай.",
        "import-error-invalid": "\"$1\" бите яраҡһыҙ исеме өсөн импортланманы.",
        "import-error-unserialize": "«$1» битенең $2 өлгөһөн структуралаштырып (десериаялап) булмай. $4 форматында серияланған $3 эстәлегенең моделеның был өлгөлә ҡулланылыуы тураһында хәбәр алынды.",
+       "import-error-bad-location": "$3 моделе эстәлегендәге $2 төҙәтеүен $1 был викила һаҡлап булмай.",
        "import-options-wrong": "Хаталы {{PLURAL:$2|1=опция|опциялар}}: <nowiki>$1</nowiki>",
        "import-rootpage-invalid": "Төп биттең күрһәтелгән исеме яңылыш.",
        "import-rootpage-nosubpage": "Төп биттең \"$1\" исемдәр арауығы эске биттәргә рөхсәт бирмәй.",
        "importlogpage": "Тейәү яҙмалары журналы",
        "importlogpagetext": "Хакимдәр тарафынан башҡа вики проекттарҙан биттәрҙе һәм уларҙың үҙгәртеүҙәр тарихын тейәү.",
-       "import-logentry-upload-detail": "$1 {{PLURAL:$1|1=өлгө|өлгө}}",
-       "import-logentry-interwiki-detail": "$2 өлгөнән $1 {{PLURAL:$1|1=өлгө|өлгө}}",
+       "import-logentry-upload-detail": "$1 {{PLURAL:$1|версия күсерелгән|версиялар күсерелгән}}",
+       "import-logentry-interwiki-detail": "$2-нан $1 {{PLURAL:$1|өлгө импортланған}}",
        "javascripttest": "\nJavaScript тикшереү",
        "javascripttest-pagetext-noframework": "Был бит JavaScript тикшеренеүҙәре үткәреү өсөн  резервланған.",
        "javascripttest-pagetext-unknownframework": "Билдәһеҙ тикшеренеүҙәр мөхитнамәһе \"$1\".",
+       "javascripttest-pagetext-unknownaction": "$1 ғәмәле билдәһеҙ",
        "javascripttest-pagetext-frameworks": "Зинһар өсөн киләһе тикшеренеүҙәр мөхитнамәһенең береһен һайлап алығыҙ: $1",
        "javascripttest-pagetext-skins": "Һынауҙы башлау өсөн тышса һыйлағыҙ.",
        "javascripttest-qunit-intro": "mediawiki.org адресы буйынса ҡарағыҙ [$1 тест үткәреү документацияһы].",
-       "tooltip-pt-userpage": "Ҡулланыусы битегеҙ",
+       "tooltip-pt-userpage": "{{GENDER:|Һеҙҙең}} ҡатнашыусы бите",
        "tooltip-pt-anonuserpage": "IP адресығыҙ өсөн ҡатнашыусы бите",
-       "tooltip-pt-mytalk": "Фекерләшеү битегеҙ",
+       "tooltip-pt-mytalk": "{{GENDER:|Һеҙҙең}} фекерләшеү битегеҙ",
        "tooltip-pt-anontalk": "IP адресығыҙ өсөн фекер алышыу бите",
-       "tooltip-pt-preferences": "Көйләүҙәрегеҙ",
+       "tooltip-pt-preferences": "{{GENDER:|Һеҙҙең}} көйләүҙәрегеҙ",
        "tooltip-pt-watchlist": "Һеҙ күҙәткән биттәр исемлеге",
-       "tooltip-pt-mycontris": "Кереткән өлөшөгөҙ",
+       "tooltip-pt-mycontris": "{{GENDER:|Һеҙҙең}} төҙәтеүҙәр исемлеге",
+       "tooltip-pt-anoncontribs": "Был IP-адрестан яһалған төҙәтеүҙәр",
        "tooltip-pt-login": "Бында теркәлеү үтергә була, әммә был эш мәжбүри түгел.",
        "tooltip-pt-logout": "Сығырға",
        "tooltip-pt-createaccount": "Мотлаҡ булмаһа ла, Һеҙгә иҫәп яҙмаһы төҙөргө һәм системала танылырға тәҡдим итәбеҙ.",
        "tooltip-feed-rss": "Был бит өсөн RSS-таҫма",
        "tooltip-feed-atom": "Был бит өсөн Atom-таҫма",
        "tooltip-t-contributions": "{{GENDER:$1|Был ҡулланыусының}} кереткән өлөшөн ҡарарға",
-       "tooltip-t-emailuser": "Был ҡулланыусыға хат ебәрергә",
+       "tooltip-t-emailuser": "{{GENDER:$1|был ҡулланыусыға}} хат ебәреү",
+       "tooltip-t-info": "Был бит тураһында ентекләберәк",
        "tooltip-t-upload": "Рәсем йәки тауыш эстәлекле файлдарҙы тейәргә",
        "tooltip-t-specialpages": "Барлыҡ махсус биттәр исемлеге",
        "tooltip-t-print": "Был биттең ҡағыҙға баҫыу өлгөһө",
        "tooltip-undo": "\"Кире ал\" төҙәтеүҙе кире ала һәм төҙәтеү формаһын \"алдан байҡау\"ҙа күрһәтә. Һәм кире алыуҙың сәбәбен белдерергә була.",
        "tooltip-preferences-save": "Көйләүҙәрҙе һаҡларға",
        "tooltip-summary": "Ҡыҫҡаса тасуирлама керетегеҙ",
-       "anonymous": "{{SITENAME}} проектының танылмаған {{PLURAL:$1|1=ҡатнашыусыһы|ҡатнашыусылары}}",
+       "anonymous": "{{PLURAL:$1|1=Аноним ҡатнашыусы|Аноним ҡатнашыусылар}} {{grammar:genitive|{{SITENAME}}}}",
        "siteuser": "{{SITENAME}} проектының ҡатнашыусыһы $1",
        "anonuser": "{{SITENAME}} проектының танылмаған ҡатнашыусыһы $1",
        "lastmodifiedatby": "Был бит һуңғы тапҡыр $1 $2 $3 тарафынан үҙгәртелгән.",
        "othercontribs": "Мөхәррирләүҙә ҡатнаштылар: $1.",
        "others": "башҡалар",
-       "siteusers": "{{SITENAME}} {{PLURAL:$2|1=ҡатнашыусы|ҡатнашыусылары}} $1",
-       "anonusers": "{{SITENAME}} проектының танылмаған {{PLURAL:$2|1=ҡатнашыусыһы|ҡатнашыусылары}} $1",
+       "siteusers": "{{PLURAL:$2|1={{GENDER:$1|ҡатнашыусы}}|ҡатнашыусылар}} {{grammar:genitive|{{SITENAME}}}} $1",
+       "anonusers": "{{PLURAL:$2|1=аноним ҡатнашыусы|аноним ҡатнашыусылар}} {{grammar:genitive|{{SITENAME}}}} $1",
        "creditspage": "Рәхмәт белдереү",
        "nocredits": "Был мәҡәләне мөхәррирләүҙә ҡатнашыусылар исемлеге юҡ.",
        "spamprotectiontitle": "Спамдан һаҡлау",
        "pageinfo-length": "Бит оҙонлоғо (байттарҙа)",
        "pageinfo-article-id": "Бит идентификаторы",
        "pageinfo-language": "Бит эстәлегенең теле",
+       "pageinfo-content-model": "Бит эстәлегенең моделе",
        "pageinfo-robot-policy": "Эҙләү роботтары тарафынан индексацияланыу",
        "pageinfo-robot-index": "Рөхсәт ителгән",
        "pageinfo-robot-noindex": "Рөхсәт ителмәй",
        "pageinfo-watchers": "Битте күҙәтеүселәр һаны",
-       "pageinfo-few-watchers": "Күп тигәндә $1 {{PLURAL:$1|күҙәтеүсе}}",
+       "pageinfo-visiting-watchers": "Битте күҙәтеүсе һәм һуңғы үҙгәртеүҙәрҙе күреүсе ҡатнашыусылар һаны",
+       "pageinfo-few-watchers": "$1 әҙерәк {{PLURAL:$1|күҙәтеүсе}}",
+       "pageinfo-few-visiting-watchers": "Битте күҙәтеүсе һәм һуңғы үҙгәртеүҙәрҙе күреүсе ҡатнашыусылар булыуы ла, булмауы ла ихтимал",
        "pageinfo-redirects-name": "Был биткә йүнәлтеүҙәр һаны",
        "pageinfo-subpages-name": "Был биттең эске биттәре",
        "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|йүнәлтеү}}; $3 {{PLURAL:$3|ябай}})",
        "pageinfo-authors": "Төрлө авторҙар һаны",
        "pageinfo-recent-edits": "Һуңғы ваҡыттағы төҙәтеүҙәр ($1 эсендә)",
        "pageinfo-recent-authors": "Төрлө авторҙарҙың һуңғы һаны",
-       "pageinfo-magic-words": "Тылсымлы {{PLURAL:$1|1=һүҙ|һүҙҙәр}} ($1)",
-       "pageinfo-hidden-categories": "Йәшерен {{PLURAL:$1|1=категория|категориялар}} ($1)",
-       "pageinfo-templates": "Ҡулланылған {{PLURAL:$1|1=ҡалып|ҡалыптар}} ($1)",
+       "pageinfo-magic-words": "{{PLURAL:$1|1=Тылсымлы һүҙ|Тылсымлы һүҙҙәр}} ($1)",
+       "pageinfo-hidden-categories": "{{PLURAL:$1|1=Йәшерен категория|Йәшерен категориялар}} ($1)",
+       "pageinfo-templates": "{{PLURAL:$1|1=Ҡалып|Ҡалыптар}} ($1)",
        "pageinfo-transclusions": "{{PLURAL:$1|Индерелгән биттәр}} ($1)",
        "pageinfo-toolboxlink": "Бит мәғлүмәттәре",
        "pageinfo-redirectsto": "Йүнәлтеү",
        "pageinfo-protect-cascading-yes": "Эйе",
        "pageinfo-protect-cascading-from": "Бынан башлап һикәлтәле һаҡлау",
        "pageinfo-category-info": "Категория тураһында мәғлүмәт",
+       "pageinfo-category-total": "Ағзаларҙың дөйөм һаны",
        "pageinfo-category-pages": "Биттәр һаны",
        "pageinfo-category-subcats": "Категория бүлемдәре һаны",
        "pageinfo-category-files": "Файлдар һаны",
        "markaspatrolleddiff": "Тикшерелгән, тип билдәләргә",
        "markaspatrolledtext": "Бил битте тикшерелгән, тип билдәләргә",
+       "markaspatrolledtext-file": "Был өлөгөнө патрулләнгән тип ҡуйырға",
        "markedaspatrolled": "Тикшерелгән тип билдәнгән",
        "markedaspatrolledtext": "[[:$1]] битенең һайланған өлгөһө тикшерелгән тип билдәләнгән.",
        "rcpatroldisabled": "Һуңғы үҙгәртеүҙәрҙе тикшереү рөхсәт ителмәй",
        "patrol-log-page": "Тикшереү яҙмалары журналы",
        "patrol-log-header": "Был — тикшерелгән өлгөләр яҙмалары журналы.",
        "log-show-hide-patrol": "тикшереү яҙмалары журналын $1",
+       "log-show-hide-tag": "$1 билдәләр журналы",
        "deletedrevision": "Иҫке $1 өлгөһө юйылды",
        "filedeleteerror-short": "Файлды юйыу хатаһы: $1",
        "filedeleteerror-long": "Файлды юйыу ваҡытында хаталар килеп сыҡты:\n\n$1",
        "mediawarning": "'''Иғтибар''': был төр файлда зыян килтереүсе программа коды булыуы мөмкин.\nУны башҡарған саҡта һеҙҙең системағыҙға хәүеф янауы мөмкин.",
        "imagemaxsize": "Рәсем дәүмәле өсөн сик: <br />''(файл тасуирламаһы биттәре өсөн)''",
        "thumbsize": "Шартлы рәсем дәүмәле:",
-       "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|бит}}",
+       "widthheightpage": "$1 × $2, $3 {{PLURAL:$3 бит}}",
        "file-info": "файлдың дәүмәле: $1, MIME төрө: $2",
        "file-info-size": "$1 × $2 нөктә, файлдың дәүмәле: $3, MIME төрө: $4",
-       "file-info-size-pages": "$1 × $2 пиксель, файл күләме: $3, MIME төр: $4, $5 {{PLURAL:$5|бит}}",
+       "file-info-size-pages": "$1 × $2 пиксель, файл күләме: $3, MIME-тибы: $4, $5 {{PLURAL:$5|бит|биттәр}}",
        "file-nohires": "Юғары асыҡлыҡтағы өлгө юҡ.",
        "svg-long-desc": "SVG файлы, номиналь $1 × $2 нөктә, файлдың дәүмәле: $3",
        "svg-long-desc-animated": "Анимациялы SVG файлы, номиналь $1 × $2 нөктә, файлдың дәүмәле: $3",
        "svg-long-error": "Яңылыш SVG файл: $1",
        "show-big-image": "Башланғыс файл",
        "show-big-image-preview": "Байҡау ваҡытындағы күләм: $1.",
+       "show-big-image-preview-differ": " $3-превью размеры  $2-файлы өсөн: $1.",
        "show-big-image-other": "{{PLURAL:$2|1=Башҡа сиселеш|Башҡа сиселештәр}}: $1.",
        "show-big-image-size": "$1 × $2 пиксель",
        "file-info-gif-looped": "әйләнешле",
-       "file-info-gif-frames": "$1 {{PLURAL:$1|фрейм}}",
+       "file-info-gif-frames": "$1 {{PLURAL:$1|фрейм|фреймдар}}",
        "file-info-png-looped": "әйләнешле",
        "file-info-png-repeat": "$1 {{PLURAL:$1|тапҡыр}} уйнала",
-       "file-info-png-frames": "$1 {{PLURAL:$1|фрейм}}",
+       "file-info-png-frames": "$1 {{PLURAL:$1|кадр}}",
        "file-no-thumb-animation": "\n'''Иғтибар: Техник сикләүҙәр арҡаһында, был файлдың бәләкәй рәсемдәре анимацияланмаясаҡ.'''",
        "file-no-thumb-animation-gif": "'''Иғтибар: Техник сикләүҙәр арҡаһында, бының һымаҡ юғары асыҡлыҡтағы GIF рәсемдәрҙең бәләкәй рәсемдәре анимацияланмаясаҡ.'''",
        "newimages": "Яңы файлдар йыйылмаһы",
        "newimages-summary": "Был махсус бит һуңғы тейәлгән файлдарҙы күрһәтә.",
        "newimages-legend": "Һайлау",
        "newimages-label": "Файл исеме (йәки өлөшө):",
+       "newimages-showbots": "Роботтан тейегәнде күрһәтергә",
+       "newimages-hidepatrolled": "Патрулләнгән күсереүҙәрҙе йәшерергә",
        "noimages": "Рәсемдәр юҡ.",
        "ilsubmit": "Эҙләү",
        "bydate": "булдырыу көнө буйынса",
        "sp-newimages-showfrom": "$1 $2 ваҡытынан башлап яңы файлдарҙы күрһәтергә",
-       "seconds": "{{PLURAL:$1|1=$1 секунд|$1 секунд}}",
-       "minutes": "{{PLURAL:$1|1=$1 минут|$1 минут}}",
-       "hours": "{{PLURAL:$1|1=$1 сәғәт|$1 сәғәт}}",
-       "days": "{{PLURAL:$1|1=$1 көн|$1 көн}}",
+       "seconds": "{{PLURAL:$1|$1 секунд|$1 секундтар|$1 секунд}}",
+       "minutes": "{{PLURAL:$1|$1 минут}}",
+       "hours": "{{PLURAL:$1|$1 сәғәт}}",
+       "days": "{{PLURAL:$1|1=$1 көн}}",
        "weeks": "{{PLURAL:$1|$1 аҙна}}",
        "months": "{{PLURAL:$1|$1 ай}}",
        "years": "{{PLURAL:$1|$1 йыл}}",
        "ago": "$1 элек",
        "just-now": "яңы ғына",
-       "hours-ago": "$1 {{PLURAL:$1|сәғәт}} элек",
-       "minutes-ago": "$1 {{PLURAL:$1|минут}} элек",
-       "seconds-ago": "$1 {{PLURAL:$1|секунд}} элек",
+       "hours-ago": "$1 {{PLURAL:$1сәғәт}} элек",
+       "minutes-ago": "$1 {{PLURAL:$1|минут}} алда",
+       "seconds-ago": "$1 {{PLURAL:$1|секунд}} алда",
        "monday-at": "дүшәмбе $1",
        "tuesday-at": "шишәмбе $1",
        "wednesday-at": "шаршамбы $1",
        "exif-compression-4": "CCITT Group 4, факслы кодлау",
        "exif-copyrighted-true": "Авторлыҡ хоҡуҡтары менән һаҡлана",
        "exif-copyrighted-false": "Авторлыҡ-хоҡуҡи статус индерелмәгән",
+       "exif-photometricinterpretation-1": "Ҡара һәм аҡ (ҡара — 0)",
        "exif-unknowndate": "Билдәһеҙ көн",
        "exif-orientation-1": "Ғәҙәти",
        "exif-orientation-2": "X күсәре буйынса сағылдырылған",
        "confirm-watch-top": "Был битте күҙәтеү исемлегенә өҫтәргәме?",
        "confirm-unwatch-button": "Тамам",
        "confirm-unwatch-top": "Был битте күҙәтеү исемлегенән сығарырғамы?",
+       "quotation-marks": "\"$1\"",
        "imgmultipageprev": "← алдағы бит",
        "imgmultipagenext": "киләһе бит →",
        "imgmultigo": "Күсеү!",
        "imgmultigoto": "$1 биткә күсеү",
+       "img-lang-default": "(килешеү буйынса тел)",
+       "img-lang-info": "Был рәсемде $1 $2 телдәрендә күрһәтергә",
+       "img-lang-go": "Күсергә",
        "ascending_abbrev": "үҫеүгә табан",
        "descending_abbrev": "кәмеүгә табан",
        "table_pager_next": "Киләһе бит",
        "autosumm-replace": "Биттең эстәлеге \"$1\" менән алыштырылған",
        "autoredircomment": "[[$1]] битенә йүнәлтелгән",
        "autosumm-new": "\"$1\" исемле яңы бит булдырылған",
+       "autosumm-newblank": "Буш бит булдырылған",
        "lag-warn-normal": "$1 {{PLURAL:$1|секундтан}} кәмерәк ваҡыт элек эшләнгән үҙгәртеүҙәр был исемлектә күрһәтелә алмай.",
        "lag-warn-high": "Мәғлүмәттәр базаларын синхронлаштырыуҙың күпкә артта ҡалыуы сәбәпле, $1 {{PLURAL:$1|секундтан}} кәмерәк ваҡыт элек эшләнгән үҙгәртеүҙәр был исемлектә күрһәтелә алмай.",
        "watchlistedit-normal-title": "Күҙәтеү исемлеген мөхәррирләү",
        "watchlistedit-raw-done": "Һеҙҙең күҙәтеү исемлеге яңырҙы.",
        "watchlistedit-raw-added": "{{PLURAL:$1|1=1 яҙма|$1 яҙма}} өҫтәлде:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1=1 яҙма|$1 яҙма}} юйылды:",
+       "watchlistedit-clear-title": "Күҙәтеүҙәр исемлеген таҙартыу",
+       "watchlistedit-clear-legend": "Күҙәтеүҙәр исемлеген таҙартыу",
+       "watchlistedit-clear-explain": "Күҙәтеү битендәге бөтә яҙмалар юйыласаҡ",
+       "watchlistedit-clear-titles": "Башлыҡ:",
+       "watchlistedit-clear-submit": "Күһәтеү исемлеген юйырға (кире ҡайтарып бумаясаҡ)",
+       "watchlistedit-clear-done": "Күҙәтеү исемлеге таҙартылған",
+       "watchlistedit-clear-removed": "{{PLURAL:$1|юйылды}} $1 {{PLURAL:$1|яҙма}}:",
+       "watchlistedit-too-many": "Бында күрһәтеү өсөн биттәр бик күп",
+       "watchlisttools-clear": "Күҙәтеүҙәр исемлеген таҙартыу",
        "watchlisttools-view": "Исемлектәге биттәрҙәге үҙгәрештәр",
        "watchlisttools-edit": "Күҙәтеү исемлеген ҡарарға/төҙәтергә",
        "watchlisttools-raw": "Текст һымаҡ үҙгәртеү",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|әңгәмә]])",
+       "timezone-local": "Локаль",
        "duplicate-defaultsort": "'''Иҫкәртеү:''' \"$2\" ғәҙәттәге тәпртипкә килтереү асҡысы элекке \"$1\" ғәҙәттәге тәртипкә килтереү асҡысын үҙгәртә.",
+       "duplicate-displaytitle": "<strong>Иғтибар:</strong> Күрһәтелгән «$2» алдағы «$1» исемде ҡабатлай.",
+       "invalid-indicator-name": "<strong>Хата:</strong> Биттең торошон күрһәтеүсе атрибут индикаторы <code>name</code> буш була алмай.",
        "version": "MediaWiki өлгөһө",
        "version-extensions": "Ҡуйылған киңәйтеүҙәр",
        "version-skins": "Күренештәр",
        "version-hook-name": "Эләктереп алыусы исеме",
        "version-hook-subscribedby": "Яҙҙырылған",
        "version-version": "($1)",
-       "version-license": "Рөхсәтнамә",
+       "version-no-ext-name": "[исеме юҡ]",
+       "version-license": "MediaWiki лицензияһы",
+       "version-ext-license": "Лицензия",
+       "version-ext-colheader-name": "Киңәйтеү",
+       "version-skin-colheader-name": "Күренеш",
+       "version-ext-colheader-version": "Версия",
+       "version-ext-colheader-license": "Лицензия",
+       "version-ext-colheader-description": "Тасуирлама",
+       "version-ext-colheader-credits": "Автор",
+       "version-license-title": "$1 өсөн лицензия",
+       "version-license-not-found": "Был ҡушымта өсөн оҡшаған лицензиялар юҡ",
+       "version-credits-title": "$1 авторҙар исемлеге",
+       "version-credits-not-found": "Был ҡушымта өсөн  авторҙар тураһында мәғлүмәт юҡ",
        "version-poweredby-credits": "Был вики проект '''[https://www.mediawiki.org/ MediaWiki]''' нигеҙендә эшләй, copyright © 2001-$1 $2.",
        "version-poweredby-others": "башҡалар",
        "version-poweredby-translators": "translatewiki.net тәржемәселәре",
        "version-entrypoints": "Инеш өсөн URL адрестар",
        "version-entrypoints-header-entrypoint": "Инеш урыны",
        "version-entrypoints-header-url": "URL",
+       "version-libraries": "Урынлаштырылған китапханалар",
+       "version-libraries-library": "Китапхана",
+       "version-libraries-version": "Версия",
+       "version-libraries-license": "Лицензия",
+       "version-libraries-description": "Тасуирлама",
+       "version-libraries-authors": "Авторҙар",
        "redirect": "Файлдан, файҙаланыусынан йә версияның тиңләштереүсеһенән артабан йүнәлтеү",
        "redirect-legend": "Файлға йәки биткә йүнәлтеү",
        "redirect-summary": "Был махсус бит файлға (файлдың исеменән), биткә (версияның тиңләштереүсеһенән) йәки ҡатнашыусының битенә (ҡатнашыусының һанлы тиңләштереүсеһенән) йүнәлтә.",
        "redirect-lookup": "Эҙләү",
        "redirect-value": "Мәғәнәһе:",
        "redirect-user": "Ҡатнашыусының тиңләштереүсеһе",
+       "redirect-page": "Бит идентификаторы",
        "redirect-revision": "Биттең версияһы",
        "redirect-file": "Файлдың исеме",
+       "redirect-logid": "ID журнал",
        "redirect-not-exists": "Мәғәнәһе табылманы",
        "fileduplicatesearch": "Бер иш файлдарҙы эҙләү",
        "fileduplicatesearch-summary": "Бер иш файлдарҙы хэш-кодтары буйынса эҙләү.",
        "fileduplicatesearch-result-n": "\"$1\" файлы менән $2 {{PLURAL:$2|файл}} тап килә.",
        "fileduplicatesearch-noresults": "\"$1\" исемле файл табылманы",
        "specialpages": "Махсус биттәр",
+       "specialpages-note-top": "Легенда",
        "specialpages-note": "* Ябай махсус биттәр.\n* <span class=\"mw-specialpagerestricted\">Сикле махсус биттәр.</span>\n* <span class=\"mw-specialpagecached\">Кешланған махсус биттәр (иҫкергән булыуы мөмкин).</span>",
        "specialpages-group-maintenance": "Техник хеҙмәтләндереү хисапламалары",
        "specialpages-group-other": "Башҡа махсус биттәр",
        "tags-tag": "Билдә исеме",
        "tags-display-header": "Үҙгәртеүҙәр исемлегендә күрһәтеү",
        "tags-description-header": "Мәғәнәһенең тулы тасуирламаһы",
+       "tags-source-header": "Сығанаҡ",
        "tags-active-header": "Әүҙемме?",
        "tags-hitcount-header": "Билдәләнгән үҙгәртеүҙәр",
+       "tags-actions-header": "Ғәмәлдәр",
        "tags-active-yes": "Эйе",
        "tags-active-no": "Юҡ",
+       "tags-source-extension": "Ҡушымта билдәләй",
+       "tags-source-manual": "Ҡатнашыусы йәки робот ҡулдан индерә",
+       "tags-source-none": "Башҡа ҡулланылмай",
        "tags-edit": "үҙгәртергә",
+       "tags-delete": "юйырға",
+       "tags-activate": "активлаштырырға",
+       "tags-deactivate": "һүндерергә",
        "tags-hitcount": "$1 {{PLURAL:$1|1=үҙгәртеү|үҙгәртеү}}",
+       "tags-manage-no-permission": "Тамға исемен үҙгәртергә хоҡуғығыҙ юҡ",
+       "tags-manage-blocked": "Һеҙгә блок ҡуйылған, тамғалар менән идара итә алмайһығыҙ.",
+       "tags-create-heading": "Яңы тамға булдырырға",
+       "tags-create-explanation": "яңы булдырылған билдәләр боттар һәм ҡатнашыусылар ҡуллана алырлыҡ итеп эшләнәсәк",
+       "tags-create-tag-name": "Тамға исеме",
+       "tags-create-reason": "Сәбәп:",
+       "tags-create-submit": "Яһау",
+       "tags-create-no-name": "Тамға исемен яҙығыҙ",
+       "tags-create-invalid-chars": "Тамға исемдәрендә өтөр (<code>,</code>) йәки һыҙыҡ  (<code>/</code>) булмаҫҡа тейеш.",
+       "tags-create-invalid-title-chars": "Билдә исемдәрендә бит атамаларында файҙаланып булмаған символдар булмаҫҡа тейеш",
+       "tags-create-already-exists": "$1 тамғаһы бар инде.",
+       "tags-create-warnings-above": "«$1» билдәһен яһарға тырышҡанда асыҡлана{{PLURAL:$2|о киләһе иҫкәрмә|ы киләһе иҫкәрмә}}:",
+       "tags-create-warnings-below": "Тамға булдырыуҙы дауам итергә теләйһегеҙме?",
+       "tags-delete-title": "Тамғаны юйырға",
+       "tags-delete-explanation-initial": " «$1» тамғаһын мәғлүмәттәр базаһынан юйырға теләйһегеҙме?",
+       "tags-delete-explanation-in-use": "Ул әлеге ваҡытта ҡулланылған {{PLURAL:$2|$2 версияһынан йәки журналдағы яҙманан|барлыҡ $2 версияһынан йәки журналдағы яҙмаларҙан}}  юйыласаҡ",
+       "tags-delete-explanation-warning": "Был ғәмәл <strong> кире ҡайтарылғыһыҙ</strong> һәм <strong>мәғлүмәттәр базаһы хакимдары тарафынан да үҙгәртелә алмай</strong>. Һеҙ ысынлап та был билдәне юйырға теләүегеҙгә инанырға тейешһегеҙ.",
+       "tags-delete-explanation-active": "<strong> «$1» билдәһе элеккесә актив һәм киләсәктә лә ҡулланыласаҡ.</strong> Шулай булыуын теләмәйһегеҙ икән, билдәне ҡулланыу урынына күсеп, уны һүндерегеҙ.",
+       "tags-delete-reason": "Сәбәп:",
+       "tags-delete-submit": "Тамғаны кире ҡайтарылмаҫлыҡ итеп юйырға.",
+       "tags-delete-not-allowed": "Ҡушымталағы тамғалар юйылмай, әгәр ҡушымта асыҡ рөхсәт бирмәһә.",
+       "tags-delete-not-found": "$1 тамғаһы юҡ.",
+       "tags-delete-too-many-uses": " «$1» тамғаһы $2 {{PLURAL:$2|өлгөлә}} артығыраҡ ҡулланыла, был юйылмаясаҡ тигәнде аңлата.",
+       "tags-delete-warnings-after-delete": " «$1» тамғаһы юйылды, әммә {{PLURAL:$2|түбәндәге киҫәтеүҙәр алында}}:",
+       "tags-activate-title": "Тамғаны активлаштырырға",
+       "tags-activate-question": "«$1» тамғаһын активлыштырырға теләйһегеҙме?",
+       "tags-activate-reason": "Сәбәп:",
+       "tags-activate-not-allowed": "«$1» тамғаһын активлаштырып булмай.",
+       "tags-activate-not-found": "$1 тамғаһы юҡ.",
+       "tags-activate-submit": "активлаштырырға",
+       "tags-deactivate-title": "Тамғаны активлаштырырға",
+       "tags-deactivate-question": "«$1» тамғаһын һүндерергә теләйһегеҙме?",
+       "tags-deactivate-reason": "Сәбәп:",
+       "tags-deactivate-not-allowed": "«$1» тамғаһын һүндереп булмай.",
+       "tags-deactivate-submit": "һүндерергә",
+       "tags-apply-no-permission": "Һеҙҙең үҙгәртеү тамғаһы ҡуйыу хоҡуғы юҡ.",
+       "tags-apply-blocked": "Үҙгәртеүҙәргә тамға ҡуфырға һеҙҙең хоҡуҡ юҡ, һеҙ бикләнгән.",
+       "tags-apply-not-allowed-one": " «$1» тамғаһын ҡулдан файҙаланып булмай",
+       "tags-apply-not-allowed-multi": "Ҡулдан {{PLURAL:$2|түбәндәге тамғаны өҫтәп булмай}}: $1",
+       "tags-update-no-permission": "Һеҙҙең айырым өлгөләрҙә һәм журнал яҙмаларында тамға йәки үҙгәртеү тамғаһы ҡуйырға хоҡуғығыҙ юҡ.",
+       "tags-update-blocked": "Һеҙгә блок ҡуйылған, үҙһәртеү тамғалары менән идара итә алмайһығыҙ.",
+       "tags-update-add-not-allowed-one": " «$1» тамғаһын ҡулдан файҙаланып булмай",
+       "tags-update-add-not-allowed-multi": "{{PLURAL:$2|түбәндәге тег}} ҡулдан өҫтәлмәй: $1",
+       "tags-update-remove-not-allowed-one": " «$1» тамғаһын юйып булмай",
+       "tags-update-remove-not-allowed-multi": "Ҡулдан {{PLURAL:$2|түбәндәге тамғаны юйып булмай}}: $1",
+       "tags-edit-title": "Тамғаны мөхәррирләү",
+       "tags-edit-manage-link": "Тамғаларҙы идаралау",
+       "tags-edit-revision-selected": "{{PLURAL:$1|Һайланған версия}} [[:$2]]:",
+       "tags-edit-logentry-selected": "Журналда {{PLURAL:$1|1=Һайланған яҙма}}:",
+       "tags-edit-revision-legend": "{{PLURAL:$1|1=Был өлгөлә}} өҫтәргә йәки юйырға",
+       "tags-edit-logentry-legend": "{{PLURAL:$1|this log entry|all $1 log entries}} тамғаны өҫтәргә йәки юйырға",
+       "tags-edit-existing-tags": "Булған тамға:",
+       "tags-edit-existing-tags-none": "<em>Юҡ</em>",
+       "tags-edit-new-tags": "Яңы тамғалар:",
+       "tags-edit-add": "Был тамғаларҙы өҫтәргә",
+       "tags-edit-remove": "Был билдәне юйырғамы?",
+       "tags-edit-remove-all-tags": "(бөтә тамғаны юйырға)",
+       "tags-edit-chosen-placeholder": "Бер йәки бер нисә тэг һайлағыҙ",
+       "tags-edit-chosen-no-results": "Тап килгән тамғалар табылманы",
+       "tags-edit-reason": "Сәбәп:",
+       "tags-edit-revision-submit": "Был {{PLURAL:$1|өлгөгә}} ҡулланырға",
+       "tags-edit-logentry-submit": "Үҙгәртеһгә {{PLURAL:$1|журналдағы яҙма}} ҡулланырға",
+       "tags-edit-success": "Үҙгәртеүҙәр ҡабул ителде",
+       "tags-edit-failure": "Үҙгәртеүҙәрҙе ҡабул итеп булманы $1",
+       "tags-edit-nooldid-title": "Маҡсат версия билдәләнмәгән",
+       "tags-edit-nooldid-text": "Һеҙ маҡсат версияһын күрһәтмәнегеҙ, йәки ул версия ғәмәлдә юҡ.",
+       "tags-edit-none-selected": "Бер йәки артығыраҡ тег һайлағыҙ.",
        "comparepages": "Биттәрҙе сағыштырыу",
        "compare-page1": "Беренсе бит",
        "compare-page2": "Икенсе бит",
        "htmlform-chosen-placeholder": "Вариант һайлағыҙ",
        "htmlform-cloner-create": "Тағы өҫтәргә",
        "htmlform-cloner-delete": "Юйырға",
+       "htmlform-cloner-required": "Кәм тигәндә бер дәүмәл кәрәк",
+       "htmlform-title-badnamespace": "[[:$1]] исемдәр арауығында түгел «{{ns:$2}}».",
+       "htmlform-title-not-creatable": "«$1» — бит исеме, быны булдырып булмай",
+       "htmlform-title-not-exists": "$1 юҡ",
+       "htmlform-user-not-exists": "<strong>$1</strong> ғәмәлдә юҡ",
+       "htmlform-user-not-valid": "<strong>$1</strong> — ярамаған иҫәп яҙмаһы",
        "sqlite-has-fts": "$1, тулы текст буйынса эҙләү мөмкинлеге менән",
        "sqlite-no-fts": "$1, тулы текст буйынса эҙләү мөмкинлекһеҙ",
        "logentry-delete-delete": "$1 $3 битен {{GENDER:$2|юйҙы}}",
        "revdelete-uname-unhid": "ҡатнашыусы исеме күрһәтелде",
        "revdelete-restricted": "хакимдәргә ҡаршы ҡулланылған сикләүҙәр",
        "revdelete-unrestricted": "хакимдәрҙән алынған сикләүҙәр",
+       "logentry-block-block": "$1 блокланы{{GENDER:$2||}} {{GENDER:$4|$3}}  $5 $6",
+       "logentry-block-unblock": "$1 блоктан азат итте{{GENDER:$2||а}} {{GENDER:$4|$3}}",
+       "logentry-block-reblock": "Блоклау ваҡытын $1 {{GENDER:$2|үҙгәртте}}  {{GENDER:$4|$3}}  $5 $6",
+       "logentry-suppress-block": "$1 блокланы{{GENDER:$2||}} {{GENDER:$4|$3}}  $5 $6",
+       "logentry-suppress-reblock": "$1 бикләү ваҡытын {{GENDER:$2|үҙгәртте}}  {{GENDER:$4|$3}}  $5 $6",
+       "logentry-import-upload": "Файл тейәү ысулы менән $1 импортиртланы {{GENDER:$2||а}} $3",
+       "logentry-import-upload-details": "Файл тейәү ысулы менән $1 импортланы {{GENDER:$2||а}} $3 ($4 {{PLURAL:$4|версияһын}})",
+       "logentry-import-interwiki": "$1 башҡа викинан{{GENDER:$2||а}} $3 импортланы",
+       "logentry-import-interwiki-details": "$1 {{GENDER:$2||а}} $3  $5 импортланы ($4 {{PLURAL:$4|версиларын}})",
+       "logentry-merge-merge": "$1 берләштерҙе{{GENDER:$2||а}} $3  $4 ($5 версияһына тиклем)",
        "logentry-move-move": "$1  $3 битенең исемен {{GENDER:$2| үҙгәртте}}. Яңы исеме: $4",
        "logentry-move-move-noredirect": "$1 $3 битенең исемен йүнәлтеү ҡуймайынса {{GENDER:$2|үҙгәртте}}. Яңы исеме: $4",
        "logentry-move-move_redir": "$1 $3 битенең исемен йүнәлтеү өҫтөнән {{GENDER:$2|үҙгәртте}}. Яңы исеме: $4",
        "logentry-newusers-create2": "$1 {{GENDER:$2|ҡатнашыусы}} $3 иҫәп яҙмаһын булдырҙы",
        "logentry-newusers-byemail": "$1 {{GENDER:$2|}} $3 иҫәп яҙмаһын булдырҙы һәм серһүҙ электрон почта аша ебәрелде",
        "logentry-newusers-autocreate": "Автоматик рәүештә {{GENDER:$2| ҡатнашыусының}} $1 иҫәп яҙмаһы яһалды",
+       "logentry-protect-move_prot": "$1 һаҡлау көйәләүен $4 $3 {{GENDER:$2|күсерҙе}}",
+       "logentry-protect-unprotect": "$1 $3-нан һаҡлауҙы  {{GENDER:$2||алды}}",
+       "logentry-protect-protect": "$1 һаҡланы{{GENDER:$2||а}} $3 $4",
+       "logentry-protect-protect-cascade": "$1 һаҡланы{{GENDER:$2||}} $3 $4 [каскадлы]",
+       "logentry-protect-modify": "$1$ һаҡлау кимәлен {{GENDER:$2||үҙгәртте}} $3 $4",
+       "logentry-protect-modify-cascade": "$1 һаҡлау кимәлен{{GENDER:$2||үҙгәртте}}  $3 $4 [каскадлы]",
        "logentry-rights-rights": "$1  $3 файҙаланыусының төркөмдәрҙәге ағзалығын $4 урынына $5 тип {{GENDER:$2|үҙгәртте}}",
        "logentry-rights-rights-legacy": "$1  $3 өсөн төркөмдәрҙәге ағзалыҡты {{GENDER:$2|үҙгәртте}}",
        "logentry-rights-autopromote": "$1 {{GENDER:$2|}} автоматик рәүештә {{GENDER:$2|}} $4 урынына $5 ителде.",
        "logentry-upload-upload": "$1 $3 {{GENDER:$2|күсерҙе}}",
+       "logentry-upload-overwrite": "$1 яңы өлгә{{GENDER:$2||тейәне}} $3",
+       "logentry-upload-revert": "$1 {{GENDER:$2||тейәне}} $3",
+       "log-name-managetags": "Тамғалар менән идара итеү журналы",
+       "log-description-managetags": "Был биттә  [[Special:Tags|метками]] идара итеү мәсьәләләре килтерелгән. Журналда администратор ҡулдан эшләгән ғәмәл генә бар. Тамғаларыҙа, журналға яҙмайынса ғына, вики-программалар ярҙамында ҡуйырға йәки юйырға мөмкин.",
+       "logentry-managetags-create": "$1 «$4» тамғаһын {{GENDER:$2||булдырҙы}}",
+       "logentry-managetags-delete": "$1 «$4» тамғаһын {{GENDER:$2||юйҙы}}  ($5 {{PLURAL:$5|журнал яҙмаһынан}} юйылды)",
+       "logentry-managetags-activate": "$1 «$4» тамғаһын{{GENDER:$2||активлаштырҙы}}, ҡатнашыусылар һәм роботтар ҡуллана торған тамға.",
+       "logentry-managetags-deactivate": "$1 «$4» тамғаһы өсөн{{GENDER:$2||һүндерҙе}} ҡатнашыусылар һәм роботтар ҡуллана торған тамғаны",
+       "log-name-tag": "Тамғалар журналы",
+       "log-description-tag": "Был биттә ҡасан ҡатнашыусылар айырым өлгөләрҙә һәм журналдарҙы  [[Special:Tags|тамғалар]] ҡуйғаны һәм юйғаны күренә. Үҙгәртеү, юйыу һәм шуға оҡшаған ғәмәлдәргә ҡуйылған тамға күренмәй.",
+       "logentry-tag-update-add-revision": "$1 {{GENDER:$2||}} {{PLURAL:$7|тамғаһын}} өҫтәне $6  $4 өлгөһөнә $3 битенә",
+       "logentry-tag-update-add-logentry": "$1 {{GENDER:$2||}} {{PLURAL:$7|тамғаһын}} өҫтәне$6  $5 журнал яҙмаһына $3 битендә",
+       "logentry-tag-update-remove-revision": "$1 {{GENDER:$2||}} {{PLURAL:$9|тамғаһын}} юйҙы $8  $4 өлгөһөнә $3 битенә",
+       "logentry-tag-update-remove-logentry": "$1 {{GENDER:$2||}} {{PLURAL:$9|тамғаһын}} юйҙы $8  $5 өлгөһөнә $3 битенә",
+       "logentry-tag-update-revision": "$1 {{GENDER:$2||яңыртты}}  $4 өлгөһөнөң тамғаларын $3 битендә ({{PLURAL:$7|өҫтәне}} $6; {{PLURAL:$9|юйылған}} $8)",
+       "logentry-tag-update-logentry": "$1 {{GENDER:$2||а}}журналда билдәләнгән яҙмаларҙы яңыртты $5 биттәр $3 (өҫтәлгән{{PLURAL:$7|а|ы}} $6; юйылған{{PLURAL:$9|а|ы}} $8)",
        "rightsnone": "(юҡ)",
        "revdelete-summary": "үҙгәртеүҙәр тасуирламаһы",
        "feedback-adding": "Биткә кире белдереү өҫтәлә",
+       "feedback-back": "Артҡа",
        "feedback-bugcheck": "Шәп! Тик [$1 билдәле хаталар] исемлегендә оҡшаш белдереүҙең булмауына иғтибар итегеҙ.",
        "feedback-bugnew": "Тикшерҙем. Яңы хата тураһында белдерергә",
        "feedback-bugornote": "Әгәр Һеҙ техник проблеманы ентекле рәүештә аңлатырға теләһәгеҙ, зинһар, [$1 хата тураһында белдерегеҙ].\nБашҡа осраҡта, ошо ябай форманы ҡуллана алаһығыҙ. Комментарийығыҙ «[$3 $2]» битенә ҡулланыусы исемегеҙ һәм браузер мәғлүмәте менән өҫтәләсәк.",
        "feedback-cancel": "Кире алырға",
        "feedback-close": "Әҙер",
+       "feedback-external-bug-report-button": "Техник эш еберергә",
+       "feedback-dialog-title": "Баһалама ебәрергә",
+       "feedback-dialog-intro": "Баһалама ебәреү өсөн түбәндәге форманы файҙаланығыҙ. Һеҙҙең исем менән комментарий «$1» битендә буласаҡ.",
        "feedback-error-title": "Хата",
        "feedback-error1": "Хата: API-нан беленмәгән хата",
        "feedback-error2": "Хата: Мөхәррирләү хатаһы",
        "feedback-error3": "Хата: API-нан яуап юҡ",
+       "feedback-error4": "Хата: Баһаламала был баш һүҙ аҫтындағы яҙманы урынлаштырап булмай.",
        "feedback-message": "Хәбәр:",
        "feedback-subject": "Тема:",
-       "feedback-submit": "Кире белдереү ебәрергә",
+       "feedback-submit": "Ебәрергә",
+       "feedback-terms": "Ҡатнашыусы агенты мәғлүмәтендә минең браузер һәм операцион система турыһанда мәғлүмәт булыуы миңә билдәле, минең баһаламала был мәғлүмәт асыҡ буласаҡ.",
+       "feedback-termsofuse": "Минең Ҡулланыу шарттары буйынса кире бәйленеш булдырырға риза.",
        "feedback-thanks": "Рәхмәт! Һеҙҙең фекерегеҙ «[$2 $1]» битенә өҫтәлде.",
+       "feedback-thanks-title": "Рәхмәт!",
+       "feedback-useragent": "Браузер:",
        "searchsuggest-search": "Эҙләү",
        "searchsuggest-containing": "эстәлегендә...",
        "api-error-badaccess-groups": "Һеҙгә был викиға файлдар күсереү рөхсәт ителмәй",
        "api-error-overwrite": "Булған файлды алыштырыу рөхсәт ителмәй.",
        "api-error-stashfailed": "Эске хата: сервер ваҡытлыса файлды һаҡлай алманы.",
        "api-error-publishfailed": "Эске хата: сервер ваҡытлыса файлды һаҡлай алманы.",
+       "api-error-stasherror": "Файлы һаҡлағысҡа тейәгән ваҡытта хата китте.",
+       "api-error-stashedfilenotfound": "Ваҡытлыса һаҡлағыстан файлы тейәгән ваҡытта сығанаҡ файл табылманы.",
+       "api-error-stashpathinvalid": "Ваҡытлыса һаҡлағыста урынлашҡан файл юлы дөрөҫ түгел.",
+       "api-error-stashfilestorage": "Файлды һаҡлағысҡа тейәгән ваҡытта хата китте.",
+       "api-error-stashzerolength": "Сервер файлды ваҡытлыса һаҡлағыста һаҡлау алмай, сөнкт оҙонлоғо 0.",
+       "api-error-stashnotloggedin": "Файлды ваҡытлыса һаҡлағысҡа урынлаштырыу өсөн һеҙ системаҡа инергә тейешһегеҙ.",
+       "api-error-stashwrongowner": "Ваҡытлыса һаҡлағыстағы файлда асырға теләнегеҙ, был файл һеҙҙеке түгел",
+       "api-error-stashnosuchfilekey": "Ваҡытлыса һаҡлағыста һеҙ асырға теләгән файлдың асҡысы юҡ.",
        "api-error-timeout": "Көтөлгән ваҡыт эсендә сервер яуып бирмәне.",
        "api-error-unclassified": "Билдәһеҙ хата барлыҡҡа килде.",
        "api-error-unknown-code": "Билдәһеҙ хата: «$1»",
        "duration-seconds": "$1 {{PLURAL:$1|1=секунд|секунд}}",
        "duration-minutes": "$1 {{PLURAL:$1|1=минут|минут}}",
        "duration-hours": "$1 {{PLURAL:$1|1=сәғәт|сәғәт}}",
-       "duration-days": "$1 {{PLURAL:$1|1=көн|көн}}",
-       "duration-weeks": "$1 {{PLURAL:$1|аҙна|аҙналар|аҙна}}",
-       "duration-years": "$1 {{PLURAL:$1|1=йыл|йылдар}}",
-       "duration-decades": "$1 {{PLURAL:$1|1=Ñ\83н ÐºÓ©Ð½Ð»Ó©Ðº|Ñ\83н ÐºÓ©Ð½Ð»Ó©ÐºÑ\82Ó\99р}}",
+       "duration-days": "$1 {{PLURAL:$1|көн}}",
+       "duration-weeks": "$1 {{PLURAL:$1|аҙна}}",
+       "duration-years": "$1 {{PLURAL:$1|йыл|йылдар}}",
+       "duration-decades": "$1 {{PLURAL:$1|1=Ñ\83н Ð¹Ñ\8bллÑ\8bÒ¡|Ñ\83н Ð¹Ñ\8bллÑ\8bÒ¡Ñ\82ар}}",
        "duration-centuries": "$1 {{PLURAL:$1|1=быуат|быуаттар}}",
        "duration-millennia": "$1 {{PLURAL:$1|1=меңйыллыҡ|меңйыллыҡтар}}",
        "rotate-comment": "Рәсем сәғәт йөрөшө буйынса $1{{PLURAL:$1|}} градусҡа боролдо",
        "expand_templates_input": "Сығанаҡ текст:",
        "expand_templates_output": "Һөҙөмтә",
        "expand_templates_xml_output": "XML һөҙөмтә",
+       "expand_templates_html_output": "HTML-сығарыу",
        "expand_templates_ok": "Тамам",
        "expand_templates_remove_comments": "Аңлатмаларҙы юйырға",
        "expand_templates_remove_nowiki": "Һөҙөмтәлә <nowiki> билдәләрен йәшерергә",
        "expand_templates_generate_xml": "XML уҡыу ағасын күрһәтергә",
+       "expand_templates_generate_rawhtml": "Күрһәтергә HTML",
        "expand_templates_preview": "Ҡарап сығыу",
+       "expand_templates_preview_fail_html": "'''Ҡыҙғанысҡа ҡаршы, һеҙҙең ултырыш мәғлүмәттәрегеҙ юғалды. Һөҙөмтәлә, сервер үҙгәрештерегеҙҙе ҡабул итә алмай.'''\n\n''{{SITENAME}} тик таҙа HTML ҡулланыуҙы ғына рөхсәт итә; алдан ҡарау, JavaScript-атакаларҙан һаҡланыу маҡсаты менән ябылған.''\n\n'''Әгәр һеҙ үҙгәртеүҙе яҡшы ниәт менән башҡараһағыҙ икән, тағы бер тапҡыр ҡабатлап ҡарағыҙ. Хата ҡабатланһа, сайттан [[Special:UserLogout|сығығыҙ]] һәм яңынан керегеҙ.'''",
+       "expand_templates_preview_fail_html_anon": "<em>Сайт {{SITENAME}}  «һоро» HTML исемлегендә, һеҙ танылманығыҙ, шуға алдан ҡарау  JavaScript-атакаһынан һаҡланыу сараһы буларыҡ йәшерелгән</em>\n\n<strong>Зинһар өсөн, [[Special:UserLogin|танылығыҙ]] һәм тағы бер мәртәбә эшләп ҡарағыҙ.",
+       "expand_templates_input_missing": "Һеҙ ниндәй ҙә булһа һөйләм ҡуйырға тейешһегеҙ",
+       "pagelanguage": "Биттең телен үҙгәртеү",
+       "pagelang-name": "Бит",
+       "pagelang-language": "Тел",
+       "pagelang-use-default": "Ҡуйылған тел ҡулланырға",
+       "pagelang-select-lang": "Тел һайлау:",
+       "pagelang-submit": "Ебәрергә",
+       "right-pagelang": "Биттең телен үҙгәртеү",
+       "action-pagelang": "Биттең телен үҙгәртеү",
+       "log-name-pagelang": "Телде үҙгәртеү дәфтәре",
+       "log-description-pagelang": "Был бит телдәрендә үҙгәреүҙәр дәфтәре",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|үҙгәртте}} язык страницы $3 биттең телен $4-тән $5-кә.",
+       "default-skin-not-found": "Уп-па! Викиҙы биҙәү темаһы рөхсәт ителмәгән <code>$wgDefaultSkin</code>, <code>$1</code>.\n\nҺеҙең ҡоролмала {{PLURAL:$4|түбәндәге}} биҙәү темалары бар.  [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Skin configuration]  {{PLURAL:$4|Килешеү буйынса тема һайларға}}.\n\n$2\n\n; Әгәр яңы ғына MediaWiki урынлаштарған булһығыҙ:\n:Һеҙ быны Git-тан йәки сығанаҡ кодтан башға ысул ҡулланып эшләгәнһегеҙ.  Ул ваҡытта был мөмкин. Ҡайһы бер темаларҙы урынлаштырып ҡарағыҙ[https://www.mediawiki.org/wiki/Category:All_skins сайт биҙәү өсөн каталог mediawiki.org]:\n:* [https://www.mediawiki.org/wiki/Download урынлаштырырға йүнәлеш биреүсе файлдар архивын] тейәп алып <code>skins/</code> папкаһының күсермәһен алығыҙ;\n:* биҙәү өсөн айырым темалар архивын [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org];\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins  Git-ты ҡулланып тейәргә].\n: Git, MediaWiki-ны эшләүсе булһағыҙ һеҙҙең репозиторға зыян килтерергә тейеш түгел.  [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Skin configuration] килешеү буйынса тема һайлау тарыһында мәғлүмәт.\n; MediaWiki-ны әле генә яңыртҡан булһағыҙ:\n: MediaWiki версиһында 1.24 автоматик яүыртыу булмаясаҡ. ([https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]).\n{{PLURAL:$5|Түбендәге юлды}} ҡуйығыҙ <code>LocalSettings.php</code>,  {{PLURAL:$5|урынлаштырылған темаларҙы}} биҙәү өсөн: \n\n<pre dir=\"ltr\">$3</pre>\n\n;Әгәр яңы ғына үҙгәрткән булһағыҙ <code>LocalSettings.php</code>:\n: Тема исемендә хата булмаһын, тикшерегеҙ.",
+       "default-skin-not-found-no-skins": "Уп-па! Викины биҙәү темаһы рөхсәт ителмәгән <code>$wgDefaultSkin</code>, <code>$1</code>.\n\nҺеҙең ҡоролмала түбәндәге биҙәү темалары бар.  [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Skin configuration]  \n\n\n; Әгәр яңы ғына MediaWiki урынлаштарған булһығыҙ:\n:Һеҙ быны Git-тан йәки сығанаҡ кодтан башҡа ысул ҡулланып эшләгәнһегеҙ.  Ул ваҡытта был мөмкин. Ҡайһы бер темаларҙы урынлаштырып ҡарағыҙ[https://www.mediawiki.org/wiki/Category:All_skins сайт биҙәү өсөн каталог mediawiki.org]:\n:* [https://www.mediawiki.org/wiki/Download урынлаштырырға йүнәлеш биреүсе файлдар архивын] тейәп алып <code>skins/</code> папкаһының күсермәһен алығыҙ;\n:* биҙәү өсөн айырым темалар архивын [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org];\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins  Git-ты ҡулланып тейәргә].\n: Git, MediaWiki-ны эшләүсе булһағыҙ һеҙҙең репозиторға зыян килтерергә тейеш түгел.  [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Skin configuration] килешеү буйынса тема һайлау тарыһында мәғлүмәт.\n; MediaWiki-ны әле генә яңыртҡан булһағыҙ:\n: MediaWiki версиһында 1.24 автоматик яүыртыу булмаясаҡ. ([https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]).\n \n\n\n;Әгәр яңы ғына үҙгәрткән булһағыҙ <code>LocalSettings.php</code>:\n: Тема исемендә хата булмаһын, тикшерегеҙ.",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (рөхсәт ителгән)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 (<strong>рөхсәт ителмәгән</strong>)",
+       "mediastatistics": "Медиа-статистика",
+       "mediastatistics-summary": "Тейәләгән файлдар тибы тураһында статистика. Файлдың һуңғы версия тураһында мәғлүмәт бар. Иҫке һәм юйылған файлдар иҫәпкә алынмай.",
+       "mediastatistics-nbytes": "$1 байт{{PLURAL:$1|}} ($2; $3%)",
+       "mediastatistics-bytespertype": "Был бүлек өсөн файлдың дөйөм күләме: $1 байт{{PLURAL:$1|}} ($2; $3%).",
+       "mediastatistics-allbytes": "Бөтә файлдар күләме: $1 байт{{PLURAL:$1|}} ($2).",
+       "mediastatistics-table-mimetype": "MIME-төрҙәре",
+       "mediastatistics-table-extensions": "Рөхсәт ителгән ҡушылмалар",
+       "mediastatistics-table-count": "Биттәр һаны",
+       "mediastatistics-table-totalbytes": "Дөйөм күләме",
+       "mediastatistics-header-unknown": "Билдәһеҙ",
+       "mediastatistics-header-bitmap": "Растр рәсем",
+       "mediastatistics-header-drawing": "Рәсемдәр (вектор рәсем)",
+       "mediastatistics-header-audio": "Аудио",
+       "mediastatistics-header-video": "Видео",
+       "mediastatistics-header-multimedia": "Мультимедиа",
+       "mediastatistics-header-office": "Офис",
+       "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": "Стек өсөн максималь тәрәнлек артып киткән.",
+       "json-error-state-mismatch": "Ярамаған йәки дөрөҫ төҙөлмәгән JSON",
+       "json-error-ctrl-char": "Идара символында хата, кодировка дөрөҫ төҙөлмәгән булыуы ихтимал.",
+       "json-error-syntax": "Синтаксик хата",
+       "json-error-utf8": "Хаталы UTF-8 символдары, кодировка дөрөҫ булмауы изтимал.",
+       "json-error-recursion": "Бер йәки бер нисә рекурсив һылтанма кодланҡан булырға тейеш.",
+       "json-error-inf-or-nan": "Бер йәки бер нисә NAN- йәки INF-дәүмәле код ҡуйылған булырға тейеш.",
+       "json-error-unsupported-type": "Код ҡуйып булмаҫлыҡ дәүмәл бирелгән.",
+       "headline-anchor-title": "Был бүлеккә һылтанма",
        "special-characters-group-latin": "Латин",
        "special-characters-group-latinextended": "Латин (киңәйтелгән)",
        "special-characters-group-ipa": "ХАФӘ (IPA)",
        "special-characters-group-khmer": "Кһмер",
        "special-characters-title-endash": "уртаса һыҙыҡ",
        "special-characters-title-emdash": "оҙон һыҙыҡ",
-       "special-characters-title-minus": "минус билдәһе"
+       "special-characters-title-minus": "минус билдәһе",
+       "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": "куки нигеҙендә сессиялар",
+       "sessionprovider-nocookies": "Ярҙам кәрәкме?",
+       "randomrootpage": "Ярҙам кәрәкме?"
 }
index 9c35d9c..bc80b86 100644 (file)
        "moredotdotdot": "Далей…",
        "morenotlisted": "Гэта ня поўны сьпіс.",
        "mypage": "Старонка",
-       "anonuserpage": "Невядомы ўдзельнік",
        "mytalk": "Гутаркі",
        "anontalk": "Гутаркі",
        "navigation": "Навігацыя",
        "resetpass-no-info": "Для непасрэднага доступу да гэтай старонкі Вам неабходна ўвайсьці ў сыстэму.",
        "resetpass-submit-loggedin": "Зьмяніць пароль",
        "resetpass-submit-cancel": "Скасаваць",
-       "resetpass-wrong-oldpass": "Няслушны часовы альбо цяперашні пароль.\nМагчыма Вы ўжо пасьпяхова зьмянілі Ваш пароль альбо запыталі новы часовы пароль.",
+       "resetpass-wrong-oldpass": "Няслушны часовы альбо цяперашні пароль.\nМагчыма, Вы ўжо пасьпяхова зьмянілі Ваш пароль альбо запыталі новы часовы пароль.",
        "resetpass-recycled": "Калі ласка, зьмяніце ваш пароль на нешта адрознае ад вашага цяперашняга паролю.",
        "resetpass-temp-emailed": "Вы ўвашлі з дапамогай часовага коду, які быў дасланы праз электронную пошту.\nКаб завершыць уваход, вы мусіце ўвесьці новы пароль:",
        "resetpass-temp-password": "Часовы пароль:",
        "revdelete-unsuppress": "Зьняць абмежаваньні з адноўленых вэрсіяў",
        "revdelete-log": "Прычына:",
        "revdelete-submit": "Ужыць для {{PLURAL:$1|1=выбранай вэрсіі|выбраных вэрсіяў}}",
-       "revdelete-success": "'''Бачнасьць вэрсіі пасьпяхова абноўленая.'''",
+       "revdelete-success": "Бачнасьць вэрсіі абноўленая.",
        "revdelete-failure": "'''Немагчыма абнавіць бачнасьць вэрсіі:'''\n$1",
-       "logdelete-success": "'''Бачнасьць падзеі пасьпяхова зьмененая.'''",
+       "logdelete-success": "Бачнасьць падзеі ўсталяваная.",
        "logdelete-failure": "'''Немагчыма ўстанавіць бачнасьць у журнале:'''\n$1",
        "revdel-restore": "Зьмяніць бачнасьць",
        "pagehist": "Гісторыя старонкі",
        "revertmerge": "Разьяднаць",
        "mergelogpagetext": "Ніжэй знаходзіцца сьпіс апошніх аб'яднаньняў гісторыяў старонак.",
        "history-title": "$1 — гісторыя зьменаў",
-       "difference-title": "$1: розьніца паміж вэрсіямі",
+       "difference-title": "Розьніца паміж вэрсіямі «$1»",
        "difference-title-multipage": "«$1» і «$2» — розьніца паміж старонкамі",
        "difference-multipage": "(Розьніца паміж старонкамі)",
        "lineno": "Радок $1:",
        "userrights-changeable-col": "Групы, якія Вы можаце мяняць",
        "userrights-unchangeable-col": "Групы, якія Вы ня можаце мяняць",
        "userrights-conflict": "Канфлікт пры зьмене правоў удзельнікаў! Калі ласка, праверце і захавайце вашыя зьмены.",
-       "userrights-removed-self": "Вы пасьпяхова пазбавілі сябе ўласных правоў. З гэтай прычыны вы больш ня маеце доступу да гэтай старонкі.",
+       "userrights-removed-self": "Вы пазбавілі сябе ўласных правоў. З гэтай прычыны вы больш ня маеце доступу да гэтай старонкі.",
        "group": "Група:",
        "group-user": "Удзельнікі",
        "group-autoconfirmed": "Аўтаматычна пацьверджаныя ўдзельнікі",
        "grant-rollback": "Адкат зьменаў старонак",
        "grant-sendemail": "Адпраўка лістоў электроннай пошты іншым удзельнікам",
        "grant-uploadeditmovefile": "Загрузка, замена і перайменаваньне файлаў",
+       "grant-uploadfile": "Загрузка новых файлаў",
+       "grant-basic": "Асноўныя правы",
+       "grant-viewdeleted": "Прагляд выдаленых файлаў і старонак",
+       "grant-viewmywatchlist": "Прагляд вашага сьпісу назіраньня",
        "newuserlogpage": "Журнал стварэньня рахункаў",
        "newuserlogpagetext": "Гэта журнал стварэньня рахункаў удзельнікаў і ўдзельніц.",
        "rightslog": "Журнал правоў удзельнікаў",
        "action-createpage": "стварэньне старонак",
        "action-createtalk": "стварэньне старонак абмеркаваньняў",
        "action-createaccount": "стварэньне гэтага рахунку ўдзельніка",
+       "action-autocreateaccount": "аўтаматычнае стварэньне гэтага рахунку вонкавага ўдзельніка",
        "action-history": "прагляд гісторыі гэтай старонкі",
        "action-minoredit": "пазначэньне гэтай праўкі як дробнай",
        "action-move": "перанос гэтай старонкі",
        "recentchangeslinked-page": "Назва старонкі:",
        "recentchangeslinked-to": "Замест гэтага паказваць зьмены на старонках, што спасылаюцца на гэтую старонку",
        "recentchanges-page-added-to-category": "[[:$1]] дададзеная да катэгорыі",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] і яшчэ {{PLURAL:$2|$2 старонка была дададзеная|$2 старонкі былі дададзеныя|$2 старонак былі дададзеныя}} да катэгорыі",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] і яшчэ [[Special:WhatLinksHere/$1|{{PLURAL:$2|$2 старонка была дададзеная|$2 старонкі былі дададзеныя|$2 старонак былі дададзеныя}}]] да катэгорыі",
        "recentchanges-page-removed-from-category": "[[:$1]] выдаленая з катэгорыі",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] і яшчэ $2 {{PLURAL:$2|старонка была выдаленая|старонкі былі выдаленыя|старонак былі выдаленыя}} з катэгорыі",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] і яшчэ [[Special:WhatLinksHere/$1|$2 {{PLURAL:$2|старонка была выдаленая|старонкі былі выдаленыя|старонак былі выдаленыя}}]] з катэгорыі",
        "autochange-username": "Аўтаматычная зьмена MediaWiki",
        "upload": "Загрузіць файл",
        "uploadbtn": "Загрузіць файл",
        "uploadstash-clear": "Ачысьціць схаваныя файлы",
        "uploadstash-nofiles": "Вы ня маеце схаваных файлаў.",
        "uploadstash-badtoken": "Немагчыма выканаць гэтае дзеяньне, верагодна скончыўся тэрмін дзеяньня Вашага дазволу на рэдагаваньне. Паспрабуйце зноў.",
-       "uploadstash-errclear": "Немагчыма ачысьціць файлы.",
+       "uploadstash-errclear": "Не атрымалася ачысьціць файлы.",
        "uploadstash-refresh": "Абнавіць сьпіс файлаў.",
        "invalid-chunk-offset": "Няслушнае зрушэньне фрагмэнту",
        "img-auth-accessdenied": "Доступ забаронены",
        "log-title-wildcard": "Шукаць назвы, якія пачынаюцца з гэтага тэксту",
        "showhideselectedlogentries": "Паказаць/схаваць выбраныя запісы ў журнале",
        "log-edit-tags": "Рэдагаваць меткі да абраных запісаў у журнале падзеяў",
-       "checkbox-all": "Усе",
+       "checkbox-select": "Выбраць: $1",
+       "checkbox-all": "усе",
+       "checkbox-none": "нічога",
+       "checkbox-invert": "адваротна",
        "allpages": "Усе старонкі",
        "nextpage": "Наступная старонка ($1)",
        "prevpage": "Папярэдняя старонка ($1)",
        "tags-delete-not-allowed": "Меткі, вызначаныя пашырэньнем, ня могуць быць выдаленыя, акрамя выпадку, калі пашырэньне дазваляе гэта.",
        "tags-delete-not-found": "Метка «$1» не існуе.",
        "tags-delete-too-many-uses": "Метка «$1» выкарыстаная ў больш чым $2 {{PLURAL:$2|вэрсіі|вэрсіях}}, адпаведна, яна ня можа быць выдаленая.",
-       "tags-delete-warnings-after-delete": "Ð\9cеÑ\82ка Â«$1» Ð±Ñ\8bла Ð¿Ð°Ñ\81Ñ\8cпÑ\8fÑ\85ова Ð²Ñ\8bдаленаÑ\8f, Ð°Ð»Ðµ {{PLURAL:$2|1=аÑ\82Ñ\80Ñ\8bманае Ð½Ð°Ñ\81Ñ\82Ñ\83пнае Ð¿Ð°Ð¿Ñ\8fÑ\80Ñ\8dджанÑ\8cне|аÑ\82Ñ\80Ñ\8bманÑ\8bÑ\8f Ð½Ð°Ñ\81Ñ\82Ñ\83пнÑ\8bÑ\8f Ð¿Ð°Ð¿Ñ\8fÑ\80Ñ\8dджанÑ\8cнÑ\96}}:",
+       "tags-delete-warnings-after-delete": "Метка «$1» была выдаленая, але {{PLURAL:$2|1=атрыманае наступнае папярэджаньне|атрыманыя наступныя папярэджаньні}}:",
        "tags-activate-title": "Актываваць метку",
        "tags-activate-question": "Вы зьбіраецеся актываваць метку «$1».",
        "tags-activate-reason": "Прычына:",
        "tags-edit-reason": "Прычына:",
        "tags-edit-revision-submit": "Дастасаваць зьмены да {{PLURAL:$1|1=гэтай вэрсіі|$1 вэрсіяў}}",
        "tags-edit-logentry-submit": "Дастасаваць зьмены да {{PLURAL:$1|$1 журнальнага запісу|$1 журнальных запісаў}}",
-       "tags-edit-success": "Ð\97Ñ\8cменÑ\8b Ð±Ñ\8bлÑ\96 Ð¿Ð°Ñ\81Ñ\8cпÑ\8fÑ\85ова Ð´Ð°Ñ\81Ñ\82аÑ\81аванÑ\8bÑ\8f.",
+       "tags-edit-success": "Зьмены былі дастасаваныя.",
        "tags-edit-failure": "Гэтыя зьмены ня могуць быць дастасаваныя:\n$1",
        "tags-edit-nooldid-title": "Няслушная мэтавая вэрсія",
        "tags-edit-nooldid-text": "Вы або не пазначылі мэтавую вэрсію для выкананьня гэтай функцыі, або пазначаная вэрсія не існуе.",
index 16325d3..df3b02a 100644 (file)
        "moredotdotdot": "Яшчэ...",
        "morenotlisted": "Гэты спіс не поўны.",
        "mypage": "Старонка",
-       "anonuserpage": "Нявызначаны ўдзельнік",
        "mytalk": "Размовы",
        "anontalk": "Размовы",
        "navigation": "Навігацыя",
        "prefs-help-recentchangescount": "Гэта ўключае ў сябе апошнія змены, гісторыі старонак, журналы.",
        "prefs-help-watchlist-token2": "Гэта сакрэтны ключ к сеціўнай стужцы з вашага спіса назірання.\nКожны, хто ведае гэты ключ, будзе мець магчымасць чытаць ваш спіс назірання, таму не дзяліцеся ім.\nКалі трэба, можна [[Special:ResetTokens|скінуць яго]].",
        "savedprefs": "Настройкі замацаваныя.",
+       "savedrights": "Дазволы {{GENDER:$1|ўдзельніка|ўдзельніцы}} $1 захаваныя.",
        "timezonelegend": "Часавы пояс:",
        "localtime": "Мясцовы час:",
        "timezoneuseserverdefault": "Карыстацца настаўленнямі серверу ($1)",
        "prefs-tokenwatchlist": "Токен",
        "prefs-diffs": "Розніцы",
        "prefs-help-prefershttps": "Гэта настройка пачне дзейнічаць па наступным уваходзе ў сістэму.",
+       "prefswarning-warning": "Вы зрабілі змены ў сваіх настройках, якія яшчэ не былі запісаныя.\nКалі вы закрыеце гэту старонку, не націснуўшы \"$1\", вашы настройкі не будуць абноўлены.",
        "prefs-tabs-navigation-hint": "Падказка: Вы можаце карыстацца клавішамі са стрэлкамі ўлева і ўправа для навігацыі паміж карткамі ў спісе картак.",
        "userrights": "Распараджэнне правамі ўдзельніка",
        "userrights-lookup-user": "Распараджацца групамі ўдзельнікаў",
        "grant-createaccount": "Ствараць уліковыя запісы",
        "grant-createeditmovepage": "Ствараць, правіць і пераносіць старонкі",
        "grant-delete": "Сціраць старонкі, версіі і запісы ў журналах",
+       "grant-editinterface": "Правіць прасторы назваў МедыяВікі і CSS/JavaScript удзельніка",
+       "grant-editmycssjs": "Правіць ваш CSS/JavaScript",
        "grant-editmyoptions": "Змяняць вашы настройкі",
        "grant-editmywatchlist": "Правіць ваш спіс назірання",
        "grant-editpage": "Правіць наяўныя старонкі",
        "action-editmyprivateinfo": "правіць свае асабістыя звесткі",
        "action-editcontentmodel": "правіць мадэль змесціва старонкі",
        "action-managechangetags": "ствараць і выдаляць біркі з базы даных",
+       "action-applychangetags": "прымяняць біркі з сваімі праўкамі",
        "action-changetags": "дадаваць і выдаляць адвольныя біркі да асобных версій і запісаў у журнале падзей",
        "nchanges": "$1 {{PLURAL:$1|змена|змены|змен}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|з часу апошняга наведвання}}",
        "uploaddisabledtext": "Не дазваляюцца ўкладанні файлаў.",
        "php-uploaddisabledtext": "Укладанне файлаў не дазволена ў асяроддзі PHP. Праверце настаўленне file_uploads.",
        "uploadscripted": "У файле ўтрымліваецца код HTML або Яваскрыпту, які можа быць памылкова апрацаваны браўзерам.",
+       "upload-scripted-pi-callback": "Немагчыма ўкласці файл, які ўтрымлівае інструкцыі апрацоўкі табліцы стыляў XML.",
+       "uploaded-script-svg": "У ўкладзеным SVG-файле знойдзены небяспечны элемент з падтрымкай скрыптаў \"$1\".",
+       "uploaded-hostile-svg": "У ўкладзеным SVG файле знойдзены небяспечны CSS у элеменце стылю.",
+       "uploaded-event-handler-on-svg": "Устаноўка атрыбутаў апрацоўшчыка падзей <code>$1=\"$2\"</code> у SVG файле не дазваляецца.",
+       "uploaded-href-attribute-svg": "у SVG файлах атрыбутам href дазволены толькі мэты віду http:// або https://, знойдзена <code>&lt;$1 $2=\"$3\"&gt;</code>.",
+       "uploaded-href-unsafe-target-svg": "У ўкладзеным SVG файле знойдзена спасылка на небяспечныя звесткі: URI мэты <code>&lt;$1 $2=\"$3\"&gt;</code>.",
+       "uploaded-animate-svg": "У ўкладзеным SVG файле знойдзены тэг \"animate\", здольны змяніць спасылку з дапамогай атрыбута \"from\" <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploadscriptednamespace": "Гэты файл SVG утрымлівае недапушчальную прастору імёнаў \"$1\".",
        "uploadinvalidxml": "Немагчыма прааналізаваць XML ва ўкладзеным файле.",
        "uploadvirus": "Файл утрымлівае вірус! Падрабязнасці: $1",
        "upload-options": "Магчымасці ўкладання",
        "watchthisupload": "Назіраць за файлам",
        "filewasdeleted": "Файл з такою назвай быў раней укладзены сюды, а потым сцёрты. Варта паглядзець у $1 перад тым, як укладаць яго нанова.",
+       "filename-thumb-name": "Выглядае як назва мініяцюры. Калі ласка, не загружайце мініяцюры назад у тую ж вікі. Калі вам неабходны гэты файл, выпраўце назву на больш асэнсаваную, каб яна не ўтрымлівала прэфікс мініяцюры.",
        "filename-bad-prefix": "Назва файла, які вы ўкладаеце, пачынаецца з <strong>\"$1\"</strong>, што падобна на аўтаматычныя, неінфарматыўныя назвы файлаў, якія робяць лічбавыя фотаапараты. Калі ласка, змяніце назву на больш зразумелую.",
        "upload-proto-error": "Няправільны пратакол",
        "upload-proto-error-text": "Укладанне файла зводдаль патрабуе URL, які пачынаецца з <code>http://</code> або <code>ftp://</code>.",
        "upload-too-many-redirects": "Занадта шмат перасылак за гэтым адрасам (URL)",
        "upload-http-error": "Памылка HTTP: $1",
        "upload-copy-upload-invalid-domain": "Капіраванне загрузак не дазволенае ў гэтым дамене.",
+       "upload-foreign-cant-upload": "Гэта вікі не настроена для ўкладання файлаў у запытанае старонняе сховішча файлаў.",
        "upload-dialog-title": "Укласці файл",
        "upload-dialog-button-cancel": "Нічога",
        "upload-dialog-button-done": "Гатова",
        "upload-dialog-button-upload": "Укласці",
        "upload-form-label-infoform-title": "Падрабязнасці",
        "upload-form-label-infoform-name": "Назва",
+       "upload-form-label-infoform-name-tooltip": "Унікальны апісальны загаловак для файла, які будзе служыць яго назвай. Можаце выкарыстоўваць звычайную мову з прабеламі. Не дадавайце канчатак назвы файла.",
        "upload-form-label-infoform-description": "Апісанне",
        "upload-form-label-usage-title": "Выкарыстанне",
        "upload-form-label-usage-filename": "Назва файла",
        "listfiles-delete": "сцерці",
        "listfiles-summary": "Гэтая службовая старонка паказвае ўсе загружаныя файлы.",
        "listfiles_search_for": "Знайсці назву выявы:",
+       "listfiles-userdoesnotexist": "Уліковы запіс удзельніка \"$1\" не зарэгістраваны.",
        "imgfile": "файл",
        "listfiles": "Усе файлы",
        "listfiles_thumb": "Драбніца",
        "apihelp": "Даведка па API",
        "apihelp-no-such-module": "Модуль \"$1\" не знойдзены.",
        "apisandbox": "Пясочніца API",
+       "apisandbox-jsonly": "Каб выкарыстоўваць пясочніцу API, патрэбен JavaScript.",
+       "apisandbox-api-disabled": "API адключаны на гэтым сайце.",
        "apisandbox-fullscreen": "Разгарнуць панэль",
+       "apisandbox-fullscreen-tooltip": "Разгарнуць панэль пясочніцы, каб запоўніць акно браўзера.",
        "apisandbox-unfullscreen": "Паказаць старонку",
        "apisandbox-submit": "Зрабіць запыт",
        "apisandbox-reset": "Ачысціць",
        "apisandbox-retry": "Паўтарыць",
+       "apisandbox-no-parameters": "Гэты модуль API не мае параметраў.",
        "apisandbox-helpurls": "Спасылкі на даведку",
        "apisandbox-examples": "Прыклады",
        "apisandbox-dynamic-parameters": "Дадатковыя параметры",
        "apisandbox-dynamic-parameters-add-label": "Дадаць параметр:",
        "apisandbox-dynamic-parameters-add-placeholder": "Назва параметра",
+       "apisandbox-dynamic-error-exists": "Параметр з назвай \"$1\" ужо існуе.",
+       "apisandbox-deprecated-parameters": "Састарэлыя параметры",
+       "apisandbox-results": "Вынікі",
+       "apisandbox-alert-page": "Палі на гэтай старонцы недапушчальныя.",
+       "apisandbox-alert-field": "Значэнне гэтага поля недапушчальнае.",
        "booksources": "Кнігі",
        "booksources-search-legend": "Знайсці, дзе купіць кнігі",
        "booksources-search": "Пошук",
        "logempty": "Нічога адпаведнага ў журнале не знойдзена.",
        "log-title-wildcard": "Знайсці назвы, якія пачынаюцца з гэтага тэксту",
        "showhideselectedlogentries": "Паказаць/схаваць выбраныя запісы журнала",
+       "log-edit-tags": "Правіць біркі да выбраных запісаў журнала",
+       "checkbox-select": "Выбраць: $1",
        "checkbox-all": "Усе",
        "allpages": "Усе старонкі",
        "nextpage": "Наступная старонка ($1)",
        "cachedspecial-viewing-cached-ts": "Вы праглядаеце кэшаваную версію старонкі, якая можа быць не зусім актуальнай.",
        "cachedspecial-refresh-now": "Глядзець найноўшую.",
        "categories": "Катэгорыі",
+       "categories-submit": "Паказаць",
        "categoriespagetext": "Наступн{{PLURAL:$1|ая катэгорыя ўтрымлівае|ыя $1 катэгорыі(-й) утрымліваюць}} старонкі або мультымедыю.\nТут не паказаныя [[Special:UnusedCategories|катэгорыі без складнікаў]].\nГл. таксама [[Special:WantedCategories|патрэбныя катэгорыі]].",
        "categoriesfrom": "Паказаць катэгорыі, пачынаючы з:",
        "special-categories-sort-count": "пд. колькасці",
        "activeusers-hidebots": "Без робатаў",
        "activeusers-hidesysops": "Без адміністратараў",
        "activeusers-noresult": "Няма такіх удзельнікаў.",
+       "activeusers-submit": "Паказаць актыўных удзельнікаў",
        "listgrouprights": "Дазволы для груп удзельнікаў",
        "listgrouprights-summary": "Гэты пералік вызначаных у гэтай вікі груп удзельнікаў, разам з прыпісанымі ім дазволамі.\nДаведацца больш пра асабістыя дазволы можна на старонцы [[{{MediaWiki:Listgrouprights-helppage}}]].",
        "listgrouprights-key": "Легенда:\n* <span class=\"listgrouprights-granted\">Дадзены дазвол</span>\n* <span class=\"listgrouprights-revoked\">Адкліканы дазвол</span>",
        "rollback-success": "Адкочаны праўкі $1; вернута апошняя версія $2.",
        "sessionfailure-title": "Памылка сеансу",
        "sessionfailure": "Магчыма, ёсць праблемы з вашым сеансам працы ў сістэме. Таму вам было адмоўлена ў выкананні дзеяння, каб засцерагчыся ад захопу сеанса.\n\nВярніцеся на папярэднюю старонку, перазагрузіце яе і тады паспрабуйце зноў.",
+       "changecontentmodel-title-label": "Назва старонкі",
+       "changecontentmodel-model-label": "Новая мадэль змесціва",
        "changecontentmodel-reason-label": "Прычына:",
+       "changecontentmodel-submit": "Змяніць",
+       "logentry-contentmodel-change-revertlink": "адкаціць",
        "protectlogpage": "Журнал аховы",
        "protectlogtext": "Ніжэй прыведзены журнал змен абароны старонкі.\nВы можаце таксама прагледзець [[Special:ProtectedPages|пералік старонак пад аховай]].",
        "protectedarticle": "пад аховай «[[$1]]»",
        "tooltip-feed-atom": "Струмень навін Atom для гэтай старонкі",
        "tooltip-t-contributions": "Пералік укладаў {{GENDER:$1|гэтага ўдзельніка|гэтай удзельніцы}}",
        "tooltip-t-emailuser": "Адаслаць {{GENDER:$1|удзельніку|удзельніцы}} ліст эл.пошты",
+       "tooltip-t-info": "Больш звестак пра гэту старонку",
        "tooltip-t-upload": "Укласці файлы",
        "tooltip-t-specialpages": "Пералік усіх адмысловых старонак",
        "tooltip-t-print": "Друкавальная версія гэтай старонкі",
        "pageinfo-robot-index": "Дазволена",
        "pageinfo-robot-noindex": "Не дазволена",
        "pageinfo-watchers": "Колькасць назіральнікаў старонкі",
+       "pageinfo-visiting-watchers": "Колькасць удзельнікаў, якія назіраюць за старонкай і бачылі апошнія змены",
        "pageinfo-few-watchers": "Менш чым $1 {{PLURAL:$1|назіральнік|назіральнікі|назіральнікаў}}",
+       "pageinfo-few-visiting-watchers": "Могуць быць, а можа і не быць удзельнікаў, якія назіраюць за старонкай і бачылі апошнія змены",
        "pageinfo-redirects-name": "Колькасць перасылак на гэту старонку",
        "pageinfo-subpages-name": "Колькасць падстаронак гэтай старонкі",
        "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|перасылка|перасылкі|перасылак}}; $3 {{PLURAL:$3|прамая спасылка|прамыя спасылкі|прамых спасылак}})",
        "watchlisttools-edit": "Паказаць спіс назірання",
        "watchlisttools-raw": "Паказаць нефарматаваны спіс назірання",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|размовы]])",
+       "timezone-local": "Мясцовы",
        "duplicate-defaultsort": "Увага: прадвызначаная клавіша ўпарадкавання \"$2\" замяніла ранейшую такую клавішу \"$1\".",
        "duplicate-displaytitle": "<strong>Папярэджанне:</strong> Паказаная назва \"$2\" перасягае ранейшую назву \"$1\".",
        "version": "Версія",
        "version-entrypoints": "Уваходныя адрасы",
        "version-entrypoints-header-entrypoint": "Кропка ўваходу",
        "version-entrypoints-header-url": "URL",
+       "version-libraries": "Устаноўленыя бібліятэкі",
+       "version-libraries-library": "Бібліятэка",
        "version-libraries-version": "Версія",
        "version-libraries-license": "Ліцэнзія",
        "version-libraries-description": "Апісанне",
        "tags-create-tag-name": "Назва біркі:",
        "tags-create-reason": "Прычына:",
        "tags-create-submit": "Стварыць",
+       "tags-create-already-exists": "Бірка \"$1\" ужо ёсць.",
+       "tags-create-warnings-below": "Вы хочаце прадоўжыць стварэнне біркі?",
+       "tags-delete-title": "Сцерці бірку",
+       "tags-delete-explanation-initial": "Вы збіраецеся выдаліць бірку \"$1\" з базы звестак.",
+       "tags-delete-explanation-warning": "Гэта дзеянне <strong>незваротнае</strong> і <strong>не можа быць адкочана</strong> нават адміністратарамі базы звестак. Упэўніцеся, што гэта тая бірка, што вы хочаце выдаліць.",
+       "tags-delete-reason": "Прычына:",
+       "tags-delete-submit": "Незваротна сцерці гэту бірку",
        "comparepages": "Параўнанне старонак",
        "compare-page1": "Старонка 1",
        "compare-page2": "Старонка 2",
index 570797a..69f663d 100644 (file)
        "moredotdotdot": "আরও...",
        "morenotlisted": "এটি একটি অসম্পূর্ণ তালিকা।",
        "mypage": " পাতা",
-       "anonuserpage": "অজানা ব্যবহারকারী",
        "mytalk": "আলোচনা",
        "anontalk": "আলাপ",
        "navigation": "পরিভ্রমণ",
        "nocookieslogin": "ব্যবহারকারীদের প্রবেশ সম্পন্ন করতে {{SITENAME}} কুকি ব্যবহার করে। আপনার ব্রাউজারে কুকি নিষ্ক্রিয় করা আছে। কুকি চালু করে আবার চেষ্টা করুন।",
        "nocookiesfornew": "ব্যবহারকারীর অ্যাকাউন্ট তৈরি হয়নি, কারণ এর উৎস সম্পর্কে আমরা নিশ্চিত নই।\nনিশ্চিত করুন আপনার কুকি সক্রিয় রয়েছে, পাতাটি পুনরায় লোড করে আবার চেষ্টা করুন।",
        "noname": "আপনি সঠিক ব্যবহারকারী নাম নির্দিষ্ট করেননি।",
-       "loginsuccesstitle": "পà§\8dরবà§\87শ à¦¸à¦«à¦²",
-       "loginsuccess": "'''আপনি এইমাত্র \"$1\" নামে {{SITENAME}}-তে প্রবেশ করেছেন।'''",
+       "loginsuccesstitle": "পà§\8dরবà§\87শ à¦\95রà§\87à¦\9bà§\87ন",
+       "loginsuccess": "<strong>আপনি এইমাত্র \"$1\" নামে {{SITENAME}}-তে প্রবেশ করেছেন।</strong>",
        "nosuchuser": "\"$1\" নামে কোন ব্যবহারকারী নেই।\nব্যবহারকারী নামের আকার সংবেদনশীল।\nআপনার বানান পরীক্ষা করে দেখুন, অথবা [[Special:UserLogin/signup|নতুন একটি অ্যাকাউন্ট খুলুন]]।",
        "nosuchusershort": "\"$1\" নামের কোন ব্যবহারকারী নেই। নামের বানান পরীক্ষা করুন।",
        "nouserspecified": "আপনাকে অবশ্যই ব্যবহারকারী নাম নির্দিষ্ট করতে হবে।",
        "createaccount-title": "{{SITENAME}}-এর জন্য অ্যাকাউন্ট সৃষ্টি",
        "createaccount-text": "কেউ $2-এর জন্য {{SITENAME}}-এ একটি অ্যাকাউন্ট সৃষ্টি করেছেন ($4)। \"$2\"-এর জন্য পাসওয়ার্ড হল \"$3\"। আপনার এখন অ্যাকাউন্টে প্রবেশ করে পাসওয়ার্ড পরিবর্তন করা উচিত।\n\nযদি ভুল করে অ্যাকাউন্টটি সৃষ্টি হয়ে থাকে, তাহলে এই বার্তাটি উপেক্ষা করুন।",
        "login-throttled": "আপনি সাম্প্রতিক সময়ে পরপর বেশ কয়েকবার প্রবেশের চেষ্টা করেছেন।\nপুনরায় চেষ্টা করার পূর্বে অনুগ্রহ করে $1 অপেক্ষা করুন।",
-       "login-abort-generic": "à¦\86পনার à¦²à¦\97à¦\87ন à¦¸à¦«à¦² à¦\9bিলà§\8b à¦¨à¦¾ - বাতিল করা হয়েছে",
+       "login-abort-generic": "à¦\86পনার à¦ªà§\8dরবà§\87শ à¦¬à§\8dযরà§\8dথ à¦¹à¦¯à¦¼à§\87à¦\9bà§\87 - বাতিল করা হয়েছে",
        "login-migrated-generic": "আপনার অ্যাকাউন্ট স্থানান্তরিত করা হয়েছে, এবং আপনার ব্যবহারকারী নাম আর এই উইকিতে বিদ্যমান নয়।",
        "loginlanguagelabel": "ভাষা: $1",
        "suspicious-userlogout": "আপনার প্রস্থানের অনুরোধ বাতিল হয়েছে কারণ অনুমিত যে আপনার ব্রাউজার অসম্পূর্ণ অথবা পূবর্বতী তথ্য প্রেরণ করেছে।",
        "newpassword": "নতুন পাসওয়ার্ড:",
        "retypenew": "নতুন পাসওয়ার্ড আবার লিখুন:",
        "resetpass_submit": "পাসওয়ার্ড দাও এবং লগ-ইন করো",
-       "changepassword-success": "à¦\86পনার à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড à¦¸à¦¾à¦«à¦²à¦­à¦¾à¦¬à§\87 à¦ªà¦°à¦¿à¦¬à¦°à§\8dতà§\80ত à¦¹à¦¯à¦¼à§\87à¦\9bà§\87।",
+       "changepassword-success": "à¦\86পনার à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড à¦ªà¦°à¦¿à¦¬à¦°à§\8dতন à¦\95রা à¦¹à¦¯à¦¼à§\87à¦\9bà§\87!",
        "changepassword-throttled": "আপনি সম্প্রতি পরপর বেশ কয়েকবার প্রবেশের চেষ্টা করেছেন। পুনরায় চেষ্টা করার পূর্বে অনুগ্রহ করে $1 অপেক্ষা করুন।",
        "botpasswords": "বট পাসওয়ার্ড",
        "botpasswords-disabled": "বট পাসওয়ার্ড নিষ্ক্রিয় করা।",
        "botpasswords-insert-failed": "\"$1\" নামের বট যুক্ত করা যায়নি। আগে থেকেই তালিকায় রয়েছে?",
        "botpasswords-update-failed": "\"$1\" নামের বট যুক্ত করা যায়নি। আগে অপসারণ করা হয়েছিল?",
        "botpasswords-created-title": "বট পাসওয়ার্ড তৈরী করা হয়েছে",
-       "botpasswords-created-body": "\"$1\", বট পাসওয়ার্ড তৈরী করা হয়েছে।",
+       "botpasswords-created-body": "ব্যবহারকারী \"$2\"-এর \"$1\" নামের বটের জন্য বট পাসওয়ার্ড তৈরী করা হয়েছে।",
        "botpasswords-updated-title": "বট পাসওয়ার্ড আপডেট করা হয়েছে",
-       "botpasswords-updated-body": "\"$1\" বট পাসওয়ার্ডটি সফলভাবে হালনাগাদ করা হয়েছে।",
+       "botpasswords-updated-body": "ব্যবহারকারী \"$2\"-এর \"$1\" নামের বটের জন্য বট পাসওয়ার্ড হালনাগাদ করা হয়েছে।",
        "botpasswords-deleted-title": "বট পাসওয়ার্ড অপসারণ করা হয়েছে",
-       "botpasswords-deleted-body": "\"$1\" বটের পাসওয়ার্ড মুছে ফেলা হয়েছিল",
+       "botpasswords-deleted-body": "ব্যবহারকারী \"$2\"-এর \"$1\" নামের বটের জন্য বট পাসওয়ার্ড মুছে ফেলা হয়েছিল।",
        "botpasswords-no-provider": "BotPasswordsSessionProvider উপলব্ধ নয়।",
        "resetpass_forbidden": "পাসওয়ার্ড পরিবর্তন করা সম্ভব নয়",
        "resetpass-no-info": "এই পাতাটিতে সরাসরি প্রবেশাধিকার পেতে আপনাকে অবশ্যই লগইন করতে হবে।",
        "resetpass-submit-loggedin": "পাসওয়ার্ড পরিবর্তন",
        "resetpass-submit-cancel": "বাতিল",
-       "resetpass-wrong-oldpass": "ভà§\81ল à¦\85সà§\8dথায়à§\80 à¦\85থবা à¦¬à¦°à§\8dতমান à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড।\nসমà§\8dভবতà¦\83 à¦\86পনি à¦\87তà§\8bমধà§\8dযà§\87à¦\87 à¦¸à¦«à¦²à¦­à¦¾à¦¬à§\87 à¦\86পনার à¦ªà¦¾à¦¸à¦\93য়ারà§\8dডà¦\9fি à¦ªà¦°à¦¿à¦¬à¦°à§\8dতন à¦\95রà§\87à¦\9bà§\87ন à¦\85থবা à¦\8fà¦\95à¦\9fি à¦¨à¦¤à§\81ন à¦\85সà§\8dথায়à§\80 à¦ªà¦¾à¦¸à¦\93য়ারà§\8dডà§\87র à¦\9cনà§\8dয à¦\85নà§\81রà§\8bধ à¦\95রà§\87à¦\9bà§\87ন।",
+       "resetpass-wrong-oldpass": "ভুল অস্থায়ী অথবা বর্তমান পাসওয়ার্ড।\nসম্ভবতঃ আপনি ইতোমধ্যেই আপনার পাসওয়ার্ডটি পরিবর্তন করেছেন অথবা একটি নতুন অস্থায়ী পাসওয়ার্ডের জন্য অনুরোধ করেছেন।",
        "resetpass-recycled": "অনুগ্রহ করে বর্তমানে ব্যবহার করছেন এমন পাসওয়ার্ডের পরিবর্তে নতুন একটি পাসওয়ার্ড নির্ধারণ করুন।",
        "resetpass-temp-emailed": "সাময়িকভাবে ব্যবহার করার কোড দিয়ে আপনি লগইন করেছেন।\nলগইন করার জন্য আপনাকে অবশ্যই একটি নতুন পাসওয়ার্ড নির্ধারন করতে হবে:",
        "resetpass-temp-password": "অস্থায়ী পাসওয়ার্ড:",
        "previewnote": "'''খেয়াল করুন, এটি একটি প্রাকদর্শন মাত্র।'''\nআপনার পরিবর্তন এখনও সংরক্ষণ করা হয়নি!",
        "continue-editing": "সম্পাদনা করুন",
        "previewconflict": "এই প্রাকদর্শনটি সম্পাদনা ক্ষেত্রের উপরের অংশটির টেক্সট সংরক্ষণ করলে যেরকম দেখাবে, তা দেখাচ্ছে।",
-       "session_fail_preview": "'''দুঃখিত! সেশন ডাটা হারিয়ে যাওয়ার কারণে আপনার সম্পাদনাটি সংরক্ষণ করা সম্ভব হয়নি। দয়া করে লেখাটি আবার জমা দেয়ার চেষ্টা করুন। যদি এতেও কাজ না হয়, তবে অ্যাকাউন্ট থেকে বেরিয়ে গিয়ে আবার অ্যাকাউন্টে প্রবেশ করে চেষ্টা করুন।'''",
+       "session_fail_preview": "দুঃখিত! সেশন ডাটা হারিয়ে যাওয়ার কারণে আপনার সম্পাদনাটি সংরক্ষণ করা সম্ভব হয়নি।\n\nআপনি সম্ভবত সংযোগ হারিয়েছন। <strong>দয়া করে যাচাই করুন যে আপনি এখনও প্রবেশরত রয়েছেন এবং আবার চেষ্টা করুন</strong>। যদি এটি এখনও কাজ না করে, তাহলে দয়া করে [[Special:UserLogout|অ্যাকাউন্ট থেকে প্রস্থান করুন]] এবং আবার অ্যাকাউন্টে প্রবেশ করে চেষ্টা করুন এবং এবং পরীক্ষা করুন যে আপনার ব্রাউজার এই সাইটে কুকি ব্যবহারের অনুমতি দেয়।",
        "session_fail_preview_html": "'''দুঃখিত! সেশন উপাত্ত হারিয়ে যাওয়ার কারণে আমরা আপনার সম্পাদনাটি প্রক্রিয়া করতে পারিনি।'''\n\n''{{SITENAME}}-এ raw HTML সক্রিয় আছে বলে জাভাস্ক্রিপ্টভিত্তিক আক্রমণ থেকে প্রতিরক্ষার জন্য প্রাকদর্শনটি দেখানো হচ্ছে না।''\n\n'''যদি এটি সম্পাদনার একটি বৈধ প্রচেষ্টা হয়, তবে অনুগ্রহ করে আবার চেষ্টা করুন। যদি তারপরেও কাজ না হয়, তবে অ্যাকাউন্ট থেকে বেরিয়ে গিয়ে আবার প্রবেশ করে চেষ্টা করুন।'''",
        "token_suffix_mismatch": "'''আপনার সম্পাদনাটি প্রত্যাখ্যান করা হয়েছে, কারণ আপনার ক্লায়েন্ট প্রোগ্রামটি সম্পাদনা টেক্সটের বিরামচিহ্নগুলি গুলিয়ে ফেলেছে। পাতাটির টেক্সটে যাতে ক্ষতি না হয় সেজন্য সম্পাদনাটি প্রত্যাখ্যান করা হয়েছে। আপনি কোন ত্রুটিপূর্ণ ওয়েব-ভিত্তিক বেনামী প্রক্সি সেবা ব্যবহার করলে এরকম হতে পারে।'''",
        "edit_form_incomplete": "'''আপনার সম্পাদনার কিছু অংশ সার্ভারে পৌছায় নি; আপনার সম্পাদনা সম্পূর্ণরুপে আছে কিনা নিশ্চিত হয়ে আবার চেষ্টা করুন'''",
        "recentchangeslinked-page": "পাতার নাম:",
        "recentchangeslinked-to": "প্রদত্ত পাতায় সংযুক্ত আছে এমন পাতাগুলোর পরিবর্তন দেখাও",
        "recentchanges-page-added-to-category": "বিষয়শ্রেণীতে [[:$1]] যোগ করা হয়েছে",
-       "recentchanges-page-added-to-category-bundled": "বিষয়শà§\8dরà§\87ণà§\80তà§\87 [[:$1]] à¦\8fবà¦\82 {{PLURAL:$2|à¦\8fà¦\95à¦\9fি à¦ªà¦¾à¦¤à¦¾|$2à¦\9fি à¦ªà¦¾à¦¤à¦¾}} যোগ করা হয়েছে",
+       "recentchanges-page-added-to-category-bundled": "বিষয়শà§\8dরà§\87ণà§\80তà§\87 [[:$1]] à¦\93 [[Special:WhatLinksHere/$1|{{PLURAL:$2|à¦\8fà¦\95à¦\9fি à¦ªà¦¾à¦¤à¦¾|$2à¦\9fি à¦ªà¦¾à¦¤à¦¾}}]] যোগ করা হয়েছে",
        "recentchanges-page-removed-from-category": "বিষয়শ্রেণী থেকে [[:$1]] সরানো হয়েছে",
-       "recentchanges-page-removed-from-category-bundled": "বিষয়শà§\8dরà§\87ণà§\80 à¦¥à§\87à¦\95à§\87 [[:$1]] à¦\8fবà¦\82 {{PLURAL:$2|à¦\8fà¦\95à¦\9fি à¦ªà¦¾à¦¤à¦¾|$2à¦\9fি à¦ªà¦¾à¦¤à¦¾}} সরানো হয়েছে",
+       "recentchanges-page-removed-from-category-bundled": "বিষয়শà§\8dরà§\87ণà§\80 à¦¥à§\87à¦\95à§\87 [[:$1]] à¦\93 [[Special:WhatLinksHere/$1|{{PLURAL:$2|à¦\8fà¦\95à¦\9fি à¦ªà¦¾à¦¤à¦¾|$2à¦\9fি à¦ªà¦¾à¦¤à¦¾}}]] সরানো হয়েছে",
        "autochange-username": "মিডিয়াউইকি স্বয়ংক্রিয় পরিবর্তন",
        "upload": "আপলোড",
        "uploadbtn": "ফাইল আপলোড করুন",
        "tags-edit-chosen-no-results": "কোন ট্যাগ মিল পাওয়া যায়নি",
        "tags-edit-reason": "কারণ:",
        "tags-edit-revision-submit": "Apply changes to {{PLURAL:$1|এই সংশোধনে|$1 সংশোধনসমূহে}} পরিবর্তন প্রয়োগ করুন",
-       "tags-edit-success": "পরিবরà§\8dতন à¦¸à¦«à¦²à¦­à¦¾à¦¬à§\87 à¦ªà§\8dরয়à§\8bà¦\97 à¦\95রা à¦¹à¦¯à¦¼à§\87à¦\9bà§\87।",
+       "tags-edit-success": "পরিবর্তন প্রয়োগ করা হয়েছে।",
        "tags-edit-failure": "পরিবর্তন প্রয়োগ করা যায়নি: $1",
        "tags-edit-nooldid-title": "লক্ষ্য সংশোধন অবৈধ",
        "tags-edit-none-selected": "যোগ করতে অথবা অপসারণ করতে অন্ততপক্ষে একটি ট্যাগ দয়া করে নির্বাচন করুন।",
        "logentry-upload-revert": "$1 $3 {{GENDER:$2|আপলোড করেছেন}}",
        "log-name-managetags": "ট্যাগ ব্যবস্থাপনা লগ",
        "logentry-managetags-create": "$1 \"$4\" ট্যাগ {{GENDER:$2|তৈরি করেছে}}",
+       "logentry-managetags-delete": "$1 \"$4\" ট্যাগটি {{GENDER:$2|অপসারণ করেছেন}} ($5টি {{PLURAL:$5|সংস্করণ বা লগ ভুক্তি|সংস্করণ ও/বা লগ ভুক্তি}} সরানো হয়েছে)",
        "log-name-tag": "ট্যাগ লগ",
        "rightsnone": "(কিছু নাই)",
        "revdelete-summary": "সম্পাদনা সারাংশ",
index 6ded141..21ba46b 100644 (file)
        "resetpass-temp-password": "Privremena lozinka:",
        "resetpass-abort-generic": "Promjenu lozinke prekinulo je proširenje.",
        "resetpass-expired": "Vaša lozinka je istekla. Postavite novu lozinku da biste se prijavili.",
-       "resetpass-expired-soft": "Vaša šifra je istekla i mora se resetirati. Molimo odaberite sada novu šifru ili kliknite  \"{{int:resetpass-submit-cancel}}\" da je resetirate kasnije.",
-       "resetpass-validity-soft": "Vaša šifra nije valjana: $1\n\nMolimo odaberite novu šifru ili kliknite \"{{int:resetpass-submit-cancel}}\" da je resetirate kasnije.",
-       "passwordreset": "Poništavanje šifre",
-       "passwordreset-text-one": "Ispunite ovaj obrazac da biste resetovali Vašu šifru/lozinku.",
+       "resetpass-expired-soft": "Vaša lozinka je istekla i mora se resetirati. Molimo odaberite sada novu lozinka ili kliknite  \"{{int:resetpass-submit-cancel}}\" da je resetirate kasnije.",
+       "resetpass-validity-soft": "Vaša lozinka nije valjana: $1\n\nMolimo odaberite novu lozinku ili kliknite \"{{int:resetpass-submit-cancel}}\" da je resetirate kasnije.",
+       "passwordreset": "Ponovo postavljanje lozinke",
+       "passwordreset-text-one": "Ispunite ovaj obrazac da biste dobili privremenu lozinku na Vašu adresu e-pošte.",
        "passwordreset-text-many": "{{PLURAL:$1|Ispunite jedno od polja kako biste dobili privremenu lozinku putem e-pošte.}}",
-       "passwordreset-disabled": "Poništavanje šifre  je onemogućeno na ovoj wiki.",
+       "passwordreset-disabled": "Ponovo postavljanje lozinke je onemogućeno na ovom wikiju.",
        "passwordreset-emaildisabled": "E-pošta je onemogućena na ovom wikiju.",
        "passwordreset-username": "Korisničko ime:",
        "passwordreset-domain": "Domen:",
        "userrights": "Postavke korisničkih prava",
        "userrights-lookup-user": "Menadžment korisničkih grupa",
        "userrights-user-editname": "Upišite korisničko ime:",
-       "editusergroup": "Uredi korisničke grupe",
+       "editusergroup": "Uredi {{GENDER:$1|korisničke}} grupe",
        "editinguser": "Mijenjate korisnička prava korisnika <strong>[[User:$1|$1]]</strong> $2",
        "userrights-editusergroup": "Uredi korisničke grupe",
        "saveusergroups": "Sačuvaj korisničke grupe",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|spisak novih stranica]])",
        "recentchanges-submit": "Prikaži",
        "rcnotefrom": "Ispod {{PLURAL:$5|je izmjena|su izmjene}} od <strong>$3, $4</strong> (do <strong>$1</strong> prikazano).",
-       "rclistfrom": "Prikaži nove izmjene počev od $3 $2",
+       "rclistfrom": "Prikaži nove izmjene počev od $3 $2",
        "rcshowhideminor": "$1 manje izmjene",
        "rcshowhideminor-show": "Prikaži",
        "rcshowhideminor-hide": "Sakrij",
        "foreign-structured-upload-form-label-own-work": "Ovo je moje djelo",
        "foreign-structured-upload-form-label-infoform-categories": "Kategorije",
        "foreign-structured-upload-form-label-infoform-date": "Datum",
-       "foreign-structured-upload-form-label-own-work-message-local": "Potvrđujem da postavljam ovu datoteku u skladu s uvjetima korištenja i pravilima o licenciranju na {{GRAMMAR:dativ|{{SITENAME}}}}.",
+       "foreign-structured-upload-form-label-own-work-message-local": "Potvrđujem da postavljam ovu datoteku u skladu s uslovima korištenja i pravilima o licenciranju na {{GRAMMAR:dativ|{{SITENAME}}}}.",
        "foreign-structured-upload-form-label-not-own-work-message-local": "Ako niste u stanju postaviti ovu datoteku pod pravilima {{GRAMMAR:genitiv|{{SITENAME}}}}, molimo zatvorite ovaj prozor i pokušajte drugom metodom.",
        "foreign-structured-upload-form-label-not-own-work-local-local": "Također možete pokušati [[Special:Upload|na standardnoj stranici za postavljanje]].",
-       "foreign-structured-upload-form-label-own-work-message-default": "Shvatam da postavljam ovu datoteku na zajedničko spremište. Potvrđujem da to činim u skladu s uvjetima korištenja i ovdašnjim pravilima licenciranja.",
+       "foreign-structured-upload-form-label-own-work-message-default": "Shvatam da postavljam ovu datoteku na zajedničko spremište. Potvrđujem da to činim u skladu s uslovima korištenja i ovdašnjim pravilima licenciranja.",
        "foreign-structured-upload-form-label-not-own-work-message-default": "Ako niste u stanju postaviti ovu datoteku pod pravilima zajedničkog skladišta, molimo zatvorite ovaj prozor i pokušajte drugom metodom.",
        "foreign-structured-upload-form-label-not-own-work-local-default": "Možete također pokušati koristeći  [[Special:Upload|stranicu za postavljanje na  {{GRAMMAR:dativ|{{SITENAME}}}}]], ako se ova datoteka može postaviti pod tamošnjim pravilima.",
-       "foreign-structured-upload-form-label-own-work-message-shared": "Potvrđujem da posjedujem autorska prava za ovu datoteku i slažem se da ću je neopozivo postaviti na Wikimedia Commons pod licencom [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0], te se slažem s [https://wikimediafoundation.org/wiki/Terms_of_Use Uvjetima korištenja].",
+       "foreign-structured-upload-form-label-own-work-message-shared": "Potvrđujem da posjedujem autorska prava za ovu datoteku i slažem se da ću je neopozivo postaviti na Wikimedia Commons pod licencom [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0], te se slažem s [https://wikimediafoundation.org/wiki/Terms_of_Use uslovima korištenja].",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "Ako ne posjedujete autorska prava za ovu datoteku ili je želite postaviti pod drugom licencom, imajte na umu da možete koristiti [https://commons.wikimedia.org/wiki/Special:UploadWizard čarobnjak za postavljanje datoteka na Commonsu].",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "Također možete koristiti [[Special:Upload|stranicu za postavljanje datoteka na {{GRAMMAR:dativ|{{SITENAME}}}}]] ako pravila te stranice dozvoljavaju postavljanje ove datoteke.",
        "backend-fail-stream": "Ne mogu emitirati datoteku $1.",
        "version-poweredby-others": "ostali",
        "version-poweredby-translators": "translatewiki.net prevodioci",
        "version-credits-summary": "Željeli bismo se zahvaliti sljedećim ljudima na njihovom doprinosu [[Special:Version|MediaWikiju]].",
-       "version-license-info": "Mediawiki je slobodni softver; možete ga redistribuirati i(li) mijenjati pod uvjetima opće javne GNU licence kao što je objavljeno od strane \"Free Software Foundationa\", bilo u verziji 2 licence ili (po Vašoj volji) nekoj od kasnijih verzija.\n\nMediawiki se distribuira u nadi da će biti korisna, ali BEZ IKAKVIH GARANCIJA, čak i bez ikakvih posrednih garancija o KOMERCIJALNOSTI ili DOSTUPNOSTI ZA ODREĐENU SVRHU. Pogledajte opću javnu GNU licencu za više detalja.\n\nTrebali biste dobiti [{{SERVER}}{{SCRIPTPATH}}/KOPIJU opće javne GNU licence] zajedno s ovim programom. Ako niste, pišite \"Free Software Foundationu\" na adresu: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ili je pročitajte [//www.gnu.org/licenses/old-licenses/gpl-2.0.html ovdje].",
+       "version-license-info": "Mediawiki je slobodni softver; možete ga redistribuirati i(li) mijenjati pod uslovima opće javne GNU licence kao što je objavljeno od strane \"Free Software Foundationa\", bilo u verziji 2 licence ili (po Vašoj volji) nekoj od kasnijih verzija.\n\nMediawiki se distribuira u nadi da će biti korisna, ali BEZ IKAKVIH GARANCIJA, čak i bez ikakvih posrednih garancija o KOMERCIJALNOSTI ili DOSTUPNOSTI ZA ODREĐENU SVRHU. Pogledajte opću javnu GNU licencu za više detalja.\n\nTrebali biste dobiti [{{SERVER}}{{SCRIPTPATH}}/KOPIJU opće javne GNU licence] zajedno s ovim programom. Ako niste, pišite \"Free Software Foundationu\" na adresu: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ili je pročitajte [//www.gnu.org/licenses/old-licenses/gpl-2.0.html ovdje].",
        "version-software": "Instalirani softver",
        "version-software-product": "Proizvod",
        "version-software-version": "Verzija",
index a3dd1b4..9ac9fb8 100644 (file)
        "moredotdotdot": "Més...",
        "morenotlisted": "Aquesta llista no és completa.",
        "mypage": "Pàgina",
-       "anonuserpage": "Usuari desconegut",
        "mytalk": "Discussió",
        "anontalk": "Discussió",
        "navigation": "Navegació",
        "botpasswords-label-cancel": "Cancel·la",
        "botpasswords-label-delete": "Suprimeix",
        "botpasswords-label-resetpassword": "Reinicia la contrasenya",
+       "botpasswords-label-grants": "Permisos aplicables:",
        "botpasswords-label-restrictions": "Restriccions d'ús:",
+       "botpasswords-label-grants-column": "Concedit",
        "botpasswords-bad-appid": "",
        "resetpass_forbidden": "No poden canviar-se les contrasenyes",
        "resetpass-no-info": "Heu d'estar registrats en un compte per a poder accedir directament a aquesta pàgina.",
        "grant-group-file-interaction": "Interacció amb fitxes multimèdia",
        "grant-group-watchlist-interaction": "Interacció amb la vostra llista de seguiment",
        "grant-group-email": "Enviament de correu",
+       "grant-group-customization": "Personalització i preferències",
+       "grant-group-administration": "Realitza accions administratives",
+       "grant-group-other": "Activitat miscel·lània",
+       "grant-blockusers": "Bloca i desbloca usuaris",
        "grant-createaccount": "Crea comptes",
        "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-editmywatchlist": "Modifica la llista de seguiment",
        "grant-editpage": "Modifica les pàgines existents",
        "grant-editprotected": "Modifica pàgines protegides",
        "grant-highvolume": "Edició d'alt volum",
        "grant-oversight": "Amaga usuaris i suprimeix revisions",
        "grant-uploadfile": "Carrega fitxers nous",
+       "grant-basic": "Permisos bàsics",
+       "grant-viewdeleted": "Mostra fitxers eliminats i pàgines",
+       "grant-viewmywatchlist": "Modifica la llista de seguiment",
        "newuserlogpage": "Registre de creació d'usuaris",
        "newuserlogpagetext": "Aquest és un registre de creació de nous usuaris.",
        "rightslog": "Registre dels permisos d'usuari",
        "action-createpage": "crear pàgines",
        "action-createtalk": "crear pàgines 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-minoredit": "marcar aquesta modificació com a menor",
        "action-move": "moure aquesta pàgina",
        "apisandbox": "Pàgina de proves de l'API",
        "apisandbox-api-disabled": "L'API està desactivada en aquest lloc.",
        "apisandbox-intro": "Utilitzeu aquesta pàgina per experimentar amb l'<nowiki />'''API de web service de MediaWiki'''.\nVisiteu [//www.mediawiki.org/wiki/API:Main_page la documentació de l'API] per a més informació sobre l'ús de l'API. Exemple: [//www.mediawiki.org/wiki/API#A_simple_example recuperar el contingut d'una Pàgina Principal]. Seleccioneu una acció per veure més exemples.\n\nTingueu en compte que, encara que això és una pàgina de proves, les accions que feu en aquesta pàgina poden modificar la wiki.",
+       "apisandbox-unfullscreen": "Mostra la pàgina",
        "apisandbox-submit": "Fes sol·licitud",
        "apisandbox-reset": "Neteja",
-       "apisandbox-examples": "Exemple",
+       "apisandbox-retry": "Torna a provar",
+       "apisandbox-loading": "S'està carregant la informació del mòdul d'API «$1»...",
+       "apisandbox-helpurls": "Enllaços d'ajuda",
+       "apisandbox-examples": "Exemples",
+       "apisandbox-dynamic-parameters": "Paràmetres adicionals",
+       "apisandbox-dynamic-parameters-add-label": "Afegeix un paràmetre:",
+       "apisandbox-dynamic-parameters-add-placeholder": "Nom del paràmetre",
        "apisandbox-results": "Resultats",
        "apisandbox-request-url-label": "Sol·licita URL:",
        "apisandbox-request-time": "Temps de sol·licitud: $1",
        "listgrouprights-namespaceprotection-namespace": "Espai de noms",
        "listgrouprights-namespaceprotection-restrictedto": "Permisos que permeten modificar a l'usuari",
        "listgrants": "Autoritzacions",
-       "listgrants-grant": "Autoritza",
+       "listgrants-grant": "Concedeix",
        "listgrants-rights": "Permisos",
        "trackingcategories": "Categories de seguiment",
        "trackingcategories-summary": "Aquesta pàgina llista les categories de seguiment que s'omplen automàticament pel programari MediaWiki. Es poden canviar els seus noms modificant els missatges del sistema corresponents en l'espai de noms {{ns:8}}.",
        "watchlisttools-edit": "Visualitza i edita la llista de seguiment",
        "watchlisttools-raw": "Edita la llista de seguiment sense format",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|discussió]])",
+       "timezone-local": "Local",
        "duplicate-defaultsort": "Atenció: La clau d'ordenació per defecte \"$2\" invalida l'anterior clau \"$1\".",
        "duplicate-displaytitle": "<strong>Avís:</strong> El títol a mostrar «$2» sobreescriu l'anterior títol a mostrar «$1».",
        "invalid-indicator-name": "<strong>Error:</strong> No pot estar buit l'atribut <code>name</code> dels indicadors d'estat de la pàgina.",
        "tags-edit-revision-selected": "{{PLURAL:$1|Revisió seleccionada|Revisions seleccionades}} de [[:$2]]:",
        "tags-edit-logentry-legend": "Afegeix o suprimeix etiquetes {{PLURAL:$1|d'aquesta entrada del registre|de totes les entrades del registre}}",
        "tags-edit-existing-tags": "Etiquetes existents:",
-       "tags-edit-existing-tags-none": "''Cap''",
+       "tags-edit-existing-tags-none": "<em>Cap</em>",
        "tags-edit-new-tags": "Etiquetes noves:",
        "tags-edit-add": "Afegeix aquestes etiquetes:",
        "tags-edit-remove": "Treu aquestes etiquetes:",
        "tags-edit-reason": "Motiu:",
        "tags-edit-revision-submit": "Aplica els canvis a {{PLURAL:$1|a aquesta revisió|$1 revisions}}",
        "tags-edit-logentry-submit": "Aplica els canvis a {{PLURAL:$1|aquesta entrada de registre|$1 entrades de registre}}",
-       "tags-edit-success": "S’han aplicat els canvis correctament.",
+       "tags-edit-success": "S’han aplicat els canvis.",
        "tags-edit-failure": "No s’han pogut aplicar els canvis:\n$1",
        "tags-edit-nooldid-title": "Revisió de l'objectiu no vàlida",
        "tags-edit-none-selected": "Seleccioneu com a mínim una etiqueta per afegir o suprimir.",
        "expand_templates_preview": "Previsualitza",
        "expand_templates_preview_fail_html": "<em>Atès que {{SITENAME}} té HTML cru i hi ha hagut una pèrdua de dades de la sessió, s'ha amagat la vista prèvia com a mesura de precaució contra atacs en JavaScript.</em>\n\n<strong>Si això és un intent de previsualització legítim, torneu-ho a provar.</strong>\nSi encara no funciona, intenteu [[Special:UserLogout|finalitzar la sessió]] i iniciar-la de nou.",
        "expand_templates_preview_fail_html_anon": "<em>Atès que {{SITENAME}} té l'HTML cru habilitat i no heu iniciat una sessió, s'ha amagat la previsualització com a prevenció d'atacs en JavaScript.</em>\n\n<strong>Si això és un intent de previsualització legítim, [[Special:UserLogin|inicieu una sessió]] i torneu-ho a provar.</strong>",
+       "expand_templates_input_missing": "Cal que proporcioneu al menys algun text d'entrada.",
        "pagelanguage": "Canvia l'idioma de la pàgina",
        "pagelang-name": "Pàgina",
        "pagelang-language": "Idioma",
        "pagelang-submit": "Envia",
        "right-pagelang": "Canvia l'idioma de la pàgina",
        "action-pagelang": "canvia l'idioma de la pàgina",
-       "log-name-pagelang": "Canvia el registre de llengua",
+       "log-name-pagelang": "Registre de canvi de llengua",
        "log-description-pagelang": "Aquest és un registre dels canvis en les llengües de les pàgines.",
        "logentry-pagelang-pagelang": "$1 {{GENDER:$2|ha canviat}} la llengua de la pàgina per a $3 de $4 a $5.",
        "default-skin-not-found": "Òndia! L'aparença per defecte per al wiki, definit en <code dir=\"ltr\">$wgDefaultSkin</code> com <code>$1</code>, no està disponible.\n\nLa vostra instal·lació sembla que inclou les següents aparences. Consulteu [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Configuració d'aparences] per a la informació de com habilitar-les i triar-ne el valor per defecte.\n\n$2\n\n; Si heu acabat d'instal·lar MediaWiki:\n: Probablement l'instal·làveu des de git, o directament des del codi font utilitzant algun altre mètode. Això és l'esperat. Intenteu instal·lar algunes aparences des del [https://www.mediawiki.org/wiki/Category:All_skins directori d'aparences de mediawiki.org], per:\n: * Descarregar l'[https://www.mediawiki.org/wiki/Download instal·lador tarball], que ve amb diverses aparences i ampliacions. Podeu copiar i enganxar el directori <code>skins/</code> des d'aquí.\n: * Clonar un dels repositoris <code>mediawiki/skins/*</code> a través de git en el directori <code dir=\"ltr\">skins/</code> de la vostra instal·lació de MediaWiki.\n: Fent això no s'hauria d'interferir amb el vostre dipòsit git si sou un desenvolupador de MediaWiki.\n\n; Si només heu actualitzat MediaWiki:\n: Per MediaWiki 1.24 i posteriors ja no permet aparences instal·lades automàticament (consulteu [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Aparences autodiscovery]). Podeu enganxar les línies següents en <code>LocalSettings.php</code> per permetre totes les aparences instal·lades actualment:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Si només heu modificat <code>LocalSettings.php</code>:\n: Reviseu els noms de l'aparença per errors tipogràfics.",
index e92e416..c4acdf4 100644 (file)
        "grant-createaccount": "Декъашхочун дӀаяздарш кхоллар",
        "grant-createeditmovepage": "АгӀонашна хийцам бар",
        "grant-delete": "АгӀонаш а, нисдарш а, декъашхойн дӀаяздар а дӀадахар",
-       "grant-editinterface": "MediaWiki Ñ\86Ó\80еÑ\80ийн Ð°Ð½Ð° Ð°, Ð´Ð¾Ð»Ð°Ñ\80а CSS/JavaScript нисъяр",
+       "grant-editinterface": "MediaWiki Ñ\86Ó\80еÑ\80ийн Ð¼ÐµÑ\82Ñ\82иг Ð°, Ð´Ð¾Ð»Ð°Ñ\80а CSS/JavaScript Ð° нисъяр",
        "grant-editmycssjs": "Долара CSS/JavaScript нисъяр",
        "grant-editmyoptions": "Табе хьай гӀирс",
        "grant-editmywatchlist": "Хьан тергаме могӀам табар",
        "uploaddisabled": "Чуяккхар магийна дац",
        "copyuploaddisabled": "URL тӀера чуяккхар дӀадайина ду.",
        "uploaddisabledtext": "Файлаш чуяхар дӀадайина ду.",
-       "uploadscriptednamespace": "Ð¥Ó\80окÑ\85Ñ\83 SVG-Ñ\84айлан Ñ\86Ó\80еÑ\80ийн Ð°Ð½Ð° нийса яц '$1'",
+       "uploadscriptednamespace": "Ð¥Ó\80окÑ\85Ñ\83 SVG-Ñ\84айлан Ñ\86Ó\80еÑ\80ийн Ð¼ÐµÑ\82Ñ\82иг нийса яц '$1'",
        "upload-source": "ДIайолалун файл",
        "sourcefilename": "ДIайолалун файл:",
        "sourceurl": "Хьостан URL-адрес:",
        "allpagesfrom": "Гучé яха агӀонаш, йолалуш йолу оцу:",
        "allpagesto": "Араяхар сацадé тӀе:",
        "allarticles": "Массо агӀонаш",
-       "allinnamespace": "Массо агӀонаш оцу цӀерийн анахь «$1»",
+       "allinnamespace": "Массо агӀонаш «$1» цӀерийн меттигехь",
        "allpagessubmit": "Кхочушдé",
        "allpagesprefix": "Лаха агӀонаш, дӀайолалуш йолу:",
        "allpagesbadtitle": "Цамагош йолу агӀон цӀе. Коьрта могӀан юкъах ю юкъарвики меттанийн юкъе тӀечӀагӀйина йолу хьаьрк я магийна доцу оцу коьрта моӀанца символаш я кхин.",
-       "allpages-bad-ns": "{{SITENAME}} кху чохь ана цӀерш яц «$1».",
+       "allpages-bad-ns": "{{SITENAME}} кху чохь цӀерийн меттиг яц «$1».",
        "allpages-hide-redirects": "Къайлаяха дӀасахьажийнарш",
        "cachedspecial-viewing-cached-ttl": "Хьо хьоьжу агӀона верси кэш чура ю, иза карлаяьккхина хила мега $1 хьалха.",
        "cachedspecial-refresh-now": "Хьажа тӀехьарчу версега.",
        "listgrouprights-addgroup-all": "массо тобанийн юкъатоха йиш ю",
        "listgrouprights-removegroup-all": "тобан чура дӀабаха ло",
        "listgrouprights-namespaceprotection-header": "ЦӀеран анан бехкам",
-       "listgrouprights-namespaceprotection-namespace": "ЦÓ\80еÑ\80ийн Ð°Ð½Ð°",
+       "listgrouprights-namespaceprotection-namespace": "ЦÓ\80еÑ\80ийн Ð¼ÐµÑ\82Ñ\82иг",
        "listgrouprights-namespaceprotection-restrictedto": "Декъашхочун хийцамаш бан таро хуьлуьйту бакъонаш",
        "listgrants": "Бакъо",
        "listgrants-grant": "Бакъо",
        "protect-title": "Ларъяр: «$1»",
        "protect-title-notallowed": "ГӀораллин бараме хьажар «$1»",
        "prot_1movedto2": "«[[$1]]» цӀе хийцина → «[[$2]]»",
-       "protect-badnamespace-title": "Ð\93Ó\80оÑ\80аладан Ñ\86алÑ\83Ñ\88 Ð¹Ð¾Ð»Ñ\83 Ñ\86Ó\80еÑ\80ийн Ð°Ð½Ð°",
+       "protect-badnamespace-title": "Ð\9bаÑ\80Ñ\8aÑ\8fн Ñ\86алÑ\83Ñ\88 Ð¹Ð¾Ð»Ñ\83 Ñ\86Ó\80еÑ\80ийн Ð¼ÐµÑ\82Ñ\82иг",
        "protect-badnamespace-text": "ХӀокху цӀерийн меттигехь йолу агӀонашна гӀараладан цало.",
        "protect-norestrictiontypes-title": "ГӀараладан цалуш йолу агӀо",
        "protect-legend": "Бакъде агӀо ларъяр",
        "namespace": "ЦӀерийн меттигаш:",
        "invert": "Хаьржинарг къайлаяккха",
        "tooltip-invert": "ХӀоттае хӀара билгало, хаьржинчу цӀерийн анан агӀонийн хийцамаш къайлабаха (кхин дихкина цӀерийн анаш, гайтина елахь)",
-       "namespace_association": "Ð\99иÑ\85кина Ð°Ð½Ð°",
-       "tooltip-namespace_association": "Ð¥Ó\80оÑ\82Ñ\82ае Ñ\85Ó\80аÑ\80а Ð±Ð¸Ð»Ð³Ð°Ð»Ð¾, Ð¸Ñ\88Ñ\82Ñ\82а Ð´Ð¸Ð¹Ñ\86аÑ\80ийн (Ñ\8f ÐºÑ\85ин) Ñ\86Ó\80еÑ\80ийн Ð°Ð½Ð° юкъахь хилийта",
+       "namespace_association": "Ð\99иÑ\85кина Ð¼ÐµÑ\82Ñ\82иг",
+       "tooltip-namespace_association": "Ð¥Ó\80оÑ\82Ñ\82ае Ñ\85Ó\80аÑ\80а Ð±Ð¸Ð»Ð³Ð°Ð»Ð¾, Ð¸Ñ\88Ñ\82Ñ\82а Ð´Ð¸Ð¹Ñ\86аÑ\80ийн (Ñ\8f ÐºÑ\85ин) Ñ\86Ó\80еÑ\80ийн Ð¼ÐµÑ\82Ñ\82иг юкъахь хилийта",
        "blanknamespace": "(Коьрта)",
        "contributions": "{{GENDER:$1|Декъашхочун}} къинхьегам",
        "contributions-title": "{{GENDER:$1|Декъашхочун}} къинхьегам $1",
        "whatlinkshere-page": "АгӀо:",
        "linkshere": "ТӀаьхьайогӀу агӀонаш оцу '''[[:$1]]''': хьажоргца ю",
        "nolinkshere": "ХӀокху '''[[:$1]]''' агӀона тӀе кхечу агӀонашкахь хьажоргаш яц.",
-       "nolinkshere-ns": "ХаÑ\8cÑ\80жинÑ\87Ñ\83 Ð°Ð½Ð°хь яц '''[[:$1]]''' цӀе йолу агӀонаш",
+       "nolinkshere-ns": "ХаÑ\8cÑ\80жинÑ\87Ñ\83 Ð¼ÐµÑ\82Ñ\82игехь яц '''[[:$1]]''' цӀе йолу агӀонаш",
        "isredirect": "агӀо-дӀасахьажорг",
        "istemplate": "юкъаялийнарш",
        "isimage": "Файлан хьажорг",
index 928a791..80d65d6 100644 (file)
@@ -17,7 +17,8 @@
                        "Ebraminio",
                        "Macofe",
                        "Pirehelokan",
-                       "Diyariq"
+                       "Diyariq",
+                       "Sarchia"
                ]
        },
        "tog-underline": "ھێڵ ھێنان بەژێر بەستەرەکان:",
        "createacct-reason": "ھۆکار",
        "createacct-reason-ph": "بۆ ھەژمارێکی تر دروست دەکەی",
        "createacct-submit": "ھەژمارەکەت دروست بکە",
-       "createacct-another-submit": "ھەژمارێکی تر دروست بکە",
+       "createacct-another-submit": "ھەژمار دروست بکە",
        "createacct-benefit-heading": "{{SITENAME}} لە لایەن کەسانێک وەکوو خۆت دروست کراوە.",
        "createacct-benefit-body1": "{{PLURAL:$1|دەستکاری}}",
        "createacct-benefit-body2": "{{PLURAL:$1|پەڕە}}",
        "nocookieslogin": "{{SITENAME}} بۆ چوونەژوورەوە لە کووکی‌یەکان کەڵک وەرئەگرێت.\nڕێگەت نەداوە بە کووکی‌یەکان.\nڕێگەیان پێ بدەو و دیسان تێبکۆشە.",
        "nocookiesfornew": "ھەژماری بەکارھێنەری دروست نەکرا، چون ناتوانین سەرچاوەکەی پشتڕاست بکەینەوە.\nدڵنیا بە کوکییەکانت چالاک کردووە، پەڕەکە بار بکەوە و دیسان ھەوڵ بدە.",
        "noname": "ناوی بەکارهێنەرییەکی گۆنجاوت دیاری نەکردووه.",
-       "loginsuccesstitle": "سەرکەوتی بۆ چوونە ژوورەوە",
+       "loginsuccesstitle": "چوویە ناوەوە",
        "loginsuccess": "'''ئێستا بە ناوی «$1»ەوە لە {{SITENAME}} چوویتەتەژوورەوە.'''",
        "nosuchuser": "بەکارھێنەرێک بە ناوی «$1» نیە.\nناوی بەکارھێنەر بە گەورە و بچووک بوونی پیتەکان ھەستیارە.\nڕێنووسەکەت چاولێکەرەوە، یان [[Special:UserLogin/signup|ھەژمارێکی نوێ دروست بکە]].",
        "nosuchusershort": "بەکارھێنەرێک بە ناوی «$1»ەوە نیە.\nبە نووسراوەکەتدا بچۆرەوە.",
        "unwatchthispage": "ئیتر چاودێری مەکە",
        "notanarticle": "پەڕەی بێ ناوەڕۆک",
        "notvisiblerev": "پیاچوونەوە سڕاوەتەوە",
-       "watchlist-details": "{{PLURAL:$1|$1 پەڕە|$1 پەڕە}} لە لیستی چاودێریەکەتدایە، بێجگە پەڕەکانی لێدوان.",
+       "watchlist-details": "بێجگە لە پەڕەکانی لێدوان، {{PLURAL:$1|$1 پەڕە}} لە پێرستی {{PLURAL:$1|چاودێرییەکەتدایە|چاودێرییەکەتدان}}.",
        "wlheader-enotif": "ئاگاداری بە ئیمەیل چالاکە.",
        "wlheader-showupdated": "‏ئەو پەڕانە کە لە پاش دوایین سەردانت دەستکاری کراون بە <strong>ئەستوور</strong> نیشان دراون.",
        "wlnote": "خوارەوە {{PLURAL:$1|دوایین گۆڕانکارییە|دوایین <strong>$1</strong> گۆڕانکارییە}} لە دوایین {{PLURAL:$2|کاتژمێر|<strong>$2</strong> کاتژمێر}}دا ھەتا $4ی $3.",
index ab0092a..a6205df 100644 (file)
        "moredotdotdot": "Další…",
        "morenotlisted": "Tento seznam není úplný.",
        "mypage": "Stránka",
-       "anonuserpage": "Neznámý uživatel",
        "mytalk": "Diskuse",
        "anontalk": "Diskuse",
        "navigation": "Navigace",
        "recentchangeslinked-page": "Název stránky:",
        "recentchangeslinked-to": "Zobrazit změny na stránkách odkazujících na zadanou stránku",
        "recentchanges-page-added-to-category": "Stránka [[:$1]] zařazena do kategorie",
-       "recentchanges-page-added-to-category-bundled": "Stránka [[:$1]] a {{PLURAL:$2|jedna další zařazeny|$2 další zařazeny|$2 dalších zařazeno}} do kategorie",
+       "recentchanges-page-added-to-category-bundled": "Stránka [[:$1]] a [[Special:WhatLinksHere/$1|{{PLURAL:$2|jedna další zařazeny|$2 další zařazeny|$2 dalších zařazeno}}]] do kategorie",
        "recentchanges-page-removed-from-category": "Stránka [[:$1]] vyřazena z kategorie",
-       "recentchanges-page-removed-from-category-bundled": "Stránka [[:$1]] a {{PLURAL:$2|jedna další vyřazeny|$2 další vyřazeny|$2 dalších vyřazeno}} z kategorie",
+       "recentchanges-page-removed-from-category-bundled": "Stránka [[:$1]] a [[Special:WhatLinksHere/$1|{{PLURAL:$2|jedna další vyřazeny|$2 další vyřazeny|$2 dalších vyřazeno}}]] z kategorie",
        "autochange-username": "Automatická změna MediaWiki",
        "upload": "Načíst soubor",
        "uploadbtn": "Načíst soubor",
index 5a33125..d7f2c90 100644 (file)
        "editfont-style": "Schriftart für den Text im Bearbeitungsfenster:",
        "editfont-default": "Browserstandard",
        "editfont-monospace": "Schrift mit fester Zeichenbreite",
-       "editfont-sansserif": "Serifenlose Groteskschrift",
+       "editfont-sansserif": "Schrift ohne Serifen",
        "editfont-serif": "Schrift mit Serifen",
        "sunday": "Sonntag",
        "monday": "Montag",
        "moredotdotdot": "Mehr …",
        "morenotlisted": "Diese Liste ist nicht vollständig.",
        "mypage": "Eigene Seite",
-       "anonuserpage": "Unbekannter Benutzer",
        "mytalk": "Diskussion",
        "anontalk": "Diskussionsseite",
        "navigation": "Navigation",
        "resetpass-validity-soft": "Dein Passwort ist nicht gültig: $1\n\nBitte wähle jetzt ein neues Passwort oder klicke auf „{{int:resetpass-submit-cancel}}“, um es später zurückzusetzen.",
        "passwordreset": "Passwort zurücksetzen",
        "passwordreset-text-one": "Fülle dieses Formular aus, um ein temporäres Passwort per E-Mail zu erhalten.",
-       "passwordreset-text-many": "{{PLURAL:$1|Füll eines der Felder aus, um ein temporäres Passwort per E-Mail zugesandt zu bekommen.}}",
+       "passwordreset-text-many": "{{PLURAL:$1|Fülle eines der Felder aus, um ein temporäres Passwort per E-Mail zugesandt zu bekommen.}}",
        "passwordreset-disabled": "Das Zurücksetzen von Passwörtern wurde in diesem Wiki deaktiviert.",
        "passwordreset-emaildisabled": "Die E-Mail-Funktionen wurden auf diesem Wiki deaktiviert.",
        "passwordreset-username": "Benutzername:",
        "recentchangeslinked-page": "Seite:",
        "recentchangeslinked-to": "Zeige nur Änderungen an Seiten, die auf diese Seite verlinken",
        "recentchanges-page-added-to-category": "[[:$1]] zur Kategorie hinzugefügt",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] und {{PLURAL:$2|eine weitere Seite|$2 weitere Seiten}} zur Kategorie hinzugefügt",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] und [[Special:WhatLinksHere/$1|{{PLURAL:$2|eine weitere Seite|$2 weitere Seiten}}]] zur Kategorie hinzugefügt",
        "recentchanges-page-removed-from-category": "[[:$1]] von der Kategorie entfernt",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] und {{PLURAL:$2|eine weitere Seite|$2 weitere Seiten}} von der Kategorie entfernt",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] und [[Special:WhatLinksHere/$1|{{PLURAL:$2|eine weitere Seite|$2 weitere Seiten}}]] von der Kategorie entfernt",
        "autochange-username": "Automatische MediaWiki-Änderung",
        "upload": "Datei hochladen",
        "uploadbtn": "Datei hochladen",
index 4625c89..059ce8b 100644 (file)
        "newarticle": "(Newe)",
        "newarticletext": "To yew gıre tıkna be ra yew pela ke hewna çıniya.\nSeba afernayışê pele ra, qutiya metnê cêrêni bıgurene (seba melumati qaytê [$1 pela peşti] ke).\nEke be ğeletine ameya tiya, wa gocega <strong>peyser</strong>i programê xo de bıtıkne.",
        "anontalkpagetext": "----''No pel, pel o karbero hesab a nêkerdeyan o, ya zi karbero hesab akerdeyan o labele pê hesabê xo nêkewto de. No sebeb ra ma IP adres şuxulneni û ney IP adresan herkes eşkeno bıvino. Eke şıma qayil niye ina bo xo ri [[Special:UserLogin/signup|yew hesab bıvıraze]] veyaxut [[Special:UserLogin|hesab akere]].''",
-       "noarticletext": "Ena pele de hewna theba çıniyo.\nTı şenay zerreyê pelanê binan de [[Special:Search/{{PAGENAME}}|seba sernameyê ena pele cı geyre]],\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} qeydan miyan de cı geyre],\nya zi [{{fullurl:{{FULLPAGENAME}}|action=edit}} ena pele bıvurne]</span>.",
+       "noarticletext": "Ena pele de hewna theba çıniyo.\nTı şenay zerreyê pelanê binan de [[Special:Search/{{PAGENAME}}|seba sernameyê ena pele cı geyre]],\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} qeydan miyan de cı geyre],\nya zi [{{fullurl:{{FULLPAGENAME}}|action=edit}} ena pele vıraze]</span>.",
        "noarticletext-nopermission": "Ena pele de hewna theba çıniyo.\nTı şenay zerreyê pelanê binan de [[Special:Search/{{PAGENAME}}|seba sernameyê na pele cı geyre]], ya zi <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} qeydan miyan de cı geyre]</span>, ema destur çıniyo ke na pele vırazê.",
        "missing-revision": "Rewizyonê name dê pela da #$1 \"{{FULLPAGENAME}}\" dı çıniyo.\n\nNo normal de tarix dê pelanê besterneyan dı ena xırabin asena.\nDetayê besternayışi [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} tiya dı] aseno.",
        "userpage-userdoesnotexist": "Hesabê karberi \"<nowiki>$1</nowiki>\" qeyd nêbiyo.\nKerem ke, tı ke wazenay na pele bafernê/bıvurnê, qontrol ke.",
index 5b32b97..c405b38 100644 (file)
        "moredotdotdot": "More...",
        "morenotlisted": "This list is not complete.",
        "mypage": "Page",
-       "anonuserpage": "Unknown user",
        "mytalk": "Talk",
        "anontalk": "Talk",
        "navigation": "Navigation",
        "recentchangeslinked-page": "Page name:",
        "recentchangeslinked-to": "Show changes to pages linked to the given page instead",
        "recentchanges-page-added-to-category": "[[:$1]] added to category",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] and {{PLURAL:$2|one page|$2 pages}} added to category",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] and [[Special:WhatLinksHere/$1|{{PLURAL:$2|one page|$2 pages}}]] added to category",
        "recentchanges-page-removed-from-category": "[[:$1]] removed from category",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] and {{PLURAL:$2|one page|$2 pages}} removed from category",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] and [[Special:WhatLinksHere/$1|{{PLURAL:$2|one page|$2 pages}}]] removed from category",
        "autochange-username": "MediaWiki automatic change",
        "upload": "Upload file",
        "uploadbtn": "Upload file",
        "uploadstash-badtoken": "Performing that action failed. Perhaps because your editing credentials expired. Please try again.",
        "uploadstash-errclear": "Clearing the files failed.",
        "uploadstash-refresh": "Refresh the list of files",
+       "uploadstash-thumbnail": "view thumbnail",
        "invalid-chunk-offset": "Invalid chunk offset",
        "img-auth-accessdenied": "Access denied",
        "img-auth-nopathinfo": "Missing PATH_INFO.\nYour server is not set up to pass this information.\nIt may be CGI-based and cannot support img_auth.\nSee https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
index 57a3405..8e163a7 100644 (file)
        "october-gen": "oktobro",
        "november-gen": "novembro",
        "december-gen": "decembro",
-       "jan": "Jan",
-       "feb": "Feb",
-       "mar": "Mar",
-       "apr": "Apr",
-       "may": "Maj",
-       "jun": "Jun",
-       "jul": "Jul",
-       "aug": "Aŭg",
-       "sep": "Sep",
-       "oct": "Okt",
-       "nov": "Nov",
-       "dec": "Dec",
+       "jan": "jan",
+       "feb": "feb",
+       "mar": "mar",
+       "apr": "apr",
+       "may": "maj",
+       "jun": "jun",
+       "jul": "jul",
+       "aug": "aŭg",
+       "sep": "sep",
+       "oct": "okt",
+       "nov": "nov",
+       "dec": "dec",
        "january-date": "$1-a de januaro",
        "february-date": "$1-a de februaro",
        "march-date": "$1-a de marto",
        "search": "Serĉi",
        "searchbutton": "Serĉi",
        "go": "Ek!",
-       "searcharticle": "Ek!",
+       "searcharticle": "Ek",
        "history": "Historio de versioj",
        "history_short": "Historio",
        "updatedmarker": "ĝisdatigita de post mia lasta vizito",
        "unprotectthispage": "Ŝanĝi protektadon de ĉi tiu paĝo",
        "newpage": "Nova paĝo",
        "talkpage": "Diskuti la paĝon",
-       "talkpagelinktext": "Diskuto",
+       "talkpagelinktext": "diskuto",
        "specialpage": "Speciala Paĝo",
        "personaltools": "Personaj iloj",
        "articlepage": "Rigardi artikolon",
        "copyrightpage": "{{ns:project}}:Aŭtorrajto",
        "currentevents": "Aktualaĵoj",
        "currentevents-url": "Project:Aktualaĵoj",
-       "disclaimers": "Malgarantio",
+       "disclaimers": "Malgarantioj",
        "disclaimerpage": "Project:Malgarantia paĝo",
        "edithelp": "Helpo pri redaktado",
        "helppage-top-gethelp": "Helpo",
        "userlogin-joinproject": "Aliĝu al {{SITENAME}}",
        "nologin": "Ĉu vi ne havas konton? $1.",
        "nologinlink": "Krei konton",
-       "createaccount": "Krei novan konton",
+       "createaccount": "Krei konton",
        "gotaccount": "Ĉu vi jam havas konton? '''$1'''.",
        "gotaccountlink": "Ensaluti",
        "userlogin-resetlink": "Ĉu vi forgesis ensalutajn detalojn?",
        "nocookieslogin": "{{SITENAME}} uzas kuketojn por akcepti uzantojn. Kuketoj esta malaktivigitaj ĉe vi. Bonvolu aktivigi ilin kaj provu denove.",
        "nocookiesfornew": "La uzantokonto ne estis kreita, ĉar ne konfirmeblas ĝia fonto. Certiginte ke kuketoj estas ebligitaj, reŝargu tiun ĉi paĝon kaj reprovu.",
        "noname": "Vi ne tajpis validan salutnomon.",
-       "loginsuccesstitle": "Ensalutado sukcesis",
+       "loginsuccesstitle": "Ensalutis",
        "loginsuccess": "Vi ensalutis ĉe {{SITENAME}} kiel uzanto \"$1\".",
        "nosuchuser": "Neniu uzanto havas nomon \"$1\".\nNomoj por uzantoj estas usklecodistingaj.\nKontrolu vian literumadon, aŭ [[Special:UserLogin/signup|kreu novan konton]].",
        "nosuchusershort": "Ne ekzistas uzanto kun la nomo \"$1\". Bonvolu kontroli vian ortografion.",
        "createacct-another-realname-tip": "La vera nomo estas nenecesa.\nSe vi decidas indiki ĝin, ĝi estos uzata por montri atribuadon de viaj kontribuoj.",
        "pt-login": "Ensaluti",
        "pt-login-button": "Ensaluti",
-       "pt-createaccount": "Krei novan konton",
+       "pt-createaccount": "Krei konton",
        "pt-userlogout": "Elsaluti",
        "php-mail-error-unknown": "Nekonata eraro en la funkcio mail() de PHP",
        "user-mail-no-addy": "Provis sendi retpoŝton sen retpoŝtadreso.",
        "mergehistory-empty": "Neniuj versioj estas kunigeblaj.",
        "mergehistory-done": "$3 {{PLURAL:$3|versio|versioj}} de $1 sukcese estis {{PLURAL:$3|kunigita|kunigitaj}} en [[:$2]].",
        "mergehistory-fail": "Ne povis fari la historian kunigon; bonvolu konstati la paĝajn kaj tempajn parametrojn.",
+       "mergehistory-fail-invalid-source": "Fonta paĝo estas malvalida.",
        "mergehistory-fail-toobig": "Ne eblas kunigi historiojn ĉar pli ol sojlo de $1 {{PLURAL:$1|revizio|revizioj}} estus {{PLURAL:$1|movita|movitaj}}.",
        "mergehistory-no-source": "Fontpaĝo $1 ne ekzistas.",
        "mergehistory-no-destination": "Celpaĝo $1 ne ekzistas.",
        "right-managechangetags": "Kreado kaj forigado de [[Special:Tags|etikedoj]] de datumbazo",
        "right-applychangetags": "Aldoni [[Special:Tags|etikedojn]] al propraj ŝanĝoj",
        "right-changetags": "Aldoni kaj forigi arbitrajn [[Special:Tags|etikedojn]] ĉe unuopaj revizioj kaj protokoleroj",
+       "grant-group-email": "Sendi retpoŝton",
+       "grant-createaccount": "Krei kontojn",
        "newuserlogpage": "Protokolo de uzanto-kreado",
        "newuserlogpagetext": "Jen protokolo de lastaj kreadoj de uzantoj.",
        "rightslog": "Protokolo de uzanto-rajtoj",
        "filehist-deleteone": "forigi",
        "filehist-revert": "restarigi",
        "filehist-current": "nuna",
-       "filehist-datetime": "Dato/Tempo",
+       "filehist-datetime": "Dato/tempo",
        "filehist-thumb": "Bildeto",
        "filehist-thumbtext": "Bildeto por versio ekde $1",
        "filehist-nothumb": "Neniu bildeto",
        "apisandbox-intro": "Uzu tiun ĉi paĝon por eksperimenti kun '''MediaWiki API'''.\nVidu [//www.mediawiki.org/wiki/API:Main_page la API-dokumentadon] por pli da detaloj pri la uzo de API. Ekz-e: [//www.mediawiki.org/wiki/API#A_simple_example atingi la enhavon de la Ĉefpaĝo]. Elektu agon por vidi pliajn ekzemplojn.\n\nNotu ke, kvankam ĉi tiu estas provejo, agoj kiun vi faros en ĉi tiu paĝo povas modifi la vikion.",
        "apisandbox-submit": "Fari mendon",
        "apisandbox-reset": "Nuligi",
-       "apisandbox-examples": "Ekzemplo",
-       "apisandbox-results": "Rezulto",
+       "apisandbox-examples": "Ekzemploj",
+       "apisandbox-dynamic-parameters": "Aldonaj parametroj",
+       "apisandbox-dynamic-parameters-add-label": "Aldoni parametron:",
+       "apisandbox-dynamic-parameters-add-placeholder": "Nomo de parametro",
+       "apisandbox-dynamic-error-exists": "Parametro nomata \"$1\" jam ekzistas.",
+       "apisandbox-results": "Rezultoj",
        "apisandbox-request-url-label": "Mendi URL-on.",
        "apisandbox-request-time": "Tempo de peto: $1",
-       "booksources": "Libroservoj",
+       "booksources": "Librofontoj",
        "booksources-search-legend": "Serĉi librofontojn",
        "booksources-search": "Serĉi",
        "booksources-text": "Jen ligilaro al aliaj TTT-ejoj, kiuj vendas librojn,\nkaj/aŭ informumos pri la libro ligita.\nLa {{SITENAME}} ne estas komerce ligita al tiuj vendejoj, kaj la listo ne estu\nkomprenata kiel rekomendo aŭ reklamo.",
        "log-title-wildcard": "Serĉi titolojn komencantajn kun ĉi tiu teksto",
        "showhideselectedlogentries": "Montri/kaŝi elektitajn protokolerojn",
        "log-edit-tags": "Redakti etikedojn ĉe elektitaj protokoleroj",
+       "checkbox-select": "Elektu: $1",
+       "checkbox-all": "Ĉiuj",
+       "checkbox-none": "Neniu",
+       "checkbox-invert": "Inversigi",
        "allpages": "Ĉiuj paĝoj",
        "nextpage": "Sekvanta paĝo ($1)",
        "prevpage": "Antaŭa paĝo ($1)",
        "sessionfailure": "Ŝajnas, ke estas problemo kun via ensalutado;\nĈi ago estis nuligita por malhelpi fiensalutadon.\nBonvolu alklaki la reirbutonon kaj reŝargi la paĝon el kiu vi venas, kaj provu denove.",
        "changecontentmodel-title-label": "Titolo de paĝo",
        "changecontentmodel-reason-label": "Kialo:",
+       "changecontentmodel-submit": "Ŝanĝi",
        "logentry-contentmodel-change-revertlink": "restarigi",
        "logentry-contentmodel-change-revert": "restarigi",
        "protectlogpage": "Protokolo pri protektoj",
        "tooltip-t-contributions": "Listo de kontribuoj de {{GENDER:$1|ĉi tiu uzanto}}",
        "tooltip-t-emailuser": "Sendi retmesaĝon al tiu ĉi uzanto",
        "tooltip-t-info": "Pli da informo pri ĉi tiu paĝo",
-       "tooltip-t-upload": "Alŝuti bildojn aŭ dosierojn",
+       "tooltip-t-upload": "Alŝuti dosierojn",
        "tooltip-t-specialpages": "Listo de ĉiuj specialaj paĝoj",
        "tooltip-t-print": "Printebla versio de ĉi tiu paĝo",
        "tooltip-t-permalink": "Konstanta ligilo al ĉi versio de la paĝo",
index ba5efa0..d84ac8c 100644 (file)
        "moredotdotdot": "Más...",
        "morenotlisted": "Esta lista no está completa.",
        "mypage": "Página",
-       "anonuserpage": "Usuario desconocido",
        "mytalk": "Discusión",
        "anontalk": "Discusión",
        "navigation": "Navegación",
        "previewnote": "<strong>Recuerda que esto no es más que una previsualización.</strong>\nAún no se han guardado tus cambios.",
        "continue-editing": "Ir al área de edición",
        "previewconflict": "Esta previsualización muestra cómo aparecerá el texto en el área de edición superior una vez guardados los cambios.",
-       "session_fail_preview": "<strong>Lo sentimos, no hemos podido procesar tu edición debido a una pérdida de los datos de sesión.</strong>\nPor favor, inténtalo de nuevo.\nSi el problema persiste, prueba a [[Special:UserLogout|cerrar sesión]] y volver a acceder.",
+       "session_fail_preview": "Lo sentimos, no hemos podido procesar tu edición debido a una pérdida de los datos de sesión.\n\nPuede que se haya cerrado tu sesión. <strong> Verifica que hayas accedido e inténtalo de nuevo</strong>.\nSi el problema persiste, prueba a [[Special:UserLogout|cerrar sesión]] y volver a acceder. Y verifica que tu navegador permita las cookies de este sitio.",
        "session_fail_preview_html": "Lo sentimos, no hemos podido procesar tu edición debido a una pérdida de datos de sesión.\n\n<em>La previsualización está oculta como prevención frente a ataques JavaScript, puesto que este wiki tiene habilitado el HTML en bruto.</em>\n\n<strong>Si se trata de un intento legítimo de modificación, inténtalo de nuevo.</strong>\nSi aún así no funcionase, prueba a [[Special:UserLogout|cerrar sesión]] y volver a acceder, y verifica que tu navegador acepte cookies de este sitio.",
        "token_suffix_mismatch": "<strong>Tu edición ha sido rechazada porque tu cliente ha mezclado los signos de puntuación en la clave de edición.</strong>\nSe rechazó la edición para evitar la corrupción del texto de la página.\nEsto sucede en ocasiones si se usa un servicio de proxy anónimo defectuoso.",
        "edit_form_incomplete": "<strong>Una parte del formulario de edición no ha llegado al servidor. Comprueba que tus cambios están intactos e inténtalo de nuevo.</strong>",
        "right-managechangetags": "Crear y eliminar [[Special:Tags|etiquetas]] en la base de datos",
        "right-applychangetags": "Aplicar [[Special:Tags|etiquetas]] junto con los cambios propios",
        "right-changetags": "Agregar y quitar [[Special:Tags|etiquetas]] arbitrarias a revisiones individuales y entradas del registro",
-       "grant-generic": "Paquete de derechos \"$1\"",
+       "grant-generic": "Paquete de permisos \"$1\"",
        "grant-group-page-interaction": "Interactuar con páginas",
        "grant-group-file-interaction": "Interactuar con multimedia",
        "grant-group-watchlist-interaction": "Interactuar con tu lista de seguimiento",
        "apisandbox-submit": "Realizar solicitud",
        "apisandbox-reset": "Limpiar",
        "apisandbox-retry": "Reintentar",
+       "apisandbox-loading": "Cargando la información para el módulo API \"$1\"...",
+       "apisandbox-load-error": "Ocurrió un error al cargar la información para el módulo API \"$1\": $2",
        "apisandbox-no-parameters": "Este módulo API no tiene parámetros.",
        "apisandbox-helpurls": "Enlaces de ayuda",
        "apisandbox-examples": "Ejemplos",
        "apisandbox-dynamic-parameters": "Parámetros adicionales",
        "apisandbox-dynamic-parameters-add-label": "Añadir parámetro:",
        "apisandbox-dynamic-parameters-add-placeholder": "Nombre del parámetro",
+       "apisandbox-dynamic-error-exists": "Ya existe un parámetro llamado \"$1\".",
        "apisandbox-deprecated-parameters": "Parámetros desaconsejados",
        "apisandbox-submit-invalid-fields-title": "Algunos campos no son válidos",
        "apisandbox-submit-invalid-fields-message": "Por favor, corrige los campos señalados e inténtalo de nuevo.",
index 6b1e3e0..cf13d37 100644 (file)
        "moredotdotdot": "بیشتر...",
        "morenotlisted": "این فهرست کامل نیست.",
        "mypage": "صفحه",
-       "anonuserpage": "کاربر ناشناس",
        "mytalk": "بحث",
        "anontalk": "بحث",
        "navigation": "ناوبری",
index d8a5729..126c430 100644 (file)
        "nocookieslogin": "{{SITENAME}} käyttää evästeitä sisäänkirjautumisen yhteydessä. Selaimesi ei salli evästeitä. Ota ne käyttöön, ja yritä uudelleen.",
        "nocookiesfornew": "Käyttäjätunnusta ei luotu, koska sen lähdettä ei kyetty varmistamaan. Varmista, että selaimessasi on käytössä evästeet, päivitä tämä sivu ja yritä uudelleen.",
        "noname": "Et ole määritellyt kelvollista käyttäjänimeä.",
-       "loginsuccesstitle": "Sisäänkirjautuminen onnistui",
+       "loginsuccesstitle": "Olet kirjautunut sisään",
        "loginsuccess": "'''Olet kirjautunut sivustolle {{SITENAME}} käyttäjänä $1.'''",
        "nosuchuser": "Käyttäjää ”$1” ei ole olemassa. Nimet ovat kirjainkoosta riippuvaisia. Tarkista kirjoititko nimen oikein, tai [[Special:UserLogin/signup|luo uusi käyttäjätunnus]].",
        "nosuchusershort": "Käyttäjää nimeltä ”$1” ei ole. Kirjoititko nimen oikein?",
        "newpassword": "Uusi salasana:",
        "retypenew": "Uusi salasana uudelleen:",
        "resetpass_submit": "Aseta salasana ja kirjaudu sisään",
-       "changepassword-success": "Salasanan vaihto onnistui.",
+       "changepassword-success": "Salasanasi on vaihdettu!",
        "changepassword-throttled": "Olet tehnyt liian monta äskettäistä kirjautumisyritystä.\nOdota $1 ennen kuin yrität uudelleen.",
        "botpasswords": "Botin salasanat",
        "botpasswords-disabled": "Botin salasanat on poistettu käytöstä.",
+       "botpasswords-label-appid": "Botin nimi:",
        "botpasswords-label-create": "Luo",
        "botpasswords-label-update": "Päivitä",
        "botpasswords-label-cancel": "Peru",
        "botpasswords-label-delete": "Poista",
        "botpasswords-label-resetpassword": "Uudista salasana",
        "botpasswords-label-grants": "Valittavissa olevat toimintaoikeudet:",
+       "botpasswords-label-restrictions": "Käytön rajoitukset:",
        "resetpass_forbidden": "Salasanoja ei voi vaihtaa.",
        "resetpass-no-info": "Et voi nähdä tätä sivua kirjautumatta sisään.",
        "resetpass-submit-loggedin": "Muuta salasana",
        "delete-toobig": "Tällä sivulla on pitkä muokkaushistoria, yli $1 {{PLURAL:$1|versio|versiota}}. \nTämänkaltaisten sivujen poistamista on rajoitettu. Tällä ehkäistään sivuston {{SITENAME}} vaurioitumista tahattomasti.",
        "delete-warning-toobig": "Tällä sivulla on pitkä muutoshistoria – yli $1 {{PLURAL:$1|versio|versiota}}. Näin suurien muutoshistorioiden poistaminen voi haitata sivuston suorituskykyä.",
        "deleteprotected": "Et voi poistaa tätä sivua, koska se on suojattu.",
-       "deleting-backlinks-warning": "'''Varoitus:''' Sivulle, jota olet poistamassa, johtaa [[Special:WhatLinksHere/{{FULLPAGENAME}}|linkkejä muilta sivuilta]], tai sivu on sisällytetty muuhun sivuun.",
+       "deleting-backlinks-warning": "<strong>Varoitus:</strong> Sivulle, jota olet poistamassa, johtaa [[Special:WhatLinksHere/{{FULLPAGENAME}}|linkkejä muilta sivuilta]], taikka sivu on sisällytetty muuhun sivuun.",
        "rollback": "palauta aiempaan versioon",
        "rollbacklink": "palauta",
        "rollbacklinkcount": "palauta $1 {{PLURAL:$1|muutos|muutosta}}",
        "changecontentmodel-title-label": "Sivun otsikko",
        "changecontentmodel-model-label": "Uusi sisältömalli",
        "changecontentmodel-reason-label": "Syy:",
+       "changecontentmodel-submit": "Tee muutos",
        "changecontentmodel-success-title": "Sisältömallia on muutettu",
        "changecontentmodel-success-text": "Sisältötyyppiä kohteessa [[:$1]] on muutettu.",
        "changecontentmodel-cannot-convert": "Sisältöä sivulla [[:$1]] ei voida muuntaa tyypiksi $2.",
        "changecontentmodel-nodirectediting": "Sisältömalli $1 ei tue suoraa muokkaamista",
        "log-name-contentmodel": "Sisältömallin muutosloki",
        "log-description-contentmodel": "Tapahtumat, jotka liittyvät sivun sisältömalleihin",
+       "logentry-contentmodel-new": "$1 {{GENDER:$2|loi}} sivun $3 käyttäen normaalista poikkeavaa sisältömallia \"$5\"",
        "logentry-contentmodel-change": "$1 {{GENDER:$2|muutti}} sivun $3 sisältömallia muodosta \"$4\" muotoon \"$5\"",
        "logentry-contentmodel-change-revertlink": "kumoa",
        "logentry-contentmodel-change-revert": "kumottu",
        "patrol-log-page": "Muutostentarkastusloki",
        "patrol-log-header": "Tämä on loki tarkastetuista muutoksista.",
        "log-show-hide-patrol": "$1 muutostentarkastusloki",
-       "log-show-hide-tag": "$1 merkkausten loki",
+       "log-show-hide-tag": "$1 merkkausloki",
        "deletedrevision": "Poistettiin vanha versio $1",
        "filedeleteerror-short": "Tiedoston $1 poistaminen epäonnistui",
        "filedeleteerror-long": "Tiedoston poistaminen epäonnistui:\n\n$1",
        "tags-delete-not-allowed": "Sellaisia merkkauksia, jotka tulevat erityisestä ohjelmistolaajennuksesta, ei voi poistaa ennen kuin tämä laajennus erityisesti sallii sen.",
        "tags-delete-not-found": "Merkkausta \"$1\" ei ole olemassa.",
        "tags-delete-too-many-uses": "Tämä merkkaus \"$1\" on käytössä useammassa kuin $2 sivuversiossa, joten sitä ei voi poistaa.",
-       "tags-delete-warnings-after-delete": "Merkkaus \"$1\" poistettiin onnistuneesta, mutta {{PLURAL:$2|seuraava varoitus|seuraavat varoitukset}} ilmeni samalla:",
+       "tags-delete-warnings-after-delete": "Merkkaus \"$1\" poistettiin, mutta toimenpide sai aikaan {{PLURAL:$2|seuraavan varoituksen|seuraavat varoitukset}}:",
        "tags-activate-title": "Aktivoi merkkaus",
        "tags-activate-question": "Olet nyt aktivoimassa merkkausta \"$1\".",
        "tags-activate-reason": "Syy:",
        "tags-edit-reason": "Syy:",
        "tags-edit-revision-submit": "Toteuta muutokset {{PLURAL:$1|tähän versioon|$1 versioon}}",
        "tags-edit-logentry-submit": "Lähetä muutoksesi {{PLURAL:$1|tähän lokimerkintään|$1 lokimerkintään}}",
-       "tags-edit-success": "Muutokset on onnistuneesti toteutettu.",
+       "tags-edit-success": "Muutokset on tehty.",
        "tags-edit-failure": "Muutoksia ei voitu toteuttaa: $1",
        "tags-edit-nooldid-title": "Kohdeversio ei ole kelvollinen",
        "tags-edit-nooldid-text": "Et ole joko määrittänyt sitä kohdeversiota, johon tämä toimenpide kohdistuu, tai sitten määrättyä versiota ei ole olemassa.",
index cd0cfd0..bcea637 100644 (file)
                        "Fredlefred",
                        "Lbayle",
                        "Cl3m3n7",
-                       "C13m3n7"
+                       "C13m3n7",
+                       "Gnangbade"
                ]
        },
        "tog-underline": "Soulignement des liens :",
        "moredotdotdot": "Plus...",
        "morenotlisted": "Cette liste n’est pas complète.",
        "mypage": "Page",
-       "anonuserpage": "Utilisateur inconnu",
        "mytalk": "Discussion",
        "anontalk": "Discussion",
        "navigation": "Navigation",
        "recentchangeslinked-page": "Nom de la page :",
        "recentchangeslinked-to": "Afficher les modifications des pages qui comportent un lien vers la page donnée plutôt que l'inverse",
        "recentchanges-page-added-to-category": "[[:$1]] ajouté à la catégorie",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] et {{PLURAL:$2|une page ajoutée|$2 pages ajoutées}} à la catégorie",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] et [[Special:WhatLinksHere/$1|{{PLURAL:$2|une page ajoutée|$2 pages ajoutées}}]] à la catégorie",
        "recentchanges-page-removed-from-category": "[[:$1]] supprimé de la catégorie",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] et {{PLURAL:$2|une page retirée|$2 pages retirées}} de la catégorie",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] et [[Special:WhatLinksHere/$1|{{PLURAL:$2|une page|$2 pages}}]] {{PLURAL:$2|retirée|retirées}} de la catégorie",
        "autochange-username": "Modification automatique de MédiaWiki",
        "upload": "Importer un fichier",
        "uploadbtn": "Importer le fichier",
        "upload-foreign-cant-upload": "Ce wiki n’est pas configuré pour télécharger des fichiers vers le dépôt de fichiers externe demandé.",
        "upload-dialog-title": "Téléverser un fichier",
        "upload-dialog-button-cancel": "Annuler",
-       "upload-dialog-button-done": "Fait",
+       "upload-dialog-button-done": "Terminé",
        "upload-dialog-button-save": "Enregistrer",
        "upload-dialog-button-upload": "Téléverser",
        "upload-form-label-infoform-title": "Détails",
        "feedback-bugnew": "J'ai vérifié. Signaler un nouveau bogue",
        "feedback-bugornote": "Si vous êtes prêt à décrire un problème technique en détail, veuillez [$1 signaler un bogue].\nSinon, vous pouvez utiliser le formulaire simplifié ci-dessous. Votre commentaire sera ajouté à la page « [$3 $2] », avec votre nom d'utilisateur.",
        "feedback-cancel": "Annuler",
-       "feedback-close": "Fait",
+       "feedback-close": "Terminé",
        "feedback-external-bug-report-button": "Signaler un bogue technique",
        "feedback-dialog-title": "Soumettre un commentaire",
        "feedback-dialog-intro": "Vous pouvez utiliser le simple formulaire ci-dessous pour faire parvenir vos commentaires. Votre commentaire sera ajouté à la page « $1 », ainsi que votre nom d’utilisateur.",
index 4ec0544..f58c6f2 100644 (file)
        "moredotdotdot": "Més...",
        "morenotlisted": "Cela lista est pas complèta.",
        "mypage": "Pâge",
-       "anonuserpage": "Utilisator encognu",
        "mytalk": "Discussion",
        "anontalk": "Discussion",
        "navigation": "Navegacion",
        "pageinfo-article-id": "Identifient de la pâge",
        "pageinfo-language": "Lengoua du contegnu de la pâge",
        "pageinfo-content-model": "Modèlo de contegnu de la pâge",
-       "pageinfo-robot-policy": "Statut de motor de rechèrche",
-       "pageinfo-robot-index": "Endèxâblo",
-       "pageinfo-robot-noindex": "Pas endèxâblo",
-       "pageinfo-watchers": "Nombro de contributors qu’ont la pâge dedens lor lista de survelyence",
-       "pageinfo-redirects-name": "Redirèccions de vers ceta pâge",
-       "pageinfo-subpages-name": "Sot-pâges de ceta pâge",
+       "pageinfo-robot-policy": "Endèxacion per robots",
+       "pageinfo-robot-index": "Ôtorisâye",
+       "pageinfo-robot-noindex": "Dèfendua",
+       "pageinfo-watchers": "Nombro d’obsèrvators de la pâge",
+       "pageinfo-visiting-watchers": "Nombro d’obsèrvators de la pâge qu’ant vesitâ los dèrriérs changements",
+       "pageinfo-few-watchers": "Muens de $1 obsèrvator{{PLURAL:$1||s}}",
+       "pageinfo-few-visiting-watchers": "Y pôt ou ben pas avêr un obsèrvator que vesite los dèrriérs changements",
+       "pageinfo-redirects-name": "Nombro de redirèccions de vers cela pâge",
+       "pageinfo-subpages-name": "Nombro de sot-pâges de cela pâge",
        "pageinfo-subpages-value": "$1 ($2 redirèccion{{PLURAL:$2||s}} ; $3 nan-redirèccion{{PLURAL:$3||s}})",
        "pageinfo-firstuser": "Crèator de la pâge",
        "pageinfo-firsttime": "Dâta de crèacion de la pâge",
        "pageinfo-lasttime": "Dâta du dèrriér changement",
        "pageinfo-edits": "Soma totâla de changements",
        "pageinfo-authors": "Soma totâla d’ôtors difèrents",
-       "pageinfo-recent-edits": "Nombro de novéls changements (dedens los $1 passâs)",
+       "pageinfo-recent-edits": "Nombro de novéls changements (dens los $1 passâs)",
        "pageinfo-recent-authors": "Nombro de novéls ôtors difèrents",
        "pageinfo-magic-words": "{{PLURAL:$1|Mot magico|Mots magicos}} ($1)",
-       "pageinfo-hidden-categories": "{{PLURAL:$1|Catègorie cachiêye|Catègories cachiêyes}} ($1)",
-       "pageinfo-templates": "{{PLURAL:$1|Modèlo encllu|Modèlos encllus}} ($1)",
-       "pageinfo-toolboxlink": "Enformacions dessus la pâge",
+       "pageinfo-hidden-categories": "{{PLURAL:$1|Catègoria cachiêe|Catègories cachiêes}} ($1)",
+       "pageinfo-templates": "{{PLURAL:$1|Modèlo transcllu|Modèlos transcllus}} ($1)",
+       "pageinfo-transclusions": "Pâge{{PLURAL:$1||s}} yô qu’el est transcllua ($1)",
+       "pageinfo-toolboxlink": "Enformacions sur la pâge",
        "pageinfo-redirectsto": "Redirige vers",
        "pageinfo-redirectsto-info": "enfô",
        "pageinfo-contentpage": "Comptâ coment pâge de contegnu",
        "pageinfo-contentpage-yes": "Ouè",
+       "pageinfo-protect-cascading": "Les protèccions sont en cascâda dês ique",
        "pageinfo-protect-cascading-yes": "Ouè",
-       "markaspatrolleddiff": "Marcar coment survelyê",
-       "markaspatrolledtext": "Marcar ceta pâge coment survelyê",
-       "markedaspatrolled": "Marcâye coment survelyêye",
-       "markedaspatrolledtext": "La vèrsion chouèsia de [[:$1]] est étâye marcâye coment survelyêye.",
-       "rcpatroldisabled": "La fonccion de survelyence des dèrriérs changements est pas activâ.",
-       "rcpatroldisabledtext": "La fonccionalitât de survelyence des dèrriérs changements est pas activâ.",
-       "markedaspatrollederror": "Pôt pas étre marcâye coment survelyêye",
-       "markedaspatrollederrortext": "Vos dête chouèsir una vèrsion por la povêr marcar coment survelyê.",
-       "markedaspatrollederror-noautopatrol": "Vos avéd pas lo drêt de marcar voutros prôpros changements coment survelyês.",
-       "patrol-log-page": "Jornal de les vèrsions survelyês",
-       "patrol-log-header": "Vê-que un jornal de les vèrsions survelyês.",
-       "log-show-hide-patrol": "$1 lo jornal de les vèrsions survelyês",
+       "pageinfo-protect-cascading-from": "Les protèccions sont en cascâda dês",
+       "pageinfo-category-info": "Enformacions sur la catègoria",
+       "pageinfo-category-total": "Soma totâla de membros",
+       "pageinfo-category-pages": "Nombro de pâges",
+       "pageinfo-category-subcats": "Nombro de sot-catègories",
+       "pageinfo-category-files": "Nombro de fichiérs",
+       "markaspatrolleddiff": "Marcar coment gouardâ",
+       "markaspatrolledtext": "Marcar cela pâge coment gouardâye",
+       "markaspatrolledtext-file": "Marcar cela vèrsion de fichiér coment gouardâye",
+       "markedaspatrolled": "Marcâ coment gouardâ",
+       "markedaspatrolledtext": "La vèrsion chouèsia de [[:$1]] est étâye marcâye coment gouardâye.",
+       "rcpatroldisabled": "La gouârda des dèrriérs changements est dèsactivâye",
+       "rcpatroldisabledtext": "Ora la fonccionalitât de gouârda des dèrriérs changements est dèsactivâye.",
+       "markedaspatrollederror": "Pôt pas étre marcâ coment gouardâ",
+       "markedaspatrollederrortext": "Vos dête spècifiar na vèrsion por la povêr marcar coment gouardâye.",
+       "markedaspatrollederror-noautopatrol": "Vos éd pas lo drêt de marcar los voutros changements coment gouardâs.",
+       "markedaspatrollednotify": "Cél changement de $1 est étâ marcâ coment gouardâ.",
+       "markedaspatrollederrornotify": "Falyita du marcâjo du changement coment gouardâ.",
+       "patrol-log-page": "Jornâl de gouârda",
+       "patrol-log-header": "Vê-que un jornâl de les vèrsions gouardâyes.",
+       "log-show-hide-patrol": "$1 lo jornâl de gouârda",
        "deletedrevision": "La vielye vèrsion $1 at étâ suprimâ.",
        "filedeleteerror-short": "Èrror pendent la suprèssion du fichiér : $1",
        "filedeleteerror-long": "Des èrrors ont étâ rencontrâs pendent la suprèssion du fichiér :\n\n$1",
index ddd17dd..2a211ef 100644 (file)
        "moredotdotdot": "Máis...",
        "morenotlisted": "Esta lista non está completa.",
        "mypage": "Páxina",
-       "anonuserpage": "Usuario descoñecido",
        "mytalk": "Conversa",
        "anontalk": "Conversa",
        "navigation": "Navegación",
        "recentchangeslinked-page": "Nome da páxina:",
        "recentchangeslinked-to": "Mostrar os cambios relacionados das páxinas que ligan coa dada",
        "recentchanges-page-added-to-category": "\"[[:$1]]\" engadiuse á categoría",
-       "recentchanges-page-added-to-category-bundled": "\"[[:$1]]\" e {{PLURAL:$2|unha páxina|$2 páxinas}} engadíronse á categoría",
+       "recentchanges-page-added-to-category-bundled": "\"[[:$1]]\" e [[Special:WhatLinksHere/$1|{{PLURAL:$2|unha páxina|$2 páxinas}}]] engadíronse á categoría",
        "recentchanges-page-removed-from-category": "\"[[:$1]]\" eliminouse da categoría",
-       "recentchanges-page-removed-from-category-bundled": "\"[[:$1]]\" e {{PLURAL:$2|unha páxina|$2 páxinas}} elimináronse da categoría",
+       "recentchanges-page-removed-from-category-bundled": "\"[[:$1]]\" e [[Special:WhatLinksHere/$1|{{PLURAL:$2|unha páxina|$2 páxinas}}]] elimináronse da categoría",
        "autochange-username": "Cambio automático de MediaWiki",
        "upload": "Subir un ficheiro",
        "uploadbtn": "Subir un ficheiro",
index 5343a48..d2611fe 100644 (file)
        "sort-descending": "Devtea kromacher kromboddh kor",
        "sort-ascending": "Chodtea kromacher kromboddh kor",
        "nstab-main": "Pan",
-       "nstab-user": "Vapuddpeachem pan",
+       "nstab-user": "Vaporpeachem pan",
        "nstab-media": "Madheomachem pan",
        "nstab-special": "Vixex pan",
        "nstab-project": "Prokolpache pan",
        "badtitletext": "Tuven maglelem panache nanv chukichem, rintem, vo ek sarkem zodunk-naslelem bhase-modlem vo wiki-modlem nanv.\n\nTantun ek vo sabaar okxor asot jenka nanvanim uzar korunk zainan.",
        "viewsource": "Mull polloi",
        "welcomeuser": "Ievkar, $1!",
-       "yourname": "Vapuddpeachem nanv:",
+       "yourname": "Vaporpeachem nanv:",
        "userlogin-yourname": "Vangdiachem nanv",
        "userlogin-yourname-ph": "Tujem 'vangdeachem nanv' boroi",
        "createacct-another-username-ph": "Vapurpeachem nanv boroi",
        "rcshowhidebots": "$1 robot",
        "rcshowhidebots-show": "Dakhoi",
        "rcshowhidebots-hide": "Lipoi",
-       "rcshowhideliu": "$1 nond zalele vapuddpi",
+       "rcshowhideliu": "$1 nond zalele vaporpi",
        "rcshowhideliu-hide": "Lipoi",
        "rcshowhideanons": "$1 nanv-naslelim vapurpi",
        "rcshowhideanons-show": "Dakhoi",
        "linksearch-ok": "Sod",
        "linksearch-line": "$1 $2 savn zoddlelem asa",
        "listusers-submit": "Dakhoi",
-       "listgrouprights-members": "(vapuddpeanchi suchi)",
+       "listgrouprights-members": "(vaporpeanchi suchi)",
        "emailuser": "Email dhadd",
        "emailusername": "Vapurpeachem nanv:",
        "watchlist": "Sadurvolleri",
        "namespace_association": "Sombondhit nanvtholl",
        "tooltip-namespace_association": "Vinchlele nanvthollache sombondhit bhasabhas vo vixoiacho nanvthollakui gheupak hem boks khunnai",
        "blanknamespace": "(Mukhel)",
-       "contributions": "{{GENDER:$1|Vapuddpi}} yogdanam",
-       "contributions-title": "$1 hea vapuddpean kelelim yogdanam",
+       "contributions": "{{GENDER:$1|Vaporpi}} yogdanam",
+       "contributions-title": "$1 hea vaporpean kelelim yogdanam",
        "mycontris": "Yogdanam",
        "anoncontribs": "Yogdanam",
        "contribsub2": "{{GENDER:$3|$1}} hacheo ($2)",
        "sp-contributions-logs": "sotr",
        "sp-contributions-talk": "bhasabhas",
        "sp-contributions-search": "Yogdanam sod",
-       "sp-contributions-username": "Antorzall namo vo vapuddpeachem nanv:",
+       "sp-contributions-username": "Antorzall namo vo vaporpeachem nanv:",
        "sp-contributions-toponly": "Fokot halincheo uzollnneo dakhoi",
        "sp-contributions-submit": "Sod",
        "whatlinkshere": "Hanga kitem zoddta",
        "whatlinkshere-hideimages": "Failinchim zoddpam $1",
        "whatlinkshere-filters": "Challnio",
        "ipboptions": "2 voram:2 hours,1 dis:1 day,3 dis:3 days,1 satollo:1 week,2 satolle:2 weeks,1 mhoino:1 month,3 mhoine:3 months,6 mhoine:6 months,1 voros:1 year,sasnnank:infinite",
-       "ipblocklist": "Addhailele vapuddpi",
+       "ipblocklist": "Addhailele vaporpi",
        "blocklink": "addavnnni",
        "unblocklink": "Addavnni kadd",
        "change-blocklink": "Addavnnni bodol",
        "allmessagesdefault": "Falta sondex mozkur",
        "thumbnail-more": "Vhodlem kor",
        "thumbnail_error": "Lhan-imaz toiar kortana chuk zali. Karonn: $1",
-       "tooltip-pt-userpage": "{{GENDER:|Tujem vapuddpachem}} pan",
+       "tooltip-pt-userpage": "{{GENDER:|Tujem vaporpeachem}} pan",
        "tooltip-pt-mytalk": "{{GENDER:|Tumchem}} bhasabhasachem pan",
        "tooltip-pt-preferences": "{{GENDER:|Tumcheo}} avddi",
        "tooltip-pt-watchlist": "Bodlachea dekhrekh korpachea panachi volleri",
        "tooltip-t-whatlinkshere": "Hanga zoddlelea sogllea wiki pananchi volleri",
        "tooltip-t-recentchangeslinked": "Hea panak-sun zoddlelea panachim halinche bodol",
        "tooltip-feed-atom": "Hea panak Atom purovnni",
-       "tooltip-t-contributions": "{{GENDER:$1|Hea vapuddpeachea}} yogdanachi suchi",
-       "tooltip-t-emailuser": "{{GENDER:$1|Hea vapuddpeak}} email patthoi",
+       "tooltip-t-contributions": "{{GENDER:$1|Hea vaporpeachea}} yogdanachi suchi",
+       "tooltip-t-emailuser": "{{GENDER:$1|Hea vaporpeak}} email dhadd",
        "tooltip-t-upload": "Faili upload kor",
        "tooltip-t-specialpages": "Sogllea vixex pananchi volleri",
        "tooltip-t-print": "Hea panachem chap'pakyogya avrutti",
        "tooltip-t-permalink": "Hea panache hea uzollnnek togpi zoddni",
        "tooltip-ca-nstab-main": "Mozkur pan polloi",
-       "tooltip-ca-nstab-user": "Vapuddpeachem pan polloi",
+       "tooltip-ca-nstab-user": "Vaporpeachem pan polloi",
        "tooltip-ca-nstab-special": "Hem ek kherit pan, ani hem bodlunk zaina",
        "tooltip-ca-nstab-project": "Prokolpachem pan polloi",
        "tooltip-ca-nstab-image": "Failichem pan polloi",
index 05fcdc3..d3b1f94 100644 (file)
@@ -28,9 +28,9 @@
        "tog-extendwatchlist": "Ἐφοροδιαλογὴν ἐκτείνειν ἵνα φανῶσιν ἅπασαι αἱ ἀλλαγαὶ, οὐχὶ μόνον αἱ ἁρμόδιαι",
        "tog-usenewrc": "Χρῆσθαι προσκεκοσμημέναις προσφάτοις ἀλλαγαῖς (ἀπαιτεῖται JavaScript)",
        "tog-numberheadings": "Ἐξαριθμεῖν ἐπικεφαλίδας αὐτομάτως",
-       "tog-showtoolbar": "Δεικνύναι τὴν τῶν ἐργαλείων μεταγραφῆς μετώπην (ἀπαιτεῖται JavaScript)",
-       "tog-editondblclick": "Ἐπὶ δέλτων δὶς θλίψας, μετάγραψον αὐτάς (ἀπαιτεῖται JavaScript)",
-       "tog-editsectiononrightclick": "Καθιστάναι δυνατὸν τὸ μεταγράφειν τμήματα διὰ τοῦ ἐπὶ τῶν ἐπιγραφῶν τῶν τμημάτων θλίβειν δεξιῶς (ἀπαιτεῖται JavaScript)",
+       "tog-showtoolbar": "Δεικνύναι τὴν τῶν ἐργαλείων μεταγραφῆς μετώπην",
+       "tog-editondblclick": "Ἐπὶ δέλτων δὶς θλίψας, μετάγραψον αὐτάς",
+       "tog-editsectiononrightclick": "Καθιστάναι δυνατὸν τὸ μεταγράφειν τμήματα διὰ τοῦ ἐπὶ τῶν ἐπιγραφῶν τῶν τμημάτων θλίβειν δεξιῶς",
        "tog-watchcreations": "Προστιθέναι τὰς δέλτους ἃς ποιῶ τοῖς ἐφορωμένοις μου",
        "tog-watchdefault": "Προστιθέναι τὰς δέλτους ἃς μεταγράφω τοῖς ἐφορωμένοις μου",
        "tog-watchmoves": "Προστιθέναι τὰς δέλτους ἃς κινῶ τοῖς ἐφορωμένοις μου",
        "histlegend": "Σύγκρισις διαφορῶν: Ἐπιλέξατε τὰς συγκριτέας ἐκδόσεις καὶ πατήσατε enter ἢ τὸ κομβίον  \"Συγκρίνειν...\". <br />\nὙπόμνημα: (τρέχον) = διαφοραὶ ὡς πρὸς τὴν τρέχουσαν ἐκδοχήν,\n(ὕστατον) = διαφοραὶ ὡς πρὸς τὴν προηγουμένην ἔκδοσιν, μ = ἀλλαγαὶ μικρῆς κλίμακος.",
        "history-fieldset-title": "Ζήτησις ἐν ταῖς προτέραις",
        "history-show-deleted": "Διαγραφεῖσαι μόνον",
-       "histfirst": "πρώτη",
-       "histlast": "ἐσχάτη",
+       "histfirst": "ἐσχάτη",
+       "histlast": "νεωτέρα",
        "historysize": "({{PLURAL:$1|1 δυφίον|$1 δυφία}})",
        "historyempty": "(κενόν)",
        "history-feed-title": "Ἱστορία ἀναθεωρήσεων",
        "action-block": "φράττειν τὸ μεταγράφειν τοῦδε τοῦ χρωμένου",
        "action-protect": "ἀλλάττειν τὴν κλίμακα προστασίας τῆσδε τῆς δελτου",
        "action-import": "εἰσάγειν τήνδε τὴν δέλτον ἐξ ἑτέρου βίκι",
-       "action-importupload": "εἰσάγειν τήνδε τὴν δέλτον ἐξ ἐπιφορτίσεώς τινος ἀρχείου",
+       "action-importupload": "εἰσάγειν τήνδε τὴν δέλτον ἐξ ἐπιφορτίσεώς ἀρχείου",
        "action-patrol": "σημαίνειν τὰς μεταγραφὰς ἑτέρων ὡς φρουρουμένας",
        "action-autopatrol": "σήμανσις τῆς μεταγραφῆς σου ὡς περιπολουμένης",
        "action-unwatchedpages": "ὁρᾶν τὴν διαλογὴν τῶν μὴ ἐφορωμένων δέλτων",
index 35bdcc0..804c4f9 100644 (file)
        "morenotlisted": "આ યાદી પૂર્ણ નથી.",
        "mypage": "પાનું",
        "mytalk": "ચર્ચા",
-       "anontalk": "àª\86 IP àª®àª¾àª\9fà«\87નà«\81àª\82 àª\9aરà«\8dàª\9aા àªªàª¾àª¨à«\81àª\82",
+       "anontalk": "àª\9aરà«\8dàª\9aા",
        "navigation": "ભ્રમણ",
        "and": "&#32;અને",
        "qbfind": "શોધો",
        "createacct-reason": "કારણ",
        "createacct-reason-ph": "તમે કેમ બીજું ખાતું બનાવો છો",
        "createacct-submit": "તમારું ખાતું બનાવો",
-       "createacct-another-submit": "બà«\80àª\9cà«\81àª\82 àª\96ાતà«\81àª\82 àª¬àª¨àª¾àªµà«\8b",
+       "createacct-another-submit": "ખાતું બનાવો",
        "createacct-benefit-heading": "{{SITENAME}} એ તમારા જેવા લોકોએ બનાવેલ છે.",
        "createacct-benefit-body1": "{{PLURAL:$1|ફેરફાર|ફેરફારો}}",
        "createacct-benefit-body2": "{{PLURAL:$1|પાનું|પાનાં}}",
        "sig_tip": "સમયછાપ સાથે તમારા હસ્તાક્ષર",
        "hr_tip": "આડી લીટી (શક્ય તેટલો ઓછો ઉપયોગ કરો)",
        "summary": "સારાંશ:",
-       "subject": "વિષય/શીર્ષક:",
+       "subject": "વિષય:",
        "minoredit": "આ એક નાનો સુધારો છે",
        "watchthis": "આ પાનાને ધ્યાનમાં રાખો",
        "savearticle": "પાનું સાચવો",
        "apihelp-no-such-module": "સાધન જૂથ \"$1\" ન મળ્યું.",
        "apisandbox-submit": "વિનંતી કરો",
        "apisandbox-reset": "સાફ કરો",
-       "apisandbox-examples": "ઉદાહરણ",
-       "apisandbox-results": "પરિણામ",
+       "apisandbox-examples": "ઉદાહરણ",
+       "apisandbox-results": "પરિણામ",
        "booksources": "પુસ્તક સ્રોત",
        "booksources-search-legend": "પુસ્તક સ્રોત શોધો",
        "booksources-isbn": "આઇએસબીએન:",
        "movenotallowedfile": "તમને ફાઈલ ખસેડવાની પરવાનગી નથી.",
        "cant-move-user-page": "તમને સભ્ય પાના હટાવવાની પરવાનગી નથી (ઉપપાના સિવાય).",
        "cant-move-to-user-page": "તમને   કોઇ પાનાને સભ્ય પાનામાં ખસેડવાની પ્રવાનગી નથી (સિવાય કે સભ્ય ઉપપાના)",
-       "newtitle": "àª\86 àª¨àªµà«\81àª\82 àª¨àª¾àª® àª\86પà«\8b:",
+       "newtitle": "નવà«\81àª\82 àª¶à«\80રà«\8dષàª\95:",
        "move-watch": "આ પાનું ધ્યાનમાં રાખો",
        "movepagebtn": "પાનું ખસેડો",
        "pagemovedsub": "પાનું સફળતા પૂર્વક ખસેડવામાં આવ્યું છે",
        "tooltip-feed-rss": "આ પાના માટે આર.એસ.એસ. ફીડ",
        "tooltip-feed-atom": "આ પાના માટે એટમ ફીડ",
        "tooltip-t-contributions": "{{GENDER:$1|આ સભ્ય}} વડે કરાયેલા યોગદાનોની યાદી",
-       "tooltip-t-emailuser": "આ સભ્યને ઇ-મેલ મોકલો",
+       "tooltip-t-emailuser": "{{GENDER:$1|આ સભ્ય}}ને ઇમેલ મોકલો",
        "tooltip-t-info": "આ પાનાં વિષે વધુ માહિતી",
        "tooltip-t-upload": "ફાઇલ ચડાવો",
        "tooltip-t-specialpages": "બધા ખાસ પાનાંઓની યાદી",
        "expand_templates_ok": "મંજૂર",
        "expand_templates_remove_comments": "ટીપ્પણીઓ દૂર કરો",
        "expand_templates_preview": "પૂર્વાવલોકન",
-       "pagelanguage": "પાનાની ભાષાનો ચયનકર્તા",
+       "pagelanguage": "પાનાની ભાષા બદલો",
        "pagelang-name": "પાનું",
        "pagelang-language": "ભાષા",
        "pagelang-use-default": "(મૂળભુત ભાષા)",
index 49605f4..3ae47f8 100644 (file)
        "moredotdotdot": "עוד…",
        "morenotlisted": "רשימה זו אינה מלאה.",
        "mypage": "דף משתמש",
-       "anonuserpage": "משתמש לא ידוע",
        "mytalk": "שיחה",
        "anontalk": "שיחה",
        "navigation": "ניווט",
        "recentchangeslinked-page": "שם הדף:",
        "recentchangeslinked-to": "הצגת השינויים בדפים המקשרים לדף הנתון במקום זאת",
        "recentchanges-page-added-to-category": "הדף [[:$1]] נוסף לקטגוריה",
-       "recentchanges-page-added-to-category-bundled": "הדף [[:$1]] {{PLURAL:$2|ועוד דף אחד|ועוד $2 דפים}} נוספו לקטגוריה",
+       "recentchanges-page-added-to-category-bundled": "הדף [[:$1]] [[Special:WhatLinksHere/$1|{{PLURAL:$2|ועוד דף אחד|ועוד $2 דפים}}]] נוספו לקטגוריה",
        "recentchanges-page-removed-from-category": "הדף [[:$1]] הוסר מקטגוריה",
-       "recentchanges-page-removed-from-category-bundled": "הדף [[:$1]] {{PLURAL:$2|ועוד דף אחד|ועוד $2 דפים}} הוסרו מקטגוריה",
+       "recentchanges-page-removed-from-category-bundled": "הדף [[:$1]] [[Special:WhatLinksHere/$1|{{PLURAL:$2|ועוד דף אחד|ועוד $2 דפים}}]] הוסרו מקטגוריה",
        "autochange-username": "שינוי אוטומטי של מדיה־ויקי",
        "upload": "העלאת קובץ לשרת",
        "uploadbtn": "העלאה",
index 509503b..8477c66 100644 (file)
        "tog-watchlisthidebots": "मेरी ध्यानसूची से बॉट द्वारा किए परिवर्तन छिपाएँ",
        "tog-watchlisthideminor": "मेरी ध्यानसूची से छोटे परिवर्तन छिपाएँ",
        "tog-watchlisthideliu": "मेरी ध्यानसूची में सत्रारम्भित सदस्यों के सम्पादन न दिखाएँ",
+       "tog-watchlistreloadautomatically": "जब भी छननी बदलने पर ध्यानसूची को अपने आप ही लोड करें (जावास्क्रिप्ट अनिवार्य)",
        "tog-watchlisthideanons": "आई॰पी॰ सदस्यों द्वारा किए सम्पादनों को मेरी ध्यानसूची में न दिखायें",
        "tog-watchlisthidepatrolled": "परीक्षित सम्पादन मेरी ध्यानसूची में छुपाएँ",
        "tog-watchlisthidecategorization": "पृष्ठों का श्रेणीकरण छुपाएँ",
        "fri": "शुक्र",
        "sat": "शनि",
        "january": "जनवरी",
-       "february": "फ़रवरà¥\80",
+       "february": "फरवरी",
        "march": "मार्च",
        "april": "अप्रैल",
        "may_long": "मई",
        "november": "नवम्बर",
        "december": "दिसम्बर",
        "january-gen": "जनवरी",
-       "february-gen": "फ़रवरà¥\80",
+       "february-gen": "फरवरी",
        "march-gen": "मार्च",
        "april-gen": "अप्रैल",
        "may-gen": "मई",
        "november-gen": "नवम्बर",
        "december-gen": "दिसम्बर",
        "jan": "जन॰",
-       "feb": "फ़र॰",
+       "feb": "फर॰",
        "mar": "मार्च",
        "apr": "अप्रै॰",
        "may": "मई",
        "nov": "नव॰",
        "dec": "दिस॰",
        "january-date": "$1 जनवरी",
-       "february-date": "$1 à¤«à¤¼à¤°à¤µà¤°à¥\80",
+       "february-date": "$1 फरवरी",
        "march-date": "$1 मार्च",
        "april-date": "$1 अप्रैल",
        "may-date": "$1 मई",
        "moredotdotdot": "और...",
        "morenotlisted": "यह सूची पूर्ण नहीं है।",
        "mypage": "पृष्ठ",
-       "anonuserpage": "अज्ञात सदस्य",
        "mytalk": "वार्ता",
        "anontalk": "वार्ता",
        "navigation": "भ्रमण",
        "versionrequired": "मीडीयाविकी का $1 अवतरण ज़रूरी है।",
        "versionrequiredtext": "यह पृष्ठ प्रयोग करने के लिये मीडियाविकी का $1 अवतरण ज़रूरी है।\nदेखें [[Special:Version|अवतरण पृष्ठ]]।",
        "ok": "ठीक है",
+       "pagetitle": "$1 - {{SITENAME}}",
+       "pagetitle-view-mainpage": "{{SITENAME}}",
+       "backlinksubtitle": "← $1",
        "retrievedfrom": "\"$1\" से लिया गया",
        "youhavenewmessages": "आपके लिए $1 हैं। ($2)",
        "youhavenewmessagesfromusers": "आपके लिये {{PLURAL:$3|एक अन्य सदस्य|$3 अन्य सदस्यों}} के $1 हैं। ($2)",
        "databaseerror-query": "अनुरोध: $1",
        "databaseerror-function": "फ़ंक्शन: $1",
        "databaseerror-error": "त्रुटि: $1",
+       "transaction-duration-limit-exceeded": "अत्यधिक बोझ को कम करने लिए यह कार्य रोक दिया गया है, क्योंकि यह लिखने की अवधि ($1) से बढ़ कर $2 {{PLURAL:$2|सेकंड|सेकंड}} को पार कर गया।\nIf यदि आप  बहुत सारे वस्तु को एक साथ बदल रहे हैं, तो कृपया छोटे होते रूप में बदलें।",
        "laggedslavemode": "'''चेतावनी:''' यह पृष्ठ अद्यतनीत जानकारी-युक्त ना होने की आशंका है।",
        "readonly": "डाटाबेस लॉक किया हुआ है",
        "enterlockreason": "लॉक करने का कारण दीजिए, साथ ही लॉक खुलने के समय का लगभग आकलन दीजिये।",
        "virus-unknownscanner": "अज्ञात ऐंटीवायरस:",
        "logouttext": "'''अब आप लॉग आउट कर चुके हैं।'''\n\nध्यान दें कि जब तक आप अपनी ब्राउज़र कैशे खाली नहीं करते हैं, कुछ पृष्ठ अब भी ऐसे दिख सकते हैं जैसे कि आप अभी भी लॉगिन हैं।",
        "cannotlogoutnow-title": "अभी प्रस्थान नहीं हो रहा है",
+       "cannotlogoutnow-text": "$1 के उपयोग समय प्रस्थान नहीं किया जा सकता है।",
        "welcomeuser": "आपका स्वागत है, $1!",
        "welcomecreation-msg": "आपका खाता बना दिया गया है।\nअपनी [[Special:Preferences|{{SITENAME}} वरीयताएँ]] बदलना ना भूलियेगा।",
        "yourname": "सदस्यनाम:",
        "nav-login-createaccount": "सत्रारंभ / खाता खोलें",
        "userlogin": "सत्रारंभ / खाता खोलें",
        "userloginnocreate": "लॉग इन",
-       "logout": "सतà¥\8dराà¤\82त",
-       "userlogout": "सतà¥\8dराà¤\82त",
+       "logout": "पà¥\8dरसà¥\8dथान à¤\95रà¥\87à¤\82",
+       "userlogout": "पà¥\8dरसà¥\8dथान à¤\95रà¥\87à¤\82",
        "notloggedin": "लॉग इन नहीं किया है",
        "userlogin-noaccount": "खाता नहीं है?",
        "userlogin-joinproject": "{{SITENAME}} से जुड़ें",
        "nologinlink": "नया खाता बनाएँ",
        "createaccount": "खाता बनाएँ",
        "gotaccount": "पहले से आपका खाता है? '''$1''' करें।",
-       "gotaccountlink": "लà¥\89à¤\97 à¤\87न",
+       "gotaccountlink": "पà¥\8dरवà¥\87श à¤\95रà¥\87à¤\82",
        "userlogin-resetlink": "अपनी प्रवेश जानकारी भूल गए हैं?",
        "userlogin-resetpassword-link": "अपना पासवर्ड भूल गए?",
        "userlogin-helplink2": "लॉग इन करने में सहायता",
        "wrongpasswordempty": "कूटशब्द खाली है।\nपुनः यत्न करें।",
        "passwordtooshort": "आपका कूटशब्द कम से कम {{PLURAL:$1|1 अक्षर|$1 अक्षरों}} का होना चाहिये।",
        "passwordtoolong": "पासवर्ड {{PLURAL:$1|1 वर्ण|$1 वर्णों}} से ज़्यादा लम्बे नही हो सकते।",
+       "passwordtoopopular": "आम पासवर्ड आप नहीं चुन सकते हैं। कृपया अनोखा पासवर्ड चुनें।",
        "password-name-match": "आपका कूटशब्द आपके सदस्यनाम से भिन्न होना चाहिए।",
        "password-login-forbidden": "इस सदस्यनाम और कूटशब्द का उपयोग वर्जित है।",
        "mailmypassword": "कूटशब्द पुनःस्थापित करें",
        "changepassword-success": "आपका कूटशब्द बदल दिया गया है!",
        "changepassword-throttled": "आपने हाल ही में कई बार लॉग इन करने के प्रयास किये हैं।\nपुनः प्रयास करने से पहले कृपया $1 प्रतीक्षा करें।",
        "botpasswords": "बॉट पासवर्ड",
+       "botpasswords-summary": "<em>बॉट पासवर्ड</em> सदस्य खाते को एपीआई के द्वारा बिना मुख्य खाते के जानकारी के उपयोग करने देता है। बॉट पासवर्ड का उपयोग कर के प्रवेश करने पर यदि पाबंदी होने पर सदस्य अधिकार उपलब्ध रहेगा।\n\nयदि आपको इस बारे में कुछ नहीं पता तो इसका उपयोग न करें। कोई भी आपसे इसे निर्मित करने के लिए नहीं पूछेगा।",
        "botpasswords-disabled": "बॉट पासवर्ड अभी निष्क्रिय है।",
+       "botpasswords-no-central-id": "बॉट पासवर्ड का उपयोग करने के लिए आपको मुख्य खाते से प्रवेश करना होगा।",
        "botpasswords-existing": "वर्तमान बॉट पासवर्ड",
        "botpasswords-createnew": "बॉट के लिए नया पासवर्ड बनाएँ",
        "botpasswords-editexisting": "बॉट के वर्तमान पासवर्ड को बदलें",
        "botpasswords-label-cancel": "रद्द करें",
        "botpasswords-label-delete": "हटाएँ",
        "botpasswords-label-resetpassword": "पासवर्ड पुनः तय करें",
+       "botpasswords-label-grants": "अनुदान आवेदन:",
+       "botpasswords-help-grants": "हर अनुदान जो सदस्य अधिकार में  पहले से आता है, उसे अधिकार तक पहुँच देता है।  देखें : [[Special:ListGrants|अनुदान सारणी]]",
+       "botpasswords-label-restrictions": "उपयोग मनाही:",
+       "botpasswords-label-grants-column": "प्रदान किया",
+       "botpasswords-bad-appid": "बॉट नाम \"$1\" मान्य नहीं है।",
+       "botpasswords-insert-failed": "बॉट नाम \"$1\" को जोड़ने में विफल हुआ। क्या यह पहले से है?",
+       "botpasswords-update-failed": "बॉट नाम \"$1\" को अद्यतन करने में विफल हुआ। क्या ये हट गया?",
        "botpasswords-created-title": "बॉट पासवर्ड निर्मित हुआ",
-       "botpasswords-created-body": "बà¥\89à¤\9f à¤ªà¤¾à¤¸à¤µà¤°à¥\8dड \"$1\" à¤¸à¤«à¤²à¤¤à¤¾à¤ªà¥\82रà¥\8dवà¤\95 निर्मित हुआ।",
+       "botpasswords-created-body": "सदसà¥\8dय \"$2\" à¤\95à¥\87 à¤¬à¥\89à¤\9f à¤¨à¤¾à¤® \"$1\" à¤\95à¥\87 à¤²à¤¿à¤\8f à¤ªà¤¾à¤¸à¤µà¤°à¥\8dड निर्मित हुआ।",
        "botpasswords-updated-title": "बॉट पासवर्ड अद्यतन हुआ",
-       "botpasswords-updated-body": "बà¥\89à¤\9f à¤ªà¤¾à¤¸à¤µà¤°à¥\8dड \"$1\" सफलतापूर्वक अद्यतन हुआ।",
+       "botpasswords-updated-body": "सदसà¥\8dय \"$2\" à¤\95à¥\87 à¤¬à¥\89à¤\9f à¤¨à¤¾à¤® \"$1\" à¤\95ा à¤ªà¤¾à¤¸à¤µà¤°à¥\8dड सफलतापूर्वक अद्यतन हुआ।",
        "botpasswords-deleted-title": "बॉट पासवर्ड हट गया",
-       "botpasswords-deleted-body": "बॉट पासवर्ड \"$1\" हट गया।",
+       "botpasswords-deleted-body": "सदस्य \"$2\" के बॉट नाम \"$1\" का पासवर्ड हट गया।",
+       "botpasswords-newpassword": "आपका नया पासवर्ड आपके प्रवेश <strong>$1</strong> के साथ <strong>$2</strong> है। <em>भविष्य में उपयोग करने हेतु इसे याद रखें</em>",
+       "botpasswords-no-provider": "BotPasswordsSessionProvider उपलब्ध नहीं है।",
+       "botpasswords-restriction-failed": "इस प्रवेश में बॉट पासवर्ड रुकावट डाल रहा है।",
+       "botpasswords-invalid-name": "जो सदस्य नाम आप बता रहे हो, उसमें बॉट पासवर्ड अलग करने वाला (\"$1\") नहीं है।",
        "botpasswords-not-exist": "सदस्य \"$1\" के आप बॉट पासवर्ड नहीं है, जिसका नाम \"$2\" है।",
        "resetpass_forbidden": "कूटशब्द बदले नहीं जा सकते",
        "resetpass-no-info": "इस पृष्ठ का सीधे प्रयोग करने के लिए आपको लॉग इन करना होगा।",
        "resetpass-submit-loggedin": "कूटशब्द बदलें",
        "resetpass-submit-cancel": "रद्द करें",
-       "resetpass-wrong-oldpass": "à¤\85वà¥\88ध à¤\85सà¥\8dथायà¥\80 à¤¯à¤¾ à¤µà¤°à¥\8dतमान à¤\95à¥\82à¤\9fशबà¥\8dद।\nसंभव है कि या तो आपने पहले ही सफलतापूर्वक अपना कूटशब्द बदल लिया हो, या आपने एक नए अस्थायी कूटशब्द का अनुरोध किया हो।",
+       "resetpass-wrong-oldpass": "à¤\85सà¥\8dथायà¥\80 à¤¯à¤¾ à¤µà¤°à¥\8dतमान à¤\95à¥\82à¤\9fशबà¥\8dद à¤\85वà¥\88ध à¤¹à¥\88।\nसंभव है कि या तो आपने पहले ही सफलतापूर्वक अपना कूटशब्द बदल लिया हो, या आपने एक नए अस्थायी कूटशब्द का अनुरोध किया हो।",
        "resetpass-recycled": "रीसेट करने के लिए नये पासवर्ड में कृपया अपने वर्तमान पासवर्ड के अलावा किसी अन्य पासवर्ड का प्रयोग करें।",
        "resetpass-temp-emailed": "आपने एक अस्थायी ईमेल किये गये कोड के साथ लॉग इन किया।\nलॉग इन सम्पूर्ण करने के लिए आपको यहाँ एक नया पासवर्ड सेट करना होगा:",
        "resetpass-temp-password": "अस्थायी कूटशब्द:",
        "passwordreset-emailtext-ip": "किसी ने (शायद आपने ही, $1 आइ॰पी पते से) {{SITENAME}} ($4) पर अपने {{PLURAL:$3|कूटशब्द|कूटशब्दों}} को रीसेट करने का अनुरोध किया है। इस ई-मेल पते से निम्न {{PLURAL:$3|खाता जुड़ा है|खाते जुड़े हैं}}:\n\n$2\n\n{{PLURAL:$3|यह|ये}} अस्थायी कूटशब्द {{PLURAL:$5|एक दिन|$5 दिनों}} के बाद काम नहीं करेंगे। आपको लॉग इन करके एक नया कूटशब्द अभी चुन लेना चाहिए। यदि यह अनुरोध किसी और ने किया है, या फिर आपको अपना मूल कूटशब्द याद आ गया है, और आप {{PLURAL:$3|अपना|अपने}} कूटशब्द नहीं बदलना चाहते, आप इस संदेश को अनदेखा कर के अपने पुराने कूटशब्द का प्रयोग जारी रख सकते हैं।",
        "passwordreset-emailtext-user": "{{SITENAME}} ($4) पर सदस्य $1 ने आपके {{PLURAL:$3|खाते|खातों}} के कूटशब्द को रीसेट करने का अनुरोध किया है। इस ई-मेल पते से निम्न {{PLURAL:$3|खाता जुड़ा है|खाते जुड़े हैं}}:\n\n$2\n\n{{PLURAL:$3|यह|ये}} अस्थायी कूटशब्द {{PLURAL:$5|एक दिन|$5 दिनों}} के बाद काम नहीं करेंगे।\nआपको लॉग इन करके एक नया कूटशब्द अभी चुन लेना चाहिए। यदि यह अनुरोध किसी और ने किया है, या फिर आपको अपना मूल कूटशब्द याद आ गया है, और आप {{PLURAL:$3|अपना|अपने}} कूटशब्द नहीं बदलना चाहते, आप इस संदेश को अनदेखा कर के अपने पुराने कूटशब्द का प्रयोग जारी रख सकते हैं।",
        "passwordreset-emailelement": "सदस्यनाम: \n$1\n\nअस्थायी कूटशब्द: \n$2",
-       "passwordreset-emailsentemail": "à¤\8fà¤\95 à¤\95à¥\82à¤\9fशबà¥\8dद à¤°à¥\80सà¥\87à¤\9f à¤\88-मà¥\87ल भेज दिया गया है।",
+       "passwordreset-emailsentemail": "यदि à¤\86पà¤\95ा à¤¯à¤¹ à¤\88मà¥\87ल à¤\86पà¤\95à¥\87 à¤\96ातà¥\87 à¤\95à¥\87 à¤¸à¤¾à¤¥ à¤\9cà¥\8bड़ा à¤\97या à¤¹à¥\88 à¤¤à¥\8b à¤ªà¤¾à¤¸à¤µà¤°à¥\8dड à¤¬à¤¦à¤²à¤¨à¥\87 à¤\95ा à¤\88मà¥\87ल à¤\87समà¥\87à¤\82 भेज दिया गया है।",
        "passwordreset-emailsentusername": "यदि कोई ईमेल इस खाते से जुड़ी है तो पासवर्ड आपके ईमेल में भेज दिया जाएगा।",
        "passwordreset-emailsent-capture": "नीचे दिखाया गया कूटशब्द रीसेट ई-मेल भेज दिया गया है।",
        "passwordreset-emailerror-capture": "नीचे दृष्टित कूटशब्द रीसेट ई-मेल उत्पन्न किया गया था, परंतु उसे {{GENDER:$2|सदस्य}} को भेजना असफल रहा।\nत्रुटि: $1",
        "resettokens-done": "टोकन रीसेट कर दिए गए।",
        "resettokens-resetbutton": "चुने हुए टोकन रीसेट करें",
        "bold_sample": "मोटा पाठ",
-       "bold_tip": "बà¥\8bलà¥\8dड पाठ",
+       "bold_tip": "à¤\97हरा पाठ",
        "italic_sample": "तिरछा पाठ",
-       "italic_tip": "à¤\87à¤\9fà¥\88लिà¤\95 पाठ",
+       "italic_tip": "तिरà¤\9bा पाठ",
        "link_sample": "कड़ी शीर्षक",
        "link_tip": "आंतरिक कड़ी",
        "extlink_sample": "http://www.example.com कड़ी शीर्षक",
        "previewnote": "'''याद रखें, यह केवल एक झलक है।'''\nआपके बदलाव अभी तक संजोये नहीं गए हैं!",
        "continue-editing": "संपादन क्षेत्र को जाएँ",
        "previewconflict": "यह झलक ऊपरी पाठ सम्पादन क्षेत्र में हुए बदलाव दिखाती है, और यदि आप अभी संजोते हैं तो यही पाठ संजोया जाएगा।",
-       "session_fail_preview": "'''क्षमा करें! सेशन डाटा के नष्ट होने के कारण आपके बदलाव संजोये नहीं जा सके।'''\nकृपया पुन: यत्न करें।\nअगर इसके बाद भी ऐसा ही होता है तो कृपया [[Special:UserLogout|लॉग आउट]] कर के पुनः लॉग इन करें।",
+       "session_fail_preview": "'''क्षमा करें! सेशन डाटा के नष्ट होने के कारण आपके बदलाव संजोये नहीं जा सके।'''\nकृपया पुन: यत्न करें। अगर इसके बाद भी ऐसा ही होता है तो कृपया [[Special:UserLogout|लॉग आउट]] कर के पुनः लॉग इन करें।",
        "session_fail_preview_html": "'''क्षमा करें! सेशन डाटा के नष्ट होने के कारण आपके बदलाव संजोये नहीं जा सके।'''\n\n''चूँकि {{SITENAME}} पर raw HTML सक्षम है, जावास्क्रिप्ट हमलों से बचाव के लिये झलक नहीं दिखाई गई है।''\n\n'''अगर यह आपका वैध संपादन यत्न था, तो कृपया पुनः यत्न करें।'''\nअगर इसके बाद भी ऐसा ही होता है तो कृपया [[Special:UserLogout|लॉग आउट]] कर के पुनः लॉग इन करें।",
        "token_suffix_mismatch": "'''आपके द्वारा किये गये बदलाव रद्द कर दिये गये हैं क्योंकि आपके क्लायंट ने आपके संपादन टोकन में दिये हुए विरामचिन्हों में बदलाव किये हैं।'''\nलेख के पाठ में खराबी ना आये इसलिये आपके बदलाव रद्द कर दिये गये हैं।\nऐसा तब भी हो सकता है यदि आप कोई खराब वेब-आधारित अनामक प्रौक्सी प्रयोग कर रहे हों।",
        "edit_form_incomplete": "'''सम्पादन फ़ॉर्म के कुछ भाग सर्वर तक नहीं पहुँच पाए; जाँच लें कि आपके द्वारा किये बदलाव अक्षुण्ण हैं, और सहेजने का पुनः यत्न करें।'''",
        "editwarning-warning": "इस पृष्ठ को छोड़ने पर आपके द्वारा किये गए कोई भी बदलाव गायब हो जाएँगे।\nयदि आपने लॉग इन किया हुआ है तो आप इस सूचना का दिखना अपनी वरीयताओं के \"{{int:prefs-editing}}\" भाग में बंद कर सकते हैं।",
        "editpage-notsupportedcontentformat-title": "सामग्री स्वरूप समर्थित नहीं है",
        "editpage-notsupportedcontentformat-text": "$1 सामग्री स्वरूप $2 सामग्री मॉडल द्वारा समर्थित नहीं है।",
-       "content-model-wikitext": "विà¤\95िà¤\9fà¥\87à¤\95à¥\8dसà¥\8dà¤\9f",
+       "content-model-wikitext": "विà¤\95िपाठà¥\8dय",
        "content-model-text": "सामान्य पाठ",
        "content-model-javascript": "जावास्क्रिप्ट",
        "content-model-css": "सी॰एस॰एस",
+       "content-model-json": "जेसन",
        "content-json-empty-object": "रिक्त ऑब्जेक्ट",
        "content-json-empty-array": "रिक्त ऐरे",
        "duplicate-args-warning": "<strong>चेतावनी:</strong> [[:$1]] प्राचल \"$3\" के लिए [[:$2]] को एक से अधिक बार काम में ले रहा है। केवल अन्त में दिया गया मान ही काम में लिया जायेगा।",
        "revdelete-submit": "चयनित {{PLURAL:$1|अवतरण|अवतरणों}} पर लागू करें",
        "revdelete-success": "'''अवतरण दृश्यता सफलतापूर्वक अद्यातानीत की गई।'''",
        "revdelete-failure": "'''अवतरण दृश्यता अद्यातानीत नहीं की जा सकी:'''\n$1",
-       "logdelete-success": "'''लॉग दृष्यता बदली गई।'''",
+       "logdelete-success": "लॉग दृष्यता बदली गई।",
        "logdelete-failure": "'''लॉग दृश्यता का जमाव नहीं किया जा सका:'''\n$1",
        "revdel-restore": "दृश्यता बदलें",
        "pagehist": "पृष्ठ इतिहास",
        "mergehistory-empty": "कोई भी अवतरण एकत्रित नहीं कर सकते।",
        "mergehistory-done": "$1 {{PLURAL:$3|का|के}} $3 अवतरण [[:$2]] में एकत्रित कर {{PLURAL:$3|दिया गया है|दिये गए हैं}}।",
        "mergehistory-fail": "इतिहास एकत्रित नहीं कर सकते, कृपया पृष्ठ और समय की पुनः जाँच करें।",
+       "mergehistory-fail-bad-timestamp": "समय संख्या अमान्य",
        "mergehistory-fail-invalid-source": "अमान्य स्रोत पृष्ठ",
        "mergehistory-fail-invalid-dest": "अमान्य लक्ष्य पृष्ठ",
+       "mergehistory-fail-no-change": "इतिहास विलय किसी भी अवतरण को विलय नहीं कर पाया। कृपया लेख और समय को दोबारा देखें।",
+       "mergehistory-fail-permission": "इतिहास विलय हेतु अधिकार कम है।",
+       "mergehistory-fail-self-merge": "स्रोत और भेजने वाला पृष्ठ समान है।",
+       "mergehistory-fail-timestamps-overlap": "स्रोत अवतरण भेजने वाले अवतरण के बाद आ रहा है।",
        "mergehistory-fail-toobig": "इतिहास विलय करना संभव नहीं है क्योंकि अवतरण सीमा $1 से अधिक {{PLURAL:$1|अवतरण|अवतरणों}} को स्थानांतरित करना होगा।",
        "mergehistory-no-source": "स्रोत पृष्ठ $1 मौजूद नहीं है।",
        "mergehistory-no-destination": "लक्ष्य पृष्ठ $1 मौजूद नहीं है।",
        "savedrights": "प्रयोक्ता {{GENDER:$1|$1}} का सदस्य अधिकार सहेजा गया।",
        "timezonelegend": "समयमंडल:",
        "localtime": "स्थानीय समय:",
-       "timezoneuseserverdefault": "विà¤\95à¥\80 à¤¡à¤¿à¤«à¤¼à¥\89लà¥\8dà¤\9f का उपयोग करें ($1)",
+       "timezoneuseserverdefault": "विà¤\95ि à¤®à¥\82ल का उपयोग करें ($1)",
        "timezoneuseoffset": "अन्य (समयांतर निर्दिष्ट करें)",
        "servertime": "सर्वर का समय:",
        "guesstimezone": "ब्राउज़र से भरें",
        "userrights": "सदस्य अधिकार व्यवस्थापन",
        "userrights-lookup-user": "सदस्य समूहों का व्यवस्थापन करें",
        "userrights-user-editname": "सदस्यनाम दें:",
-       "editusergroup": "सदस्य समूहों का संपादन करें",
+       "editusergroup": "{{GENDER:$1|सदस्य}} समूहों का संपादन करें",
        "editinguser": "सदस्य '''[[User:$1|$1]]''' $2 के अधिकार बदलें\n{{GENDER:$1|सदस्य}} के सदस्य अधिकार बदले जा रहे हैं <strong>[[User:$1|$1]]</strong> $2",
        "userrights-editusergroup": "सदस्य समूहों का संपादन करें",
-       "saveusergroups": "सदस्य समूह संजोएँ",
+       "saveusergroups": "{{GENDER:$1|सदस्य}} समूह सहेजें",
        "userrights-groupsmember": "निम्न {{PLURAL:$1|समूह|समूहों}} का सदस्य:",
        "userrights-groupsmember-auto": "निम्न {{PLURAL:$1|समूह|समूहों}} का अंतर्निहित सदस्य:",
        "userrights-groups-help": "आप इस सदस्य की समूह-सदस्यता बदल सकते हैं:\n* बक्से पर सही का निशान लगे होने का अर्थ है कि सदस्य उस समूह में है।\n* बक्से पर सही का निशान न लगे होने का अर्थ है कि सदस्य उस समूह में नहीं है।\n* एक * का अर्थ है कि एक बार जोड़ने के बाद वह समूह हटा नहीं सकते हैं, और हटाने के बाद जोड़ नहीं सकते हैं।",
        "group-bot": "बॉट",
        "group-sysop": "प्रबंधक",
        "group-bureaucrat": "प्रशासक",
-       "group-suppress": "à¤\93वरसाà¤\88à¤\9fà¥\8dस",
+       "group-suppress": "à¤\9bà¥\81पानà¥\87 à¤µà¤¾à¤²à¥\87",
        "group-all": "(सभी)",
        "group-user-member": "{{GENDER:$1|सदस्य}}",
        "group-autoconfirmed-member": "{{GENDER:$1|स्वतः स्थापित सदस्य}}",
        "group-bot-member": "{{GENDER:$1|बॉट}}",
        "group-sysop-member": "{{GENDER:$1|प्रबंधक}}",
        "group-bureaucrat-member": "{{GENDER:$1|प्रशासक}}",
-       "group-suppress-member": "{{GENDER:$1|à¤\93वरसाà¤\88à¤\9f}}",
+       "group-suppress-member": "{{GENDER:$1|à¤\9bà¥\81पानà¥\87 à¤µà¤¾à¤²à¥\87}}",
        "grouppage-user": "{{ns:project}}:सदस्य",
        "grouppage-autoconfirmed": "{{ns:project}}:स्वतः स्थापित सदस्य",
        "grouppage-bot": "{{ns:project}}:बॉट",
        "grouppage-sysop": "{{ns:project}}:प्रबंधक",
        "grouppage-bureaucrat": "{{ns:project}}:प्रशासक",
-       "grouppage-suppress": "{{ns:project}}:à¤\93वरसाà¤\88à¤\9f",
+       "grouppage-suppress": "{{ns:project}}:à¤\9bà¥\81पाना",
        "right-read": "पृष्ठ पढ़ें",
        "right-edit": "पृष्ठ सम्पादित करें",
        "right-createpage": "पृष्ठ बनाएँ (जो चर्चा पृष्ठ नहीं हैं)",
        "right-createtalk": "वार्ता पृष्ठ बनाएँ",
        "right-createaccount": "नये सदस्य खाते बनाएँ",
+       "right-autocreateaccount": "बाहरी खाते से स्वतः प्रवेश",
        "right-minoredit": "अपने बदलाव छोटे चिन्हित करें",
        "right-move": "पृष्ठ स्थानांतरित करें",
        "right-move-subpages": "पृष्ठ उपपृष्ठों सहित स्थानांतरीत करें",
        "right-managechangetags": "डेटाबेस से [[Special:Tags|चिप्पियाँ]] बनायें और हटायें",
        "right-applychangetags": "प्रयोग में लाइये [[Special:Tags|tags]] किसी के बदलाव के साथ।",
        "right-changetags": "जमा करो और हटाओ स्वतंत्र [[Special:Tags|टैग]] व्यक्तिगत अवतरणों और लॉग प्रविक्तियों पर",
+       "grant-generic": "\"$1\" अधिकार संग्रह",
+       "grant-group-page-interaction": "पृष्ठों से जुड़ें",
+       "grant-group-file-interaction": "मीडिया से जुड़ें",
+       "grant-group-watchlist-interaction": "ध्यानसूची से जुड़ें",
        "grant-group-email": "ई-मेल भेजें",
+       "grant-group-high-volume": "उच्च कार्य गतिविधि करें",
+       "grant-group-customization": "पसंद और तय",
+       "grant-group-administration": "प्रबंधकीय कार्य करें",
+       "grant-group-other": "अन्य गतिविधि",
+       "grant-blockusers": "प्रतिबंधित और अप्रतिबंधित करना",
        "grant-createaccount": "खाता बनाएँ",
+       "grant-createeditmovepage": "निर्माण, सम्पादन, और स्थानांतरण करना",
+       "grant-delete": "लेख, अवतरण और लॉग हटाना",
+       "grant-editinterface": "मीडियाविकि नामस्थान और सदस्य सीएसएस/जेएस को संपादित करना।",
        "grant-editmycssjs": "अपने सदस्य सीएसएस/जेएस को संपादित करें",
        "grant-editmyoptions": "अपने सदस्य पसंद को संपादित करें",
        "grant-editmywatchlist": "ध्यानसूची संपादित करें",
        "grant-editpage": "बने पृष्ठ संपादित करें",
        "grant-editprotected": "सुरक्षित पृष्ठ संपादित करें",
+       "grant-highvolume": "अत्यधिक तेजी से सम्पादन",
+       "grant-oversight": "सदस्य को छुपाना और अवतरण हटाना",
+       "grant-patrol": "पृष्ठों को जांचा हुआ चिन्हित करना",
+       "grant-protect": "पृष्ठों को सुरक्षित व असुरक्षित करना",
+       "grant-rollback": "पृष्ठ से सम्पादन वापस लेना",
        "grant-sendemail": "अन्य सदस्यों को ई-मेल भेजें",
+       "grant-uploadeditmovefile": "फ़ाइल अपलोड, बदलना, स्थानांतरण करना",
        "grant-uploadfile": "नए फ़ाइल डालें",
        "grant-basic": "सामान्य अधिकार",
        "grant-viewdeleted": "हटाये गए फ़ाइल व पृष्ठ देखें",
        "action-protect": "इस पृष्ठ के सुरक्षा स्तर बदलने",
        "action-rollback": "किसी पृष्ठ का अंतिम सम्पादन करने वाले सदस्य के सम्पादन वापिस लेने",
        "action-import": "किसी और विकि से पृष्ठ आयात करने",
-       "action-importupload": "फ़ाइल अपलोड द्वारा यह पृष्ठ आयात करे",
+       "action-importupload": "फ़ाइल अपलोड द्वारा यह पृष्ठ आयात करे",
        "action-patrol": "अन्य सदस्यों के सम्पादन परीक्षित करने",
        "action-autopatrol": "अपने सम्पादन स्वचालित रूप से परीक्षित करने",
        "action-unwatchedpages": "ऐसे पृष्ठ जो किसी की ध्यानसूची में नहीं हैं की सूची देखने",
        "uploaded-script-svg": "अपलोड की गयी एसवीजी फ़ाइल में स्क्रीप्ट अवयव \"$1\" पाया गया।",
        "uploaded-hostile-svg": "अपलोड की गयी एसवीजी फाइल के शैली अवयव में असुरक्षित सीएसएस पायी गयी।",
        "uploaded-event-handler-on-svg": "सेटिंग ईवेंट हैंडलर (आयोजन प्रबन्धनकर्ता वरियता) <code>$1=\"$2\"</code> एसवीजी फ़ाइल में अनुमत नहीं है।",
+       "uploaded-href-attribute-svg": "href केवल एसवीजी फ़ाइल हेतु ही http:// या https:// उपयोग करने देता है। <code>&lt;$1 $2=\"$3\"&gt;</code>",
        "uploaded-href-unsafe-target-svg": "अपलोड की गयी फ़ाइल में असुरक्षित लक्ष्य <code>&lt;$1 $2=\"$3\"&gt;</code> पाये गए।",
        "uploaded-animate-svg": "चिप्पि \"animate\" पायी गई जिससे href परिवर्तित हो सकता है, अपलोड की गयी फ़ाइल में \"from\" विशेषता <code>&lt;$1 $2=\"$3\"&gt;</code> काम में ली जा रही है।",
        "uploaded-setting-event-handler-svg": "विकल्प आयोजन-संभालने वाला अवरोधित है, एसवीजी फ़ाइल में मिला <code>&lt;$1 $2=\"$3\"&gt;</code> है।",
        "upload-too-many-redirects": "इस यू॰आर॰एल में अत्यधिक पुनर्निर्देशन हैं",
        "upload-http-error": "एक एच॰टी॰टी॰पी त्रुटि आई: $1",
        "upload-copy-upload-invalid-domain": "कॉपी अपलोड इस डोमेन से उपलब्ध नहीं हैं।",
+       "upload-foreign-cant-upload": "यह विकि अन्य फ़ाइल संग्रह में अपलोड हेतु तय नहीं किया गया है।",
        "upload-dialog-title": "फ़ाइल डालें",
        "upload-dialog-button-cancel": "रद्द करें",
        "upload-dialog-button-done": "पूर्ण हुआ",
        "upload-dialog-button-upload": "डालें",
        "upload-form-label-infoform-title": "विवरण",
        "upload-form-label-infoform-name": "नाम",
+       "upload-form-label-infoform-name-tooltip": "एक अनोखा विवरण शीर्षक इस फ़ाइल हेतु डालें, जी इसे फ़ाइल के रूप में दिखाये। आप इसके लिए साधारण भाषा और रिक्त स्थान का उपयोग कर सकते हैं। फ़ाइल प्रारूप को न जोड़ें। \\",
        "upload-form-label-infoform-description": "विवरण",
+       "upload-form-label-infoform-description-tooltip": "छोटे रूप में बतायें इस के उलेखनीयता के बारे में। \n चित्र हेतु, जो मुख्य वस्तु नहीं दिखाया गया है आदि के स्थान।",
        "upload-form-label-usage-title": "उपयोग",
        "upload-form-label-usage-filename": "फ़ाइल का नाम",
        "foreign-structured-upload-form-label-own-work": "यह मेरा कार्य है",
        "backend-fail-read": "फ़ाइल $1 पढ़ी नहीं जा सकी।",
        "backend-fail-create": "फ़ाइल $1 लिखी नहीं जा सकी।",
        "backend-fail-maxsize": "फ़ाइल $1 लिखी नहीं जा सकी क्योंकि यह {{PLURAL:$2|$2 बाईट}} से बड़ी है।",
-       "backend-fail-readonly": "भंडारण बैकेंड \"$1\" इस समय केवल पढ़ा जा सकता है (रीड-ओन्ली है)। दिया गया कारण था: \"$2\"",
+       "backend-fail-readonly": "भंडारण बैकेंड \"$1\" इस समय केवल पढ़ा जा सकता है (रीड-ओन्ली है)। दिया गया कारण था: <em>$2</em>",
        "backend-fail-synced": "फ़ाइल \"$1\" आतंरिक भंडारण बैकेंड में असंगत स्थिति में है।",
        "backend-fail-connect": "\"$1\" भंडारण बैकेंड से सम्पर्क स्थापित नहीं किया जा सका।",
        "backend-fail-internal": "भंडारण बैकेंड \"$1\" में कोई अज्ञात त्रुटि उत्पन्न हुई।",
        "uploadstash-clear": "स्टैश की गई फ़ाइलें साफ़ करें",
        "uploadstash-nofiles": "आपके पास कोई स्टैश की हुई फ़ाइलें नहीं हैं।",
        "uploadstash-badtoken": "वह कार्य असफल रहा, सम्भवतः आपके सम्पादन प्रमाणपत्र की अवधि समाप्त हो गई है। पुनः प्रयास करें।",
-       "uploadstash-errclear": "à¥\9eाà¤\87लà¥\8bà¤\82 à¤\95à¥\8b à¤¸à¤¾à¥\9e करना असफल रहा।",
+       "uploadstash-errclear": "फ़ाà¤\87लà¥\8bà¤\82 à¤\95à¥\8b à¤¸à¤¾à¤«à¤¼ करना असफल रहा।",
        "uploadstash-refresh": "फ़ाइलों की सूची रिफ़्रेश करें",
        "invalid-chunk-offset": "अग्राह्य चंक ऑफ़सेट",
        "img-auth-accessdenied": "अनुमति नहीं है",
        "filehist-deleteall": "सभी हटाएँ",
        "filehist-deleteone": "हटाएँ",
        "filehist-revert": "पूर्ववत करें",
-       "filehist-current": "सदà¥\8dय",
+       "filehist-current": "वरà¥\8dतमान",
        "filehist-datetime": "दिनांक/समय",
        "filehist-thumb": "अंगूठाकार प्रारूप",
        "filehist-thumbtext": "$1 के संस्करण का अंगूठाकार प्रारूप।",
        "uploadnewversion-linktext": "इस फ़ाइल का नया अवतरण अपलोड करें",
        "shared-repo-from": "$1 से",
        "shared-repo": "एक साझे भंडार",
+       "shared-repo-name-wikimediacommons": "विकिमीडिया कॉमन्स",
        "upload-disallowed-here": "आप इस फ़ाइल को अधिलेखित नहीं कर सकते।",
        "filerevert": "$1 पूर्ववत करें",
        "filerevert-legend": "फ़ाइल पूर्ववत करें",
        "filerevert-intro": "आप '''[[Media:$1|$1]]''' के [$4 $2 को $3 बजे के अवतरण] को पूर्ववत कर रहे हैं।",
        "filerevert-comment": "कारण:",
-       "filerevert-defaultcomment": "$1 को $2 बजे के अवतरण को पूर्ववत किया",
+       "filerevert-defaultcomment": "$2, $1 ($3) के अवतरण को पूर्ववत किया",
        "filerevert-submit": "पूर्ववत करें",
        "filerevert-success": "'''[[Media:$1|$1]]''' को [$4 $2 को $3 बजे के अवतरण] को पूर्ववत कर दिया गया है।",
        "filerevert-badversion": "दिये हुए समय से मेल खाने वाला इस फ़ाइल का पुराना अवतरण नहीं है।",
        "nopagetext": "आपके द्वारा लक्षित पृष्ठ मौजूद नहीं है।",
        "pager-newer-n": "{{PLURAL:$1|नया|नये}} $1",
        "pager-older-n": "{{PLURAL:$1|पुराना|पुराने}} $1",
-       "suppress": "à¤\93वरसाà¤\87à¤\9f",
+       "suppress": "à¤\9bà¥\81पाना",
        "querypage-disabled": "प्रदर्शन कारणों से यह विशेष पृष्ठ अक्षम किया गया है।",
-       "apihelp": "ए पी आई सहाएता",
+       "apihelp": "एपीआई सहायता",
        "apihelp-no-such-module": "मॉड्यूल \"$1\" नहीं मिला",
        "apisandbox": "ए॰पी॰आइ प्रयोगस्थल",
+       "apisandbox-jsonly": "एपीआई प्रयोगपृष्ठ का उपयोग करने हेतु जावास्क्रिप्ट अनिवार्य है।",
        "apisandbox-api-disabled": "इस स्थल पर ए०पी०आई० सक्षम नहीं हैं।",
-       "apisandbox-intro": "याद रखिए कि, हालांकि यह प्रयोगपृष्ठ है, इस पृष्ठ पर किए गए आपके काम इस विकि में बदलाव ला सकते हैं।",
+       "apisandbox-intro": "इस पृष्ठ का उपयोग <strong>मीडियाविकि वेब एपीआई</strong> के लिए करें। इसके उपयप्ग हेतु देखें: [[mw:API:Main page|एपीआई प्रलेखन]] उदाहरण: [//www.mediawiki.org/wiki/API#A_simple_example मुख्यपृष्ठ के सामग्री हेतु]",
+       "apisandbox-fullscreen": "विस्तार करें",
+       "apisandbox-fullscreen-tooltip": "ब्राउज़र को पूरी तरह भरने हेतु विस्तार करें।",
        "apisandbox-unfullscreen": "पृष्ठ दिखाएँ",
+       "apisandbox-unfullscreen-tooltip": "प्रयोगपृष्ठ हिस्से को छोटा करें, जिससे मीडियाविकि के संचरण कड़ी उपलब्ध हो जाएगा।",
        "apisandbox-submit": "अनुरोध करें",
        "apisandbox-reset": "स्पष्ट",
        "apisandbox-retry": "दुबारा प्रयास करें",
+       "apisandbox-loading": "एपीआई मॉड्यूल के द्वारा जानकारी लोड कर रहा \"$1\"...",
+       "apisandbox-load-error": "एपीआई मॉड्यूल के जानकारी लोड करते समय त्रुटि हुई \"$1\": $2",
+       "apisandbox-no-parameters": "इस एपीआई मॉड्यूल का कोई प्राचल नहीं है।",
+       "apisandbox-helpurls": "सहायता कड़ी",
        "apisandbox-examples": "उदाहरण",
+       "apisandbox-dynamic-parameters": "अन्य प्राचल",
+       "apisandbox-dynamic-parameters-add-label": "प्राचल जोड़ें:",
+       "apisandbox-dynamic-parameters-add-placeholder": "प्राचल नाम",
+       "apisandbox-dynamic-error-exists": "प्राचल नाम \"$1\" पहले से मौजूद है।",
+       "apisandbox-deprecated-parameters": "प्राचल पुराना हो चुका है",
+       "apisandbox-fetch-token": "टोकन स्वतः भरें",
+       "apisandbox-submit-invalid-fields-title": "कुछ जगह अमान्य है",
+       "apisandbox-submit-invalid-fields-message": "कृपया चिन्हित जगह को ठीक कर दुबारा प्रयास करें।",
        "apisandbox-results": "परिणाम",
+       "apisandbox-sending-request": "एपीआई अनुरोध भेज रहा...",
+       "apisandbox-loading-results": "एपीआई परिणाम ले रहा...",
+       "apisandbox-results-error": "एपीआई के समय कोई त्रुटि हुई: $1",
        "apisandbox-request-url-label": "अनुरोध URL:",
-       "apisandbox-request-time": "अनुरोध समय: $1",
+       "apisandbox-request-time": "अनुरोध समय: {{PLURAL:$1|$1 मि}}",
+       "apisandbox-results-fixtoken": "टोकन सही करें और दोबारा भेजें।",
+       "apisandbox-results-fixtoken-fail": "टोकन \"$1\" डालने में विफल",
+       "apisandbox-alert-page": "इस पृष्ठ के जगह अमान्य है।",
+       "apisandbox-alert-field": "जगह में डाला गया जानकारी अमान्य है।",
        "booksources": "पुस्तकों के स्रोत",
        "booksources-search-legend": "पुस्तकों के स्रोत खोजें",
        "booksources-isbn": "आइ॰एस॰बी॰एन:",
        "booksources-text": "नीचे पुरानी और नई पुस्तकें बेचने वाली वेबसाइटों के एड्रेस हैं, जिसमें आपको आप द्वारा खोजी जाने वाली पुस्तक के बारे में अधिक जानकारी मिल सकती है:",
        "booksources-invalid-isbn": "यह आइ॰एस॰बी॰एन सही नहीं लग रहा है; मूल स्रोत से नकल करने में हुई त्रुटि के लिए जाँचें।",
        "specialloguserlabel": "कर्ता:",
-       "speciallogtitlelabel": "प्रयोजन (शीर्षक अथवा सदस्यनाम):",
+       "speciallogtitlelabel": "प्रयोजन (शीर्षक अथवा {{ns:सदस्यनाम}}:सदस्य नाम):",
        "log": "लॉग",
        "logeventslist-submit": "दिखाएँ",
        "all-logs-page": "सभी सार्वजनिक लॉग",
        "log-edit-tags": "चुने गए लॉग प्रविक्तियों एक सम्पादन टैग",
        "checkbox-select": "चुनें: $1",
        "checkbox-all": "सभी",
+       "checkbox-none": "कोई नहीं",
+       "checkbox-invert": "बदलें",
        "allpages": "सभी पृष्ठ",
        "nextpage": "अगला पृष्ठ ($1)",
        "prevpage": "पिछला पृष्ठ ($1)",
        "listgrouprights-namespaceprotection-header": "नामस्थान की बंदिशें",
        "listgrouprights-namespaceprotection-namespace": "नामस्थान",
        "listgrouprights-namespaceprotection-restrictedto": "उपयोगकर्ता को सम्पादन करने में सक्षम करने वाले अधिकार",
+       "listgrants": "प्रदान",
+       "listgrants-summary": "यह प्रदान की गई सूची है। सदस्य अपने खाते को अनुपयोग के द्वारा उपयोग कर सकते हैं, लेकिन केवल कुछ सीमित अधिकार तक ही। यह अधिकार सदस्य द्वारा दिया गया अधिकार तक ही सीमित रहता है। यहाँ [[{{MediaWiki:Listgrouprights-helppage}}|अन्य जानकारी]] भी है, जो एक अधिकार के बारे में बताता है। \\",
+       "listgrants-grant": "अधिकार",
        "listgrants-rights": "अधिकार",
        "trackingcategories": "चिह्नित श्रेणियाँ",
        "trackingcategories-summary": "इस पृष्ठ पर उन जोड़ने वाली श्रेणियों की सूची मिलती है जो स्वतः रूप से मीडियाविकि सॉफ़्टवेयर द्वारा बनते हैं। उनके नाम सम्बंधित प्रणालि सन्देश को बदलने से {{ns:8}} नामस्थान में बदले जा सकते हैं।",
        "defemailsubject": "{{SITENAME}} ई-मेल \"$1\" सदस्य से",
        "usermaildisabled": "सदस्य ई-मेल अक्षम किया गया",
        "usermaildisabledtext": "आप इस विकि पर ई-मेल अन्य सदस्यों को ई-मेल नहीं भेज सकते हैं",
-       "noemailtitle": "à¤\95à¥\8bà¤\88 à¤\88-मà¥\87ल à¤\8fडà¥\8dरà¥\87स नहीं",
+       "noemailtitle": "à¤\95à¥\8bà¤\88 à¤\88-मà¥\87ल à¤ªà¤¤à¤¾ नहीं",
        "noemailtext": "इस सदस्य ने वैध ई-मेल पता नहीं दिया है।",
        "nowikiemailtext": "इस सदस्य ने अन्य सदस्यों से ई-मेल न प्राप्त करने का फ़ैसला लिया हुआ है।",
        "emailnotarget": "प्राप्तकर्ता के लिए अस्तित्वहीन या अमान्य सदस्यनाम।",
        "emailtarget": "प्राप्तकर्ता का सदस्यनाम भरें",
        "emailusername": "सदस्यनाम:",
-       "emailusernamesubmit": "à¤\9cमा à¤\95रें",
+       "emailusernamesubmit": "भà¥\87à¤\9cें",
        "email-legend": "किसी और {{SITENAME}} सदस्य को ई-मेल भेजें",
        "emailfrom": "प्रेषक:",
        "emailto": "प्राप्तकर्ता:",
        "changecontentmodel-nodirectediting": "$1 सामग्री सीधे सम्पादन समर्थित नहीं करता है",
        "log-name-contentmodel": "सामाग्री परिवर्तन लॉग",
        "log-description-contentmodel": "आयोजन जो इस पृष्ठ के सामग्री से मिलते जुलते हैं",
+       "logentry-contentmodel-new": "$1 ने  $3 पृष्ठ का {{GENDER:$2|निर्माण}} किया बिना मूल सामग्री प्रारूप के \"$5\"",
        "logentry-contentmodel-change": "$1 ने $3 पृष्ठ का सामग्री \"$4\" से \"$5\" {{GENDER:$2|परिवर्तित किया}}",
        "logentry-contentmodel-change-revertlink": "पूर्ववत करें",
        "logentry-contentmodel-change-revert": "पूर्ववत करें",
        "contribsub2": "{{GENDER:$3|$1}} ($2) के लिये",
        "contributions-userdoesnotexist": "उपयोगकर्ता खाता  \"$1\" पंजीकृत नहीं है।",
        "nocontribs": "इन कसौटियों से मिलनेवाले बदलाव मिले नहीं।",
-       "uctop": "(मà¥\8cà¤\9cà¥\82दा)",
+       "uctop": "(वरà¥\8dतमान)",
        "month": "इस महिनेसे (और पुरानें):",
        "year": "इस सालसे (और पुराने):",
        "sp-contributions-newbies": "सिर्फ़ नये सदस्यों के योगदान दर्शायें",
        "sp-contributions-blocked-notice": "यह सदस्य फ़िलहाल अवरोधित हैं। सदंर्भ के लिए ताज़ातरीन अवरोध चिट्ठा प्रविष्टि नीचे है:",
        "sp-contributions-blocked-notice-anon": "यह आईपी पता अभी अवरोधित है। \nनवीनतम अवरोध अभिलेख प्रविष्टि सन्दर्भ के लिए नीचे दी गई है:",
        "sp-contributions-search": "योगदान के लिये खोज",
-       "sp-contributions-username": "à¤\86à¤\88पà¥\80 à¤\8fडà¥\8dरà¥\87स या सदस्यनाम:",
+       "sp-contributions-username": "à¤\86à¤\88पà¥\80 à¤ªà¤¤à¤¾ या सदस्यनाम:",
        "sp-contributions-toponly": "केवल उन सम्पादनों को दिखाएँ जो नवीनतम संशोधन हैं",
        "sp-contributions-newonly": "केवल वे सम्पादन दिखाएँ जिनसे पृष्ठ निर्मित हुए हों",
        "sp-contributions-submit": "खोजें",
        "block-log-flags-hiddenname": "सदस्य नाम छिपा हुआ",
        "range_block_disabled": "प्रबंधकोंको अब रेंज ब्लॉक करने की अनुमति नहीं हैं।",
        "ipb_expiry_invalid": "अवैध समाप्ति कालावधी।",
+       "ipb_expiry_old": "समाप्ती समय बीत चुका है।",
        "ipb_expiry_temp": "छुपायें हुए सदस्यनाम ब्लॉक्स हमेशा के लिये होने चाहिये।",
        "ipb_hide_invalid": "इस खाते को छिपा नहीं पाए; इस से {{PLURAL:$1|एक सम्पादन किया गया है|$1 सम्पादन किये गये हैं}}।",
        "ipb_already_blocked": "\"$1\" को पहलेसे ब्लॉक हैं",
        "thumbnail_gd-library": "अवैध जीडी लाइब्रेरी जमाव: कार्यसमूह $1 मौजूद नहीं है",
        "thumbnail_image-missing": "लगता है संचिका नामौजूद है: $1",
        "thumbnail_image-failure-limit": "हाल के समय में इस थंबनेल को दूसरा रूप देने के कई असफल प्रयास हुए हैं ($1 या उससे अधिक) । कृपया फिर से प्रयास कुछ समय बाद कीजिए।",
-       "import": "पà¥\83षà¥\8dठ à¤\87मà¥\8dपà¥\8bरà¥\8dà¤\9f करें",
-       "importinterwiki": "किसी और विकि से आयात करे",
+       "import": "पà¥\83षà¥\8dठ à¤\86यात करें",
+       "importinterwiki": "किसी और विकि से आयात करे",
        "import-interwiki-text": "आयात करने के लिये एक विकि और एक पृष्ठ चुनें।\nअवतरण दिनांक और संपादक नाम ज्यों-के-त्यों रखे जाएँगे।\nअन्य विकि से सभी आयात [[Special:Log/import|आयात लॉग]] में डाली जाती हैं।",
        "import-interwiki-sourcewiki": "स्रोत विकि:",
        "import-interwiki-sourcepage": "स्रोत पृष्ठ:",
        "tooltip-pt-mycontris": "आपके योगदानों की सूची",
        "tooltip-pt-anoncontribs": "इस आईपी पते से संपादन की सूची",
        "tooltip-pt-login": "आपको सत्रारम्भ करने के लिए प्रोत्साहित किया जाता है; लेकिन यह अनिवार्य नहीं है",
-       "tooltip-pt-logout": "सतà¥\8dराà¤\82त",
+       "tooltip-pt-logout": "पà¥\8dरसà¥\8dथान",
        "tooltip-pt-createaccount": "हमारा सुझाव है की आप खाता बनाएँ और लॉगिन करें, परन्तु यह अनिवार्य नहीं है",
        "tooltip-ca-talk": "सामग्री पृष्ठ के बारे में वार्तालाप",
        "tooltip-ca-edit": "यह पृष्ठ संपादित करें",
        "tooltip-t-recentchangeslinked": "यहाँ जुड़े हुए सभी पन्नों में हुए हाल के बदलाव",
        "tooltip-feed-rss": "इस पृष्ठ की आरएसएस फ़ीड",
        "tooltip-feed-atom": "इस पृष्ठ की अणु फ़ीड",
-       "tooltip-t-contributions": "इस सदस्य के योगदान की सूची",
-       "tooltip-t-emailuser": "इस सदस्य को इमेल भेजें",
+       "tooltip-t-contributions": "{{GENDER:$1|इस सदस्य}} के योगदाओं की सूची",
+       "tooltip-t-emailuser": "{{GENDER:$1|इस सदस्य}} को इमेल भेजें",
        "tooltip-t-info": "इस पृष्ठ के बारे में अधिक जानकारी",
        "tooltip-t-upload": "फ़ाइल अपलोड करें",
        "tooltip-t-specialpages": "सभी विशेष पृष्ठों की सूची",
        "tooltip-preferences-save": "वरीयताएं सहेजें",
        "tooltip-summary": "एक संक्षिप्त सारांश दर्ज करें",
        "common.css": "/* यहां रखी css सभी त्वचाओंपर असर करेगी */",
+       "print.css": "/* CSS यहाँ डालने से यह प्रिंट निकालते समय ही प्रभावी होगा। */",
+       "noscript.css": "/* CSS यहाँ डालने से यह केवल जावास्क्रिप्ट निष्क्रिय सदस्यो पर ही प्रभावी होगा। */",
+       "group-autoconfirmed.css": "/* CSS यहाँ डालने से यह केवल स्वतः स्थापित सदस्यो पर ही प्रभावी होगा। */",
+       "group-user.css": "/* CSS यहाँ डालने से यह केवल पंजीकृत सदस्यो पर ही प्रभावी होगा। */",
+       "group-bot.css": "/* CSS यहाँ डालने से यह केवल बॉट सदस्यो पर ही प्रभावी होगा। */",
+       "group-sysop.css": "/* CSS यहाँ डालने से यह केवल प्रबन्धकों पर ही प्रभावी होगा। */",
+       "group-bureaucrat.css": "/* CSS यहाँ डालने से यह केवल प्रशासकों सदस्यो पर ही प्रभावी होगा। */",
        "common.js": "/* यहां लिखी गई जावास्क्रीप्ट सभी सदस्योंके लिये इस्तेमाल में लाई जायेगी। */",
+       "group-autoconfirmed.js": "/* जावास्क्रिप्ट यहाँ डालने से यह केवल स्वतः स्थापित सदस्यो पर ही प्रभावी होगा। */",
+       "group-user.js": "/* जावास्क्रिप्ट यहाँ डालने से यह केवल पंजीकृत सदस्यो पर ही प्रभावी होगा। */",
+       "group-bot.js": "/* जावास्क्रिप्ट यहाँ डालने से यह केवल बॉट सदस्यो पर ही प्रभावी होगा। */",
+       "group-sysop.js": "/* जावास्क्रिप्ट यहाँ डालने से यह केवल प्रबन्धकों पर ही प्रभावी होगा। */",
+       "group-bureaucrat.js": "/* जावास्क्रिप्ट यहाँ डालने से यह केवल प्रशासकों पर ही प्रभावी होगा। */",
        "anonymous": "{{SITENAME}} के {{PLURAL:$1||}} बेनामी सदस्य",
        "siteuser": "विकिपीडिया सदस्य  $1",
        "anonuser": "{{SITENAME}} अज्ञात उपयोगकर्ता $1",
        "lastmodifiedatby": "इस पृष्ठ का आखिरी बदलाव $3 ने $2, $1 पर किया।",
        "othercontribs": "$1 के कार्य के अनुसार।",
        "others": "अन्य",
-       "siteusers": "{{SITENAME}} {{PLURAL:$2|सदस्य|सदस्य}} $1",
+       "siteusers": "{{SITENAME}} {{PLURAL:$2|{{GENDER:$1|सदस्य}}|सदस्य}} $1",
        "anonusers": "{{SITENAME}} अनाम {{PLURAL:$2|सदस्य|सदस्य}} $1",
        "creditspage": "पान श्रेय नामावली",
        "nocredits": "इस पृष्ठ के लिये क्रेडिट जानकारी नहीं है।",
        "pageinfo-category-files": "फ़ाइलों की संख्या",
        "markaspatrolleddiff": "जाँचा हुआ चिन्हित करें",
        "markaspatrolledtext": "इस पृष्ठ को जाँचा हुआ चिन्हित करें",
+       "markaspatrolledtext-file": "इस फ़ाइल संस्करण को जांचा हुआ चिन्हित करें",
        "markedaspatrolled": "जाँचा हुआ चिन्हित किया",
        "markedaspatrolledtext": "[[:$1]] का चयनित अवतरण जाँचा हुआ चिन्हित किया गया।",
        "rcpatroldisabled": "हाल में हुए बदलावों का परीक्षण अक्षम है",
        "newimages-legend": "छननी",
        "newimages-label": "संचिका नाम (या उसका अंश):",
        "newimages-showbots": "बॉट के अपलोड दिखाइये",
+       "newimages-hidepatrolled": "जाँचा हुआ अपलोड छुपाएँ",
        "noimages": "देखने के लिए कुछ नहीं है।",
        "ilsubmit": "खोजें",
        "bydate": "तिथि अनुसार",
        "metadata-expand": "विस्तृत जानकारियां दिखाएं",
        "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-imagewidth": "चौडाई",
+       "exif-imagewidth": "à¤\9aà¥\8cड़ाà¤\88",
        "exif-imagelength": "ऊँचाई",
        "exif-bitspersample": "प्रति घटक बीट्स",
        "exif-compression": "कम्प्रेशन योजना",
        "exif-compression-4": "CCITT ग्रुप 4 फ़ैक्स एनकोडिंग",
        "exif-copyrighted-true": "कॉपीराईट",
        "exif-copyrighted-false": "कॉपीराइट स्थिति अनिर्दिष्ट",
+       "exif-photometricinterpretation-0": "काला और सफेद (सफेद 0 है)",
+       "exif-photometricinterpretation-1": "काला और सफेद (काला 0 है)",
        "exif-unknowndate": "अज्ञात तारीख",
        "exif-orientation-1": "सामान्य",
        "exif-orientation-2": "हॉरिज़ॉन्टली बदला",
        "confirmrecreate": "सदस्य [[User:$1|$1]] ([[User talk:$1|वार्ता]]) ने आपके द्वारा संपादन शुरू होने के बाद यह पृष्ठ निम्नलिखित कारण देकर हटाया हैं:\n: ''$2''\nक्या आप इसे फिरसे बनाना चाहतें हैं, इसकी निश्चिती करें।",
        "confirmrecreate-noreason": "जब आपने इस पृष्ठ का सम्पादन शुरू किया था, उसके बाद से सदस्य [[User:$1|$1]] ([[User talk:$1|talk]]) ने इसे हटा दिया है।  कृपया पुष्टि करें कि आप इस पृष्ठ को पुनः बनाना चाहते हैं।",
        "recreate": "फिरसे बनायें",
+       "unit-pixel": "px",
        "confirm_purge_button": "ओके",
        "confirm-purge-top": "क्या आप यह पृष्ठ का कैश ख़ाली करने चाहिए?",
        "confirm-purge-bottom": "किसी पृष्ठ को मिटाने से संचिका साफ़ हो जाती है और इस वजह से ताज़ातरीन संस्करण प्रकट हो जाता है।",
        "iranian-calendar-m10": "डे",
        "iranian-calendar-m11": "बाहमान",
        "iranian-calendar-m12": "एसफण्ड (Esfand)",
+       "hijri-calendar-m1": "मुहर्रम",
+       "hijri-calendar-m2": "सफर",
        "hebrew-calendar-m1": "तिश्रेई (Tishrei)",
        "hebrew-calendar-m2": "शेस्वान (Cheshvan)",
        "hebrew-calendar-m3": "किस्लेव (Kislev)",
        "redirect-page": "पृष्ठ आइ॰डी",
        "redirect-revision": "पृष्ठ अवतरण संख्या",
        "redirect-file": "फ़ाइल नाम",
+       "redirect-logid": "प्रवेश आईडी",
        "redirect-not-exists": "यह मान प्राप्त नहीं हुआ",
        "fileduplicatesearch": "फ़ाईल द्विरावृत्ति खोजें",
        "fileduplicatesearch-summary": "हैश वैल्यू के अनुसार फ़ाईल की द्विरावृत्ति खोजें।",
        "tags-deactivate": "निष्क्रिय करें",
        "tags-hitcount": "$1 {{PLURAL:$1|बदलाव|बदलाव}}",
        "tags-manage-no-permission": "आपको बदलाव टैग के प्रबंधन की अनुमति नहीं है।",
+       "tags-manage-blocked": "आप प्रतिबंधित रहते समय टैग में कोई जोड़ना या हटाने का कार्य नहीं कर सकते हैं।",
        "tags-create-heading": "नया टैग बनाएँ",
        "tags-create-explanation": "पुनः निर्धारित रूप से, नवनिर्मित टैग उपयोगकर्ताओं और बॉट के लिए मौजूद रहेंगे।",
        "tags-create-tag-name": "चिप्पी का नाम",
        "tags-deactivate-not-allowed": "टैग \"$1\" को असक्रिय करना सम्भव नहीं है।",
        "tags-deactivate-submit": "निष्क्रिय करें",
        "tags-apply-no-permission": "आपको अनुमति नहीं है कि बदलाव टैगों को अपने बदलावों से जोड़ें।",
+       "tags-apply-blocked": "आप प्रतिबंधित रहते समय टैग में कोई बदलाव नहीं कर सकते हैं।",
        "tags-apply-not-allowed-one": "टैग \"$1\" मानवीय रूप से जोड़े जाने की अनुमति नहीं है।",
        "tags-apply-not-allowed-multi": "निम्न लिखित {{PLURAL:$2|टैग की अनुमति नहीं है|टैगों की अनुमति नहीं है}} कि उसे मानवीय रूप से प्रयोग में लाया जाए: $1",
        "tags-update-no-permission": "आपको व्यक्तिगत संशोधनों या लॉग प्रविष्टियों से बदलाव टैग जोड़ने या उन्हें हटाने की अनुमति नहीं है।",
+       "tags-update-blocked": "आप प्रतिबंधित रहते समय टैग में कोई जोड़ना या हटाने का कार्य नहीं कर सकते हैं।",
        "tags-update-add-not-allowed-one": "टैग \"\"$1\" को मानवीय रूप से जोड़ा नहीं जा सकता",
        "tags-update-add-not-allowed-multi": "निम्न लिखित {{PLURAL:$2|टैग|या टैगों का समूह}} मानवीय रूप से जोड़ा नहीं जा सकता है: $1",
        "tags-update-remove-not-allowed-one": "टैग \"$1\" को हटाए जाने की अनुमति नहीं है।",
        "tags-edit-revision-legend": "टैगों को {{PLURAL:$1|इस संशोधन|सभी $1 संशोधनों}} से जोड़िये या हटाइये।",
        "tags-edit-logentry-legend": "टैगों को {{PLURAL:$1|इस लॉग प्रविष्टि|सभी $1 लॉग प्रविष्टियों}} से जोड़िए या हटाइये।",
        "tags-edit-existing-tags": "मौजूद टैग",
-       "tags-edit-existing-tags-none": "\"कुछ भी नहीं\"",
+       "tags-edit-existing-tags-none": "<em>कुछ नहीं</em>",
        "tags-edit-new-tags": "नए टैग",
        "tags-edit-add": "इन टैगों को जोड़िए:",
        "tags-edit-remove": "इन टैगों को हटाएँ",
        "tags-edit-reason": "कारण:",
        "tags-edit-revision-submit": "बदलाव जोड़िए {{PLURAL:$1|इस अवतरण|$1 अवतरण}}",
        "tags-edit-logentry-submit": "बदलाव जोड़िए {{PLURAL:$1|इस लौग प्रवक्ति|$1 लॉग प्रवक्तियाँ}}",
-       "tags-edit-success": "बदलाव à¤¸à¤«à¤²à¤¤à¤¾ à¤ªà¥\82रà¥\8dवà¤\95 à¤\9cà¥\8bड़à¥\87 à¤\9cा à¤\9aà¥\81à¤\95à¥\87 à¤¹à¥\88à¤\82।",
+       "tags-edit-success": "बदलाव à¤¸à¤«à¤²à¤¤à¤¾ à¤²à¤¾à¤\97à¥\82 à¤¹à¥\81à¤\88।",
        "tags-edit-failure": "बदलाव नहीं जोडे जा सके हैं: $1",
        "tags-edit-nooldid-title": "अवैध लक्ष्य का संशोधन",
        "tags-edit-nooldid-text": "या तो आपने किसी लक्षित संशोधन का विवरण नहीं दिया है जहाँ इस कार्य को सम्पन्न करना है, या विवरण किया गया संशोधन है ही नहीं।",
        "logentry-suppress-block": "$1 {{GENDER:$2|प्रतिबंधित}} {{GENDER:$4|$3}} जिसमें समय समाप्ति की अवधि है $5 $6",
        "logentry-suppress-reblock": "$1 {{GENDER:$2|बदल दिया गया}} प्रतिबंध सेटिंग {{GENDER:$4|$3}} के लिए जिसमें समय समाप्ति की अवधि है $5 $6",
        "logentry-import-upload": "$1 {{GENDER:$2|आयात किया गया}} $3 फ़ाइल अपलोड के माध्यम से",
+       "logentry-import-upload-details": "$1 ने फ़ाइल अपलोड द्वारा $3 को {{GENDER:$2|आयात}} किया ($4 {{PLURAL:$4|अवतरण|अवतरण}})",
        "logentry-import-interwiki": "$1 {{GENDER:$2|आयात किया गया}} $3 किसी और विकि से",
+       "logentry-import-interwiki-details": "$1 ने $5 से $3 को {{GENDER:$2|आयात}} किया ($4 {{PLURAL:$4|अवतरण|अवतरण}})",
        "logentry-merge-merge": "$1 {{GENDER:$2|विलय किया गया}} $3 को $4 में (संशोधन $5 तक)",
        "logentry-move-move": "$1 ने $3 पृष्ठ $4 पर {{GENDER:$2|स्थानांतरित}} किया",
        "logentry-move-move-noredirect": "$1 ने $3 पर पुनर्निर्देश छोड़े बिना उसे $4 पर {{GENDER:$2|स्थानांतरित}} किया",
        "feedback-adding": "पृष्ठ पर प्रतिक्रिया जोड़ना ...",
        "feedback-back": "पीछे जाएँ",
        "feedback-bugcheck": "शानदार! जांच ले कहीं ये [ $1 known bugs] पहले से ही न हो ।",
-       "feedback-bugnew": "मà¥\88à¤\82 à¤\9cाà¤\81à¤\9a à¤\95à¥\80या। एक नया बग रिपोर्ट करें",
+       "feedback-bugnew": "मà¥\88à¤\82 à¤\9cाà¤\81à¤\9a à¤\95िया, एक नया बग रिपोर्ट करें",
        "feedback-bugornote": "यदि आप किसी तकनीकी परेशानी को विस्तार से समझाने के लिये तैयार हैं तो कृपया [$1 बग फ़ाइल करें]।\nयदि नहीं, तो आप नीचे दिये सरल फ़ॉर्म का प्रयोग कर सकते हैं। आपकी टिप्पणी आपके सदस्य नाम और आपके ब्राउज़र के नाम के सहित \"[$3 $2]\" पृष्ठ में जोड़ दी जाएगी।",
        "feedback-cancel": "रद्द करें",
        "feedback-close": "हो गया",
        "expand_templates_preview": "झलक",
        "expand_templates_preview_fail_html": "<strong>अगर यह वैध पूर्ववावलोकन प्रयास है, तो फिर से प्रयास कीजिए।</strong>\nअगर इससे काम न बने तो [[Special:UserLogout|लॉग आउट होकर]] फिर से लॉग इन हो जाइये।",
        "expand_templates_preview_fail_html_anon": "<em>चूँकि {{SITENAME}} सीधे-साधे रूप से एचटीएमएल-सक्षम है और आप लॉग्ड इन नहीं है, पूर्वावलोकन छिपा हुआ है ताकि सम्भावित जावास्क्रिप्ट हमले को रोका सके।</em>\n\n<strong>अगर यह वैध पूर्वावलोकन प्रयास है तो कृपया [[Special:UserLogin|लॉग इन करके]] फिर से प्रयास कीजिए।</strong>",
-       "pagelanguage": "पृष्ठ भाषा चुनाव",
+       "expand_templates_input_missing": "आपको कम से कम कुछ पाठ्य प्रदान करने पड़ेंगे।",
+       "pagelanguage": "पृष्ठ भाषा बदलें",
        "pagelang-name": "पृष्ठ",
        "pagelang-language": "भाषा",
        "pagelang-use-default": "डिफ़ॉल्ट भाषा का प्रयोग करें",
        "pagelang-select-lang": "भाषा चुनें",
+       "pagelang-submit": "भेजें",
        "right-pagelang": "पृष्ठ भाषा बदलें",
        "action-pagelang": "पृष्ठ भाषा बदलने",
-       "log-name-pagelang": "पà¥\83षà¥\8dठ à¤­à¤¾à¤·à¤¾ à¤¬à¤¦à¤²à¤¾à¤µ à¤²à¥\89à¤\97",
+       "log-name-pagelang": "भाषा बदलाव लॉग",
        "log-description-pagelang": "यह पृष्ठ भाषाओं में परिवर्तन का लॉग है।",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|बदल दिया गया}} पृष्ठ भाषा को $3 के लिए $4 से $5 ।",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|बदल दिया गया}} पृष्ठ भाषा को $3 के लिए $4 से $5।",
        "default-skin-not-found": "ओह! आपकी विकि का पूर्व निर्धारित चमड़ा जैसा कि <code dir=\"ltr\">$wgDefaultSkin</code> में बताया गया है<code>$1</code>, उपलब्ध नहीं है।\n\nआपका इन्स्टालेशन इन चमड़ो को सम्मिलित करता है {{PLURAL:$4|चमड़ा|चमड़े}}। देखिए [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: चमड़ो का सम्मित करना] ताकि आपको जानकारी मिले कि कैसे {{PLURAL:$4|उसे|उनको सम्मिलित किया जाए और निर्धारित को तय करें}}.\n\n$2\n\n; अगर आपने अभी मीडियाविकि इन्स्टाल किया है:\n: आपने शायद गिट से इन्स्टाल किया है, या सीधे स्रोत कोड से किया है जिसके लिए कोई और तरीक़े का प्रयोग किया है। यह तो आशा के अनुरूप है। कोशिश कीजिए कि कुछ चमड़े [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's अमीडिया-विकि के चमड़े वाली डाइरेक्ट्री से डाउन्लोड करें], जिसके लिए आप:\n:* डाउनलोड कीजिए [https://www.mediawiki.org/wiki/Download तारबॉल इन्स्टालर], जो कई चमड़ों और विस्तारों में मौजूद है। आप चमड़ों का कोड <code>skins/</code> उसकी डाइरेक्ट्री से कॉपी-पेस्ट कर सकते हैं। \n:* डाउनलोड कीजिए व्यक्तिगत चमड़े के तारबॉल [https://www.mediawiki.org/wiki/Special:SkinDistributor मीडिया विकि] से।\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins गिट का प्रयोग करके डाउलोड कर सकते हैं].\n: ऐसा करने के दौरान आपकी गिट-रिपॉज़िटरी को कुछ नहीं होना चाहिए यदि आप विकासकर्ता हो। \n; अगर आपने मीडियाविकि को अभी अपग्रेड किया है:\n: मीडियाविकि 1.24 और इसके नवीन रूप स्वतः रूप से चमड़ों को सक्षम नहीं करते (देखिए [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: चमड़ो की स्वतः खोज]). आप निम्न लिखित को पेस्ट कर सकते हैं: {{PLURAL:$5|लाइन|लाइनें}}  <code>LocalSettings.php</code> में ताकि {{PLURAL:$5|वह|सभी}} सक्षम हों जैसा कि इन्स्टाल किए गए {{PLURAL:$5|चमड़े|चमड़ों}} का मामला है:\n\n<pre dir=\"ltr\">$3</pre>\n\n; अगर आपने अभी बदलाव किए हैं<code>LocalSettings.php</code>:\n: डबल-क्लिक करें चमड़े नामों  के आगे ताकि आपको विभिन्न प्रकारों के विकल्प मिलें।",
        "default-skin-not-found-no-skins": "ओह! आपकी विकि का पूर्व निर्धारित चमड़ा जैसा कि <code dir=\"ltr\">$wgDefaultSkin</code> में बताया गया है<code>$1</code>, उपलब्ध नहीं है। \n\nआपके पास कोई इन्स्टाल किया गया चमड़ा नहीं है। \n\n; अगर आपने अभी मीडियाविकि इन्स्टाल किया है या उसका उद्यतन किया है:\n: आपने शायद गिट से इन्स्टाल किया है, या सीधे स्रोत कोड से किया है जिसके लिए कोई और तरीक़े का प्रयोग किया है। यह तो आशा के अनुरूप है। कोशिश कीजिए कि कुछ चमड़े [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's मीडिया-विकि के चमड़े वाली डाइरेक्ट्री से डाउन्लोड करें], जिसके लिए आप:\n:* डाउनलोड कीजिए [https://www.mediawiki.org/wiki/Download तारबॉल इन्स्टालर], जो कई चमड़ों और विस्तारों में मौजूद है। आप चमड़ों का कोड <code>skins/</code> उसकी डाइरेक्ट्री से कॉपी-पेस्ट कर सकते हैं। \n:* डाउनलोड कीजिए व्यक्तिगत चमड़े के तारबॉल [https://www.mediawiki.org/wiki/Special:SkinDistributor मीडिया विकि] से।\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins गिट का प्रयोग करके डाउलोड कर सकते हैं].\n: ऐसा करने के दौरान आपकी गिट-रिपॉज़िटरी को कुछ नहीं होना चाहिए यदि आप विकासकर्ता हो।",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (सक्षम)",
        "mediastatistics": "मीडिया के आंकड़े",
        "mediastatistics-summary": "अपलोड किए गए फ़ाइल प्रकारों के आंकड़े। इसमें केवल नवीनतम फ़ाइल के अवतरण शामिल हैं। पुराने या हटाए गए फ़ाइलों के अवतरणों को अलग रखा गया है। \n\nThis only includes the most recent version of a file. Old or deleted versions of files are excluded.",
        "mediastatistics-nbytes": "{{PLURAL:$1|$1 बाइट|$1 बाइट्स}} ($2; $3%)",
+       "mediastatistics-bytespertype": "इस अनुभाग का कुल फ़ाइल आकार : {{PLURAL:$1|$1 बाइट|$1 बाइट्स}} ($2; $3%)",
+       "mediastatistics-allbytes": "सभी फ़ाइल का कुल फ़ाइल आकार : {{PLURAL:$1|$1 बाइट|$1 बाइट्स}} ($2)",
        "mediastatistics-table-mimetype": "माइम प्रकार",
        "mediastatistics-table-extensions": "सम्भवतः विस्तार",
        "mediastatistics-table-count": "फ़ाइलों की संख्या",
        "mediastatistics-header-text": "पाठ",
        "mediastatistics-header-executable": "निष्पादन योग्य",
        "mediastatistics-header-archive": "संकुचित प्रारूप",
+       "mediastatistics-header-total": "सभी फ़ाइल",
        "json-warn-trailing-comma": "$1 पीछे रह रहा {{PLURAL:$1|कॉमा को| कॉमाओं को}} जे०एस०ओ०एन० से हटाया गया",
        "json-error-unknown": "जे०एस०ओ०एन० में एक समस्या थी। त्रुटि: $1",
        "json-error-depth": "स्टैक की अधिकतम गहराई बढ़ चुकी है।",
        "special-characters-group-arabicextended": "अरबी विस्तारित",
        "special-characters-group-persian": "फार्सी",
        "special-characters-group-hebrew": "हिब्रू",
-       "special-characters-group-bangla": "बाà¤\82à¤\97à¥\8dला",
+       "special-characters-group-bangla": "बà¤\82à¤\97ालà¥\80",
        "special-characters-group-tamil": "तमिल",
        "special-characters-group-telugu": "तेलूगू",
        "special-characters-group-sinhala": "सिंहल",
        "special-characters-title-emdash": "एम डैश",
        "special-characters-title-minus": "ऋण चिह्न",
        "mw-widgets-dateinput-no-date": "कुछ चयनित नहीं",
+       "mw-widgets-dateinput-placeholder-day": "DD-MM-YYYY",
        "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": "कुकी-आधारित सत्र",
+       "sessionprovider-nocookies": "हो सकता है कि कुकी निष्क्रिय है। कृपया देखें कि और सक्रिय करें।",
        "randomrootpage": "अविशिष्ट मूल पृष्ठ"
 }
index 922803a..34755d7 100644 (file)
        "october-date": "$1 de octobre",
        "november-date": "$1 de novembre",
        "december-date": "$1 de decembre",
+       "period-am": "AM",
+       "period-pm": "PM",
        "pagecategories": "{{PLURAL:$1|Categoria|Categorias}}",
        "category_header": "Articulos in le categoria \"$1\"",
        "subcategories": "Subcategorias",
        "moredotdotdot": "Plus...",
        "morenotlisted": "Iste lista non es complete.",
        "mypage": "Pagina",
-       "anonuserpage": "Usator incognite",
        "mytalk": "Discussion",
        "anontalk": "Discussion",
        "navigation": "Navigation",
        "virus-scanfailed": "scannamento fallite (codice $1)",
        "virus-unknownscanner": "antivirus non cognoscite:",
        "logouttext": "'''Tu ha claudite le session.'''\n\nNota que alcun paginas pote continuar a apparer como si tu esserea ancora authenticate. Pro remediar isto, tu pote vacuar le cache de tu navigator.",
+       "cannotlogoutnow-title": "Impossibile clauder session ora",
+       "cannotlogoutnow-text": "Non es possibile clauder le session usante $1.",
        "welcomeuser": "Benvenite, $1!",
        "welcomecreation-msg": "Tu conto ha essite create.\nNon oblida personalisar tu [[Special:Preferences|preferentias in {{SITENAME}}]].",
        "yourname": "Nomine de usator:",
        "remembermypassword": "Memorar mi contrasigno in iste navigator (pro un maximo de $1 {{PLURAL:$1|die|dies}})",
        "userlogin-remembermypassword": "Mantener mi session aperte",
        "userlogin-signwithsecure": "Usar un connexion secur",
+       "cannotloginnow-title": "Impossibile aperir session ora",
+       "cannotloginnow-text": "Non es possibile aperir un session usante $1.",
        "yourdomainname": "Tu dominio:",
        "password-change-forbidden": "Non es possibile cambiar le contrasigno in iste wiki.",
        "externaldberror": "O il occurreva un error in le base de datos de authentication, o tu non ha le autorisation de actualisar tu conto externe.",
        "nocookieslogin": "{{SITENAME}} usa ''cookies'' pro mantener le sessiones del usatores.\nTu ha disactivate le functionalitate del ''cookies''.\nPer favor activa lo e reprova.",
        "nocookiesfornew": "Le conto de usator non esseva create, proque nos non poteva confirmar su origine.\nVerifica que tu ha activate le \"cookies\", recarga iste pagina e reproba.",
        "noname": "Tu non specificava un nomine de usator valide.",
-       "loginsuccesstitle": "Session aperite con successo",
+       "loginsuccesstitle": "Session aperite",
        "loginsuccess": "'''Tu es ora authenticate in {{SITENAME}} como \"$1\".'''",
        "nosuchuser": "Non existe un usator con le nomine \"$1\".\nIn le nomines de usator se distingue inter majusculas e minusculas.\nVerifica le orthographia, o [[Special:UserLogin/signup|crea un nove conto]].",
        "nosuchusershort": "Non existe un usator con le nomine \"$1\".\nVerifica le orthographia.",
        "createaccount-title": "Creation de un conto pro {{SITENAME}}",
        "createaccount-text": "Un persona ha create un conto in tu adresse de e-mail a {{SITENAME}} ($4) denominate \"$2\", con le contrasigno \"$3\".\nTu deberea aperir un session e cambiar tu contrasigno ora.\n\nTu pote ignorar iste message si iste conto ha essite create in error.",
        "login-throttled": "Tu ha facite troppo de tentativas de aperir session.\nPer favor attende $1 ante de probar lo novemente.",
-       "login-abort-generic": "Apertura de session non succedite - Abortate",
+       "login-abort-generic": "Apertura de session fallite - Abortate",
        "login-migrated-generic": "Tu conto ha essite migrate, e tu nomine de usator non plus existe in iste wiki.",
        "loginlanguagelabel": "Lingua: $1",
        "suspicious-userlogout": "Le requesta de clauder le session ha essite refusate proque illo pare haber essite inviate per un navigator o proxy de cache defectuose.",
        "resetpass_submit": "Definir contrasigno e aperir un session",
        "changepassword-success": "Tu contrasigno ha essite cambiate!",
        "changepassword-throttled": "Tu ha recentemente facite troppo de tentativas de aperir session.\nPer favor attende $1 ante de probar lo novemente.",
+       "botpasswords": "Contrasignos de robot",
+       "botpasswords-summary": "Le <em>contrasignos de robot</em> permitte acceder a un conto de usator via API sin usar le credentiales de authentication principal del conto. Le derectos de usator concedite per un contrasigno de robot pote esser limitate.\n\nSi tu non sape proque tu volerea facer isto, tu probabilemente non debe facer lo. Nemo deberea jammais demandar te a crear un tal contrasigno e dar lo a ille.",
+       "botpasswords-disabled": "Le contrasignos de robot es disactivate.",
+       "botpasswords-no-central-id": "Pro usar le contrasignos de robot, tu debe aperir session per medio de un conto centralisate.",
+       "botpasswords-existing": "Contrasignos de robot existente",
+       "botpasswords-createnew": "Crear un nove contrasigno de robot",
+       "botpasswords-editexisting": "Modificar un contrasigno de robot existente",
+       "botpasswords-label-appid": "Nomine del robot:",
+       "botpasswords-label-create": "Crear",
+       "botpasswords-label-update": "Actualisar",
+       "botpasswords-label-cancel": "Cancellar",
+       "botpasswords-label-delete": "Deler",
+       "botpasswords-label-resetpassword": "Reinitialisar le contrasigno",
+       "botpasswords-label-grants": "Concessiones applicabile:",
+       "botpasswords-help-grants": "Cata concession da accesso al derectos de usator listate que un conto de usator jam ha. Vide le [[Special:ListGrants|tabula de concessiones]] pro plus information.",
+       "botpasswords-label-restrictions": "Restrictiones de uso:",
+       "botpasswords-label-grants-column": "Concedite",
+       "botpasswords-bad-appid": "Le nomine del robot \"$1\" non es valide.",
+       "botpasswords-insert-failed": "Le addition del nomine de robot \"$1\" ha fallite. Esque illo ha jam essite addite?",
+       "botpasswords-update-failed": "Le actualisation del nomine de robot \"$1\" ha fallite. Esque illo ha essite delite?",
+       "botpasswords-created-title": "Contrasigno de robot create",
        "botpasswords-created-body": "Le contrasigno pro le robot \"$1\" del usator \"$2\" ha essite create.",
+       "botpasswords-updated-title": "Contrasigno de robot actualisate",
        "botpasswords-updated-body": "Le contrasigno pro le robot \"$1\" del usator \"$2\" ha essite actualisate.",
+       "botpasswords-deleted-title": "Contrasigno de robot delite",
        "botpasswords-deleted-body": "Le contrasigno pro le robot \"$1\" del usator \"$2\" ha essite delite.",
+       "botpasswords-newpassword": "Le nove contrasigno pro aperir session con <strong>$1</strong> es <strong>$2</strong>. <em>Per favor, conserva isto pro uso futur.</em>",
+       "botpasswords-restriction-failed": "Session impedite per restrictiones de contrasigno de robot.",
+       "botpasswords-invalid-name": "Iste nomine de usator non contine le separator pro contrasigno de robot (\"$1\").",
+       "botpasswords-not-exist": "Le usator \"$1\" non ha un contrasigno de robot del nomine \"$2\".",
        "resetpass_forbidden": "Le contrasignos non pote esser cambiate",
        "resetpass-no-info": "Tu debe aperir un session pro poter acceder directemente a iste pagina.",
        "resetpass-submit-loggedin": "Cambiar contrasigno",
        "passwordreset-emailtext-ip": "Un persona (probabilemente tu, ab le adresse IP $1) requestava le reinitialisation de tu\ncontrasigno de {{SITENAME}} ($4). Le {{PLURAL:$3|conto|contos}} de usator sequente es\nassociate con iste adresse de e-mail:\n\n$2\n\nIste {{PLURAL:$3|contrasigno|contrasignos}} temporari expirara post {{PLURAL:$5|un die|$5 dies}}.\nTu deberea ora aperir session e eliger un nove contrasigno. Si un altere persona faceva iste\nrequesta, o si tu te ha rememorate tu contrasigno original e non plus\nvole cambiar lo, tu pote ignorar iste message e continuar a usar le ancian\ncontrasigno.",
        "passwordreset-emailtext-user": "Le usator $1 in {{SITENAME}} requestava un reinitialisation de tu contrasigno in {{SITENAME}}\n($4). Le {{PLURAL:$3|conto|contos}} de usator sequente es associate con iste adresse de e-mail:\n\n$2\n\nIste {{PLURAL:$3|contrasigno|contrasignos}} temporari expirara post {{PLURAL:$5|un die|$5 dies}}.\nTu deberea ora aperir session e eliger un nove contrasigno. Si un altere persona faceva iste\nrequesta, o si tu te ha rememorate tu contrasigno original e non plus\nvole cambiar lo, tu pote ignorar iste message e continuar a usar le ancian\ncontrasigno.",
        "passwordreset-emailelement": "Nomine de usator: \n$1\n\nContrasigno temporari: \n$2",
-       "passwordreset-emailsentemail": "Si iste es un adresse de e-mail registrate pro tu conto, alora un message de e-mail pro le reinitialisation del contrasigno essera inviate.",
-       "passwordreset-emailsentusername": "Si il ha un correspondente adresse de e-mail registrate, alora un e-mail pro reinitialisar le contrasigno essera inviate.",
+       "passwordreset-emailsentemail": "Si iste adresse es associate a tu conto, alora un e-mail pro reinitialisar le contrasigno essera inviate.",
+       "passwordreset-emailsentusername": "Si il ha un adresse de e-mail associate a iste conto, alora un e-mail pro reinitialisar le contrasigno essera inviate.",
        "passwordreset-emailsent-capture": "Un message de e-mail pro le reinitialisation del contrasigno ha essite inviate; iste message es monstrate hic infra.",
        "passwordreset-emailerror-capture": "Un e-mail pro le reinitialisation del contrasigno ha essite generate; iste message es monstrate hic infra, ma le invio al {{GENDER:$2|usator}} ha fallite: $1",
        "changeemail": "Cambiar o remover adresse de e-mail",
        "previewnote": "'''Isto es solmente un previsualisation.'''\nLe modificationes non ha ancora essite publicate!",
        "continue-editing": "Saltar al quadro de modification",
        "previewconflict": "Iste previsualisation reflecte le apparentia final del texto in le area de modification superior\nsi tu opta pro publicar lo.",
-       "session_fail_preview": "'''Nos non poteva processar tu modification proque nos perdeva le datos del session.\nPer favor reprova.\nSi illo ancora non va, prova [[Special:UserLogout|clauder tu session]] e aperir un nove session.'''",
-       "session_fail_preview_html": "'''Nos non poteva processar tu modification proque nos perdeva le datos del session.'''\n\n''Post que HTML crude es active in {{SITENAME}}, le previsualisation es celate como precaution contra attaccos via JavaScript.''\n\n'''Si isto es un tentativa de modification legitime, per favor reprova lo.\nSi illo ancora non va, prova [[Special:UserLogout|clauder tu session]] e aperir un nove session.'''",
+       "session_fail_preview": "Oh guai! Iste modification ha essite impedite per un perdita de datos del session.\n\nEs possibile que tu session ha essite claudite. <strong>Per favor, verifica que tu session es ancora aperte e tenta lo de novo</strong>.\nSi le problema persiste, proba a [[Special:UserLogout|clauder session]] e aperir un nove session, verificante que tu navigator accepta le cookies ab iste sito.",
+       "session_fail_preview_html": "Oh guai! Iste modification ha essite impedite per un perdita de datos del session.\n\n<em>Post que HTML crude es active in {{SITENAME}}, le previsualisation es celate como precaution contra attaccos via JavaScript.</em>\n\n<strong>Si iste tentativa de modification es legitime, per favor, tenta lo de novo.</strong>\nSi le problema persiste, proba a [[Special:UserLogout|clauder session]] e aperir un nove session, verificante que tu navigator accepta le cookies ab iste sito.",
        "token_suffix_mismatch": "'''Tu modification ha essite refusate proque tu cliente corrumpeva le characteres de punctuation in le indicio de modification.\nIste refusa es pro evitar le corruption del texto del pagina.\nIsto pote occurrer quando tu usa un servicio problematic de ''proxy'' anonyme a base de web.'''",
        "edit_form_incomplete": "'''Certe partes del formulario de modification non attingeva le servitor; re-verifica que tu modificationes es intacte e reproba.'''",
        "editing": "Modification de $1",
        "revdelete-unsuppress": "Eliminar restrictiones super versiones restaurate",
        "revdelete-log": "Motivo:",
        "revdelete-submit": "Applicar al {{PLURAL:$1|version|versiones}} seligite",
-       "revdelete-success": "'''Le visibilitate del version ha essite actualisate con successo.'''",
+       "revdelete-success": "Le visibilitate del version ha essite actualisate.",
        "revdelete-failure": "'''Le visibilitate del version non poteva esser actualisate:'''\n$1",
        "logdelete-success": "Le visibilitate del registro ha essite definite.",
        "logdelete-failure": "'''Le visibilitate del registro non poteva esser cambiate:'''\n$1",
        "mergehistory-empty": "Nulle versiones pote esser fusionate.",
        "mergehistory-done": "$3 {{PLURAL:$3|version|versiones}} de $1 fusionate in [[:$2]] con successo.",
        "mergehistory-fail": "Impossibile executar le fusion del historia. Per favor reverifica le parametros del pagina e del tempore.",
+       "mergehistory-fail-bad-timestamp": "Data e hora non valide.",
+       "mergehistory-fail-invalid-source": "Pagina de origine non valide.",
+       "mergehistory-fail-invalid-dest": "Pagina de destination non valide.",
+       "mergehistory-fail-no-change": "Nulle version de historia ha essite fusionate. Per favor, reverifica le parametros de pagina e de tempore.",
+       "mergehistory-fail-permission": "Permissiones insufficiente pro fusionar le historia.",
+       "mergehistory-fail-self-merge": "Le paginas de origine e de destination es identic.",
+       "mergehistory-fail-timestamps-overlap": "Le versiones de origine se superpone o seque le versiones de destination.",
        "mergehistory-fail-toobig": "Le historias de versiones non pote esser fusionate con plus de $1 {{PLURAL:$1|version|versiones}} a displaciar.",
        "mergehistory-no-source": "Le pagina de origine $1 non existe.",
        "mergehistory-no-destination": "Le pagina de destination $1 non existe.",
        "userrights": "Gestion de derectos de usator",
        "userrights-lookup-user": "Gerer gruppos de usatores",
        "userrights-user-editname": "Entra un nomine de usator:",
-       "editusergroup": "Modificar gruppos de usatores",
+       "editusergroup": "Modificar gruppos de {{GENDER:$1|usator}}",
        "editinguser": "Cambia le derectos del {{GENDER:$1|usator}} <strong>[[User:$1|$1]]</strong> $2",
        "userrights-editusergroup": "Modificar gruppos de usatores",
-       "saveusergroups": "Salveguardar gruppos de usatores",
+       "saveusergroups": "Salveguardar gruppos de {{GENDER:$1|usator}}",
        "userrights-groupsmember": "Membro de:",
        "userrights-groupsmember-auto": "Membro implicite de:",
        "userrights-groups-help": "Tu pote alterar le gruppos del quales iste usator es membro:\n* Un quadrato marcate significa que le usator es membro del gruppo in question.\n* Un non marcate significa que ille non es membro de illo.\n* Un * indica que tu non potera eliminar le gruppo quando tu lo ha addite, o vice versa.",
        "right-createpage": "Crear paginas (non discussion)",
        "right-createtalk": "Crear paginas de discussion",
        "right-createaccount": "Crear nove contos de usator",
+       "right-autocreateaccount": "Aperir session automaticamente con un conto de usator externe",
        "right-minoredit": "Marcar modificationes como minor",
        "right-move": "Renominar paginas",
        "right-move-subpages": "Renominar paginas con lor subpaginas",
        "right-managechangetags": "Crear e deler [[Special:Tags|etiquettas]] in le base de datos",
        "right-applychangetags": "Applicar [[Special:Tags|etiquettas]] al proprie modificationes",
        "right-changetags": "Adder e remover qualcunque [[Special:Tags|etiquettas]] sur individual versiones e entratas de registro",
-       "grant-generic": "gruppo de derectos \"$1\"",
+       "grant-generic": "Gruppo de derectos \"$1\"",
+       "grant-group-page-interaction": "Interager con paginas",
+       "grant-group-file-interaction": "Interager con multimedia",
+       "grant-group-watchlist-interaction": "Interager con tu observatorio",
+       "grant-group-email": "Inviar e-mail",
+       "grant-group-high-volume": "Exequer actiones in massa",
+       "grant-group-customization": "Personalisation e perferentias",
        "grant-group-administration": "Exequer actiones administrative",
+       "grant-group-other": "Activitates diverse",
        "grant-blockusers": "Blocar e disblocar usatores",
+       "grant-createaccount": "Crear contos",
        "grant-createeditmovepage": "Crear, modificar e renominar paginas",
        "grant-delete": "Deler paginas, versiones e entratas de registro",
-       "grant-editinterface": "Modificar le spatio de nomines MediaWiki e le CSS/JS de usatores",
-       "grant-editmycssjs": "Modificar le CSS/JS del proprie usator",
-       "grant-editmywatchlist": "Modificar le proprie observatorio",
+       "grant-editinterface": "Modificar le spatio de nomines MediaWiki e le CSS/JavaScript de usatores",
+       "grant-editmycssjs": "Modificar le CSS/JavaScript del proprie usator",
+       "grant-editmyoptions": "Modificar tu preferentias de usator",
+       "grant-editmywatchlist": "Modificar tu observatorio",
        "grant-editpage": "Modificar paginas existente",
        "grant-editprotected": "Modificar paginas protegite",
        "grant-highvolume": "Modification in massa",
        "grant-oversight": "Celar usatores e supprimer versiones",
-       "grant-patrol": "Patruliar cambiamentos in paginas",
+       "grant-patrol": "Patruliar cambiamentos a paginas",
        "grant-protect": "Proteger e disproteger paginas",
-       "grant-rollback": "Revocar cambiamentos in paginas",
+       "grant-rollback": "Revocar cambiamentos a paginas",
        "grant-sendemail": "Inviar e-mail a altere usatores",
        "grant-uploadeditmovefile": "Actualisar, reimplaciar e renominar files",
        "grant-uploadfile": "Incargar nove files",
-       "grant-viewdeleted": "Vider information delite",
+       "grant-basic": "Derectos de base",
+       "grant-viewdeleted": "Vider files e paginas delite",
        "grant-viewmywatchlist": "Vider le proprie observatorio",
        "newuserlogpage": "Registro de creation de usatores",
        "newuserlogpagetext": "Isto es un registro de creation de usatores.",
        "action-createpage": "crear paginas",
        "action-createtalk": "crear paginas de discussion",
        "action-createaccount": "crear iste conto de usator",
+       "action-autocreateaccount": "crear automaticamente iste conto de usator externe",
        "action-history": "vider le historia de iste pagina",
        "action-minoredit": "marcar iste modification como minor",
        "action-move": "renominar iste pagina",
index 1f80e01..3268437 100644 (file)
        "nocookieslogin": "Ti {{SITENAME}} ket agus-usar kadagiti galietas tapno maiserrek dagiti agar-aramat.\nNabaldado dagiti galietam.\nPangngaasi a pakabaelam ida ken padasem manen ti sumrek.",
        "nocookiesfornew": "Ti pakabilangan ti agar-aramat ket saan a napartuat, saanmi a mapasingkedan ti taudanna.\nSiguraduem a napakabaelan dagita galietam, ikarga manen daytoy a panid ken padasen manen.",
        "noname": "Saanmo a nainaganan ti umisu a nagan ti agar-aramat.",
-       "loginsuccesstitle": "Balligi ti panagserrek",
+       "loginsuccesstitle": "Nakastrek",
        "loginsuccess": "<strong>Nakastrekkan iti {{SITENAME}} a kas ni \"$1\".</strong>",
        "nosuchuser": "Awan ti agar-aramat nga agnagan iti \"$1\". \n\nDagiti nagan ti agar-aramat ket sensitibo ti kadakkel ti letra.\n\nKitaem ti panangiletram, wenno [[Special:UserLogin/signup|agpartuat iti baro a pakabilangan]].",
        "nosuchusershort": "Awan ti agar-aramat nga agnagan iti \"$1\".\nKitaem ti panangiletram.",
        "newpassword": "Baro a kontrasenias:",
        "retypenew": "Imakinilya manen ti baro a kontrasenias:",
        "resetpass_submit": "Isaad ti kontrasenias ken sumrek",
-       "changepassword-success": "Balligi a nasukatan ti kontraseniasmo!",
+       "changepassword-success": "Nasukatanen ti kontraseniasmo!",
        "changepassword-throttled": "Nakaaramidka kadagiti adu unay a nabiit a panangipadas ti panagserrek.\nPangngaasi nga aguray iti $1 sakbay a padasen manen.",
        "botpasswords": "Dagiti kontrasenias ti bot",
        "botpasswords-summary": "<em>Dagiti kontrasenias ti bot</em> ket mangpalubos a maserrekan ti pakabilangan ti agar-aramat babaen ti API a saan nga agusar kadagiti nangruna a kredensial ti pakabilangan. Dagiti magun-od a karbengan ti agar-aramat no nakastrek iti kontrasenias ti bot ket mabalin a nagawidan.\n\nNo saanmo nga ammo no apay a kayatmo nga aramiden daytoy, mabalin a saanmo koma nga aramiden daytoy. Awan koma ti mangdamag kaniam iti agpataud iti maysa kadagitoy ken itedmo kaniada.",
        "botpasswords-insert-failed": "Napaay iti pananginayon ti nagan ti bot iti \"$1\". Nainayon kadi idin?",
        "botpasswords-update-failed": "Napaay iti panagpabaro ti nagan ti bot iti \"$1\". Naikkat kadi idin?",
        "botpasswords-created-title": "Napartuat ti kontrasenias ti bot",
-       "botpasswords-created-body": "Balligi ti pannakapartuat ti kontrasenias ti bot iti \"$1\".",
+       "botpasswords-created-body": "Napartuat ti kontrasenias ti bot para iti nagan ti bot iti \"$1\" ni agar-aramat \"$2\".",
        "botpasswords-updated-title": "Napabaro ti kontrasenias ti bot",
-       "botpasswords-updated-body": "Balligi ti pannakapabaro ti kontrasenias ti bot iti \"$1\".",
+       "botpasswords-updated-body": "Napabaro ti kontrasenias ti bot para iti nagan ti bot iti \"$1\" ni agar-aramat \"$2\".",
        "botpasswords-deleted-title": "Naikkat ti kontrasenias ti bot",
-       "botpasswords-deleted-body": "Naikkat ti kontrasenias ti bot iti \"$1\".",
+       "botpasswords-deleted-body": "Naikkat ti kontrasenias ti bot para iti nagan ti bot iti \"$1\" ni agar-aramat \"$2\".",
        "botpasswords-newpassword": "Ti baro a kontrasenias iti panagserrek iti <strong>$1</strong> ket <strong>$2</strong>. <em>Pangngaasi nga irekord daytoy para iti masakbayan a reperensia.</em>",
        "botpasswords-no-provider": "Saan a magun-od ti BotPasswordsSessionProvider.",
        "botpasswords-restriction-failed": "Ti panangigawid ti kontrasenias ti bot ket nangpawil iti daytoy a panagserrek.",
        "uploadstash-summary": "Daytoy a panid ket mangited ti panagserrek kadagiti papeles a naikarga wenno mangrugrugi iti proseso a maikarga, ngem saan pay a naipablaak iti wiki. Dagitoy a papeles ket saan a makita ti sinoman ngem ti laeng agar-aramat a nagikarga kaniada.",
        "uploadstash-clear": "Dalusan dagiti na-stash a papeles",
        "uploadstash-nofiles": "Awan ti na-stash a papelesmo.",
-       "uploadstash-badtoken": "Ti panag-tungpal dayta nga aramid ket napaay, ngamin ta dagiti talekmo ti panagurnos ket nagpason. Padasen manen.",
-       "uploadstash-errclear": "Ti panagdalus kadagiti papeles ket napaay.",
+       "uploadstash-badtoken": "Napaay ti panagtungpal dayta nga aramid. Mabalin a ti talekmo nga agurnos ket nagpason. Pangngaasi a padasen manen.",
+       "uploadstash-errclear": "Napaay ti panagdalus kadagiti papeles.",
        "uploadstash-refresh": "Pasadiwaen dagiti listaan ti papeles",
        "invalid-chunk-offset": "Imbalido a pirgis ti timbengan",
        "img-auth-accessdenied": "Nalibak ti iseserrek",
        "changecontentmodel-title-label": "Titulo ti panid",
        "changecontentmodel-model-label": "Baro a modelo ti linaon",
        "changecontentmodel-reason-label": "Rason:",
+       "changecontentmodel-submit": "Baliwan",
        "changecontentmodel-success-title": "Nabaliwan ti modelo ti linaon",
        "changecontentmodel-success-text": "Nabaliwanen ti kita ti linaon ti [[:$1]].",
        "changecontentmodel-cannot-convert": "Ti linaon iti [[:$1]] ket saan a mabaliwan iti kita ti $2.",
        "tooltip-feed-rss": "RSS a pakan para iti daytoy a panid",
        "tooltip-feed-atom": "Atom a pakan para iti daytoy a panid",
        "tooltip-t-contributions": "Ti listaan dagiti kontribusion babaen {{GENDER:$1|daytoy nga agar-aramat}}",
-       "tooltip-t-emailuser": "Patulodan ti esurat daytoy nga agar-aramat",
+       "tooltip-t-emailuser": "Patulodan ti esurat {{GENDER:$1|daytoy nga agar-aramat}}",
        "tooltip-t-info": "Adu pay a pakaammo a maipanggep iti daytoy a panid",
        "tooltip-t-upload": "Agikarga kadagiti papeles",
        "tooltip-t-specialpages": "Listaan ti amin nga espesial a pampanid",
        "lastmodifiedatby": "Daytoy a panid ket naudi a nabaliwan idi $2, $1 babaen ni $3.",
        "othercontribs": "Naibasar iti obra ni $1.",
        "others": "dadduma pay",
-       "siteusers": "{{SITENAME}}  {{PLURAL:$2|agar-aramat|dagiti agar-aramat}}  $1",
+       "siteusers": "{{PLURAL:$2|{{GENDER:$1|ni agar-aramat}}|da agar-aramat}} $1 ti {{SITENAME}}",
        "anonusers": "{{SITENAME}} di ammo {{PLURAL:$2|nga agar-aramat|a digiti agar-aramat}} $1",
        "creditspage": "Dagiti pammadayaw ti panid",
        "nocredits": "Awan dagiti pakaammo ti pammadayaw a magun-od para iti daytoy a panid.",
        "scarytranscludefailed-httpstatus": "[Napaay ti panagala ti plantilia para iti $1: HTTP $2]",
        "scarytranscludetoolong": "[Atiddog unay ti URL]",
        "deletedwhileediting": "<strong>Ballaag:</strong> Naikkaten daytoy a panid kalpasan idi rinugiam ti agurnos!",
-       "confirmrecreate": "Ti ([[User talk:$1|patungtungan]]) ti agar-aramat [[User:$1|$1]] ket inikkatna daytoy a panid kalpasan ti panagrugim nga agurnos nga adda rason:\n: ''$2''\nPangngaasi a pasingkedam nga agpayso a kayatmo a partuten manen daytoy a panid.",
-       "confirmrecreate-noreason": "Ti ([[User talk:$1|patungtungan]]) ti agar-aramat [[User:$1|$1]] ket inikkat na daytoy a panid idi kalkalpas mo a magirugi ti agurnos. Pangngaasi ta pasingkedam a kayatmo nga aramiden manen daytoy a panid.",
+       "confirmrecreate": "{{GENDER:$1|Inikkat}} ni agar-aramat [[User:$1|$1]] ([[User talk:$1|tungtungan]])  daytoy a panid kalpasan idi nangrugika nga agurnos iti rason a:\n: <em>$2</em>\nPangngaasi a pasingkedan no agpayso a kayatmo a partuaten manen daytoy a panid",
+       "confirmrecreate-noreason": "{{GENDER:$1|Inikkat}} ni agar-aramat [[User:$1|$1]] ([[User talk:$1|tungtungan]]) daytoy a panid kalpasan idi nangrugika nga agurnos. Pangngaasi a pasingkedan no agpayso a kayatmo a partuaten manen daytoy a panid.",
        "recreate": "Partuaten manen",
        "confirm_purge_button": "Sige",
        "confirm-purge-top": "Dalusan ti cache daytoy a panid?",
        "tags-delete-not-allowed": "Dagiti etiketa nga inpalawag babaen ti maysa a pagpaatiddog ket saan a maikkat malaksid no naisangayan nga ipalubos ti pagpaatiddog.",
        "tags-delete-not-found": "Awan ti etiketa ti \"$1\".",
        "tags-delete-too-many-uses": "Ti etiketa ti \"$1\" ket naipakat iti ad-adu ngem $2 {{PLURAL:$2|a rebision|kadagiti rebision}}, a ti kaibuksillanna ket saan a mabalin a maikkat.",
-       "tags-delete-warnings-after-delete": "Ti etiketa ti \"$1\" ket balligi a naikkat, ngem nakita {{PLURAL:$2|ti sumaganad a ballag|dagiti sumaganad a balaag}}:",
+       "tags-delete-warnings-after-delete": "Ti etiketa ti \"$1\" ket naikkat, ngem nakita {{PLURAL:$2|ti sumaganad a ballaag|dagiti sumaganad a ballaag}}:",
        "tags-activate-title": "Patarayen ti etiketa",
        "tags-activate-question": "Isagsaganamon a patarayen ti etiketa ti \"$1\".",
        "tags-activate-reason": "Rason:",
index 7feb6b3..6b9434e 100644 (file)
        "moredotdotdot": "Д|ахо",
        "morenotlisted": "Ер |ояздар хьалдиззанз да.",
        "mypage": "Oаг|ув",
-       "anonuserpage": "Вовзаш воаца доакъашхо",
        "mytalk": "Дувцам",
        "anontalk": "Дувцар",
        "navigation": "Наькъатохкарг",
        "errorpagetitle": "Г|алат",
        "returnto": "цу $1 оаг|он т|а юхаг|о",
        "tagline": "Кечал укхазара я {{SITENAME}}",
-       "help": "Ð\9aÑ\83Ñ\86Ñ\82оÑ\85кам",
+       "help": "Ð\93Ó\80о",
        "search": "Лахаp",
        "searchbutton": "Лахар",
        "go": "Дехьа г|о",
        "searcharticle": "Дехьа г|о",
        "history": "Истори",
-       "history_short": "ТаÑ\80Ñ\85Ñ\8cаÑ\80",
+       "history_short": "Ð\98Ñ\81Ñ\82оÑ\80и",
        "updatedmarker": "Со ханача денца хувцамаш хиннaд",
        "printableversion": "Кепатохара нийсхьал",
        "permalink": "Даиман латташ йола хьожадерг",
        "imagepage": "Лурдара оаг|oн т|а б|аргтасса",
        "mediawikipage": "Xоаман оаг|ув хьахьокха",
        "templatepage": "Ч|абала оаг|oн т|а б|аргтасса",
-       "viewhelppage": "Ð\9aÑ\83Ñ\86Ñ\82оÑ\85кам Ð±еха",
+       "viewhelppage": "Ð\93Ó\80о Ð´еха",
        "categorypage": "Катага оаг|oн т|а б|аргтасса",
        "viewtalkpage": "Дувцамага б|аргтасса",
        "otherlanguages": "Кхыча меттаех",
        "currentevents-url": "Project:ХӀанзара хоамаш",
        "disclaimers": "Бокъонах юхавалаp",
        "disclaimerpage": "Project:Бокъонах юхавалаp",
-       "edithelp": "Ð¥Ñ\83вÑ\86ама ÐºÑ\83Ñ\86Ñ\82оÑ\85кам",
-       "helppage-top-gethelp": "Г|о",
+       "edithelp": "Ð¥Ñ\83вÑ\86ама Ð³Ó\80о",
+       "helppage-top-gethelp": "ГӀо",
        "mainpage": "Кертера оагӀув",
        "mainpage-description": "Кертера оагӀув",
        "policy-url": "Project:Бокъонаш",
        "nstab-image": "Паьл",
        "nstab-mediawiki": "Хоам",
        "nstab-template": "ЧIабал",
-       "nstab-help": "Ð\9aÑ\83Ñ\86Ñ\82оÑ\85кам",
+       "nstab-help": "Ð\93Ó\80о",
        "nstab-category": "Катаг",
        "mainpage-nstab": "Кертера оагӀув",
        "nosuchaction": "Цу тайпара дулархIам бац",
        "action-read": "Укх оагIуви дешам",
        "action-edit": "Ер оагIув хувца",
        "nchanges": "$1 {{PLURAL:$1|1=хувцам|хувцамаш}}",
+       "enhancedrc-history": "Истори",
        "recentchanges": "Керда хувцамаш",
        "recentchanges-legend": "Керда хувцамий оттамаш",
        "recentchanges-summary": "КIалхагIа лоарамий доаламе тIехьара оагIувний хувцамаш дIаязадаь да {{grammar:genitive|{{SITENAME}}}}.",
        "rcnotefrom": "КIалхагIа хувцамаш хьахьекха я <strong>$2</strong> денза (<strong>$1</strong> кхачалца).",
        "rclistfrom": "$3 $2 тIара хувцамаш хьахьокха",
        "rcshowhideminor": "$1 зIамига хувцамаш",
+       "rcshowhideminor-hide": "Къайлдаккха",
        "rcshowhidebots": "$1 боташ",
+       "rcshowhidebots-show": "Хьахьокха",
        "rcshowhideliu": "Чубаьнначара дакъалаьцархочий $1",
+       "rcshowhideliu-hide": "Къайлдаккха",
        "rcshowhideanons": "$1 цIияьккханза дакъалаьцархой",
+       "rcshowhideanons-hide": "Къайлдаккха",
        "rcshowhidepatr": "$1 теркам даь хувцамаш",
        "rcshowhidemine": "$1 сай хувцамаш",
+       "rcshowhidemine-hide": "Къайлдаккха",
        "rclinks": "$2 динах<br />$3 $1 хинна тIехьара хувцамаш хьахьокха",
        "diff": "кхы.",
        "hist": "истори",
        "brokenredirects-edit": "хувца",
        "brokenredirects-delete": "дIадаккха",
        "withoutinterwiki-submit": "Хьахьокха",
-       "nbytes": "$1 {{PLURAL:$1|1=бIат|бIаташ}}",
+       "nbytes": "$1 {{PLURAL:$1|байт}}",
        "nmembers": "$1 {{PLURAL:$1|1=дакъалаьцархо|дакъалаьцархой}}",
        "prefixindex": "ОагIувнаший хьалхера цIи хьагойтар",
        "shortpages": "Лоаца оагIувнаш",
        "tooltip-ca-nstab-project": "Хьахьоадайтама оагIув",
        "tooltip-ca-nstab-image": "Паьла оагIув",
        "tooltip-ca-nstab-template": "ЧIабала оагIув",
+       "tooltip-ca-nstab-help": "ГӀона оагIув",
        "tooltip-ca-nstab-category": "Цатега оагIув",
        "tooltip-minoredit": "Ер хувцар башха доаца санна белгалде",
        "tooltip-save": "Хувцамаш кходе",
        "file-nohires": "Укхал доккхагIа доржам дац",
        "svg-long-desc": "SVG-паьл, $1 × $2 фихелашца, паьла дустам: $3",
        "show-big-image": "ХьалхагIара сурт",
+       "show-big-image-size": "$1 × $2 пиксель",
        "noimages": "Суртaш бIаргагуш дац.",
        "ilsubmit": "Лаха",
        "bad_image_list": "Бустам цу тайпара хила беза:\n\nДагарлен хьаракъаш мара лоарх|аш хургьяц (укх тамагIалгацa * дувлашду мугIараш).\nМугIарен хьалхара Iинк, сурт Iоттае пурам доаца Iинка, хила еза. \nЦу мугIара тIехьайоагIа Iинкаш, арадаккхар мо лоарх|аш хургья, вешта аьлча, йоазувашка чуIоттаде мегаш дола сурт санна ларх|а мега.",
        "external_image_whitelist": "#Ер мугI ший долаш тайпара дита<pre>\n#Каст-каста оаламаш укхаза дIаязаде(юкъе дола дакъа //)\n#арара суртий URLца дIанийсалургда уш.\n#Пайдан дола, сурташ мо хьахьекха хургья, дахIодараш, сурта тIа Iинкаш мо хуpгья хьахьекха.\n#Укх # тамагIалгаца дIадувлаш дола мугIанаш, оалам мо лоархаш да.\n#МугIанаш яздaтакха каьда да\n\n#Каст-каста оаламаш укх мугIа лакхе дIаязаде. Из мугI ший долаш тайпара дита</pre>",
        "tag-filter": "[[Special:Tags|Йоазоний]] цIенаярг:",
        "tag-filter-submit": "ЦIенъе",
+       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|1=Белгало|Белгалонаш}}]]: $2)",
        "tags-title": "Йоазонаш",
        "tags-tag": "Йоазон цIи",
        "tags-hitcount-header": "Белгалаяь хувцамаш",
index 98bf2e5..a6bcb25 100644 (file)
        "title-invalid-empty": "Umbeðinn síðutitill er auður eða inniheldur aðeins heiti nafnrýmis.",
        "title-invalid-utf8": "Umbeðinn síðutitill inniheldur ógilda UTF-8 runu.",
        "title-invalid-characters": "Umbeðinn síðutitill inniheldur ógilda stafi: \"$1\".",
+       "title-invalid-magic-tilde": "Umbeðinn síðutitill inniheldur ógilda tildurunu (<nowiki>~~~</nowiki>).",
+       "title-invalid-too-long": "Umbeðinn síðutitill er of langur. Hann má ekki vera lengri en $1 {{PLURAL:$1|bæti}} í UTF-8 stafatöflu.",
        "title-invalid-leading-colon": "Umbeðinn síðutitill inniheldur ógildan tvípunkt í byrjun.",
        "perfcached": "Eftirfarandi er afrit af umbeðinni síðu og gæti því ekki verið nýjasta útgáfa hennar. Allt að $1 {{PLURAL:$1|niðurstaða er aðgengileg|niðurstöður eru aðgengilegar}} í skyndiminninu.",
        "perfcachedts": "Eftirfarandi gögn eru í skyndiminninu, og voru síðast uppfærð $1. Allt að $4 {{PLURAL:$4|niðurstaða er aðgengileg|niðurstöður eru aðgengilegar}} í skyndiminninu.",
        "createacct-benefit-body2": "{{PLURAL:$1|síða|síður}}",
        "createacct-benefit-body3": "{{PLURAL:$1|nýlegur stuðningsaðili|nýlegir stuðningsaðilar}}",
        "badretype": "Lykilorðin sem þú skrifaðir eru ekki eins.",
+       "usernameinprogress": "Nú þegar er í vinnslu gerð aðgangs fyrir þennan notanda.\nHinkraðu aðeins.",
        "userexists": "Þetta notandanafn er þegar í notkun.\nVeldu þér eitthvað annað.",
        "loginerror": "Innskráningarvilla",
        "createacct-error": "Stofnun aðgangs mistókst",
        "retypenew": "Endurtaktu nýja lykilorðið:",
        "resetpass_submit": "Skrifaðu aðgangsorðið og skráðu þig inn",
        "changepassword-success": "Það tókst að breyta lykilorðinu þínu!",
-       "changepassword-throttled": "Þú hefur gert of margar tilraunir til innskráningar.\nBíddu í $1 áður en þú reynir aftur.",
+       "changepassword-throttled": "Þú hefur gert of margar tilraunir til innskráningar að undanförnu.\nBíddu í $1 áður en þú reynir aftur.",
        "botpasswords-label-create": "Búa til",
        "botpasswords-label-update": "Uppfæra",
        "botpasswords-label-cancel": "Hætta við",
        "resetpass-submit-loggedin": "Breyta lykilorði",
        "resetpass-submit-cancel": "Hætta við",
        "resetpass-wrong-oldpass": "Vitlaust bráðabirgða- eða núverandi lykilorð.\nÞú gætir þegar verið búin/n að breyta lykilorðinu eða sótt um nýtt bráðabirgðalykilorð",
+       "resetpass-temp-emailed": "Þú skráðir þig inn með bráðabirgðakóða úr tölvupósti.\nTil að klára að skrá þig inn, verður þú að velja nýtt lykilorð hér:",
        "resetpass-temp-password": "Bráðabirgðalykilorð:",
        "resetpass-abort-generic": "Breytingum á lykilorðum hefur verið hætt með viðbót.",
+       "resetpass-expired": "Lykilorðið þitt er útrunnið. Skráðu nýtt lykilorð til að skrá þig inn.",
        "passwordreset": "Endurstilla lykilorð",
        "passwordreset-text-one": "Útfylltu þetta eyðublað til þess að endursetja lykilorðið.",
        "passwordreset-disabled": "Lokað hefur verið fyrir að endurstilla lykilorð á þessum wiki.",
        "passwordreset-emailtext-user": "Notandinn $1 á {{SITENAME}} hefur beðið um endursetningu lykilorðsins þíns fyrir {{SITENAME}} ($4). Aðgangur eftirfarandi {{PLURAL:$3|notanda er|notendum eru}} tengd þessu netfangi:\n\n$2\n\nEf þetta er það sem þú vildir, þarftu að skrá þig inn og velja nýtt lykilorð. {{PLURAL:$3|Bráðabirgðalykilorðið rennur|Bráðabirgðalykilorðin renna}} út eftir $5 {{PLURAL:$5|dag|daga}}.\n\nEf það varst ekki þú sem fórst fram á þetta, eða ef þú manst aftur lykilorðið þitt, og vilt ekki lengur breyta því, skaltu hunsa þessi skilaboð og halda áfram að nota gamla lykilorðið.",
        "passwordreset-emailelement": "Notandanafn: \n$1\n\nBráðabirgðalykilorð: \n$2",
        "passwordreset-emailsentemail": "Ef þetta netfang er skráð fyrir aðganginum þínum þá hefur töluvpóstur verið sendur til að endursetja lykilorðið.",
+       "passwordreset-emailsentusername": "Ef eitthvað netfang er skráð fyrir aðganginum þínum, þá mun verða sendur töluvpóstur til að endursetja lykilorðið.",
        "passwordreset-emailsent-capture": "Tölvupóstur til að endursetja lykilorðið hefur verið sendur í tölvupósti, sem er sýndur hér fyrir neðan.",
        "passwordreset-emailerror-capture": "Tölvupóstur til að endursetja lykilorðið var búinn til, sem er sýndur hér fyrir neðan, en ekki tókst að senda hana til {{GENDER:$2|notandans}}: $1",
        "changeemail": "Breyta eða fjarlægja netfang",
        "changeemail-none": "(ekkert)",
        "changeemail-password": "{{SITENAME}} lykilorðið þitt:",
        "changeemail-submit": "Breyta netfangi",
+       "changeemail-throttled": "Þú hefur gert of margar tilraunir til innskráningar.\nBíddu í $1 áður en þú reynir aftur.",
        "changeemail-nochange": "Settu inn annað nýtt tölvupóstfang",
        "resettokens": "Endurstilla lykla",
        "resettokens-text": "Hér getur þú endurstillt lykla sem veita þér aðgang að ákveðnum persónuupplýsingum um aðganginn þinn.\n\nÞú átt að gera það ef þú ert búin(n) að deila þeim með einhverjum öðrum óviljandi eða ef búið er að brjóta inn í aðganginn þinn.",
        "prefs-rendering": "Útlit",
        "saveprefs": "Vista",
        "restoreprefs": "Endurstilla allar sjálfgefnar stillingar (í öllum hlutum)",
-       "prefs-editing": "Breytingaflipinn",
+       "prefs-editing": "Breytingarflipinn",
        "rows": "Raðir",
        "columns": "Dálkar",
        "searchresultshead": "Leit",
index 9c61c24..94a8160 100644 (file)
        "moredotdotdot": "Altro...",
        "morenotlisted": "Questo elenco non è completo.",
        "mypage": "Pagina",
-       "anonuserpage": "Utente sconosciuto",
        "mytalk": "discussioni",
        "anontalk": "discussioni",
        "navigation": "Navigazione",
        "recentchangeslinked-page": "Nome della pagina:",
        "recentchangeslinked-to": "Mostra solo le modifiche alle pagine collegate a quella specificata",
        "recentchanges-page-added-to-category": "[[:$1]] aggiunta alla categoria",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] e {{PLURAL:$2|una pagina è aggiunta|$2 pagine sono aggiunte}} alla categoria",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] e [[Special:WhatLinksHere/$1|{{PLURAL:$2|un'altra pagina|altre $2 pagine}}]] sono state aggiunte alla categoria",
        "recentchanges-page-removed-from-category": "[[:$1]] rimossa dalla categoria",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] e {{PLURAL:$2|un'altra pagina|altre $2 pagine}} rimosse dalla categoria",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] e [[Special:WhatLinksHere/$1|{{PLURAL:$2|un'altra pagina|altre $2 pagine}}]] sono state rimosse dalla categoria",
        "autochange-username": "Modifica automatica MediaWiki",
        "upload": "Carica un file",
        "uploadbtn": "Carica",
index af4af2c..09f9963 100644 (file)
        "nocookiesfornew": "発信元を確認できなかったため、アカウントは作成されませんでした。\nCookieを有効にしていることを確認して、このページを再読込してもう一度試してください。",
        "nocookiesforlogin": "{{int:nocookieslogin}}",
        "noname": "有効な利用者名が指定されていません。",
-       "loginsuccesstitle": "ã\83­ã\82°ã\82¤ã\83³æ\88\90å\8a\9f",
+       "loginsuccesstitle": "ã\83­ã\82°ã\82¤ã\83³æ¸\88ã\81¿",
        "loginsuccess": "<strong>{{SITENAME}}に「$1」としてログインしました。</strong>",
        "nosuchuser": "「$1」という名前の利用者は見当たりません。\n利用者名では大文字と小文字を区別します。\n綴りが正しいことを確認するか、[[Special:UserLogin/signup|新たにアカウントを作成]]してください。",
        "nosuchusershort": "「$1」という名前の利用者は存在しません。\n綴りを確認してください。",
        "botpasswords-insert-failed": "ボット「$1」の追加に失敗しました。既に追加されていないか確認してください。",
        "botpasswords-update-failed": "ボット「$1」の更新に失敗しました。削除されていないか確認してください。",
        "botpasswords-created-title": "ボット用パスワードが作成されました",
-       "botpasswords-created-body": "ボット「$1」のパスワードが作成されました。",
+       "botpasswords-created-body": "利用者「$2」のボット名「$1」のためのパスワードが作成されました。",
        "botpasswords-updated-title": "ボット用パスワードが更新されました",
-       "botpasswords-updated-body": "ボット「$1」のパスワードを更新しました。",
+       "botpasswords-updated-body": "利用者「$2」のボット名「$1」のためのパスワードが更新されました。",
        "botpasswords-deleted-title": "ボット用パスワードが削除されました",
-       "botpasswords-deleted-body": "ボット「$1」のパスワードを削除しました。",
+       "botpasswords-deleted-body": "利用者「$2」のボット名「$1」のためのパスワードが削除されました。",
        "botpasswords-newpassword": "<strong>$1</strong> 用の新しいパスワードは <strong>$2</strong> です。 <em>後で参照するために、この情報を控えておいてください</em>",
        "botpasswords-no-provider": "BotPasswordsSessionProvider が有効ではありません。",
        "botpasswords-invalid-name": "指定された利用者名には、ボット用パスワードの区切りである「$1」 が含まれていません。",
        "revdelete-submit": "選択された{{PLURAL:$1|版}}に適用",
        "revdelete-success": "版の閲覧レベルを更新しました。",
        "revdelete-failure": "版の閲覧レベルを更新できませんでした:\n$1",
-       "logdelete-success": "記録の閲覧レベルを変更しました。",
+       "logdelete-success": "記録の閲覧レベルを設定しました。",
        "logdelete-failure": "記録の閲覧レベルを設定できませんでした。\n$1",
        "revdel-restore": "閲覧レベルを変更",
        "pagehist": "ページの履歴",
        "recentchangeslinked-page": "ページ名:",
        "recentchangeslinked-to": "このページへのリンク元での変更の表示に切り替え",
        "recentchanges-page-added-to-category": "[[:$1]]をカテゴリに追加",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]]と他{{PLURAL:$2|1ページ|$2ページ}}をカテゴリに追加",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]]と他[[Special:WhatLinksHere/$1|{{PLURAL:$2|1ページ|$2ページ}}]]をカテゴリに追加",
        "recentchanges-page-removed-from-category": "[[:$1]]をカテゴリから除外",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]]と他{{PLURAL:$2|1ページ|$2ページ}}をカテゴリから除外",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]]と他 [[Special:WhatLinksHere/$1|{{PLURAL:$2|1ページ|$2ページ}}]]をカテゴリから除外",
        "autochange-username": "メディアウィキ自動変更",
        "upload": "ファイルをアップロード",
        "uploadbtn": "ファイルをアップロード",
        "changecontentmodel-title-label": "ページ名",
        "changecontentmodel-model-label": "新しい コンテンツ モデル",
        "changecontentmodel-reason-label": "理由:",
+       "changecontentmodel-submit": "変更",
        "changecontentmodel-success-title": "コンテント・モデルは変更されました",
        "changecontentmodel-success-text": "[[:$1]]のコンテント・タイプは変更されています。",
        "changecontentmodel-cannot-convert": "[[:$1]]上のコンテントは$2の型には変換できません。",
        "tags-delete-not-allowed": "拡張機能によって定義されているタグは削除できません(ただし拡張機能が明示的に削除を許可している場合を除く)。",
        "tags-delete-not-found": "タグ「$1」は存在しません。",
        "tags-delete-too-many-uses": "タグ「$1」は少なくとも$2版に付与されており、削除できません。",
-       "tags-delete-warnings-after-delete": "ã\82¿ã\82°ã\80\8c$1ã\80\8dã\81®å\89\8aé\99¤ã\81«æ\88\90å\8a\9fã\81\97ã\81¾ã\81\97ã\81\9fã\81\8cã\80\81以ä¸\8bã\81®{{PLURAL:$2|è­¦å\91\8a}}ã\81\8cç\99ºç\94\9fã\81\97ã\81¾ã\81\97ã\81\9fï¼\9a",
+       "tags-delete-warnings-after-delete": "タグ「$1」の削除しましたが、以下の{{PLURAL:$2|警告}}が発生しました:",
        "tags-activate-title": "タグの有効化",
        "tags-activate-question": "タグ「$1」を有効化しようとしています。",
        "tags-activate-reason": "理由:",
        "tags-edit-reason": "理由:",
        "tags-edit-revision-submit": "変更を {{PLURAL:$1|this revision|$1 revisions}} に適用",
        "tags-edit-logentry-submit": "変更を {{PLURAL:$1|this log entry|$1 log entries}} に適用",
-       "tags-edit-success": "変更が正常に適用されました。",
+       "tags-edit-success": "変更が適用されました。",
        "tags-edit-failure": "変更は適用できませんでした: $1",
        "tags-edit-nooldid-title": "無効な対象版",
        "tags-edit-nooldid-text": "この関数を実行しましたが、対象の版が指定されていない、あるいは指定された版が存在しません。",
index 264a219..a8fd122 100644 (file)
@@ -8,7 +8,8 @@
                        "Ælsån",
                        "Midnight Gambler",
                        "아라",
-                       "Jyllanj"
+                       "Jyllanj",
+                       "Ghiutun"
                ]
        },
        "tog-underline": "Unjestreg henwisnenge:",
        "thumbnail-more": "Forstör",
        "thumbnail_error": "Fejl we oprettels å thumbnail: $1",
        "importlogpage": "Importlogg",
-       "tooltip-pt-userpage": "Din brugesiid",
-       "tooltip-pt-mytalk": "Din diskusjonssiid",
-       "tooltip-pt-preferences": "Din instellenge",
+       "tooltip-pt-userpage": "{{GENDER:|Din brugesiid}}",
+       "tooltip-pt-mytalk": "{{GENDER:|Din}} diskusjonssiid",
+       "tooltip-pt-preferences": "{{GENDER:|Din}} instellenge",
        "tooltip-pt-watchlist": "Listen öwe side som du öwewåge for øndrenge",
-       "tooltip-pt-mycontris": "List öwe din bidraw",
+       "tooltip-pt-mycontris": "List öwe {{GENDER:|din}} bidraw",
        "tooltip-pt-login": "Du opfordas te å logg på, men dä ä ett obligatorisk.",
        "tooltip-pt-logout": "Logg å",
        "tooltip-pt-createaccount": "Du opfordas te å oprett e konto å logg på, men dä ä ett obligatorisk",
        "tooltip-t-whatlinkshere": "En list mä åll side som henwise hertil",
        "tooltip-t-recentchangeslinked": "Siensti øndrenge i side som denn siid henwise til",
        "tooltip-feed-atom": "Atom-feed for siden",
-       "tooltip-t-contributions": "Sie bidrawen te brugari",
+       "tooltip-t-contributions": "List öwe bidrawen te {{GENDER:$1|brugari}}",
        "tooltip-t-emailuser": "Senj i e-mail te brugari",
        "tooltip-t-upload": "Lägg e bilj elle i ånj mediafil op",
        "tooltip-t-specialpages": "List öwe åll specialside",
index 482b11e..234103c 100644 (file)
        "botpasswords-insert-failed": "ბოტის სახელის $1\" დამატება შეუძლებელია. უკვე დამატებულია?",
        "botpasswords-update-failed": "ბოტის სახელის \"$1\" განახლება შეუძლებელია. წაშლილია?",
        "botpasswords-created-title": "ბოტის პაროლი შექმნილია",
-       "botpasswords-created-body": "ბოტის პაროლი \"$1\" შეიქმნა.",
+       "botpasswords-created-body": "ბოტის პაროლი მომხმარებელ \"$2\"-ის \"$1\" სახელისთვის შეიქმნა.",
        "botpasswords-updated-title": "ბოტის პაროლი განახლდა",
-       "botpasswords-updated-body": "ბოტის პაროლი \"$1\" განახლდა.",
+       "botpasswords-updated-body": "ბოტის პაროლი \"$2\" მომხმარებლის \"$1\"-ის სახელისთვის განახლდა.",
        "botpasswords-deleted-title": "ბოტის პაროლი წაშლილია",
-       "botpasswords-deleted-body": "ბოტის პაროლი \"$1\" წაიშალა.",
+       "botpasswords-deleted-body": "ბოტის პაროლი \"$2\" მომხმარებლის \"$1\"-ის სახელისთვის წაიშალა.",
        "botpasswords-newpassword": "ახალი პაროლი <strong>$1</strong>-ით შესასვლელად არის <strong>$2</strong>. <em>გთხოვთ დაიმახსოვრეთ ან ჩაიწერეთ.</em>",
        "botpasswords-no-provider": "BotPasswordsSessionProvider არ არის ხელმისაწვდომი.",
        "botpasswords-restriction-failed": "ბოტის პაროლის შეზღუდვები არ უშვებს ამ ავტორიზაციას.",
        "recentchangeslinked-page": "გვერდის დასახელება:",
        "recentchangeslinked-to": "საპირისპიროდ აჩვენეთ ამ გვერდზე ბმულის მქონე გვერდების ცვლილებები",
        "recentchanges-page-added-to-category": "[[:$1]] დამატებულია კატეგორიაში",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] და {{PLURAL:$2|ერთი გვერდი|$2 გვერდი}} დამატებულია კატეგორიაში",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] და [[Special:WhatLinksHere/$1|{{PLURAL:$2|ერთი გვერდი|$2 გვერდი}}]] დამატებულია კატეგორიაში",
        "recentchanges-page-removed-from-category": "[[:$1]] წაიშალა კატეგორიიდან",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] და {{PLURAL:$2|ერთი გვერდი|$2 გვერდი}} წაიშალა კატეგორიიდან",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] და [[Special:WhatLinksHere/$1|{{PLURAL:$2|ერთი გვერდი|$2 გვერდი}}]] წაიშალა კატეგორიიდან",
        "autochange-username": "მედიავიკის ავტომატური ცვლილება",
        "upload": "ფაილის დამატება",
        "uploadbtn": "ფაილის დამატება",
        "changecontentmodel-title-label": "გვერდის სათაური",
        "changecontentmodel-model-label": "შინაარსის ახალი მოდელი",
        "changecontentmodel-reason-label": "მიზეზი:",
+       "changecontentmodel-submit": "შეცვლა",
        "changecontentmodel-success-title": "შინაარსის მოდელი შეიცვალა",
        "changecontentmodel-success-text": "[[:$1]]-ის კონტენტის ტიპი შეიცვალა.",
        "changecontentmodel-cannot-convert": "[[:$1]]-ის შინაარსის $2-ის ტიპზე კონვერტაცია შეუძლებელია.",
index a4a679f..0fe94da 100644 (file)
        "right-noratelimit": "Еселік шектелімдері ықпал етпейді",
        "right-import": "Басқа уикилерден беттерді сырттан алу",
        "right-importupload": "Файлдарды жүктеу арқылы беттерді сырттан алу",
-       "right-patrol": "Басқарардың өңдемелерін зерттелді деп белгілеу",
+       "right-patrol": "Басқарардың өңдемелерін тексерілді деп белгілеу",
        "right-autopatrol": "Өз өңдемелерін тексерілді деп өздіктік белгілеу",
        "right-patrolmarks": "Жуықтағы өзгерістердегі зерттеу белгілерін көру",
        "right-unwatchedpages": "Бақыланылмаған бет тізімін көру",
        "action-rollback": "жекелік беттегі соңғы өңдеген қатысушының соңғы өңдемелерін жылдам шегіндіру",
        "action-import": "беттерді басқа уикиден импортау",
        "action-importupload": "беттерді файл жүктеуінен импорттау",
-       "action-patrol": "басқалардың өңдеулерін зерттелді деп белгілеу",
-       "action-autopatrol": "өзіңіздің өңдемеңізді зерттелді деп белгілеу",
+       "action-patrol": "басқалардың өңдемелерін тексерілді деп белгілеу",
+       "action-autopatrol": "өзіңіздің өңдемеңізді тексерілді деп белгілеу",
        "action-unwatchedpages": "бақыланылмаған беттер тізімін қарау",
        "action-mergehistory": "Бұл беттің өзгеріс тарихын қосу",
        "action-userrights": "Қатысушылардың барлық құқықтарын өзгерту",
        "pageinfo-category-pages": "Беттер саны",
        "pageinfo-category-subcats": "Санатшалар саны",
        "pageinfo-category-files": "Файлдар саны",
-       "markaspatrolleddiff": "Ð\97еÑ\80Ñ\82Ñ\82елді деп белгілеу",
+       "markaspatrolleddiff": "ТекÑ\81еÑ\80Ñ\96лді деп белгілеу",
        "markaspatrolledtext": "Бұл бетті тексерілді деп белгілеу",
        "markedaspatrolled": "Тексерілді деп белгіленді",
        "markedaspatrolledtext": "Бөлектенген нұсқа [[:$1]] тексерілді деп белгіленді.",
        "rcpatroldisabled": "Жуықтағы өзгерістерді зерттеуі өшірілген",
        "rcpatroldisabledtext": "Жуықтағы өзгерістерді зерттеу мүмкіндігі ағымда өшірілген.",
        "markedaspatrollederror": "Зерттелді деп белгіленбейді",
-       "markedaspatrollederrortext": "Ð\97еÑ\80Ñ\82Ñ\82елді деп белгілеу үшін түзетуді келтіріңіз.",
+       "markedaspatrollederrortext": "ТекÑ\81еÑ\80Ñ\96лді деп белгілеу үшін түзетуді келтіріңіз.",
        "markedaspatrollederror-noautopatrol": "Өз жасаған өзгерістеріңізді зерттелді деп белгілей алмайсыз.",
        "markedaspatrollednotify": "$1 бетіндегі бұл өзгеріс тексерілді деп белгіленді.",
        "markedaspatrollederrornotify": "Тексерілді деп белгіленбеді.",
        "seconds-abbrev": "$1с",
        "minutes-abbrev": "$1мин",
        "hours-abbrev": "$1сағ",
-       "seconds": "{{PLURAL:$1|$1 секунт|$1 секунт}}",
+       "seconds": "{{PLURAL:$1|$1 секунд|$1 секунд}}",
        "minutes": "{{PLURAL:$1|$1 минут|$1 минут}}",
        "hours": "{{PLURAL:$1|$1 сағат|$1 сағат}}",
        "days": "{{PLURAL:$1|$1 күн|$1 күн}}",
        "api-error-unknownerror": "Белгісіз қате: \"$1\".",
        "api-error-uploaddisabled": "Бұл уикиде жүктеп беру өшірілген.",
        "api-error-verification-error": "Бұл файл бүлінген болуы мүмкін немесе теріс кеңейтуі бар.",
-       "duration-seconds": "$1 {{PLURAL:$1|секунт|секунт}}",
+       "duration-seconds": "$1 {{PLURAL:$1|секунд|секунд}}",
        "duration-minutes": "$1 {{PLURAL:$1|минут|минут}}",
        "duration-hours": "$1 {{PLURAL:$1|сағат|сағат}}",
        "duration-days": "$1 {{PLURAL:$1|күн|күн}}",
        "rotate-comment": "Сурет сағат бағытымен $1 {{PLURAL:$1|бұрыш|бұрыш}} айналды",
        "limitreport-title": "Деректер анализаторы:",
        "limitreport-cputime": "CPU уақытында қолданылуы",
-       "limitreport-cputime-value": "$1 {{PLURAL:$1|секунт|секунт}}",
+       "limitreport-cputime-value": "$1 {{PLURAL:$1|секунд|секунд}}",
        "limitreport-walltime": "Нақты уақытта қолданылуы",
-       "limitreport-walltime-value": "$1 {{PLURAL:$1|секунт|секунт}}",
+       "limitreport-walltime-value": "$1 {{PLURAL:$1|секунд|секунд}}",
        "limitreport-ppvisitednodes": "Аралаған түйіндер саны",
        "limitreport-ppgeneratednodes": "Препроцессордың жинақталатын түйіндерінің саны",
        "limitreport-postexpandincludesize": "Кірістірілген ашық мөлшері",
index 7ab3abb..8dcbb02 100644 (file)
        "nocookieslogin": "{{SITENAME}}에서는 로그인을 위해 쿠키를 사용합니다.\n쿠키가 비활성되어 있습니다.\n쿠키 사용을 활성화한 다음 다시 시도하세요.",
        "nocookiesfornew": "요청의 출처를 확인할 수 없기 때문에 사용자 계정이 만들어지지 않았습니다.\n쿠키를 활성화한 것을 확인하고, 이 문서를 새로 고치고 나서 다시 시도하세요.",
        "noname": "사용자 계정 이름이 올바르지 않습니다.",
-       "loginsuccesstitle": "로그인 성공",
+       "loginsuccesstitle": "로그인",
        "loginsuccess": "<strong>{{SITENAME}}에 \"$1\" 계정으로 로그인했습니다.</strong>",
-       "nosuchuser": "\"$1\" 사용자가 존재하지 않습니다.\n사용자 계정 이름은 대소문자를 구별합니다.\n철자가 맞는지 확인해주세요. [[Special:UserLogin/signup|새 계정을 만들 수도 있습니다]].",
+       "nosuchuser": "이름이 \"$1\"인 사용자는 없습니다.\n사용자 계정 이름은 대소문자를 구별합니다.\n철자가 맞는지 확인해주세요. [[Special:UserLogin/signup|새 계정을 만들 수도 있습니다]].",
        "nosuchusershort": "이름이 \"$1\"인 사용자는 없습니다.\n철자가 맞는지 확인하세요.",
        "nouserspecified": "사용자 계정 이름을 입력하지 않았습니다.",
        "login-userblocked": "이 사용자는 차단되었습니다. 로그인할 수 없습니다.",
        "newpassword": "새 비밀번호:",
        "retypenew": "새 비밀번호 다시 입력:",
        "resetpass_submit": "비밀번호를 설정하고 로그인하기",
-       "changepassword-success": "비밀번호가 성공적으로 바뀌었습니다!",
+       "changepassword-success": "비밀번호가 바뀌었습니다!",
        "changepassword-throttled": "최근 너무 많이 로그인을 시도했습니다.\n$1 뒤에 다시 시도하세요.",
        "botpasswords": "봇 비밀번호",
        "botpasswords-disabled": "봇 비밀번호가 비활성화되었습니다.",
        "botpasswords-insert-failed": "\"$1\" 봇 이름을 추가하는데 실패했습니다. 이미 등록되지 않았는지 확인하기 바랍니다.",
        "botpasswords-update-failed": "\"$1\" 봇 이름을 갱신하는데 실패했습니다. 이미 삭제되지 않았는지 확인하기 바랍니다.",
        "botpasswords-created-title": "봇 비밀번호 생성",
-       "botpasswords-created-body": "\"$1\"의 봇 비밀번호가 성공적으로 만들어졌습니다.",
+       "botpasswords-created-body": "사용자 \"$2\"의 \"$1\"라는 이름의 봇 비밀번호가 만들어졌습니다.",
        "botpasswords-updated-title": "봇 비밀번호 갱신",
-       "botpasswords-updated-body": "\"$1\"의 봇 비밀번호가 성공적으로 갱신되었습니다.",
+       "botpasswords-updated-body": "사용자 \"$2\"의 \"$1\"라는 이름의 봇 비밀번호가 업데이트되었습니다.",
        "botpasswords-deleted-title": "봇 비밀번호 제거",
-       "botpasswords-deleted-body": "\"$1\"의 봇 비밀번호가 제거되었습니다.",
+       "botpasswords-deleted-body": "사용자 \"$2\"의 \"$1\"라는 이름의 봇 비밀번호가 삭제되었습니다.",
        "botpasswords-newpassword": "<strong>$1</strong> 계정의 비밀번호가 <strong>$2</strong>로 변경되었습니다. <em>잊어버리지 않도록 기록해두시기 바랍니다.</em>",
        "botpasswords-no-provider": "'BotPasswordsSessionProvider'는 이용할 수 없습니다.",
        "botpasswords-restriction-failed": "봇 비밀번호 제한으로 인해 로그인할 수 없습니다.",
        "resetpass-no-info": "이 특수 문서에 직접 접근하려면 반드시 로그인해야 합니다.",
        "resetpass-submit-loggedin": "비밀번호 바꾸기",
        "resetpass-submit-cancel": "취소",
-       "resetpass-wrong-oldpass": "비밀번호가 잘못되었거나 현재의 비밀번호와 같습니다.\n이미 비밀번호를 성공적으로 바꾸었거나 새 임시 비밀번호를 요청했을 수 있습니다.",
+       "resetpass-wrong-oldpass": "비밀번호가 잘못되었거나 현재의 비밀번호와 같습니다.\n이미 비밀번호를 바꾸었거나 새 임시 비밀번호를 요청했을 수 있습니다.",
        "resetpass-recycled": "현재 비밀번호와 다른 비밀번호로 재설정해주세요.",
        "resetpass-temp-emailed": "임시 이메일 코드로 로그인되어 있습니다.\n로그인을 마치려면, 여기서 새 비밀번호를 설정해야 합니다:",
        "resetpass-temp-password": "임시 비밀번호:",
        "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|사용자 환경 설정]]에서 이메일 주소를 입력하고 이메일 주소 인증을 해주시기 바랍니다.",
        "previewnote": "'''이 화면은 미리 보기입니다.'''\n편집한 내용은 아직 저장하지 않았습니다!",
        "continue-editing": "편집 영역으로 가기",
        "previewconflict": "이 미리 보기는 저장할 때의 모습으로 위쪽 편집창의 문서를 반영합니다.",
-       "session_fail_preview": "세션 데이터가 없어져 편집을 저장하지 못했습니다.\n\n로그아웃 되었는지도 모릅니다. '''아직 로그인 상태인지 확인하고 다시 시도해주세요.'''\n다시 시도해도 되지 않으면 [[Special:UserLogout|로그아웃]]한 다음 다시 로그인하세요. 그리고 브라우저 설정에서 쿠키 사용을 허용하는지 확인하세요.",
+       "session_fail_preview": "세션 데이터가 없어져 편집을 저장하지 못했습니다.\n\n로그아웃 되었는지도 모릅니다. <strong>아직 로그인 상태인지 확인하고 다시 시도해주세요</strong>.\n다시 시도해도 되지 않으면 [[Special:UserLogout|로그아웃]]한 다음 다시 로그인하세요. 그리고 브라우저 설정에서 쿠키 사용을 허용하는지 확인하세요.",
        "session_fail_preview_html": "세션 데이터가 없어져 편집을 저장하지 못했습니다.\n\n<em>{{SITENAME}}에서 HTML 입력을 허용하기 때문에, 자바스크립트 공격을 막기 위해 미리 보기는 숨겨져 있습니다.</em>\n\n<strong>적합하게 편집을 시도했다면 다시 시도해주세요.</strong>\n다시 시도해도 되지 않으면 [[Special:UserLogout|로그아웃]]한 다음 다시 로그인하고, 브라우저가 이 사이트에서 쿠키를 허용하는지 확인하세요.",
        "token_suffix_mismatch": "'''저장하려는 내용의 문장 부호가 망가져 있습니다.'''\n문서 보호를 위해 해당 내용을 저장하지 않습니다.\n버그가 있는 익명 프록시 서비스 등을 사용할 때 이런 문제가 발생할 수 있습니다.",
        "edit_form_incomplete": "'''편집의 일부 내용이 서버에 전달되지 않았습니다. 편집이 손상되지 않았는지 확인하고 다시 시도해 주십시오.'''",
        "copyrightwarning2": "{{SITENAME}}에서의 모든 기여는 다른 사용자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요.\n만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.<br />\n또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 내용에 대해서는 $1 문서를 읽어 주세요).\n'''저작권이 있는 내용을 허가 없이 저장하지 마세요!'''",
        "editpage-cannot-use-custom-model": "이 문서의 콘텐츠 모델은 변경될 수 없습니다.",
        "longpageerror": "'''오류: 문서의 크기가 {{PLURAL:$1|$1킬로바이트}}로 최대 크기인 {{PLURAL:$2|$2킬로바이트}}보다 큽니다.'''\n저장할 수 없습니다.",
-       "readonlywarning": "<strong>경고: 데이터베이스가 관리를 위해 잠겨 있습니다. 따라서 문서를 편집한 내용을 지금 저장할 수 없습니다.</strong>\n편집 내용을 복사하여 붙여넣기 등을 사용하여 일단 다른 곳에 저장한 후, 나중에 다시 시도해 주세요.\n\n잠근 관리자가 남긴 설명은 다음과 같습니다: $1",
+       "readonlywarning": "<strong>경고: 데이터베이스가 관리를 위해 잠겨 있습니다. 따라서 문서를 편집한 내용을 지금 저장할 수 없습니다.</strong>\n편집 내용을 복사하여 붙여넣기 등을 사용하여 일단 다른 곳에 저장한 후, 나중에 다시 시도해 주세요.\n\n데이터베이스를 잠근 시스템 관리자가 남긴 설명은 다음과 같습니다: $1",
        "protectedpagewarning": "<strong>경고: 이 문서는 관리자 권한이 있는 사용자만 편집할 수 있도록 보호되어 있습니다.</strong>\n이 문서의 최근 기록을 참조하십시오:",
        "semiprotectedpagewarning": "<strong>참고:</strong> 이 문서는 계정을 등록한 사용자만이 편집할 수 있도록 보호되어 있습니다.\n이 문서의 최근 기록을 참조하십시오:",
        "cascadeprotectedwarning": "<strong>경고:</strong> 이 문서는 보호되어 있어 관리자만 편집할 수 있습니다. 연쇄적 보호가 걸린 다음 {{PLURAL:$1|문서}}에서 이 문서를 사용하고 있습니다:",
        "revdelete-unsuppress": "되살린 판에 대한 제한을 해제",
        "revdelete-log": "이유:",
        "revdelete-submit": "선택한 {{PLURAL:$1|판}}에 적용",
-       "revdelete-success": "'''판의 보이기 설정을 성공적으로 바꾸었습니다.'''",
+       "revdelete-success": "판의 보이기 설정을 바꾸었습니다.",
        "revdelete-failure": "'''특정 판 보기 설정을 바꾸지 못했습니다:'''\n$1",
-       "logdelete-success": "'''기록 보이기 설정을 성공적으로 바꾸었습니다.'''",
+       "logdelete-success": "기록 보이기를 설정했습니다.",
        "logdelete-failure": "'''기록 보이기 설정을 바꾸지 못했습니다:'''\n$1",
        "revdel-restore": "보이기 설정 바꾸기",
        "pagehist": "문서 역사",
        "userrights-changeable-col": "바꿀 수 있는 권한",
        "userrights-unchangeable-col": "바꿀 수 없는 권한",
        "userrights-conflict": "사용자 권한 바꾸기가 충돌합니다! 바뀜을 검토하고 확인하세요.",
-       "userrights-removed-self": "ì\9e\90ì\8b ì\9d\98 ê¶\8cí\95\9cì\9d\84 ì \9cê±°í\95\98ë\8a\94 ë\8d° ì\84±ê³µí\96\88ì\8aµë\8b\88ë\8b¤. ë\94°ë\9d¼ì\84\9c ë\8d\94 ì\9d´ì\83\81 ì\9d´ ë¬¸ì\84\9cì\97\90 ì \91ê·¼í\95  ì\88\98 ì\97\86ì\8aµë\8b\88ë\8b¤.",
+       "userrights-removed-self": "자신의 권한을 제거했습니다. 따라서 더 이상 이 문서에 접근할 수 없습니다.",
        "group": "그룹:",
        "group-user": "사용자",
        "group-autoconfirmed": "자동 인증된 사용자",
        "foreign-structured-upload-form-label-own-work": "자작입니다",
        "foreign-structured-upload-form-label-infoform-categories": "분류",
        "foreign-structured-upload-form-label-infoform-date": "날짜",
-       "foreign-structured-upload-form-label-not-own-work-message-shared": "이 파일의 저작권을 소유하지 않거나 다른 라이선스로 배포하고 싶다면 [https://commons.wikimedia.org/wiki/Special:UploadWizard 공용 파일 올리기 마법사]를 이용해 보세요.",
+       "foreign-structured-upload-form-label-own-work-message-shared": "나는 이 파일에 대한 저작권을 소유하고 있음을 입증하고, 영구히 위키미디어 공용에 이 파일을 [https://creativecommons.org/licenses/by-sa/4.0/ 크리에이티브 커먼즈 저작자표시-동일조건변경허락 4.0]에 따라 배포하는 데 동의하며, [https://wikimediafoundation.org/wiki/Terms_of_Use 이용 약관]에 동의합니다.",
+       "foreign-structured-upload-form-label-not-own-work-message-shared": "이 파일의 저작권을 소유하지 않거나 다른 라이선스로 배포하고 싶다면 [https://commons.wikimedia.org/wiki/Special:UploadWizard 공용 파일 올리기 마법사]를 사용하는 것을 고려해보세요.",
        "backend-fail-stream": "\"$1\" 파일을 스트림할 수 없습니다.",
        "backend-fail-backup": "\"$1\" 파일을 백업할 수 없습니다.",
        "backend-fail-notexists": "$1 파일이 존재하지 않습니다.",
        "backend-fail-read": "\"$1\" 파일을 읽을 수 없습니다.",
        "backend-fail-create": "\"$1\" 파일을 저장할 수 없습니다.",
        "backend-fail-maxsize": "{{PLURAL:$2|1 바이트|$2 바이트}}보다 커서 \"$1\" 파일을 저장하지 못했습니다.",
-       "backend-fail-readonly": "\"$1\" 저장 백엔드가 읽기 전용입니다. 자세한 이유는 다음과 같습니다: \"$2\"",
+       "backend-fail-readonly": "\"$1\" 저장 백엔드가 읽기 전용입니다. 자세한 이유는 다음과 같습니다: <em>$2</em>",
        "backend-fail-synced": "\"$1\" 파일은 내부 저장 백엔드에 불안정한 상태로 있습니다",
        "backend-fail-connect": "\"$1\" 저장 백엔드에 접속하지 못했습니다.",
        "backend-fail-internal": "\"$1\" 저장 백엔드에 알 수 없는 오류가 발생했습니다.",
        "lockmanager-fail-deletelock": "\"$1\"에 대한 잠금 파일을 삭제하지 못했습니다.",
        "lockmanager-fail-acquirelock": "\"$1\"에 대한 잠금이 실패했습니다.",
        "lockmanager-fail-openlock": "\"$1\"에 대한 잠금 파일을 열지 못했습니다.",
-       "lockmanager-fail-releaselock": "\"$1\"ì\97\90 ë\8c\80í\95\9c ì\9e ê¸\88ì\9d\84 í\95´ì \9cí\95\98지 못했습니다.",
+       "lockmanager-fail-releaselock": "\"$1\"ì\97\90 ë\8c\80í\95\9c ì\9e ê¸\88ì\9d\84 í\92\80지 못했습니다.",
        "lockmanager-fail-db-bucket": "데이터베이스의 버킷 $1의 잠금을 풀지 못했습니다.",
        "lockmanager-fail-db-release": "데이터베이스 $1의 잠금을 풀지 못했습니다.",
        "lockmanager-fail-svr-acquire": "서버 $1의 잠금을 걸지 못했습니다.",
        "uploadstash-summary": "이 문서는 위키에 등록되지는 않았지만 올리는 과정 중에 있는 파일을 접근할 수 있습니다. 이 파일은 올린이 외에는 볼 수 없습니다.",
        "uploadstash-clear": "임시 저장한 파일 제거하기",
        "uploadstash-nofiles": "임시 저장한 파일이 없습니다.",
-       "uploadstash-badtoken": "ì\9d´ ë\8f\99ì\9e\91ì\9d\84 ì\88\98í\96\89í\95\98ë\8a\94 ë\8d° ì\8b¤í\8c¨í\96\88ì\8aµë\8b\88ë\8b¤. í\8e¸ì§\91 í\86 í\81°ì\9d´ ë§\8cë£\8cë\90\98ì\97\88ì\9d\84 ê°\80ë\8a¥ì\84±ì\9d´ ì\9e\88ì\8aµë\8b\88ë\8b¤. ë\8b¤ì\8b\9c ì\8b\9cë\8f\84í\95\98세요.",
-       "uploadstash-errclear": "í\8c\8cì\9d¼ì\9d\84 ì \9cê±°í\95\98는 데 실패했습니다.",
+       "uploadstash-badtoken": "ì\9d´ ë\8f\99ì\9e\91ì\9d\84 ì\88\98í\96\89í\95\98ë\8a\94 ë\8d° ì\8b¤í\8c¨í\96\88ì\8aµë\8b\88ë\8b¤. í\8e¸ì§\91 í\86 í\81°ì\9d´ ë§\8cë£\8cë\90\98ì\97\88ì\9d\84 ê°\80ë\8a¥ì\84±ì\9d´ ì\9e\88ì\8aµë\8b\88ë\8b¤. ë\8b¤ì\8b\9c ì\8b\9cë\8f\84í\95´ì£¼세요.",
+       "uploadstash-errclear": "í\8c\8cì\9d¼ì\9d\84 ì§\80ì\9a°는 데 실패했습니다.",
        "uploadstash-refresh": "파일 목록을 새로 고침",
        "invalid-chunk-offset": "청크 오프셋이 잘못되었습니다.",
        "img-auth-accessdenied": "접근이 거부됨",
        "apihelp-no-such-module": "\"$1\" 모듈을 찾을 수 없습니다.",
        "apisandbox": "API 실험실",
        "apisandbox-api-disabled": "이 사이트에서는 API가 꺼져 있습니다.",
-       "apisandbox-intro": "'''미디어위키 웹 서비스 API'''를 시험해보려면 이 페이지를 이용해보세요. API 용법에 대해서는 [//www.mediawiki.org/wiki/API:Main_page API 문서]을 참고하십시오. 예: [//www.mediawiki.org/wiki/API#A_simple_example 대문의 내용 요청하기]. 더 많은 예를 보려면 액션을 선택하세요.\n\n여기가 연습장이라도 이 페이지에서 실행하는 동작때문에 위키를 변경할 수도 있다는 점에 유의하십시오.",
+       "apisandbox-intro": "<strong>미디어위키 웹 서비스 API</strong>를 시험해보려면 이 페이지를 이용해보세요. API 용법에 대해서는 [[mw:API:Main page|API 문서]]을 참고하십시오. 예: [//www.mediawiki.org/wiki/API#A_simple_example 대문의 내용 요청하기]. 더 많은 예를 보려면 액션을 선택하세요.\n\n여기가 연습장이라도 이 페이지에서 실행하는 동작때문에 위키를 변경할 수도 있다는 점에 유의하십시오.",
        "apisandbox-fullscreen": "패널 늘리기",
        "apisandbox-fullscreen-tooltip": "브라우저 창에 맞도록 샌드박스 패널 늘리기",
        "apisandbox-unfullscreen": "페이지 보기",
        "listgrouprights-namespaceprotection-namespace": "이름공간",
        "listgrouprights-namespaceprotection-restrictedto": "사용자가 편집할 수 있는 권한",
        "listgrants": "부여",
-       "listgrants-summary": "다음은 사용자 권한에 관련된 접근 권한을 통해 부여된 OAuth 부여 목록입니다. 사용자는 자신의 계정에 대해 권한을 부여 할 수 있지만, 사용자가 응용 프로그램에 부여한 권한 설정에 따라 제한이 있습니다. 사용자를 대신하여 동작하는 응용 프로그램은 사용자가 갖고 있지 않은 권한은 사용할 수 없습니다. \n각각의 권한에 대한 [[{{MediaWiki:Listgrouprights-helppage}}|추가 정보]]가 있습니다.",
+       "listgrants-summary": "다음은 사용자 권한에 관련된 접근 권한을 통해 부여된 부여 목록입니다. 사용자는 자신의 계정에 대해 권한을 부여 할 수 있지만, 사용자가 애플리케이션에 부여한 권한 설정에 따라 제한이 있습니다. 사용자를 대신하여 동작하는 애플리케이션은 사용자가 갖고 있지 않은 권한은 사용할 수 없습니다. \n각각의 권한에 대한 [[{{MediaWiki:Listgrouprights-helppage}}|추가 정보]]가 있습니다.",
        "listgrants-grant": "부여",
        "listgrants-rights": "권한",
        "trackingcategories": "추적용 분류",
        "emailccsubject": "$1에게 보낸 메시지의 복사본: $2",
        "emailsent": "이메일 보냄",
        "emailsenttext": "이메일을 보냈습니다.",
-       "emailuserfooter": "이 이메일은 {{SITENAME}}의 $1 사용자가 $2 사용자에게 \"{{int:emailuser}}\" 기능을 통해 보냈습니다.",
+       "emailuserfooter": "이 이메일은 {{SITENAME}}의 $1님이 $2 사용자에게 \"{{int:emailuser}}\" 기능을 통해 보냈습니다.",
        "usermessage-summary": "시스템 메시지 남기기",
        "usermessage-editor": "시스템 메신저",
        "usermessage-template": "MediaWiki:UserMessage",
        "delete-toobig": "이 문서에는 {{PLURAL:$1|편집 역사}}가 $1개 이상 있습니다.\n{{SITENAME}}에 의도하지 않은 혼란을 줄 수 있기 때문에 이런 문서의 삭제는 제한됩니다.",
        "delete-warning-toobig": "이 문서에는 {{PLURAL:$1|편집 역사}}가 $1개 있습니다.\n편집 역사가 긴 문서를 삭제하면 {{SITENAME}} 데이터베이스 동작에 큰 영향을 줄 수 있습니다.\n주의해 주세요.",
        "deleteprotected": "이 문서가 보호되어 있기 때문에 삭제할 수 없습니다.",
-       "deleting-backlinks-warning": "'''경고:''' 삭제하려는 문서가 [[Special:WhatLinksHere/{{FULLPAGENAME}}|다른 문서]]에 링크되어 있거나 끼워져 있습니다.",
+       "deleting-backlinks-warning": "<strong>경고:/<strong> 삭제하려는 문서가 [[Special:WhatLinksHere/{{FULLPAGENAME}}|다른 문서]]에 링크되어 있거나 끼워져 있습니다.",
        "rollback": "편집 되돌리기",
        "rollbacklink": "되돌리기",
        "rollbacklinkcount": "{{PLURAL:$1|편집}} $1회 되돌리기",
        "changecontentmodel-title-label": "문서 제목",
        "changecontentmodel-model-label": "새 콘텐츠 모델",
        "changecontentmodel-reason-label": "이유:",
+       "changecontentmodel-submit": "바꾸기",
        "changecontentmodel-success-title": "콘텐츠 모델이 변경되었습니다",
        "changecontentmodel-success-text": "[[:$1]]의 콘텐츠 종류가 변경되었습니다.",
        "changecontentmodel-cannot-convert": "[[:$1]]의 콘텐츠 모델이 $2의 모델로 전환될 수 없습니다.",
        "changecontentmodel-nodirectediting": "$1 콘텐츠 모델은 직접 편집을 지원하지 않습니다",
        "log-name-contentmodel": "콘텐츠 모델 변경 기록",
        "log-description-contentmodel": "페이지의 콘텐츠 모델과 관련된 행위",
-       "logentry-contentmodel-change": "$1 사용자가 $3 의 콘텐츠 모델을 \"$4\"에서 \"$5\"로 {{GENDER:$2|변경하였습니다}}.",
+       "logentry-contentmodel-new": "$1님이 비 기본값 \"$5\" 콘텐츠 모델을 사용해  $3 문서를 {{GENDER:$2|만들었습니다}}",
+       "logentry-contentmodel-change": "$1님이 $3 문서의 콘텐츠 모델을 \"$4\"에서 \"$5\"로 {{GENDER:$2|바꾸었습니다}}",
        "logentry-contentmodel-change-revertlink": "되돌리기",
        "logentry-contentmodel-change-revert": "되돌리기",
        "protectlogpage": "문서 보호 기록",
        "tooltip-namespace_association": "선택한 이름공간과 관련된 토론이나 본문 이름공간을 포함하려면 이 상자를 선택하세요",
        "blanknamespace": "(일반)",
        "contributions": "{{GENDER:$1|사용자}} 기여",
-       "contributions-title": "$1 사용자의 기여",
+       "contributions-title": "$1의 사용자 기여",
        "mycontris": "기여",
        "anoncontribs": "기여",
        "contribsub2": "{{GENDER:$3|$1}}($2)의 기여",
        "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해당 사용자의 차단 기록은 다음과 같습니다:",
-       "blocklogentry": "사용자가 [[$1]] 사용자를 $2 차단했습니다 $3",
-       "reblock-logentry": "사용자가 [[$1]] 사용자의 차단 기간을 $2(으)로 바꾸었습니다 $3",
+       "blocklogentry": "님이 [[$1]]님을 $2 차단했습니다 $3",
+       "reblock-logentry": "님이 [[$1]]님의 차단 기간을 $2(으)로 바꾸었습니다 $3",
        "blocklogtext": "이 목록은 사용자 차단/차단 해제 기록입니다.\n자동으로 차단된 IP 주소는 여기에 나오지 않습니다.\n[[Special:BlockList|여기]]에서 현재 차단된 사용자 목록을 볼 수 있습니다.",
-       "unblocklogentry": "사용자가 $1 사용자를 차단 해제했습니다",
+       "unblocklogentry": "님이 $1님을 차단 해제했습니다",
        "block-log-flags-anononly": "IP만 막음",
        "block-log-flags-nocreate": "계정 만들기 금지됨",
        "block-log-flags-noautoblock": "자동 차단 비활성화됨",
        "ipb_expiry_old": "기한을 과거로 입력했습니다.",
        "ipb_expiry_temp": "사용자 이름을 숨기는 차단은 반드시 무기한이어야 합니다.",
        "ipb_hide_invalid": "해당 계정은 막을 수 없습니다. {{PLURAL:$1|1회|$1회}} 이상 편집했습니다.",
-       "ipb_already_blocked": "\"$1\" 사용자는 이미 차단되었습니다",
-       "ipb-needreblock": "$1 사용자는 이미 차단되었습니다. 차단 설정을 바꾸시겠습니까?",
+       "ipb_already_blocked": "\"$1\"님은 이미 차단되었습니다.",
+       "ipb-needreblock": "$1님은 이미 차단되었습니다. 차단 설정을 바꾸시겠습니까?",
        "ipb-otherblocks-header": "다른 {{PLURAL:$1|차단}} 기록",
        "unblock-hideuser": "이 사용자 이름이 숨겨져 있기 때문에 이 사용자를 차단 해제할 수 없습니다.",
        "ipb_cant_unblock": "오류: $1 차단 ID가 존재하지 않습니다. 이미 차단 해제되었을 수 있습니다.",
        "import-nonewrevisions": "가져온 판 없음(모든 판이 이미 존재하거나 오류로 인해 건너뛰었을 수도 있습니다.)",
        "xml-error-string": "$3단 $2줄 (바이트 $4)에서 $1: $5",
        "import-upload": "XML 데이터 올리기",
-       "import-token-mismatch": "세션 데이터가 손실되었습니다.\n다시 시도하세요.",
+       "import-token-mismatch": "세션 데이터가 손실되었습니다.\n\n로그아웃 되었는지도 모릅니다. <strong>아직 로그인 상태인지 확인하고 다시 시도해주세요</strong>.\n다시 시도해도 되지 않으면 [[Special:UserLogout|로그아웃]]한 다음 다시 로그인하세요. 그리고 브라우저 설정에서 쿠키 사용을 허용하는지 확인하세요.",
        "import-invalid-interwiki": "해당 위키에서 문서를 가져올 수 없습니다.",
        "import-error-edit": "문서를 편집할 수 없기 때문에 \"$1\" 문서를 가져올 수 없었습니다.",
        "import-error-create": "문서를 만들 수 없기 때문에 \"$1\" 문서를 가져올 수 없었습니다.",
        "pageinfo-visiting-watchers": "이 문서를 최근에 방문한 주시하는 사용자 수",
        "pageinfo-few-watchers": "{{PLURAL:$1|주시하는 사용자}} $1명보다 적음",
        "pageinfo-redirects-name": "이 문서의 넘겨주기 수",
-       "pageinfo-redirects-value": "$1",
+       "pageinfo-redirects-value": "$1",
        "pageinfo-subpages-name": "이 문서의 하위 문서 수",
        "pageinfo-subpages-value": "$1개 ({{PLURAL:$2|넘겨주기}} $2개, {{PLURAL:$3|넘겨주기 아님}} $3개)",
        "pageinfo-firstuser": "문서 작성자",
        "exif-compression-32946": "수축 (PKZIP)",
        "exif-copyrighted-true": "저작권의 보호를 받음",
        "exif-copyrighted-false": "저작권 상태를 설정하지 않음",
+       "exif-photometricinterpretation-0": "흑백 (백은 0)",
        "exif-photometricinterpretation-1": "검은색과 흰색 (검은색이 0)",
+       "exif-photometricinterpretation-3": "팔레트",
+       "exif-photometricinterpretation-4": "투명 마스크",
+       "exif-photometricinterpretation-5": "분리 (아마도 CMYK)",
+       "exif-photometricinterpretation-9": "CIE L*a*b* (ICC 인코딩)",
+       "exif-photometricinterpretation-10": "CIE L*a*b* (ITU 인코딩)",
+       "exif-photometricinterpretation-32803": "컬러 필터 어레이",
        "exif-unknowndate": "날짜를 알 수 없음",
        "exif-orientation-1": "일반",
        "exif-orientation-2": "수평으로 뒤집음",
        "autoredircomment": "[[$1]] 문서로 넘겨주기",
        "autosumm-new": "새 문서: $1",
        "autosumm-newblank": "빈 문서를 만듦",
+       "size-bytes": "$1 {{PLURAL:$1|바이트}}",
+       "size-pixel": "$1 {{PLURAL:$1|픽셀}}",
        "lag-warn-normal": "최근 $1{{PLURAL:$1|초}} 안에 바뀐 문서는 이 목록에서 빠졌을 수 있습니다.",
        "lag-warn-high": "데이터베이스 서버의 과도한 부하 때문에 최근 $1{{PLURAL:$1|초}} 안에 바뀐 문서 목록은 보이지 않을 수 있습니다.",
        "watchlistedit-normal-title": "주시문서 목록 편집하기",
        "tags-edit-revision-legend": "{{PLURAL:$1|이 판|$1개 판 모두}}에 태그를 추가하거나 제거",
        "tags-edit-logentry-legend": "{{PLURAL:$1|이 기록|$1개 기록 모두}}에 태그를 추가하거나 제거",
        "tags-edit-existing-tags": "기존 태그:",
-       "tags-edit-existing-tags-none": "''없음''",
+       "tags-edit-existing-tags-none": "<em>없음</em>",
        "tags-edit-new-tags": "새 태그:",
        "tags-edit-add": "다음 태그를 추가:",
        "tags-edit-remove": "다음 태그를 제거:",
        "tags-edit-chosen-no-results": "일치하는 태그를 찾을 수 없습니다",
        "tags-edit-reason": "이유:",
        "tags-edit-revision-submit": "{{PLURAL:$1|이 판|$1개 판}}에 수정 사항을 적용",
-       "tags-edit-logentry-submit": "{{PLURAL:$1|이 기록|$1개 기록}}에 수정 사항을 적용",
-       "tags-edit-success": "수정사항이 성공적으로 적용되었습니다.",
+       "tags-edit-logentry-submit": "{{PLURAL:$1|이 기록 항목|$1개 기록 항목}}에 수정 사항을 적용",
+       "tags-edit-success": "바뀜이 적용되었습니다.",
        "tags-edit-failure": "수정 사항이 적용될 수 없습니다: $1",
        "tags-edit-nooldid-title": "대상 판이 잘못되었습니다",
        "tags-edit-nooldid-text": "이 기능을 수행할 특정 판을 제시하지 않았거나 해당 판이 없습니다.",
        "htmlform-user-not-valid": "<strong>$1</strong>은 올바른 사용자 이름이 아닙니다.",
        "sqlite-has-fts": "$1 (본문 전체 검색 지원)",
        "sqlite-no-fts": "$1 (본문 전체 검색 지원 제외)",
-       "logentry-delete-delete": "$1 사용자가 $3 문서를 {{GENDER:$2|삭제했습니다}}",
-       "logentry-delete-restore": "$1 사용자가 $3 문서를 {{GENDER:$2|되살렸습니다}}",
-       "logentry-delete-event": "$1 사용자가 $3의 {{PLURAL:$1|기록 $5개}}에 대해 보이기 설정을 {{GENDER:$2|바꾸었습니다}}: $4",
-       "logentry-delete-revision": "$1 사용자가 $3 문서의 {{PLURAL:$5|$5개 편집}}의 설정을 {{GENDER:$2|바꾸었습니다}}: $4",
-       "logentry-delete-event-legacy": "$1 사용자가 $3 문서 기록의 보이기 설정을 {{GENDER:$2|바꾸었습니다}}",
-       "logentry-delete-revision-legacy": "$1 사용자가 $3 문서 편집의 보이기 설정을 {{GENDER:$2|바꾸었습니다}}",
-       "logentry-suppress-delete": "$1 사용자가 $3 문서를 {{GENDER:$2|숨겼습니다}}",
-       "logentry-suppress-event": "$1 사용자가 비공개적으로 $3의 {{PLURAL:$5|기록 $5개}}에 대해 보이기 설정을 {{GENDER:$2|바꾸었습니다}}: $4",
-       "logentry-suppress-revision": "$1 사용자가 비공개적으로 $3 문서의 {{PLURAL:$5|판 $5개}}에 대해 보이기 설정을 {{GENDER:$2|바꾸었습니다}}: $4",
-       "logentry-suppress-event-legacy": "$1 사용자가 비공개적으로 $3의 항목에 대한 보이기 설정을 {{GENDER:$2|바꾸었습니다}}",
-       "logentry-suppress-revision-legacy": "$1 사용자가 비공개적으로 $3 문서의 특정 판에 대한 보이기 설정을 {{GENDER:$2|바꾸었습니다}}",
+       "logentry-delete-delete": "$1님이 $3 문서를 {{GENDER:$2|삭제했습니다}}",
+       "logentry-delete-restore": "$1님이 $3 문서를 {{GENDER:$2|되살렸습니다}}",
+       "logentry-delete-event": "$1님이 $3의 {{PLURAL:$1|기록 $5개}}에 대해 보이기 설정을 {{GENDER:$2|바꾸었습니다}}: $4",
+       "logentry-delete-revision": "$1님이 $3 문서의 {{PLURAL:$5|$5개 편집}}의 설정을 {{GENDER:$2|바꾸었습니다}}: $4",
+       "logentry-delete-event-legacy": "$1님이 $3 문서 기록의 보이기 설정을 {{GENDER:$2|바꾸었습니다}}",
+       "logentry-delete-revision-legacy": "$1님이 $3 문서 편집의 보이기 설정을 {{GENDER:$2|바꾸었습니다}}",
+       "logentry-suppress-delete": "$1님이 $3 문서를 {{GENDER:$2|숨겼습니다}}",
+       "logentry-suppress-event": "$1님이 비공개적으로 $3의 {{PLURAL:$5|기록 $5개}}에 대해 보이기 설정을 {{GENDER:$2|바꾸었습니다}}: $4",
+       "logentry-suppress-revision": "$1님이 비공개적으로 $3 문서의 {{PLURAL:$5|판 $5개}}에 대해 보이기 설정을 {{GENDER:$2|바꾸었습니다}}: $4",
+       "logentry-suppress-event-legacy": "$1님이 비공개적으로 $3의 항목에 대한 보이기 설정을 {{GENDER:$2|바꾸었습니다}}",
+       "logentry-suppress-revision-legacy": "$1님이 비공개적으로 $3 문서의 특정 판에 대한 보이기 설정을 {{GENDER:$2|바꾸었습니다}}",
        "revdelete-content-hid": "내용 숨겨짐",
        "revdelete-summary-hid": "편집 요약 숨겨짐",
        "revdelete-uname-hid": "사용자 이름 숨겨짐",
        "revdelete-uname-unhid": "사용자 이름 숨김 해제됨",
        "revdelete-restricted": "관리자에게 제한을 적용함",
        "revdelete-unrestricted": "관리자에 대한 제한을 해제함",
-       "logentry-block-block": "$1 {{GENDER:$2|사용자가}} {{GENDER:$4|$3}} 사용자를 $5 $6 설정으로 차단했습니다.",
-       "logentry-block-unblock": "$1 {{GENDER:$2|사용자가}} {{GENDER:$4|$3}} 사용자의 차단을 해제했습니다.",
-       "logentry-block-reblock": "$1 {{GENDER:$2|사용자가}} {{GENDER:$4|$3}} 사용자의 차단을 $5 $6 설정으로 변경했습니다.",
-       "logentry-suppress-block": "$1 {{GENDER:$2|사용자가}} {{GENDER:$4|$3}} 사용자를 $5 $6 설정으로 차단했습니다.",
-       "logentry-suppress-reblock": "$1 {{GENDER:$2|사용자가}} {{GENDER:$4|$3}} 사용자의 차단을 $5 $6 설정으로 변경했습니다.",
-       "logentry-import-upload": "$1 사용자가 $3 문서를 파일 올리기로 {{GENDER:$2|가져왔습니다}}",
-       "logentry-import-interwiki": "$1 사용자가 $3을 다른 위키에서 {{GENDER:$2|가져왔습니다}}",
-       "logentry-merge-merge": "$1 사용자가 $3 문서를 $4 안에 {{GENDER:$2|병합했습니다}} (판은 $5까지)",
-       "logentry-move-move": "$1 사용자가 $3 문서를 $4 문서로 {{GENDER:$2|이동했습니다}}",
-       "logentry-move-move-noredirect": "$1 사용자가 $3 문서를 넘겨주기를 만들지 않고 $4 문서로 {{GENDER:$2|옮겼습니다}}",
-       "logentry-move-move_redir": "$1 사용자가 $3 문서를 $4 문서로 {{GENDER:$2|이동하면서}} 넘겨주기를 덮어썼습니다",
-       "logentry-move-move_redir-noredirect": "$1 사용자가 $3 문서를 $4 문서로 넘겨주기를 남기지 않고 {{GENDER:$2|이동하면서}} 이동할 대상에 있던 넘겨주기를 덮어썼습니다",
-       "logentry-patrol-patrol": "$1 사용자가 $3 문서의 $4판을 점검한 것으로 {{GENDER:$2|표시했습니다}}",
-       "logentry-patrol-patrol-auto": "$1 사용자가 자동적으로 $3 문서의 $4판을 점검한 것으로 {{GENDER:$2|표시했습니다}}",
+       "logentry-block-block": "$1님이 {{GENDER:$4|$3}}님을 $5 {{GENDER:$2|차단했습니다}} $6",
+       "logentry-block-unblock": "$1님이 {{GENDER:$4|$3}} 사용자의 {{GENDER:$2|차단을 해제했습니다}}",
+       "logentry-block-reblock": "$1님이 {{GENDER:$4|$3}} 사용자의 차단 기간을 $5 설정으로 {{GENDER:$2|바꾸었습니다}} $6",
+       "logentry-suppress-block": "$1님이 {{GENDER:$4|$3}} 사용자를 $5 {{GENDER:$2|차단했습니다}} $6",
+       "logentry-suppress-reblock": "$1님이 {{GENDER:$4|$3}} 사용자의 차단 기간을 $5 설정으로 {{GENDER:$2|바꾸었습니다}} $6",
+       "logentry-import-upload": "$1님이 $3 문서를 파일 올리기로 {{GENDER:$2|가져왔습니다}}",
+       "logentry-import-upload-details": "$1님이 $3 문서 ({{PLURAL:$4|판}} $4개)를 파일 올리기로 {{GENDER:$2|가져왔습니다}}",
+       "logentry-import-interwiki": "$1님이 $3 문서를 다른 위키에서 {{GENDER:$2|가져왔습니다}}",
+       "logentry-import-interwiki-details": "$1님이 $3 문서 ({{PLURAL:$4|판}} $4개)를 다른 위키에서 {{GENDER:$2|가져왔습니다}}",
+       "logentry-merge-merge": "$1님이 $3 문서를 $4 안에 {{GENDER:$2|병합했습니다}} (판은 $5까지)",
+       "logentry-move-move": "$1님이 $3 문서를 $4 문서로 {{GENDER:$2|이동했습니다}}",
+       "logentry-move-move-noredirect": "$1님이 $3 문서를 넘겨주기를 만들지 않고 $4 문서로 {{GENDER:$2|이동했습니다}}",
+       "logentry-move-move_redir": "$1님이 $3 문서를 $4 문서로 {{GENDER:$2|이동하면서}} 넘겨주기를 덮어썼습니다",
+       "logentry-move-move_redir-noredirect": "$1님이 $3 문서를 $4 문서로 넘겨주기를 남기지 않고 {{GENDER:$2|이동하면서}} 이동할 대상에 있던 넘겨주기를 덮어썼습니다",
+       "logentry-patrol-patrol": "$1님이 $3 문서의 $4판을 점검한 것으로 {{GENDER:$2|표시했습니다}}",
+       "logentry-patrol-patrol-auto": "$1님이 자동적으로 $3 문서의 $4판을 점검한 것으로 {{GENDER:$2|표시했습니다}}",
        "logentry-newusers-newusers": "$1 사용자 계정을 {{GENDER:$2|만들었습니다}}",
        "logentry-newusers-create": "$1 사용자 계정을 {{GENDER:$2|만들었습니다}}",
-       "logentry-newusers-create2": "$1 사용자가 $3 사용자 계정을 {{GENDER:$2|만들었습니다}}",
+       "logentry-newusers-create2": "$3 사용자 계정을 $1님이 {{GENDER:$2|만들었습니다}}",
        "logentry-newusers-byemail": "$3 사용자 계정을 $1님이 {{GENDER:$2|만들었고}} 비밀번호는 이메일로 보냈습니다",
        "logentry-newusers-autocreate": "$1 사용자 계정을 자동으로 {{GENDER:$2|만들었습니다}}",
-       "logentry-protect-move_prot": "$1 사용자가 보호 설정을 $4에서 $3으로 {{GENDER:$2|이동했습니다}}",
-       "logentry-protect-unprotect": "$1 사용자가 $3 문서의 보호를 {{GENDER:$2|해제했습니다}}",
-       "logentry-protect-protect": "$1 사용자가 $3 문서를 {{GENDER:$2|보호했습니다}} $4",
-       "logentry-protect-protect-cascade": "$1 사용자가 $3 문서를 {{GENDER:$2|보호했습니다}} $4 [연쇄적]",
-       "logentry-protect-modify": "$1 사용자가 $3 문서의 보호 수준을 {{GENDER:$2|바꾸었습니다}} $4",
-       "logentry-protect-modify-cascade": "$1 사용자가 $3 문서의 보호 수준을 {{GENDER:$2|바꾸었습니다}} $4 [연쇄적]",
-       "logentry-rights-rights": "$1 사용자가 $3 사용자의 권한을 $4에서 $5(으)로 {{GENDER:$2|바꾸었습니다}}",
-       "logentry-rights-rights-legacy": "$1 사용자가 $3 사용자의 권한을 {{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|올렸습니다}}",
+       "logentry-protect-move_prot": "$1님이 보호 설정을 $4에서 $3으로 {{GENDER:$2|이동했습니다}}",
+       "logentry-protect-unprotect": "$1님이 $3 문서의 보호를 {{GENDER:$2|해제했습니다}}",
+       "logentry-protect-protect": "$1님이 $3 문서를 {{GENDER:$2|보호했습니다}} $4",
+       "logentry-protect-protect-cascade": "$1님이 $3 문서를 {{GENDER:$2|보호했습니다}} $4 [연쇄적]",
+       "logentry-protect-modify": "$1님이 $3 문서의 보호 수준을 {{GENDER:$2|바꾸었습니다}} $4",
+       "logentry-protect-modify-cascade": "$1님이 $3 문서의 보호 수준을 {{GENDER:$2|바꾸었습니다}} $4 [연쇄적]",
+       "logentry-rights-rights": "$1님이 $3 사용자의 권한을 $4에서 $5(으)로 {{GENDER:$2|바꾸었습니다}}",
+       "logentry-rights-rights-legacy": "$1님이 $3 사용자의 권한을 {{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 {{GENDER:$2|사용자가}} \"$4\" 태그를 만들었습니다",
-       "logentry-managetags-delete": "$1 {{GENDER:$2|사용자가}} \"$4\" 태그를 삭제하였습니다 ($5개 {{PLURAL:$5|판 및 기록}}에서 제거되었습니다)",
-       "logentry-managetags-activate": "$1 {{GENDER:$2|사용자가}} \"$4\" 태그를 사용자나 봇이 사용하도록 활성화시켰습니다",
-       "logentry-managetags-deactivate": "$1 {{GENDER:$2|사용자가}} \"$4\" 태그를 사용자나 봇이 사용하지 못하도록 비활성화시켰습니다",
+       "logentry-managetags-create": "$1님이 \"$4\" 태그를 {{GENDER:$2|만들었습니다}}",
+       "logentry-managetags-delete": "$1님이 \"$4\" 태그를 삭제하였습니다 ($5개 {{PLURAL:$5|판 및 기록}}에서 {{GENDER:$2|제거되었습니다}})",
+       "logentry-managetags-activate": "$1님이 \"$4\" 태그를 사용자나 봇이 사용하도록 {{GENDER:$2|활성화시켰습니다}}",
+       "logentry-managetags-deactivate": "$1님이 \"$4\" 태그를 사용자나 봇이 사용하지 못하도록 {{GENDER:$2|비활성화시켰습니다}}",
        "log-name-tag": "태그 기록",
        "log-description-tag": "이 문서는 사용자들이 특정 판이나 기록 항목에서 [[Special:Tags|태그]]를 추가하고 제거한 경우를 보여줍니다. 이 기록에는 편집이나 삭제, 이와 유사한 행위를 통해 태그가 붙는 경우는 기록되지 않습니다.",
-       "logentry-tag-update-add-revision": "$1 사용자가 $3 문서의 $4판에 $6 {{PLURAL:$7|태그}}를 {{GENDER:$2|추가했습니다}}",
-       "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-add-revision": "$1님이 $3 문서의 $4판에 $6 {{PLURAL:$7|태그}}를 {{GENDER:$2|추가했습니다}}",
+       "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-logentry": "$1님이 $3 문서의 기록 항목 $5에 있는 태그를 {{GENDER:$2|업데이트했습니다}} ($6 {{PLURAL:$7|추가함}}; $8 {{PLURAL:$9|제거함}})",
        "rightsnone": "(없음)",
        "revdelete-summary": "편집 요약",
        "feedback-adding": "문서에 피드백을 올리는 중...",
        "action-pagelang": "문서 언어 바꾸기",
        "log-name-pagelang": "언어 바꾸기 기록",
        "log-description-pagelang": "문서 언어를 바꾼 기록입니다.",
-       "logentry-pagelang-pagelang": "$1 사용자가 $3의 언어를 $4에서 $5로 {{GENDER:$2|바꾸었습니다}}.",
+       "logentry-pagelang-pagelang": "$1님이 $3의 언어를 $4에서 $5로 {{GENDER:$2|바꾸었습니다}}",
        "default-skin-not-found": "이런! 당신의 위키에 <code dir=\"ltr\">$wgDefaultSkin</code>에 <code>$1</code>(으)로 지정한 기본 스킨은 사용할 수 없습니다.\n\n설치에는 다음 {{PLURAL:$4|스킨}}이 포함된 것으로 보입니다. 스킨을 활성화{{PLURAL:$4||하고 기본값으로 선택}}하는 방법에 대한 정보에 대해서는 [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: 스킨 설정]을 보세요.\n\n$2\n\n; 미디어위키를 설치했다면:\n: 아마 git에서 설치했거나, 어떤 다른 방법을 사용하여 직접 설치했을 수 있을 것으로 봅니다. [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org의 스킨 디렉터리]에서 어떤 스킨을 설치해보세요:\n:* 여러 스킨과 확장 기능이 들어 있는 [https://www.mediawiki.org/wiki/Download tarball 설치 관리자]를 다운로드하세요. 거기서 <code>skins/</code> 디렉터리를 복사하여 붙여 넣을 수 있습니다.\n:* [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org]에서 개별 스킨 tarball을 다운로드하세요.\n:* 미디어위키 설치의 <code dir=\"ltr\">skins/</code> 디렉터리 안에 git를 통해 <code>mediawiki/skins/*</code> 저장소 중 하나를 복제하세요.\n: 당신이 미디어위키 개발자이면 당신의 git 저장소를 방해하면 안됩니다.\n\n; 미디어위키를 업그레이드했다면:\n: 미디어위키 1.24와 새 버전은 더 이상 설치된 스킨을 자동으로 활성화하지 않습니다 ([https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: 스킨 자동발견]을 보세요). 현재 설치된 {{PLURAL:$5|스킨|모든 스킨}}을 활성화하려면 <code>LocalSettings.php</code> 안에 다음 {{PLURAL:$5|줄}}을 붙여 넣을 수 있습니다:\n\n<pre dir=\"ltr\">$3</pre>\n\n; <code>LocalSettings.php</code>를 수정했다면:\n: 스킨 이름에 오타가 났는지 다시 확인하세요.",
        "default-skin-not-found-no-skins": "이런! 당신의 위키에 <code dir=\"ltr\">$wgDefaultSkin</code>에 <code>$1</code>(으)로 지정한 기본 스킨은 사용할 수 없습니다.\n\n설치된 스킨은 없습니다.\n\n; 미디어위키를 설치했거나 업그레이드했다면:\n: 아마 git에서 설치했거나, 어떤 다른 방법을 사용하여 직접 설치했을 수 있을 것으로 봅니다. 미디어위키 1.24와 새 버전은 주 저장소에 어떠한 스킨도 포함되어 있지 않습니다. [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org의 스킨 디렉터리]에서 어떤 스킨을 설치해보세요:\n:* 여러 스킨과 확장 기능이 들어 있는 [https://www.mediawiki.org/wiki/Download tarball 설치 관리자]를 다운로드하세요. 거기서 <code>skins/</code> 디렉터리를 복사하여 붙여 넣을 수 있습니다.\n:* [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org]에서 개별 스킨 tarball을 다운로드하세요.\n:* 미디어위키 설치의 <code dir=\"ltr\">skins/</code> 디렉터리 안에 git를 통해 <code>mediawiki/skins/*</code> 저장소 중 하나를 복제하세요.\n: 당신이 미디어위키 개발자이면 당신의 git 저장소를 방해하면 안됩니다. 스킨을 활성화하고 기본값으로 선택하는 방법에 대한 정보에 대해서는 [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: 스킨 설정]을 보세요.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (활성화)",
        "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": "쿠키 기반 세션",
        "sessionprovider-nocookies": "브라우저의 쿠키 기능이 꺼져 있는지 확인하십시오. 쿠키 기능을 켠 다음 다시 시작해야 합니다.",
index bb5bf6d..a180506 100644 (file)
        "moredotdotdot": "Mih&nbsp;…",
        "morenotlisted": "Et jeiht noch wigger&nbsp;…",
        "mypage": "Metmaachersigg",
-       "anonuserpage": "Onbikannte Metmaacher",
        "mytalk": "Klaafsigg",
        "anontalk": "Klaaf för ene nahmelohse Metmaacher",
        "navigation": "Jangk noh de",
        "userrights": "De Metmaacher ehr Rääschde verwallde",
        "userrights-lookup-user": "Metmaacherjruppe verwalde",
        "userrights-user-editname": "Däm Metmaacher singe Nahme:",
-       "editusergroup": "Metmaacher ier Jroppe un Räächde änndere",
+       "editusergroup": "{{GENDER:$1|Däm|Däm|Däm Metmaacher|Dä|Däm}} [[User:$1|$1]] {{GENDER:$1|sing|singe|sing|ier|sing}} Jroppe un Räächde änndere",
        "editinguser": "Heh deihs De däm {{GENDER:$1|däm|däm|däm Metmaacher|dä|däm}} '''[[User:$1|$1]]''' {{GENDER:$1|singe|singe|singe|iere|singe}} Rääschde änndere. $2",
        "userrights-editusergroup": "Metmaacher en Jroppe donn un uß Jroppe nämme",
-       "saveusergroups": "Metmaacherjruppe avspeichere",
+       "saveusergroups": "Donn {{GENDER:$1|däm|dem|däm Metmaacher|dä|däm}} [[User:$1|$1]] {{GENDER:$1|sing|singe|sing|ier|sing}} Jroppe faßhalle",
        "userrights-groupsmember": "Dä Metmaacher es en {{PLURAL:$1|dä Jropp:|dä Jroppe:|keine Jropp.}}",
        "userrights-groupsmember-auto": "Dä Metmaacher es automattesch en {{PLURAL:$1|dä Jropp:|dä Jroppe:|keine Jropp.}}",
        "userrights-groups-help": "Do kanns de Jroppe för dä Metmaacher heh änndere, ävver opjepaß:\n* E Käßje met Höksche bedüg, dat dä Metmaacher en dä Jropp es.\n* E Käßje ohne Höksche bedüg, dat dä Metmaacher nit en dä Jropp es.\n* E Käßje met Stähnsche donävve bedüg, dat De dat Rääsch zwa ändere, ävver de Änderong nit mih zeröck nämme kanns.",
        "scarytranscludefailed-httpstatus": "[De Schablohn „$1“ enzebenge hät nit jeflupp. Dä HTTP-Fähler es: $2]",
        "scarytranscludetoolong": "[Schad, de URL es ze lang]",
        "deletedwhileediting": "<strong>Opjepaß:</strong> De Sigg wood fottjeschmeße, nohdäm Do ald aanjefange häs, draan ze Ändere.\nEm <span class=\"plainlinks\">[{{fullurl:Special:Log|type=delete&page=}}{{FULLPAGENAMEE}} Logbohch vum Sigge-Fottschmiiße]</span> künnt der Jrond schtonn.\nWann De de Sigg avschpeischere deis, weed se widder aanjelaat.",
-       "confirmrecreate": "Dä Metmaacher [[User:$1|$1]] ([[User talk:$1|Klaaf]]) hät di Sigg fottjeschmeße, nohdäm Do do dran et Ändere aanjefange häs. Dä Jrond:\n: „<i>$2</i>“\nWells Do jetz met en neu Väsjohn di Sigg widder neu aanläje?",
-       "confirmrecreate-noreason": "Dä [[User:$1|$1]] ([[User talk:$1|Klaaf]]) hät heh di Sigg fottjeschmeße, nohdämm Do aanjefange häs, draan ze ändere. Bes esu jood un donn beshtääteje, dat De di Sigg widder neu aanjelaat han wells.",
+       "confirmrecreate": "{{GENDER:$1|Dä|Dat|Dä Metmaacher|De|Dat}} [[User:$1|$1]] ([[User talk:$1|Klaaf]]) hät di Sigg fottjeschmeße, nohdäm Do do dran et Ändere aanjefange häs. Dä Jrond:\n: „<i>$2</i>“\nWells Do jäz medd en neuje Väsjohn di Sigg widder neu aanläje?",
+       "confirmrecreate-noreason": "{{GENDER:$1|Dä|Dat|Dä Metmaacher|De|Dat}} [[User:$1|$1]] ([[User talk:$1|Klaaf]]) hät heh di Sigg fottjeschmeße, nohdämm Do aanjefange häs, draan ze ändere. Bes esu jood un donn beschtähteje, dat De di Sigg widder neu aanjelaat han wells.",
        "recreate": "Widder neu aanlääje",
        "unit-pixel": "px",
        "confirm_purge_button": "Jo — loss jonn!",
index 3e2c5f1..58fbcef 100644 (file)
@@ -52,7 +52,7 @@
        "tog-enotifminoredits": "Etiam de minoribus recensionibus certior fiam",
        "tog-enotifrevealaddr": "Ostendatur inscriptio mea electronica in nuntiis notificantibus",
        "tog-shownumberswatching": "Numerum usorum observantium monstrare",
-       "tog-oldsig": "Subscriptio, qua nunc uteris:",
+       "tog-oldsig": "Subscriptio, qua adhuc uteris:",
        "tog-fancysig": "Subscriptio vicitext (sine nexu automatico)",
        "tog-uselivepreview": "Prospectum viventem perhibere",
        "tog-forceeditsummary": "Cavere, ut recensionem summatim describam",
        "mergelog": "Acta confundendi",
        "revertmerge": "Inconfundere",
        "history-title": "Historia paginae \"$1\"",
+       "difference-title": "Quantum redactiones paginae \"$1\" differant",
        "lineno": "Linea $1:",
        "compareselectedversions": "Redactiones selectas conferre",
        "showhideselectedversions": "Redactiones selectas vel ostendi vel celari iubere",
        "preferences": "Modi",
        "mypreferences": "Modi",
        "prefs-edits": "Numerus recensionum:",
-       "prefs-skin": "Aspectum",
+       "prefs-skin": "Formae delectus",
        "skin-preview": "Prospectus",
        "datedefault": "Modus nondum delectus",
        "prefs-user-pages": "Paginae usoris",
        "prefs-misc": "Misc",
        "prefs-resetpass": "Tesseram mutare",
        "prefs-email": "Modi ad litteras electronicas spectantes",
-       "prefs-rendering": "Conspectus",
+       "prefs-rendering": "Aspectus",
        "saveprefs": "Hos modos servare",
        "restoreprefs": "Omnes (diversi) modi in integrum restituantur",
        "prefs-editing": "Recensere",
        "recentchangescount": "Quot mutationes index respiciat:",
        "prefs-help-recentchangescount": "Inclusis nuper mutatis, paginarum historiis, actis",
        "savedprefs": "Modi tui servati sunt.",
-       "timezonelegend": "Zona temporis:",
+       "timezonelegend": "Zona temporalis:",
        "localtime": "Hora indigena:",
        "timezoneuseoffset": "Alia (da dissimilitudinem cinguli horae)",
        "servertime": "Hora moderatri:",
        "prefs-info": "Generalia",
        "prefs-i18n": "Sermonis delectus",
        "prefs-signature": "Subscriptio",
+       "prefs-dateformat": "Forma temporalium",
+       "prefs-timeoffset": "Zona temporalis",
        "prefs-advancedediting": "Generalia",
        "prefs-editor": "Capsa editoria",
        "prefs-preview": "Prospectus",
        "prefs-advancedrc": "Modi speciales",
-       "prefs-advancedwatchlist": "Indicis modi speciales",
+       "prefs-advancedwatchlist": "Modi speciales",
        "prefs-displayrc": "Modi generales",
        "prefs-displaywatchlist": "Modi generales",
        "prefs-diffs": "Differentiae",
        "rcshowhidecategorization-show": "Ostendere",
        "rcshowhidecategorization-hide": "Supprimere",
        "rclinks": "Monstrare $1 nuperrime mutata in $2 diebus proximis.<br />$3",
-       "diff": "diss",
+       "diff": "diff",
        "hist": "hist",
        "hide": "celare",
        "show": "monstrare",
index 7986c9f..7a623c5 100644 (file)
        "moredotdotdot": "Méi …",
        "morenotlisted": "Dës Lëscht ass net komplett.",
        "mypage": "Säit",
-       "anonuserpage": "Onbekannte Benotzer",
        "mytalk": "Diskussioun",
        "anontalk": "Diskussioun",
        "navigation": "Navigatioun",
index 3026652..35c9724 100644 (file)
        "copyright": " محتوایۀل هانإ ژئرنظر اجازه‌نامهٔ $1 مۀگۀر یۀگإ خلاف یۀ بوشرئ/ذکر بو",
        "copyrightpage": "{{ns:project}}:حق تکثیر",
        "currentevents": "پێش هەتێەل ایسگە",
-       "currentevents-url": "Project:رویدادةل ایسة",
+       "currentevents-url": "پێش هەتێەل ایسگە(ایسە)",
        "disclaimers": "دروو نامه -تکذیب نامه",
        "disclaimerpage": "Project:تکذیب‌نامهٔ عمومی",
        "edithelp": "راهنمای دۀسکاری کردن",
index 2f1a6df..a366600 100644 (file)
        "moredotdotdot": "Daugiau...",
        "morenotlisted": "Šis sąrašas nėra išsamus.",
        "mypage": "Puslapis",
-       "anonuserpage": "Nežinomas naudotojas",
        "mytalk": "Aptarimas",
        "anontalk": "Aptarimas",
        "navigation": "Naršymas",
        "newarticle": "(Naujas)",
        "newarticletext": "Jūs patekote į dar neegzistuojantį puslapį.\nNorėdami sukurti puslapį, pradėkite rašyti žemiau esančiame įvedimo lauke\n(plačiau [$1 pagalbos puslapyje]).\nJei patekote čia per klaidą, paprasčiausiai spustelkite  naršyklės mygtuką '''atgal'''.",
        "anontalkpagetext": "----''Tai yra anoniminio naudotojo, nesusikūrusio arba nenaudojančio paskyros, aptarimų puslapis.\nDėl to naudojamas IP adresas jo identifikavimui.\nŠis IP adresas gali būti dalinamas keliems naudotojams.\nJeigu Jūs esate anoniminis naudotojas ir atrodo, kad komentarai nėra skirti Jums, [[Special:UserLogin/signup|sukurkite paskyrą]] arba [[Special:UserLogin|prisijunkite]], ir nebūsite tapatinamas su kitais anoniminiais naudotojais.''",
-       "noarticletext": "Šiuo metu šiame puslapyje nėra jokio teksto.\nJūs galite [[Special:Search/{{PAGENAME}}|ieškoti šio puslapio pavadinimo]] kituose puslapiuose,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ieškoti susijusių įrašų],\narba [{{fullurl:{{FULLPAGENAME}}|action=edit}} redaguoti šį puslapį]</span>.",
+       "noarticletext": "Šiuo metu šiame puslapyje nėra jokio teksto.\nJūs galite [[Special:Search/{{PAGENAME}}|ieškoti šio puslapio pavadinimo]] kituose puslapiuose,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ieškoti susijusių įrašų] arba [{{fullurl:{{FULLPAGENAME}}|action=edit}} sukurti šį puslapį]</span>.",
        "noarticletext-nopermission": "Šiuo metu šiame puslapyje nėra jokio teksto.\nJūs galite [[Special:Search/{{PAGENAME}}|ieškoti šio puslapio pavadinimo]] kituose puslapiuose,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ieškoti susijusių įrašų]</span>, bet jūs neturite teisės sukurti šį puslapį.",
        "missing-revision": "Puslapio peržiūra #$1 pavadinto „{{FULLPAGENAME}}“ neegzistuoja.\n\nTai paprastai atsitinka kai pasenusi nuoroda veda į puslapį, kuris buvo ištrintas.\nInformaciją galima rasti [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].",
        "userpage-userdoesnotexist": "Naudotojo paskyra „<nowiki>$1</nowiki>“ yra neužregistruota. Prašom patikrinti, ar jūs norite kurti/redaguoti šį puslapį.",
index 5ca407e..f1a6561 100644 (file)
        "moredotdotdot": "見逾",
        "morenotlisted": "列未成。",
        "mypage": "寒舍",
-       "anonuserpage": "無名氏",
        "mytalk": "書房",
        "anontalk": "議",
        "navigation": "導",
index 965be18..d4544dd 100644 (file)
        "tog-underline": "लिङ्कके रेखाङ्कित करी:",
        "tog-hideminor": "सन्निकट परिवर्तनमे छोट परिवर्तन नुकाबी",
        "tog-hidepatrolled": "सन्निकट परिवर्तनमे नियन्त्रित कएल सम्पादन नुकाबी",
-       "tog-newpageshidepatrolled": "नियन्त्रित सम्पादनक नव पन्ना सूचीसँ नुकाबी",
+       "tog-newpageshidepatrolled": "नियन्त्रित सम्पादनक नव पन्ना सूचीसँ नुकाबी",
        "tog-hidecategorization": "पृष्ठसभक श्रेणीकरण हटाबी",
        "tog-extendwatchlist": "सन्निकट परिवर्तन नै,अखन ध्यानसूचीमे रहल सभ परिवर्तन देखाबी",
        "tog-usenewrc": "नीक सन्निकट परिवर्तन प्रयोग करी (जावास्क्रिप्ट चाही)",
-       "tog-numberheadings": "शà¥\80रà¥\8dषà¤\95 à¤¸à¥\8dवयà¤\82-à¤\95à¥\8dरमाà¤\82कित करी",
+       "tog-numberheadings": "शà¥\80रà¥\8dषà¤\95 à¤¸à¥\8dवयà¤\82-à¤\95à¥\8dरमाà¤\99à¥\8dकित करी",
        "tog-showtoolbar": "सम्पादन ओजारपेटी देखाबी",
        "tog-editondblclick": "दू बेर क्लीक कए पन्ना सम्पादित करी",
        "tog-editsectiononrightclick": "अनुभाग शीर्षक पर दाहिन क्लिक करै पर अनुभाग सम्पादित करी",
        "tog-watchdefault": "हमर सम्पादित पृष्ठ हमर साकांक्ष सूचीमे देखाबी",
        "tog-watchmoves": "हमराद्वारा घस्काओल पृष्ठ हमर साकांक्ष सूचीमे राखी",
        "tog-watchdeletion": "हमराद्वारा मेटाओल पृष्ठ हमर साकांक्ष सूचीमे राखी",
-       "tog-watchrollback": "हमरा द्वारा जोडलगेल पृष्ठ हमार सांकक्ष सूचीमे राखू",
+       "tog-watchrollback": "हमराद्वारा रोलब्याक कएल पृष्ठ हमर सांकक्ष सूचीमे राखी",
        "tog-minordefault": "हमर सभ सम्पादन पूर्वन्यस्त रूपेँ मामूली कहू",
        "tog-previewontop": "सम्पादन पेटीक ऊपर दृश्य देखाबी",
        "tog-previewonfirst": "पहिल सम्पादनक बाद पूर्वावलोकन देखाबी",
-       "tog-enotifwatchlistpages": "à¤\9cà¥\8cà¤\82 à¤¹à¤®à¤° à¤§à¥\8dयानसà¥\82à¤\9aà¥\80à¤\95 à¤\95à¥\8bनà¥\8b à¤ªà¤¨à¥\8dनामà¥\87 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤¹à¥\81à¤\85à¤\8f à¤¤à¤\81 à¤¹à¤®à¤°à¤¾ à¤\88-पतà¥\8dर à¤ªà¤ à¤¾à¤\89",
-       "tog-enotifusertalkpages": "हमर à¤¸à¤¦à¤¸à¥\8dय à¤µà¤¾à¤°à¥\8dता à¤ªà¥\83षà¥\8dठ à¤ªà¤° à¤­à¥\87ल à¤ªà¤°à¤¿à¤µà¤°à¥\8dतà¥\8dतनà¤\95 à¤¹à¥\87तà¥\81 à¤¹à¤®à¤°à¤¾ à¤\88-मà¥\87ल à¤\95रथि",
-       "tog-enotifminoredits": "à¤\9bà¥\8bà¤\9f à¤ªà¤°à¤¿à¤µà¤°à¥\8dतà¥\8dतनà¤\95 à¤¹à¥\87तà¥\81 à¤¸à¥\87हà¥\8b à¤¹à¤®à¤°à¤¾ à¤\88-मà¥\87ल à¤ªà¤ à¤¾à¤\8a",
-       "tog-enotifrevealaddr": "हमर à¤\88-पतà¥\8dर à¤¸à¤\82à¤\95à¥\87त à¤¸à¥\82à¤\9aना à¤\88-पतà¥\8dरमà¥\87 à¤¦à¥\87à¤\96ाà¤\89",
-       "tog-shownumberswatching": "धà¥\8dयान à¤°à¤¾à¤\96à¥\88बला à¤ªà¥\8dरयà¥\8bà¤\95्ताक संख्या",
+       "tog-enotifwatchlistpages": "à¤\9cà¥\8cà¤\82 à¤¹à¤®à¤° à¤§à¥\8dयानसà¥\82à¤\9aà¥\80à¤\95 à¤\95à¥\8bनà¥\8b à¤ªà¤¨à¥\8dनामà¥\87 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤¹à¥\81à¤\85à¤\8f à¤¤à¤\81 à¤¹à¤®à¤°à¤¾ à¤\87मà¥\87ल à¤ªà¤ à¤¾à¤¬à¥\80",
+       "tog-enotifusertalkpages": "हमर à¤µà¤¾à¤°à¥\8dता à¤ªà¥\83षà¥\8dठ à¤ªà¤°à¤¿à¤µà¤°à¥\8dतित à¤­à¥\87ला à¤ªà¤° à¤¹à¤®à¤°à¤¾ à¤\87मà¥\87ल à¤\95रà¥\80",
+       "tog-enotifminoredits": "à¤\9bà¥\8bà¤\9f à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनà¤\95 à¤¹à¥\87तà¥\81 à¤¸à¥\87हà¥\8b à¤¹à¤®à¤°à¤¾ à¤\87मà¥\87ल à¤­à¥\87à¤\9cà¥\80",
+       "tog-enotifrevealaddr": "à¤\85धिसà¥\82à¤\9aना à¤\87मà¥\87लमà¥\87 à¤¹à¤®à¤° à¤\87मà¥\87ल à¤ªà¤¤à¤¾ à¤¦à¥\87à¤\96ाबà¥\80",
+       "tog-shownumberswatching": "धà¥\8dयान à¤°à¤¾à¤\96à¥\88बला à¤ªà¥\8dरयà¥\8bà¤\97à¤\95र्ताक संख्या",
        "tog-oldsig": "अखुनका दस्खत:",
-       "tog-fancysig": "दस्खतकें विकिटेक्सटक रूपमे देखू (स्वचालित श्रृंखला हीन)",
+       "tog-fancysig": "दस्खतक विकिटेक्सटक समान मानी (स्वचालित श्रृंखला हीन)",
        "tog-uselivepreview": "पूर्वावलोकनके उपयोग करी",
-       "tog-forceeditsummary": "हमरा à¤¸à¤\9aà¥\87त à¤\95रà¥\82 à¤\9cà¤\96न à¤¹à¤® à¤\96ालà¥\80 à¤¸à¤®à¥\8dपादम à¤¸à¤¾à¤°à¤¾à¤\82शमà¥\87 à¤\9cाà¤\87",
+       "tog-forceeditsummary": "यदि à¤¸à¤®à¥\8dपादन à¤¸à¤¾à¤°à¤¾à¤\82श à¤¨à¥\88 à¤¦à¥\87ल à¤\97à¥\87ल à¤¹à¥\8bà¤\8f à¤¤à¤¹à¤¨ à¤¹à¤®à¤°à¤¾ à¤¸à¥\82à¤\9aित à¤\95रà¥\80",
        "tog-watchlisthideown": "हमर साकांक्ष सूचीसँ हमर सम्पादन नुकाउ",
        "tog-watchlisthidebots": "हमर साकांक्ष सूचीसँ स्वचालित सम्पादन हटाउ",
        "tog-watchlisthideminor": "हमर साकांक्ष सूचीसँ मामूली सम्पादन नुकाउ",
index 73f03b0..83925c2 100644 (file)
        "moredotdotdot": "Tohiny...",
        "morenotlisted": "Tsy feno ity lisitra ity.",
        "mypage": "Pejy",
-       "anonuserpage": "Mpikambana tsy fantatra",
        "mytalk": "Dinika",
        "anontalk": "Pejin-dresaka",
        "navigation": "Fikarohana",
        "logempty": "Tsy nahitana.",
        "log-title-wildcard": "Hitady amin'ny lohateny manomboka amin'io soratra io",
        "showhideselectedlogentries": "Haneho/Hanafina ny iditry ny laogy nofidiana",
+       "checkbox-select": "Hifidy: $1",
        "checkbox-all": "Rehetra",
        "checkbox-none": "Tsy misy",
        "checkbox-invert": "Avadika",
        "allpages-bad-ns": "{{SITENAME}} dia tsy manana anaran-tsehatra mitondra anarana « $1 ».",
        "allpages-hide-redirects": "Haneho ny fihodinana",
        "cachedspecial-viewing-cached-ttl": "Mijery pejy anaty takona ianao, izay namboarina $1 taona lasa.",
+       "cachedspecial-viewing-cached-ts": "Mijery versiôna voatakon'ity pejy ity ianao, izay mety efa tsy mitaratra ny zava-misy ankehitriny intsony.",
        "cachedspecial-refresh-now": "Hijery ny farany indrindra",
        "categories": "Sokajy",
        "categories-submit": "Aseho",
        "whatlinkshere-hidelinks": "$1 ny rohy",
        "whatlinkshere-hideimages": "$1 ny rakitra mirohy",
        "whatlinkshere-filters": "sivana",
+       "whatlinkshere-submit": "Andao",
        "autoblockid": "Fanakanana mandeha ho azy #$1",
        "block": "Hanakana ilay mpikambana",
        "unblock": "Hanala ny sakan'ilay mpikambana",
index 421bb62..1470aec 100644 (file)
        "moredotdotdot": "Повеќе...",
        "morenotlisted": "Овој список не е целосен.",
        "mypage": "Страница",
-       "anonuserpage": "Непознат корисник",
        "mytalk": "разговор",
        "anontalk": "Разговор",
        "navigation": "Навигација",
index 7e30340..7ad983a 100644 (file)
        "revdelete-nooldid-title": "တရားမဝင်သော မူအမည်",
        "revdelete-no-file": "ဖော်ပြထားသောဖိုင် မရှိပါ။",
        "revdelete-show-file-submit": "မှန်",
+       "revdelete-selected-file": "[[:$2]] ၏ ရွေးချယ်ထားသော {{PLURAL:$1|ဖိုင်ဗားရှင်း|ဖိုင်ဗားရှင်းများ}}:",
+       "revdelete-text-text": "ဖျက်လိုက်သည့် မူများသည် စာမျက်နှာရာဇဝင်တွင် ရှိနေဦးမည်ဖြစ်သော်လည်း ထိုပါဝင်အကြောင်းအရာသည် အများပြည်သူမှ မြင်ရတော့မည် မဟုတ်ပေ။",
+       "logdelete-text": "ဖျက်လိုက်သော မှတ်တမ်းသည် မှတ်တမ်းများထဲတွင် ပေါ်နေဦးမည်ဖြစ်သော်လည်း ပါဝင်အကြောင်းအရာကို အများပြည်သူများ မြင်ရတော့မည် မဟုတ်ပေ။",
+       "revdelete-text-others": "အပိုကန့်သတ်ချက်များကို မထည့်ထားပါက အခြားသော အက်ဒမင်များအနေဖြင့် ဝှက်ထားသော အကြောင်းအရာကို ကြည့်နိုင်ပြီး ဖျက်ထားခြင်းကို ပယ်ဖျက်နိုင်သည်။",
+       "revdelete-confirm": "ဤသို့ ဖျက်ပစ်ရန် သင် အမှန်တကယ် ရည်ရွယ်လျက် နောက်ဆက်တွဲ အကျိုးဆက်များကို သိရှိနားလည်ပြီး [[{{MediaWiki:Policy-url}}|မူဝါဒ]]အတိုင်း လုပ်ဆောင်နေခြင်းဖြစ်ကြောင်းကို ကျေးဇူးပြု၍ အတည်ပြုပေးပါ။",
        "revdelete-legend": "မြင်နိုင်စွမ်းရှိမှုတို့အား ကန့်သတ်ခြင်းကို သတ်မှတ်ရန်",
        "revdelete-hide-text": "တည်းဖြတ်မူမှ စာသား",
        "revdelete-hide-image": "ဖိုင်ပါ အေကြာင်းအရာများကို ဝှက်ရန်",
        "rcshowhideanons": "အမည်မသိ အသုံးပြုသူ $1ရန်",
        "rcshowhideanons-show": "ပြသရန်",
        "rcshowhideanons-hide": "ဝှက်",
-       "rcshowhidepatr": "á\80\85á\80±á\80¬á\80\84á\80·á\80ºá\80¼á\80\80ပ်တည်းဖြတ်မှု $1ရန်",
+       "rcshowhidepatr": "á\80\85á\80±á\80¬á\80\84á\80·á\80ºá\80\80á\80¼ပ်တည်းဖြတ်မှု $1ရန်",
        "rcshowhidepatr-show": "ပြသရန်",
        "rcshowhidepatr-hide": "ဝှက်ရန်",
        "rcshowhidemine": "ကျွန်ုပ်တည်းဖြတ်ထားသည်များ $1",
        "notanarticle": "မာတိကာစာမျက်နှာတစ်ခု မဟုတ်",
        "watchlist-details": "{{PLURAL:$1|စာမျက်နှာ $1 ခု|စာမျက်နှာ $1 ခု}} သည် သင့်စောင့်ကြည့်စာရင်းတွင် ရှိပြီး ဆွေးနွေးချက်စာမျက်နှာများကို ထည့်တွက် မထားပါ။",
        "wlheader-showupdated": "သင် နောက်ဆုံးကြည့်ရှုခဲ့ပြီးနောက် ပြောင်းလဲမှုရှိခဲ့သော စာမျက်နှာများကို <strong>စာလုံးမဲ</strong> ဖြင့် ပြသထားသည်",
+       "wlnote": "အောက်ပါတို့သည် $3၊ $4 အထိ နောက်ဆုံး {{PLURAL:$2|နာရီ|<strong>$2</strong> နာရီ}}အတွင်း {{PLURAL:$1|နောက်ဆုံးပြောင်းလဲချက် တစ်ခု|နောက်ဆုံးပြောင်းလဲချက်များ <strong>$1</strong> ခု}} ဖြစ်သည်။",
        "wlshowlast": "နောက်ဆုံး $1 နာရီ $2 ရက်  ကိုပြရန်",
        "watchlist-hide": "ဝှက်",
        "watchlist-submit": "ပြသရန်",
+       "wlshowtime": "ပြသပေးရမည့် အချိန်ကာလ:",
        "wlshowhideminor": "အရေးမကြီးသော ပြင်ဆင်မှုများ",
        "wlshowhideliu": "မှတ်ပုံတင်ထားသော အသုံးပြုသူများ",
        "wlshowhideanons": "အမည်မသိ အသုံးပြုသူများ",
+       "wlshowhidemine": "ကျွန်ုပ်၏ တည်းဖြတ်မှုများ",
        "wlshowhidecategorization": "စာမျက်နှာ ကဏ္ဍထည့်သွင်းခြင်း",
        "watchlist-options": "စောင့်ကြည့်စာရင်းအတွက် ရွေးချယ်စရာများ",
        "watching": "စောင့်ကြည့်လျက်ရှိ...",
        "whatlinkshere-prev": "{{PLURAL:$1|နောက်သို့|နောက်သို့ $1}}",
        "whatlinkshere-next": "{{PLURAL:$1|ရှေ့သို့|ရှေ့သို့ $1}}",
        "whatlinkshere-links": "← လင့်များ",
-       "whatlinkshere-hideredirs": "redirect ပြန်ညွှန်း $1 ခု",
+       "whatlinkshere-hideredirs": "ပြန်ညွှန်းများ $1ရန်",
        "whatlinkshere-hidetrans": "ထည့်သွင်းကူးယူချက် $1 ခု",
        "whatlinkshere-hidelinks": "လင့် $1 ခု",
        "whatlinkshere-hideimages": "ဖိုင်အချိတ်အဆက်များ $1 ခု",
        "autosumm-new": "\"$1\" အစချီသော စာလုံးတို့နှင့် စာမျက်နှာကို ဖန်တီးလိုက်သည်",
        "watchlistedit-normal-title": "စောင့်ကြည့်စာရင်းကို တည်းဖြတ်ရန်",
        "watchlistedit-normal-legend": "စောင့်ကြည့်စာရင်းမှ ခေါင်းစဉ်များကို ဖျက်ရန်",
+       "watchlistedit-normal-explain": "သင်၏ စောင့်ကြည့်စာရင်းရှိ ခေါင်းစဉ်များကို အောက်တွင် ပြသထားသည်။\nခေါင်းစဉ်တစ်ခုကို ဖယ်ရှားရန် ထိုခေါင်းစဉ်ဘေးရှိ အကွက်တွင် အမှန်ခြစ်ပြီး \"{{int:Watchlistedit-normal-submit}}\" ကိုနှိပ်ပါ။\n[[Special:EditWatchlist/raw|စောင့်ကြည့်စာရင်း အကြမ်း]]ကိုလည်း ကြည့်နိုင်ပါသည်။",
        "watchlistedit-normal-submit": "ခေါင်းစဉ်များကို ဖယ်ရှားရန်",
+       "watchlistedit-normal-done": "{{PLURAL:$1|ခေါင်းစဉ်တစ်ခု|ခေါင်းစဉ် $1 ခုတို့}}ကို သင်၏ စောင့်ကြည့်စာရင်းမှ ဖယ်ရှားပြီးပြီ:",
        "watchlistedit-raw-titles": "ခေါင်းစဉ်များ -",
        "watchlisttools-view": "ကိုက်ညီသော အပြောင်းအလဲများကို ကြည့်ရန်",
        "watchlisttools-edit": "စောင့်ကြည့်စာရင်းများကို ကြည့်ပြီး တည်းဖြတ်ပါ။",
        "htmlform-reset": "ပြောင်းလဲထားသည်များ မလုပ်တော့ရန်",
        "htmlform-selectorother-other": "အခြား",
        "logentry-delete-delete": "$3 စာမျက်နှာကို $1 က {{GENDER:$2|ဖျက်ပစ်ခဲ့သည်}}",
+       "logentry-delete-revision": "$3 စာမျက်နှာပေါ်ရှိ {{PLURAL:$5|တည်းဖြတ်မူတစ်ခု|တည်းဖြတ်မူ $5 ခု}}၏ အမြင်ပုံစံကို $1 က {{GENDER:$2|ပြောင်းလဲခဲ့သည်}}: $4",
+       "revdelete-content-hid": "အကြောင်းအရာ ဝှက်ခြင်း",
        "revdelete-restricted": "အက်ဒမင်များသို့ ကန့်သတ်ချက်များ သက်ရောက်ရန်",
        "revdelete-unrestricted": "အက်ဒမင်များအတွက် ကန့်သတ်ချက်များကို ဖယ်ရှားရန်",
        "logentry-move-move": "$3 စာမျက်နှာကို $4 သို့ $1က {{GENDER:$2|ရွှေ့ခဲ့သည်}}",
        "logentry-move-move-noredirect": "$3 မှ $4 သို့ စာမျက်နှာကို ပြန်ညွှန်းချန်မထားပဲ $1 {{GENDER:$2|က ရွှေ့ခဲ့သည်}}",
        "logentry-newusers-create": "အသုံးပြုသူအကောင့် $1 ကို {{GENDER:$2|ဖန်တီးခဲ့သည်}}",
        "logentry-upload-upload": "$1 သည် $3 ကို {{GENDER:$2|upload တင်ခဲ့သည်}}",
+       "logentry-upload-overwrite": "$3 ၏ ဗားရှင်းအသစ်ကို $1 {{GENDER:$2|upload တင်ခဲ့သည်}}",
        "rightsnone": "(ဘာမှမရှိ)",
        "revdelete-summary": "အကျဉ်းချုပ်ကို တည်းဖြတ်ရန်",
        "searchsuggest-search": "ရှာဖွေရန်",
index a3b815b..ecc8830 100644 (file)
        "moredotdotdot": "Meer…",
        "morenotlisted": "Deze lijst is niet compleet.",
        "mypage": "Gebruikerspagina",
-       "anonuserpage": "Onbekende gebruiker",
        "mytalk": "Overleg",
        "anontalk": "Overleg",
        "navigation": "Navigatie",
        "botpasswords-newpassword": "Het nieuwe wachtwoord om aan te melden met <strong>$1</strong> is nu <strong>$2</strong>. <em>Bewaar dit goed voor toekomstig gebruik.</em>",
        "botpasswords-no-provider": "BotPasswordsSessionProvider is niet beschikbaar.",
        "botpasswords-restriction-failed": "Botwachtwoordbeperkingen maken het aanmelden onmogelijk.",
-       "botpasswords-invalid-name": "De gebruikersnaam mag niet het scheidingsteken van het botwachtwoord (\"$1\") bevatten.",
+       "botpasswords-invalid-name": "De gebruikersnaam bevat niet het scheidingsteken van het botwachtwoord (\"$1\").",
        "botpasswords-not-exist": "Gebruiker \"$1\" heeft geen botwachtwoord genaamd \"$2\"",
        "resetpass_forbidden": "Wachtwoorden kunnen niet gewijzigd worden",
        "resetpass-no-info": "U dient aangemeld zijn voordat u deze pagina kunt gebruiken.",
        "passwordreset-emailtext-ip": "Iemand, waarschijnlijk u, heeft vanaf het IP-adres $1 een aanvraag gedaan om uw wachtwoord voor {{SITENAME}} ($4) opnieuw in te stellen. De volgende {{PLURAL:$3|gebruiker is|gebruikers zijn}} gekoppeld aan dit e-mailadres:\n\n$2\n\n{{PLURAL:$3|Dit tijdelijke wachtwoord vervalt|Deze tijdelijke wachtwoorden vervallen}} over {{PLURAL:$5|een dag|$5 dagen}}. Meld u aan en wijzig het wachtwoord nu. Als u dit verzoek niet zelf heeft gedaan, of als u het oorspronkelijke wachtwoord nog kent en het niet wilt wijzigen, negeer dit bericht dan en blijf uw oude wachtwoord gebruiken.",
        "passwordreset-emailtext-user": "Gebruiker $1 op de site {{SITENAME}} heeft een aanvraag gedaan om uw wachtwoord voor {{SITENAME}} ($4) opnieuw in te stellen. De volgende {{PLURAL:$3|gebruiker is|gebruikers zijn}} gekoppeld aan dit e-mailadres:\n\n$2\n\n{{PLURAL:$3|Dit tijdelijke wachtwoord vervalt|Deze tijdelijke wachtwoorden vervallen}} over {{PLURAL:$5|een dag|$5 dagen}}.\nMeld u aan en wijzig het wachtwoord nu. Als u dit verzoek niet zelf heeft gedaan, of als u het oorspronkelijke wachtwoord nog kent en het niet wilt wijzigen, negeer dit bericht dan en blijf uw oude wachtwoord gebruiken.",
        "passwordreset-emailelement": "Gebruikersnaam: \n$1\n\nTijdelijk wachtwoord: \n$2",
-       "passwordreset-emailsentemail": "Als dit een e-mailadres is dat gekoppeld is aan uw account, dan wordt er een e-mail verzonden om uw wachtwoord opnieuw in te stellen.",
+       "passwordreset-emailsentemail": "Als dit e-mailadres aan uw account gekoppeld is, dan wordt er een e-mail verzonden om uw wachtwoord opnieuw in te stellen.",
        "passwordreset-emailsentusername": "Als er een e-mailadres geregistreerd is voor die gebruikersnaam, dan wordt er een e-mail verzonden om uw wachtwoord opnieuw in te stellen.",
        "passwordreset-emailsent-capture": "Er is een e-mail voor het opnieuw instellen van een wachtwoord verzonden. Deze wordt hieronder weergegeven.",
        "passwordreset-emailerror-capture": "Er is een e-mail voor het opnieuw instellen van een wachtwoord aangemaakt. Deze wordt hieronder weergegeven. Het verzenden naar de {{GENDER:$2|gebruiker}} is mislukt om de volgende reden: $1",
index ec42bff..608b0d1 100644 (file)
        "statistics-header-users": "Nummere vun Yuuser",
        "statistics-pages": "Bledder",
        "doubleredirects": "Zweefache Weiderleidinge",
-       "double-redirect-fixer": "Xqbot",
        "brokenredirects": "Kaputte Weiderleidinge",
        "brokenredirects-edit": "ennere",
        "brokenredirects-delete": "verwische",
        "contribslink": "Ardickele",
        "move-page": "„$1“ ziehe",
        "move-page-legend": "Blatt ziehe",
-       "movearticle": "Blatt ziehe:",
        "move-watch": "watsch des Blatt",
        "movepagebtn": "Blatt ziehe",
        "pagemovedsub": "Blatt iss gezoge warre",
index cb6bd27..0a24d1b 100644 (file)
        "moredotdotdot": "Więcej...",
        "morenotlisted": "Nie jest to kompletna lista.",
        "mypage": "Strona",
-       "anonuserpage": "Użytkownik anonimowy",
        "mytalk": "Dyskusja",
        "anontalk": "Dyskusja",
        "navigation": "Nawigacja",
        "api-error-stashfailed": "Błąd wewnętrzny – serwer nie mógł zapisać pliku tymczasowego.",
        "api-error-publishfailed": "Błąd wewnętrzny: serwer nie mógł zapisać pliku tymczasowego.",
        "api-error-stasherror": "Wystąpił błąd podczas przesyłania pliku.",
-       "api-error-stashedfilenotfound": "Nie odnaleziono pliku zapasowego podczas próby jego pobrania z archiwum.",
+       "api-error-stashedfilenotfound": "Nie odnaleziono pliku podczas próby pobrania go ze schowka.",
        "api-error-stashpathinvalid": "Ścieżka do pliku zapasowego jest błędna.",
        "api-error-stashfilestorage": "Wystąpił błąd podczas przesyłania pliku do archiwum.",
        "api-error-stashzerolength": "Serwer nie może zapisać pliku zapasowego do archiwum, gdyż ma on zerową długość.",
index adb63dc..8257539 100644 (file)
        "nocookiesnew": "ستاسې گڼون جوړ شو، خو تاسې لا غونډال ته نه ياست ورننوتلي.\n{{SITENAME}} کې د ننوتلو لپاره کوکيز کارېږي.\nاو ستاسې د کتنمل کوکيز ناچارن دي.\nلطفاً خپل د کتنمل کوکيز چارن کړۍ او بيا د خپل کارن-نوم او پټنوم په کارولو سره غونډال ته ورننوځی.",
        "nocookieslogin": "{{SITENAME}} کې د ننوتلو لپاره کوکيز کارېږي.\nاو ستاسې د کتنمل کوکيز ناچارن دي.\nلطفاً خپل د کتنمل کوکيز چارن کړۍ او بيا د خپل کارن-نوم او پټنوم په کارولو سره غونډال ته ورننوځی.",
        "noname": "تاسې تر اوسه پورې کوم کره کارن نوم نه دی ځانگړی کړی.",
-       "loginsuccesstitle": "غونډال کې بريالی ورننوتلۍ",
+       "loginsuccesstitle": "غونډال کې ورننوتلۍ",
        "loginsuccess": "'''تاسې اوس {{SITENAME}} کې د \"$1\" په نوم ننوتي ياست.'''",
        "nosuchuser": "د \"$1\" په نوم هېڅ کارن نشته.\nد کارنانو نومونه د غټو او واړو تورو سره حساس دي.\nخپل حجا وڅارۍ، او يا هم [[Special:UserLogin/signup|يو نوی گڼون جوړ کړی]].",
        "nosuchusershort": "د \"$1\" په نوم هېڅ کوم گڼون نشته. لطفاً خپل د نوم ليکلې بڼې ته ځير شی چې پکې تېروتنه نه وي.",
        "createaccount-title": "د {{SITENAME}} د گڼون جوړېدنه",
        "createaccount-text": "يو چا د {{SITENAME}} په وېبځي ($4) کې ستاسې د برېښليک پتې لپاره د \"$2\" په نامه يو گڼون جوړ کړی چې پټنوم يې \"$3\" دی.\nتاسې بايد غونډال ته ورننوځۍ او همدا اوس خپل پټنوم بدل کړی.\n\nکه چېرته دا کړنه په تېروتنه کې شوی وي نو تاسې کولای شی چې دا پيغام بابېزه وگڼۍ.",
        "login-throttled": "تاسې څو واره هڅه کړې چې غونډال ته ورننوځۍ.\nلطفاً د بيا هڅې نه مخکې $1 شېبې تم شۍ.",
-       "login-abort-generic": "غونډال کې مو ننوتل نابريالی شو - ناڅاپي بند شو",
+       "login-abort-generic": "غونډال کې مو ننوتل نابرياله شوه - ناڅاپي بند شو",
        "loginlanguagelabel": "ژبه: $1",
        "pt-login": "ننوتل",
        "pt-login-button": "ننوتل",
        "newpassword": "نوی پټنوم:",
        "retypenew": "نوی پټنوم بيا وليکه:",
        "resetpass_submit": "پټنوم مو وټاکۍ او بيا غونډال ته ورننوځۍ",
-       "changepassword-success": "ستاسې پټنوم په برياليتوب سره بدل شو!",
+       "changepassword-success": "ستاسې پټنوم بدل شو!",
        "changepassword-throttled": "تاسې څو واره هڅه کړې چې غونډال ته ورننوځۍ.\nلطفاً د بيا هڅې نه مخکې $1 شېبې تم شۍ.",
        "botpasswords": "روباټ پټنومونه",
        "botpasswords-label-appid": "روباټ نوم:",
        "revdelete-unsuppress": "له بيازېرمل شويو بڼو څخه محدوديتونه لرې کول",
        "revdelete-log": "سبب:",
        "revdelete-submit": "{{PLURAL:$1|ټاکلې بڼه|ټاکلو بڼو}} کې پلي کول",
-       "revdelete-success": "د بڼې ښکارېدنه په برياليتوب سره هممهاله شوه.",
+       "revdelete-success": "د بياکتنې ښکارېدنه هممهاله شوه.",
        "revdelete-failure": "د بڼې ښکارېدنه نه شي هممهاله کېدای:\n$1",
-       "logdelete-success": "د ښکارېدنې يادښت په برياليتوب سره جوړ شو.",
+       "logdelete-success": "د يادښت ښکارېدنه ځانگړې شوه.",
        "logdelete-failure": "د ښکارېدنې يادښت نه شي جوړېدلی:\n$1",
        "revdel-restore": "ښکارېدنه بدلول",
        "pagehist": "د مخ پېښليک",
        "editcomment": "د سمون لنډيز دا و: \"''$1''\".",
        "changecontentmodel-title-label": "مخ سرليک",
        "changecontentmodel-reason-label": "سبب:",
+       "changecontentmodel-submit": "بدلول",
        "logentry-contentmodel-change-revertlink": "په څټ گرځول",
        "logentry-contentmodel-change-revert": "په څټ گرځول",
        "protectlogpage": "د ژغورنې يادښت",
        "tags-deactivate-submit": "نافعالول",
        "tags-edit-title": "نښلنونه سمول",
        "tags-edit-manage-link": "نښلنونه مهارول",
-       "tags-edit-existing-tags-none": "''هېڅ''",
+       "tags-edit-existing-tags-none": "<em>هېڅ</em>",
        "tags-edit-new-tags": "نوي نښلنونه:",
        "tags-edit-add": "دا نښلنونه ورگډول:",
        "tags-edit-remove": "دا نښلنونه غورځول:",
index 398ef62..20b2d5e 100644 (file)
@@ -92,7 +92,9 @@
                        "Arthurteb303",
                        "Rffontenelle",
                        "HenriqueCrang",
-                       "Caçador de Palavras"
+                       "Caçador de Palavras",
+                       "Luk3",
+                       "Ryuu"
                ]
        },
        "tog-underline": "Sublinhar links:",
        "moredotdotdot": "Mais...",
        "morenotlisted": "Esta lista não está completa.",
        "mypage": "Página",
-       "anonuserpage": "Usuário desconhecido",
        "mytalk": "Discussão",
        "anontalk": "Discussão",
        "navigation": "Navegação",
        "botpasswords-insert-failed": "Falha ao adicionar o nome de robô \"$1\". Ele já foi adicionado?",
        "botpasswords-update-failed": "Falha ao atualizar o nome do robô \"$1\". Elo já foi apagado?",
        "botpasswords-created-title": "Senha de robô criada",
-       "botpasswords-created-body": "A senha do robô \"$1\" foi criada com sucesso.",
+       "botpasswords-created-body": "A senha de robo para o robô de nome \"$1\" do usuário \"$2\" foi criada.",
        "botpasswords-updated-title": "Senha de robô atualizada",
-       "botpasswords-updated-body": "A senha de robô \"$1\" foi atualizada com sucesso.",
+       "botpasswords-updated-body": "A senha de robô para o robô de nome \"$1\" do usuário \"$2\" foi atualizada.",
        "botpasswords-deleted-title": "Senha de bot apagada",
-       "botpasswords-deleted-body": "A senha de bot \"$1\" foi apagada.",
+       "botpasswords-deleted-body": "A senha de robô para o robô de nome \"$1\" do usuário \"$2\" foi apagada.",
+       "botpasswords-newpassword": "A nova senha para se autenticar com <strong>$1</strong> é <strong>$2</strong>. <em>Por favor, guarde isto para referência futura.",
        "botpasswords-no-provider": "BotPasswordsSessionProvider não está disponível.",
        "botpasswords-restriction-failed": "Restrições de senha de robô evitam esta autenticação.",
        "botpasswords-invalid-name": "O nome de usuário especificado não contém o separador de senha de robô (\"$1\").",
        "newarticle": "(Nova)",
        "newarticletext": "Você seguiu um link para uma página que ainda não existe.\nPara criá-la, comece escrevendo na caixa abaixo (veja [$1 a página de ajuda] para mais informações).\nSe você chegou aqui por engano, clique no botão '''voltar''' do seu navegador.",
        "anontalkpagetext": "---- ''Esta é a página de discussão para um usuário anônimo que ainda não criou uma conta ou que não a usa, de forma que temos de utilizar o endereço de IP para identificá-lo(a). Tal endereço de IP pode ser compartilhado por vários usuários. Se você é um usuário anônimo e acha que comentários irrelevantes foram direcionados a você, por gentileza, [[Special:UserLogin/signup|crie uma conta]] ou [[Special:UserLogin|autentique-se]], a fim de evitar futuras confusões com outros usuários anônimos.''",
-       "noarticletext": "No momento, não há conteúdo nesta página.\nVocê pode [[Special:Search/{{PAGENAME}}|pesquisar pelo título desta página]] em outras páginas, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} buscar por registros relacionados],\nou [{{fullurl:{{FULLPAGENAME}}|action=edit}} criar esta página]</span>.",
+       "noarticletext": "Não há conteúdo nesta página no momento.\nVocê pode [[Special:Search/{{PAGENAME}}|pesquisar pelo título desta página]] em outras páginas, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} buscar por registros relacionados],\nou [{{fullurl:{{FULLPAGENAME}}|action=edit}} criar esta página]</span>.",
        "noarticletext-nopermission": "No momento, não há conteúdo nesta página\nVocê pode [[Special:Search/{{PAGENAME}}|pesquisar pelo título desta página]] em outras páginas,\nou <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} buscar por registros relacionados] </span>. Note que, no entanto, você não tem permissão para criar esta página.",
        "missing-revision": "A revisão #$1 da página denominada \"{{FULLPAGENAME}}\" não existe.\n\nIsto é geralmente causado por seguir um link de histórico desatualizado para uma página que foi eliminada.\nOs detalhes podem ser encontrados no [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de eliminação].",
        "userpage-userdoesnotexist": "A conta \"<nowiki>$1</nowiki>\" não se encontra registrada.\nVerifique se deseja mesmo criar/editar esta página.",
        "continue-editing": "Ir para a área de edição",
        "previewconflict": "Esta previsão reflete o texto que está na área de edição acima e como ele aparecerá se você escolher salvar.",
        "session_fail_preview": "Pedimos desculpas, mas não foi possível processar a sua edição devido à perda de dados da sua sessão.\n'''Por favor, verifique se você ainda está autenticado e tente novamente.'''\nCaso continue não funcionando, tente [[Special:UserLogout|sair]] e voltar a entrar na sua conta, e cheque se seu navegador permite cookies desse site.",
-       "session_fail_preview_html": "'''Desculpe-nos! Não foi possível processar a sua edição devido a uma perda de dados de sessão.'''\n\n''Como o projeto {{SITENAME}} possui HTML bruto ativo, a previsão não será exibida, como uma precaução contra ataques por JavaScript.''\n\n'''Se esta é uma tentativa de edição legítima, por favor tente novamente.\nCaso continue não funcionando, tente [[Special:UserLogout|desautenticar-se]] e voltar a entrar na sua conta.'''",
+       "session_fail_preview_html": "Desculpe! Não foi possível processar a sua edição devido a uma perda de dados de sessão.\n\n<em>Como {{SITENAME}} possui HTML bruto ativo, a previsão não será exibida como uma precaução contra ataques por JavaScript.\n\n<strong>Se esta é uma tentativa de edição legítima, por favor tente novamente.</strong>\nCaso continue não funcionando, tente [[Special:UserLogout|desautenticar-se]] e voltar a entrar na sua conta, e cheque se seu navegador permite cookies vindo deste site.",
        "token_suffix_mismatch": "'''A sua edição foi rejeitada uma vez que seu software de navegação mutilou os sinais de pontuação do sinal de edição. A edição foi rejeitada para evitar perdas no texto da página.\nIsso acontece ocasionalmente quando se usa um serviço de proxy anonimizador mal configurado.'''",
        "edit_form_incomplete": "'''Algumas partes do formulário de edição não chegaram ao servidor; verifique que a sua edição continua intacta e tente novamente, por favor.'''",
        "editing": "Editando $1",
        "permissionserrors": "Erro de permissão",
        "permissionserrorstext": "Você não possui permissão de fazer isso, {{PLURAL:$1|pelo seguinte motivo|pelos seguintes motivos}}:",
        "permissionserrorstext-withaction": "Você não possui permissão para $2, {{PLURAL:$1|pelo seguinte motivo|pelos motivos a seguir}}:",
+       "contentmodelediterror": "Você não pode editar essa revisão pois seu modelo de conteúdo é <code>$1</code>, que difere do modelo de conteúdo atual da página <code>$2</code>.",
        "recreate-moveddeleted-warn": "'''Atenção: Você está recriando uma página já eliminada em outra ocasião.'''\n\nConsidere se é realmente adequado continuar editando esta página.\nOs registros de eliminação e de movimentação desta página são exibidos a seguir, para sua comodidade:",
        "moveddeleted-notice": "Esta página foi eliminada.\nOs registros de eliminação e de movimentação para esta página estão disponibilizados abaixo, para referência.",
        "moveddeleted-notice-recent": "Desculpe, esta página foi eliminada recentemente (nos últimos 24 horas). A eliminação e se mover para a página de log são fornecidos abaixo para referência.",
        "revdelete-unsuppress": "Remover restrições das edições restauradas",
        "revdelete-log": "Motivo:",
        "revdelete-submit": "Aplicar {{PLURAL:$1|à revisão selecionada|às revisões selecionadas}}",
-       "revdelete-success": "'''A visibilidade da revisão foi atualizada.'''",
+       "revdelete-success": "Visibilidade da revisão atualizada.",
        "revdelete-failure": "'''A visibilidade da revisão não foi atualizada:'''\n$1",
-       "logdelete-success": "'''Visibilidade de evento definida com sucesso.'''",
+       "logdelete-success": "Visibilidade do registro definida.",
        "logdelete-failure": "'''A visibilidade do registro não pôde ser estabelecida:'''\n$1",
        "revdel-restore": "alterar visibilidade",
        "pagehist": "Histórico da página",
        "mergehistory-empty": "Não existem edições habilitadas a serem fundidas.",
        "mergehistory-done": "$3 {{PLURAL:$3|revisão|revisões}} de $1 fundidas em [[:$2]] com sucesso.",
        "mergehistory-fail": "Não foi possível fundir os históricos; por gentileza, verifique a página e os parâmetros de tempo.",
+       "mergehistory-fail-bad-timestamp": "Informação data/hora inválida.",
+       "mergehistory-fail-invalid-source": "Página de origem inválida.",
+       "mergehistory-fail-invalid-dest": "Página de destino é inválida.",
+       "mergehistory-fail-no-change": "A fusão de histórico não fundiu nenhuma revisão. Por favor reavalie os parâmetros página e tempo.",
+       "mergehistory-fail-permission": "Permissões insuficientes para fundir histórico.",
+       "mergehistory-fail-self-merge": "As páginas de origem e destino são as mesmas.",
+       "mergehistory-fail-timestamps-overlap": "As revisões fonte sobrescrevem ou vêm após as revisões de destino",
        "mergehistory-fail-toobig": "Não é possível fundir o histórico, já que um número de revisão(ões) acima do limite ($1 {{PLURAL:$1|revisão|revisões}}) seriam movidos.",
        "mergehistory-no-source": "A página de origem ($1) não existe.",
        "mergehistory-no-destination": "A página de destino ($1) não existe.",
        "userrights-changeable-col": "Grupos que pode alterar",
        "userrights-unchangeable-col": "Grupos que não pode alterar",
        "userrights-conflict": "Há um comflito de permissões de usuário! Por favor, revise e confirme as alterações novamente.",
-       "userrights-removed-self": "Você removeu com sucesso seus direitos de usuário. Como tal, você agora está impossibilitado de acessar esta página.",
+       "userrights-removed-self": "Você removeu seus privilégios. Portanto, você agora não pode mais acessar esta página.",
        "group": "Grupo:",
        "group-user": "Usuários",
        "group-autoconfirmed": "Usuários autoconfirmados",
        "right-managechangetags": "Criar e apagar [[Special:Tags|tags]] na base de dados",
        "right-applychangetags": "Aplicar [[Special:Tags|etiquetas]] juntamente com as alterações de alguém",
        "right-changetags": "Adicionar e remover [[Special:Tags|etiquetas]] arbitrárias em revisões e ''logs'' individuais",
+       "grant-generic": "conjunto de direitos \"$1\"",
        "grant-group-page-interaction": "Interagir com páginas",
+       "grant-group-file-interaction": "Interagir com multimídia",
        "grant-group-watchlist-interaction": "Interagir com sua lista de páginas vigiadas",
        "grant-group-email": "Enviar e-mail",
        "grant-group-high-volume": "Realizar grande volume de atividades",
        "grant-createaccount": "Criar contas",
        "grant-createeditmovepage": "Criar, editar e mover páginas",
        "grant-delete": "Excluir páginas, revisões e entradas de registro",
+       "grant-editinterface": "Editar o domínio MediaWiki e o CSS/JavaScript do usuário",
+       "grant-editmycssjs": "Editar o seu CSS/JavaScript de usuário",
        "grant-editmyoptions": "Editar suas preferências de usuário",
        "grant-editmywatchlist": "Editar sua lista de páginas vigiadas",
        "grant-editpage": "Editar páginas existentes",
        "rcshowhidemine": "$1 minhas edições",
        "rcshowhidemine-show": "Exibir",
        "rcshowhidemine-hide": "Ocultar",
+       "rcshowhidecategorization": "$1 categorização de páginas",
        "rcshowhidecategorization-show": "Exibir",
        "rcshowhidecategorization-hide": "Esconder",
        "rclinks": "Exibir as $1 alterações recentes feitas nos últimos $2 dias<br />$3",
        "recentchangeslinked-page": "Nome da página:",
        "recentchangeslinked-to": "Inversamente, mostrar mudanças nas páginas que contêm ligações para esta",
        "recentchanges-page-added-to-category": "[[:$1]]adicionada à categoria",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] e [[Special:WhatLinksHere/$1|{{PLURAL:$2|uma página|$2 páginas}}]] adicionadas à categoria",
+       "recentchanges-page-removed-from-category": "[[:$1]] removida da categoria",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] e [[Special:WhatLinksHere/$1|{{PLURAL:$2|uma página|$2 páginas}}]] removidas da categoria",
        "autochange-username": "Alteração automática do MediaWiki",
        "upload": "Enviar arquivo",
        "uploadbtn": "Enviar arquivo",
        "uploaded-script-svg": "Encontrado elemento de script \"$1\" no arquivo SVG carregado.",
        "uploaded-hostile-svg": "Encontrado CSS inseguro no elemento de estilo do arquivo SVG carregado.",
        "uploaded-event-handler-on-svg": "Não é permitido configurar atributos que manipulem eventos  <code>$1=\"$2\"</code> em arquivos SVG.",
+       "uploaded-href-attribute-svg": "os atributos href nos ficheiros SVG só están autorizados a ligar a direccións http:// ou https://, atopado <code>&lt;$1 $2=\"$3\"&gt;</code>.",
+       "uploaded-href-unsafe-target-svg": "Encontrado href para dados não seguros: alvo URI <code>&lt;$1 $2=\"$3\"&gt;</code> no arquivo SVG carregado.",
        "uploadscriptednamespace": "Este aruivo SVG contém um espaço nominal probido \"$1\"",
        "uploadinvalidxml": "O XML no arquivo enviado não pôde ser analisado.",
        "uploadvirus": "O arquivo contém vírus!\nDetalhes: $1",
index 84bd3ad..7a17015 100644 (file)
        "moredotdotdot": "Mais...",
        "morenotlisted": "Esta lista não está completa.",
        "mypage": "Página",
-       "anonuserpage": "Utilizador desconhecido",
        "mytalk": "Discussão",
        "anontalk": "Discussão",
        "navigation": "Navegação",
        "recentchangeslinked-page": "Nome da página:",
        "recentchangeslinked-to": "Inversamente, mostrar mudanças às páginas que contêm ligações para esta",
        "recentchanges-page-added-to-category": "[[:$1]] foi adicionada à categoria",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] e {{PLURAL:$2|uma outra página|$2 outras páginas}} foram adicionadas à categoria",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] e [[Special:WhatLinksHere/$1|{{PLURAL:$2|uma outra página|$2 outras páginas}}]] foram adicionadas à categoria",
        "recentchanges-page-removed-from-category": "[[:$1]] foi removida da categoria",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] e {{PLURAL:$2|uma outra página|$2 outras páginas}} foram removidas da categoria",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] e [[Special:WhatLinksHere/$1|{{PLURAL:$2|uma outra página|$2 outras páginas}}]] foram removidas da categoria",
        "autochange-username": "Alteração automática do MediaWiki",
        "upload": "Carregar ficheiro",
        "uploadbtn": "Carregar ficheiro",
index ae2eca4..0c588fa 100644 (file)
        "moredotdotdot": "Used as \"More...\" link for {{msg-mw|pageinfo-transclusions}} field, in the \"templates used on this page\" list.\n\nSimilar to {{msg-mw|morenotlisted}}.\n{{Identical|More...}}",
        "morenotlisted": "An indication that more of a templates list is not shown.\n\nUsed as \"More...\" link for {{msg-mw|pageinfo-templates}} field.\n\nSimilar to {{msg-mw|moredotdotdot}}.",
        "mypage": "A text for the link to the user's user page in the links at the top of the page.\n{{Identical|Page}}",
-       "anonuserpage": "Same as {{msg-mw|mypage}} but used for non-logged-in users.\nA text for the link to the IP user page in the links at the top of the page.\n\nSee also:\n* {{msg-mw|Accesskey-pt-anonuserpage}}\n* {{msg-mw|Tooltip-pt-anonuserpage}}",
        "mytalk": "In the personal URLs page section - right upper corner.\n\nUsed as link title in your personal toolbox.\n\nSee also:\n* {{msg-mw|Mytalk}}\n* {{msg-mw|Accesskey-pt-mytalk}}\n* {{msg-mw|Tooltip-pt-mytalk}}\n{{Identical|Talk}}",
        "anontalk": "Same as {{msg-mw|mytalk}} but used for non-logged-in users.\n{{Identical|Talk}}\n\nSee also:\n* {{msg-mw|Accesskey-pt-anontalk}}\n* {{msg-mw|Tooltip-pt-anontalk}}",
        "navigation": "This is shown as a section header in the sidebar of most skins.\n\n{{Identical|Navigation}}",
        "uploadstash-badtoken": "Used as error message in [[Special:UploadStash]].",
        "uploadstash-errclear": "Used as error message in [[Special:UploadStash]].",
        "uploadstash-refresh": "Used as link text in [[Special:UploadStash]].",
+       "uploadstash-thumbnail": "Used as link text in [[Special:UploadStash]].",
        "invalid-chunk-offset": "Error that can happen if chunks get uploaded out of order.\nAs a result of this error, clients can continue from an offset provided or restart the upload.\nUsed on [[Special:UploadWizard]].",
        "img-auth-accessdenied": "[[mw:Manual:Image Authorization|Manual:Image Authorization]]: Access Denied\n{{Identical|Access denied}}",
        "img-auth-nopathinfo": "[[mw:Manual:Image Authorization|Manual:Image Authorization]]: Missing PATH_INFO - see english description\n{{Doc-important|This is plain text. Do not use any wiki syntax.}}",
index 95f4999..17a1314 100644 (file)
        "moredotdotdot": "Далее…",
        "morenotlisted": "Этот список неполон.",
        "mypage": "Страница",
-       "anonuserpage": "Неизвестный участник",
        "mytalk": "Обсуждение",
        "anontalk": "Обсуждение",
        "navigation": "Навигация",
        "recentchangeslinked-page": "Название страницы:",
        "recentchangeslinked-to": "Наоборот, показать изменения на страницах, которые ссылаются на указанную страницу",
        "recentchanges-page-added-to-category": "[[:$1]] добавлена в категорию",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] и {{PLURAL:$2|одна страница|$2 страниц}} добавлены в категорию",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] и [[Special:WhatLinksHere/$1|$2 {{PLURAL:$2|страница|страниц|страницы}}]] добавлены в категорию",
        "recentchanges-page-removed-from-category": "[[:$1]] убрана из категории",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] и {{PLURAL:$2|одна страница|$2 страниц}} убраны из категории",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] и [[Special:WhatLinksHere/$1|$2 {{PLURAL:$2|страница|страниц|страницы}}]] удалены из категории",
        "autochange-username": "Автоматическое изменение MediaWiki",
        "upload": "Загрузить файл",
        "uploadbtn": "Загрузить файл",
index 226ec88..682ee36 100644 (file)
        "moredotdotdot": "Več ...",
        "morenotlisted": "Seznam ni popoln.",
        "mypage": "Stran",
-       "anonuserpage": "Neznani uporabnik",
        "mytalk": "Pogovor",
        "anontalk": "Pogovorna stran",
        "navigation": "Navigacija",
        "recentchangeslinked-page": "Naslov strani:",
        "recentchangeslinked-to": "Prikaži spremembe na določeno stran povezanih strani",
        "recentchanges-page-added-to-category": "[[:$1]] dodano v kategorijo",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] in $2 {{PLURAL:$2|stran dodana|strani dodani|strani dodane|strani dodanih}} v kategorijo",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] in [[Special:WhatLinksHere/$1|$2 {{PLURAL:$2|stran|strani}}]] {{PLURAL:$2|dodana|dodani|dodane|dodanih}} v kategorijo",
        "recentchanges-page-removed-from-category": "[[:$1]] odstranjeno iz kategorije",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] in $2 {{PLURAL:$2|stran odstranjena|strani odstranjeni|strani odstranjene|strani odstranjenih}} iz kategorije",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] in [[Special:WhatLinksHere/$1|$2 {{PLURAL:$2|stran|strani}}]] {{PLURAL:$2|odstranjena|odstranjeni|odstranjene|odstranjenih}} iz kategorije",
        "autochange-username": "Samodejna sprememba MediaWiki",
        "upload": "Naloži datoteko",
        "uploadbtn": "Naloži datoteko",
        "exif-orientation-8": "Zasukano za 90° v desno",
        "exif-planarconfiguration-1": "grudast format",
        "exif-planarconfiguration-2": "ravninski format",
-       "exif-xyresolution-i": "$1 dpi ({{PLURAL:$1|točka/palec|točki/palec|točke/palec|točk/palec|točk/palec}})",
-       "exif-xyresolution-c": "$1 dpc ({{PLURAL:$1|točka/centimeter|točki/centimeter|točke/centimeter|točk/centimeter|točk/centimeter}})",
+       "exif-xyresolution-i": "$1 dpi ({{PLURAL:$1|točka/palec|točki/palec|točke/palec|točk/palec}})",
+       "exif-xyresolution-c": "$1 dpc ({{PLURAL:$1|točka/centimeter|točki/centimeter|točke/centimeter|točk/centimeter}})",
        "exif-colorspace-65535": "Neumerjeno",
        "exif-componentsconfiguration-0": "ne obstaja",
        "exif-exposureprogram-0": "Ni določen",
index 4596598..9c8254a 100644 (file)
        "grant-group-file-interaction": "Уређивање датотека",
        "grant-group-watchlist-interaction": "Уређивање вашег списка надгледања",
        "grant-group-email": "Пошаљи имејл",
+       "grant-blockusers": "Блокирање и деблокирање корисника",
        "grant-createaccount": "Отварање налога",
        "grant-createeditmovepage": "Прављење, уређивање и премештање страница",
        "grant-delete": "Брисање страница, измена и уноса у дневницима",
        "grant-editinterface": "Уређивање Медијавики именског простора и корисничких CSS/JavaScript страница",
+       "grant-editmyoptions": "Уређивање ваших подешавања",
        "grant-editmywatchlist": "Уређивање вашег списка надгледања",
        "grant-editpage": "Уређивање постојећих страница",
        "grant-editprotected": "Уређивање заштићених страница",
+       "grant-protect": "Закључавање и откључавање страница",
+       "grant-rollback": "Враћање измена",
        "grant-uploadeditmovefile": "Отпремање, замена и премештање датотека",
        "grant-uploadfile": "Слање нових датотека",
+       "grant-basic": "Основна права",
+       "grant-viewdeleted": "Преглед обрисаних страница и датотека",
+       "grant-viewmywatchlist": "Преглед вашег списак надгледања",
        "newuserlogpage": "Дневник нових корисника",
        "newuserlogpagetext": "Ово је дневник нових корисника.",
        "rightslog": "Дневник корисничких права",
        "recentchangeslinked-page": "Назив странице:",
        "recentchangeslinked-to": "Прикажи измене страница које су повезане с датом страницом",
        "recentchanges-page-added-to-category": "[[:$1]] је додата у категорију",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] и још {{PLURAL:$2|једна страница|$2 странице}} су додате у категорију",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] и још [[Special:WhatLinksHere/$1|{{PLURAL:$2|једна страница|$2 странице}}]] су додате у категорију",
        "recentchanges-page-removed-from-category": "[[:$1]] је уклоњена из категорије",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] и још {{PLURAL:$2|једна страница|$2 странице}} су уклоњене из категорије",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] и још [[Special:WhatLinksHere/$1|{{PLURAL:$2|једна страница|$2 странице}}]] су уклоњене из категорије",
        "autochange-username": "Медијавики аутоматска измена",
        "upload": "Пошаљи датотеку",
        "uploadbtn": "Пошаљи датотеку",
        "changecontentmodel-title-label": "Наслов странице",
        "changecontentmodel-model-label": "Нови модел садржаја",
        "changecontentmodel-reason-label": "Разлог:",
+       "changecontentmodel-submit": "Промени",
        "changecontentmodel-success-title": "Модел садржаја је промењен",
        "changecontentmodel-success-text": "Модел садржаја странице [[:$1]] је промењен.",
        "changecontentmodel-cannot-convert": "Модел садржаја странице [[:$1]] се не може претворити у врсту $2.",
        "variantname-gan": "gan",
        "variantname-sr-ec": "Ћирилица",
        "variantname-sr-el": "Latinica",
-       "variantname-sr": "sr",
+       "variantname-sr": "ћир/lat",
        "variantname-kk-kz": "kk-kz",
        "variantname-kk-tr": "kk-tr",
        "variantname-kk-cn": "kk-cn",
index 60e6c3a..c189237 100644 (file)
        "recentchangeslinked-page": "Naziv stranice:",
        "recentchangeslinked-to": "Prikaži izmene stranica koje su povezane s datom stranicom",
        "recentchanges-page-added-to-category": "[[:$1]] je dodata u kategoriju",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] i još {{PLURAL:$2|jedna stranica|$2 stranice}} su dodate u kategoriju",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] i još [[Special:WhatLinksHere/$1|{{PLURAL:$2|jedna stranica|$2 stranice}}]] su dodate u kategoriju",
        "recentchanges-page-removed-from-category": "[[:$1]] je uklonjena iz kategorije",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] i još {{PLURAL:$2|jedna stranica|$2 stranice}} su uklonjene iz kategorije",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] i još [[Special:WhatLinksHere/$1|{{PLURAL:$2|jedna stranica|$2 stranice}}]] su uklonjene iz kategorije",
        "autochange-username": "Medijaviki automatska izmena",
        "upload": "Pošalji datoteku",
        "uploadbtn": "Pošalji datoteku",
        "variantname-gan": "gan",
        "variantname-sr-ec": "Ćirilica",
        "variantname-sr-el": "Latinica",
-       "variantname-sr": "sr",
+       "variantname-sr": "ћир/lat",
        "variantname-kk-kz": "kk-kz",
        "variantname-kk-tr": "kk-tr",
        "variantname-kk-cn": "kk-cn",
index e3a6a1e..ccbdafb 100644 (file)
        "moredotdotdot": "Mer...",
        "morenotlisted": "Denna lista är inte fullständig.",
        "mypage": "Sida",
-       "anonuserpage": "Okänd användare",
        "mytalk": "Diskussion",
        "anontalk": "Diskussion",
        "navigation": "Navigering",
        "recentchangeslinked-page": "Sidnamn:",
        "recentchangeslinked-to": "Visa ändringar på sidor med länkar till den givna sidan istället",
        "recentchanges-page-added-to-category": "[[:$1]] lades till i kategorin",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] och {{PLURAL:$2|en sida|$2 sidor}} lades till i kategorin",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] och [[Special:WhatLinksHere/$1|{{PLURAL:$2|en sida|$2 sidor}}]] lades till i kategorin",
        "recentchanges-page-removed-from-category": "[[:$1]] togs bort från kategorin",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] och {{PLURAL:$2|en sida|$2 sidor}} togs bort från kategorin",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] och [[Special:WhatLinksHere/$1|{{PLURAL:$2|en sida|$2 sidor}}]] togs bort från kategorin",
        "autochange-username": "Automatisk MediaWiki-ändring",
        "upload": "Ladda upp fil",
        "uploadbtn": "Ladda upp fil",
index 5c3ad1c..ef2c8a2 100644 (file)
        "rcshowhidemine": "నా మార్పులను $1",
        "rcshowhidemine-show": "చూపించు",
        "rcshowhidemine-hide": "దాచు",
+       "rcshowhidecategorization": "పేజి  వర్గీకరణ $1",
        "rcshowhidecategorization-show": "చూపించు",
        "rcshowhidecategorization-hide": "దాచు",
        "rclinks": "గత  $2 రోజుల లోని చివరి $1 మార్పులను చూపించు <br />$3",
index 4d6231b..6fc58ba 100644 (file)
        "moredotdotdot": "Більше…",
        "morenotlisted": "Цей список неповний.",
        "mypage": "Сторінка",
-       "anonuserpage": "Невідомий користувач",
        "mytalk": "Обговорення",
        "anontalk": "Обговорення",
        "navigation": "Навігація",
        "recentchangeslinked-page": "Назва сторінки:",
        "recentchangeslinked-to": "Показати зміни на сторінках, пов'язаних з даною",
        "recentchanges-page-added-to-category": "[[:$1]] Додано до категорії",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] та ще {{PLURAL:$2|$2 сторінку|$2 сторінки|$2 сторінок|1=одну сторінку}} було додано до категорії",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] та ще [[Special:WhatLinksHere/$1|{{PLURAL:$2|$2 сторінку|$2 сторінки|$2 сторінок|1=одну сторінку}}]] було додано до категорії",
        "recentchanges-page-removed-from-category": "[[:$1]] було вилучено з категорії",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] та ще {{PLURAL:$2|$2 сторінку|$2 сторінки|$2 сторінок|1=одну сторінку}} було вилучено з категорії",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] та ще [[Special:WhatLinksHere/$1|{{PLURAL:$2|$2 сторінку|$2 сторінки|$2 сторінок|1=одну сторінку}}]] було вилучено з категорії",
        "autochange-username": "Автоматичні редагування MediaWiki",
        "upload": "Завантажити файл",
        "uploadbtn": "Завантажити файл",
index d25b622..3952b8e 100644 (file)
        "moredotdotdot": "Thêm nữa…",
        "morenotlisted": "Danh sách này không có đầy đủ.",
        "mypage": "Trang cá nhân",
-       "anonuserpage": "Người dùng không rõ",
        "mytalk": "Tin nhắn",
        "anontalk": "Thảo luận",
        "navigation": "Xem nhanh",
        "viewhelppage": "Xem trang trợ giúp",
        "categorypage": "Xem trang thể loại",
        "viewtalkpage": "Xem trang thảo luận",
-       "otherlanguages": "Trong các ngôn ngữ khác",
+       "otherlanguages": "Trong ngôn ngữ khác",
        "redirectedfrom": "(đổi hướng từ $1)",
        "redirectpagesub": "Trang đổi hướng",
        "redirectto": "Đổi hướng đến:",
        "changepassword-success": "Mật khẩu của bạn đã được thay đổi.",
        "changepassword-throttled": "Bạn đã thử đăng nhập gần đây nhiều lần quá. Xin chờ $1 trước khi bạn thử lần nữa.",
        "botpasswords": "Mật khẩu Bot",
+       "botpasswords-summary": "<em>Mật khẩu bot</em> cho phép truy cập một tài khoản người dùng qua API mà không sử dụng thông tin chứng nhận chính của tài khoản. Các quyền người dùng có thể bị hạn chế khi đăng nhập dùng mật khẩu bot.\n\nNếu bạn không hiểu tại sao cần sử dụng mật khẩu bot, có lẽ bạn không nên sử dụng nó. Không ai bao giờ có lý do chính đáng để yêu cầu bạn tạo ra một mật khẩu bot và cung cấp nó cho họ.",
        "botpasswords-disabled": "Mật khẩu Bot bị vô hiệu hoá.",
        "botpasswords-no-central-id": "Để sử dụng mật khẩu bot, bạn phải đăng nhập vào một tài khoản tập trung.",
        "botpasswords-existing": "Mật khẩu bot hiện tại",
        "botpasswords-label-delete": "Xoá",
        "botpasswords-label-resetpassword": "Đặt lại mật khẩu",
        "botpasswords-label-grants": "Các quyền có liên quan:",
+       "botpasswords-help-grants": "Các lượt cấp phép cho phép truy cập các quyền người dùng mà một tài khoản đã có sẵn. Xem thêm thông tin trong [[Special:ListGrants|bảng cấp phép]].",
        "botpasswords-label-restrictions": "Hạn chế sử dụng:",
        "botpasswords-label-grants-column": "Cấp quyền",
        "botpasswords-bad-appid": "Bot có tên \"$1\" không hợp lệ.",
        "botpasswords-insert-failed": "Không thể thêm tên bot \"$1\". Nó đã được thêm vào chưa?",
        "botpasswords-update-failed": "Thất bại khi cập nhật bot có tên \"$1\". Có phải nó đã bị xóa?",
        "botpasswords-created-title": "Mật khẩu bot đã được tạo",
-       "botpasswords-created-body": "Mật khẩu bot \"$1\" đã được tạo thành công.",
+       "botpasswords-created-body": "Đã tạo mật khẩu cho bot “$1” của người dùng “$2”.",
        "botpasswords-updated-title": "Mật khẩu Bot đã được cập nhật",
-       "botpasswords-updated-body": "Mật khẩu bot \"$1\" đã được cập nhật thành công.",
+       "botpasswords-updated-body": "Đã cập nhật mật khẩu cho bot “$1” của người dùng “$2”.",
        "botpasswords-deleted-title": "Bot mật khẩu đã bị xóa",
-       "botpasswords-deleted-body": "Mật khẩu bot \"$1\" đã bị xóa.",
+       "botpasswords-deleted-body": "Đã xóa mật khẩu cho bot “$1” của người dùng “$2”.",
+       "botpasswords-newpassword": "Mật khẩu mới để đăng nhập như <strong>$1</strong> là <strong>$2</strong>. <em>Xin hãy ghi lại mật khẩu này để mai mốt tham khảo.</em>",
        "botpasswords-no-provider": "BotPasswordsSessionProvider không có sẵn.",
        "botpasswords-restriction-failed": "Mật khẩu bot giới hạn ngăn chặn đăng nhập này.",
        "botpasswords-invalid-name": "Tên người dùng đã chỉ định không chứa dấu tách mật khẩu bot (\"$1\").",
        "resetpass-no-info": "Bạn phải đăng nhập mới có thể truy cập trực tiếp trang này.",
        "resetpass-submit-loggedin": "Thay đổi mật khẩu",
        "resetpass-submit-cancel": "Hủy bỏ",
-       "resetpass-wrong-oldpass": "Mật khẩu tạm hoặc mật khẩu hiện thời không hợp lệ.\nCó thể bạn đã thay đổi thành công mật khẩu của mình hoặc đã yêu cầu cung cấp một mật khẩu tạm mới.",
+       "resetpass-wrong-oldpass": "Mật khẩu tạm hoặc mật khẩu hiện thời không hợp lệ.\nCó thể bạn đã thay đổi mật khẩu của mình hoặc đã yêu cầu cung cấp một mật khẩu tạm mới.",
        "resetpass-recycled": "Xin vui lòng chọn một mật khẩu khác với mật khẩu hiện tại.",
        "resetpass-temp-emailed": "Bạn đã đăng nhập bằng mật khẩu tạm gửi qua thư điện tử. Để hoàn tất việc đăng nhập, bạn phải tạo lại mật khẩu mới tại đây:",
        "resetpass-temp-password": "Mật khẩu tạm:",
        "revdelete-submit": "Áp dụng vào {{PLURAL:$1|phiên bản|các phiên bản}} được chọn",
        "revdelete-success": "Phiên bản Hiển thị đã cập nhật.",
        "revdelete-failure": "'''Không thể cập nhật khả năng hiển thị của phiên bản:'''\n$1",
-       "logdelete-success": "'''Khả năng nhìn thấy của sự kiện đã được thiết lập thành công.'''",
+       "logdelete-success": "Đã thiết lập khả năng nhìn thấy của nhật trình.",
        "logdelete-failure": "'''Không thể thiết lập khả năng hiện thị của nhật trình:'''\n$1",
        "revdel-restore": "đổi mức khả kiến",
        "pagehist": "Lịch sử trang",
        "mergehistory-empty": "Không thể trộn được sửa đổi nào.",
        "mergehistory-done": "$3 phiên bản của $1 đã được trộn vào [[:$2]].",
        "mergehistory-fail": "Không thể thực hiện được việc trộn lịch sử sửa đổi, vui lòng chọn lại trang cũng như thông số ngày giờ.",
+       "mergehistory-fail-bad-timestamp": "Dấu thời gian không hợp lệ.",
        "mergehistory-fail-invalid-source": "Trang nguồn không hợp lệ.",
        "mergehistory-fail-invalid-dest": "Trang đích không hợp lệ.",
        "mergehistory-fail-no-change": "Kết hợp lịch sử đã không hợp nhất bất kỳ sửa đổi nào. Xin vui lòng kiểm tra lại trang và các thông số thời gian.",
        "mergehistory-fail-permission": "Không đủ quyền để hợp nhất lịch sử.",
        "mergehistory-fail-self-merge": "Trang nguồn và đích là giống nhau.",
+       "mergehistory-fail-timestamps-overlap": "Các phiên bản nguồn trùng với nhau hoặc dẫn sau các phiên bản đích.",
        "mergehistory-fail-toobig": "Không thể trộn lịch sử vì phải di chuyển $1 phiên bản và vượt quá giới hạn cho phép.",
        "mergehistory-no-source": "Trang nguồn $1 không tồn tại.",
        "mergehistory-no-destination": "Trang đích $1 không tồn tại.",
        "recentchangeslinked-page": "Tên trang:",
        "recentchangeslinked-to": "Hiện thay đổi tại những trang có liên kết đến trang này thay thế",
        "recentchanges-page-added-to-category": "[[:$1]] được xếp vào thể loại",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] và {{PLURAL:$2|một trang|$2 trang}} nữa được xếp vào thể loại",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] và [[Special:WhatLinksHere/$1|{{PLURAL:$2|một trang|$2 trang}} nữa]] được xếp vào thể loại",
        "recentchanges-page-removed-from-category": "[[:$1]] được gỡ khỏi thể loại",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] và {{PLURAL:$2|một trang|$2 trang}} nữa được gỡ khỏi thể loại",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] và [[Special:WhatLinksHere/$1|{{PLURAL:$2|một trang|$2 trang}} nữa]] được gỡ khỏi thể loại",
        "autochange-username": "MediaWiki thay đổi tự động",
        "upload": "Tải tập tin lên",
        "uploadbtn": "Tải tập tin lên",
        "uploaded-script-svg": "Tìm thấy phần tử “$1” có khả năng chạy kịch bản trong tập tin SVG được tải lên.",
        "uploaded-hostile-svg": "Tìm thấy CSS nguy hiểm trong phần tử style của tập tin SVG được tải lên.",
        "uploaded-event-handler-on-svg": "Không cho phép đặt thuộc tính xử lý sự kiện <code>$1=\"$2\"</code> trong tập tin SVG.",
+       "uploaded-href-attribute-svg": "Các đặc tính href trong tập tin SVG chỉ được phép dẫn đến các trang http:// hoặc https://, nhưng gặp phải <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploaded-href-unsafe-target-svg": "Tìm thấy href đến đích URI data: không an toàn <code>&lt;$1 $2=\"$3\"&gt;</code> trong tập tin SVG được tải lên.",
        "uploaded-animate-svg": "Tìm thấy thẻ “animate” có thể thay đổi href qua thuộc tính “from” <code>&lt;$1 $2=\"$3\"&gt;</code> trong tập tin SVG được tải lên.",
        "uploaded-setting-event-handler-svg": "Đã ngăn cản việc đặt thuộc tính xử lý sự kiện khi tìm thấy <code>&lt;$1 $2=\"$3\"&gt;</code> trong tập tin SVG được tải lên.",
        "upload-too-many-redirects": "URL có quá nhiều đổi hướng",
        "upload-http-error": "Xảy ra lỗi HTTP: $1",
        "upload-copy-upload-invalid-domain": "Không có sẵn các bản sao tải lên tại tên miền này.",
+       "upload-foreign-cant-upload": "Wiki này không được thiết lập để tải tập tin lên kho tập tin chung bên ngoài được chỉ định.",
        "upload-dialog-title": "Tải tập tin lên",
        "upload-dialog-button-cancel": "Hủy bỏ",
        "upload-dialog-button-done": "Xong",
        "upload-form-label-infoform-name": "Tên",
        "upload-form-label-infoform-name-tooltip": "Một tiêu đề mô tả duy nhất cho tập tin, mà sẽ được dùng để làm một tên file. Bạn có thể sử dụng ngôn ngữ đơn giản với các dấu cách. Không bao gồm phần mở rộng của file.",
        "upload-form-label-infoform-description": "Miêu tả",
+       "upload-form-label-infoform-description-tooltip": "Miêu tả một cách ngắn gọn mỗi điều đáng kể về tác phẩm này.\nNếu là hình chụp, hãy nói đến những vật thể chính, cũng như tình hình, sự kiện, hay địa điểm của hình chụp.",
        "upload-form-label-usage-title": "Sử dụng",
        "upload-form-label-usage-filename": "Tên tập tin",
        "foreign-structured-upload-form-label-own-work": "Đây là tác phẩm của chính tôi",
        "apisandbox-dynamic-parameters-add-label": "Thêm tham số:",
        "apisandbox-dynamic-parameters-add-placeholder": "Tên tham số",
        "apisandbox-dynamic-error-exists": "Một tham số có tên \"$1\" đã tồn tại.",
+       "apisandbox-deprecated-parameters": "Tham số bị phản đối",
        "apisandbox-fetch-token": "Tự động điền token này",
        "apisandbox-submit-invalid-fields-title": "Một số field là không hợp lệ",
        "apisandbox-submit-invalid-fields-message": "Xin vui lòng sửa các miền được đánh dấu và thử lại.",
        "apisandbox-results-error": "Một lỗi xuất hiện khi tải các đáp ứng truy vấn API: $1.",
        "apisandbox-request-url-label": "URL của yêu cầu:",
        "apisandbox-request-time": "Thời gian yêu cầu: $1 ms",
+       "apisandbox-results-fixtoken": "Sửa lại dấu hiệu và gửi lại",
+       "apisandbox-results-fixtoken-fail": "Thất bại khi lấy dấu hiệu “$1”.",
        "apisandbox-alert-page": "Các miền trên Trang này là không hợp lệ.",
        "apisandbox-alert-field": "Giá trị của miền này là không hợp lệ.",
        "booksources": "Nguồn sách",
        "listgrouprights-namespaceprotection-header": "Hạn chế không gian tên",
        "listgrouprights-namespaceprotection-namespace": "Không gian tên",
        "listgrouprights-namespaceprotection-restrictedto": "Quyền cho phép người dùng sửa đổi",
+       "listgrants": "Cấp phép",
+       "listgrants-summary": "Danh sách sau có các lượt cấp phép và thông tin về quyền truy cập quyền người dùng. Những người dùng có thể cho phép các ứng dụng sử dụng tài khoản của họ, các quyền được hạn chế tùy theo người dùng cấp phép cho ứng dụng. Một ứng dụng hoạt động nhân danh người dùng thực sự chỉ có thể sử dụng các quyền mà người dùng thật có.\nCó thể có [[{{MediaWiki:Listgrouprights-helppage}}|thêm thông tin]] về các quyền nói riêng.",
        "listgrants-grant": "Cấp phép",
        "listgrants-rights": "Quyền lợi",
        "trackingcategories": "Thể loại phần mềm",
        "changecontentmodel-nodirectediting": "Kiểu nội dung $1 không hỗ trợ sửa đổi trực tiếp",
        "log-name-contentmodel": "Nhật trình thay đổi kiểu nội dung",
        "log-description-contentmodel": "Sự kiện có liên quan đến kiểu nội dung của trang.",
+       "logentry-contentmodel-new": "$1 {{GENDER:$2}}đã tạo trang $3 với mô hình nội dung không mặc định “$5”",
        "logentry-contentmodel-change": "$1 {{GENDER:$2}}đã thay đổi kiểu nội dung của trang $3 từ “$4” thành “$5”",
        "logentry-contentmodel-change-revertlink": "lùi lại",
        "logentry-contentmodel-change-revert": "lùi lại",
        "import-nonewrevisions": "Không nhập phiên bản nào (tất cả các phiên bản đều đã có sẵn hoặc bị bỏ qua do lỗi).",
        "xml-error-string": "$1 tại dòng $2, cột $3 (byte $4): $5",
        "import-upload": "Tải lên dữ liệu XML",
-       "import-token-mismatch": "Mất dữ liệu phiên làm việc. Xin hãy thử lại lần nữa.",
+       "import-token-mismatch": "Mất dữ liệu phiên làm việc.\n\nCó thể bạn đã được đăng xuất. <strong>Xin hãy xác nhận rằng bạn vẫn được đăng nhập và thử lại.</strong>\nNếu vẫn không được, hãy thử [[Special:UserLogout|đăng xuất]] rồi đăng nhập lại, và kiểm tra rằng trình duyệt của bạn cho phép các cookie của trang Web này.",
        "import-invalid-interwiki": "Không thể nhập trang từ wiki được chỉ định.",
        "import-error-edit": "Trang “$1” không được nhập tại vì bạn không được phép sửa đổi nó.",
        "import-error-create": "Trang “$1” không được nhập tại vì bạn không được phép tạo ra nó.",
        "newimages-legend": "Bộ lọc",
        "newimages-label": "Tên tập tin (hoặc một phần tên):",
        "newimages-showbots": "Xem các tập tin do bot tải lên",
+       "newimages-hidepatrolled": "Ẩn tập tin tải lên đã tuần tra",
        "noimages": "Chưa có hình.",
        "ilsubmit": "Tìm kiếm",
        "bydate": "theo ngày",
        "exif-compression-34712": "JPEG 2000",
        "exif-copyrighted-true": "Dưới bản quyền",
        "exif-copyrighted-false": "Cờ bản quyền không được đặt",
+       "exif-photometricinterpretation-0": "Trắng đen (trắng là 0)",
        "exif-photometricinterpretation-1": "Trắng đen (đen là 0)",
        "exif-photometricinterpretation-2": "RGB",
+       "exif-photometricinterpretation-3": "Bảng màu",
+       "exif-photometricinterpretation-4": "Mặt nạ trong suốt",
+       "exif-photometricinterpretation-5": "Riêng rẽ (có lẽ CMYK)",
+       "exif-photometricinterpretation-9": "CIE L*a*b* (mã hóa Hiệp hội Màu sắc Quốc tế)",
+       "exif-photometricinterpretation-10": "CIE L*a*b* (mã hóa Liên minh Viễn thông Quốc tế)",
+       "exif-photometricinterpretation-32803": "Dãy bộ lọc màu sắc",
+       "exif-photometricinterpretation-34892": "Thô tuyến",
        "exif-unknowndate": "Không biết ngày",
        "exif-orientation-1": "Thường",
        "exif-orientation-2": "Lộn ngược theo phương ngang",
        "exif-orientation-8": "Quay 90° bên phải",
        "exif-planarconfiguration-1": "định dạng thấp",
        "exif-planarconfiguration-2": "định dạng phẳng",
+       "exif-xyresolution-i": "$1 điểm/inch",
+       "exif-xyresolution-c": "$1 điểm/cm",
        "exif-colorspace-65535": "Chưa hiệu chỉnh",
        "exif-componentsconfiguration-0": "không tồn tại",
        "exif-exposureprogram-0": "Không chỉ định",
        "scarytranscludefailed-httpstatus": "[Truy xuất bản mẫu $1 bị thất bại: HTTP $2]",
        "scarytranscludetoolong": "[Địa chỉ URL quá dài]",
        "deletedwhileediting": "'''Cảnh báo''': Trang này đã bị xóa sau khi bắt đầu sửa đổi!",
-       "confirmrecreate": "Thành viên [[User:$1|$1]] ([[User talk:$1|thảo luận]]) đã xóa trang này sau khi bạn bắt đầu sửa đổi trang với lý do:\n: ''$2''\nXin hãy xác nhận bạn thực sự muốn tạo lại trang này.",
+       "confirmrecreate": "Thành viên [[User:$1|$1]] ([[User talk:$1|thảo luận]]) đã xóa trang này sau khi bạn bắt đầu sửa đổi trang với lý do:\n: <em>$2</em>\nXin hãy xác nhận bạn thực sự muốn tạo lại trang này.",
        "confirmrecreate-noreason": "Người dùng [[User:$1|$1]] ([[User talk:$1|talk]]) xóa trang này sau khi bạn bắt đầu sửa đổi nó. Bạn có chắc chắn muốn tạo lại trang này không?",
        "recreate": "Tạo ra lại",
+       "unit-pixel": "điểm ảnh",
        "confirm_purge_button": "Làm tươi",
        "confirm-purge-top": "Làm sạch vùng nhớ đệm của trang này?",
        "confirm-purge-bottom": "Làm mới một trang sẽ giúp xóa bộ đệm và buộc hiển thị phiên bản gần nhất.",
        "version-libraries-authors": "Tác giả",
        "redirect": "Đổi hướng đến tập tin, người dùng, trang, hoặc ID đăng nhập",
        "redirect-legend": "Đổi hướng đến tập tin hoặc trang",
-       "redirect-summary": "Trang đặc biệt này đổi hướng đến một tập tin (theo tên tập tin được cho vào), trang (theo số phiên bản hoặc số trang được cho vào), hoặc trang cá nhân (theo số thành viên). Cách sử dụng: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], hoặc [[{{#Special:Redirect}}/user/101]].",
+       "redirect-summary": "Trang đặc biệt này đổi hướng đến một tập tin (theo tên tập tin được cho vào), trang (theo số phiên bản hoặc số trang được cho vào), trang cá nhân (theo số thành viên), hoặc mục nhật trình (theo số mục nhật trình). Cách sử dụng: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], hoặc [[{{#Special:Redirect}}/logid/186]].",
        "redirect-submit": "Đi",
        "redirect-lookup": "Tra cứu:",
        "redirect-value": "Giá trị:",
        "redirect-page": "Số trang",
        "redirect-revision": "Số phiên bản trang",
        "redirect-file": "Tên tập tin",
+       "redirect-logid": "Số mục nhật trình",
        "redirect-not-exists": "Không tìm thấy giá trị",
        "fileduplicatesearch": "Tìm kiếm các tập tin trùng lắp",
        "fileduplicatesearch-summary": "Tìm kiếm các bản sao y hệt với tập tin khác, theo giá trị băm của nó.",
        "expand_templates_generate_xml": "Xem cây phân tích XML",
        "expand_templates_generate_rawhtml": "Hiển thị HTML thô",
        "expand_templates_preview": "Xem trước",
-       "expand_templates_preview_fail_html": "<em>{{SITENAME}} cho phép mã nguồn HTML thô và dữ liệu phiên bị mất, nên bản xem trước bị ẩn để tránh tấn công JavaScript.</em>\n\n<strong>Nếu bạn thực sự muốn xem trước mã nguồn này, xin hãy thử lại nữa.</strong>\nNếu vẫn không được, hãy thử [[Special:UserLogout|đăng xuất]] rồi đăng nhập lại.",
+       "expand_templates_preview_fail_html": "<em>{{SITENAME}} cho phép mã nguồn HTML thô và dữ liệu phiên bị mất, nên bản xem trước bị ẩn để tránh tấn công JavaScript.</em>\n\n<strong>Nếu bạn thực sự muốn xem trước mã nguồn này, xin hãy thử lại nữa.</strong>\nNếu vẫn không được, hãy thử [[Special:UserLogout|đăng xuất]] rồi đăng nhập lại, và kiểm tra rằng trình duyệt của bạn cho phép các cookie của trang Web này.",
        "expand_templates_preview_fail_html_anon": "<em>{{SITENAME}} cho phép mã nguồn HTML thô và dữ liệu phiên bị mất, nên bản xem trước bị ẩn để tránh tấn công JavaScript.</em>\n\n<strong>Nếu bạn thực sự muốn xem trước mã nguồn này, xin hãy thử lại nữa.</strong>\nNếu vẫn không được, hãy [[Special:UserLogin|đăng nhập]] và thử lại lần nữa.",
+       "expand_templates_input_missing": "Bạn phải cung cấp văn bản nhập.",
        "pagelanguage": "Thay đổi ngôn ngữ của trang",
        "pagelang-name": "Trang",
        "pagelang-language": "Ngôn ngữ",
        "mediastatistics": "Thống kê phương tiện",
        "mediastatistics-summary": "Thống kê về các kiểu tập tin đã tải lên. Bảng này chỉ liệt kê phiên bản mới nhất của các tập tin. Các phiên bản cũ hoặc các phiên bản bị xóa được bỏ qua.",
        "mediastatistics-nbytes": "$1 byte ($2; $3%)",
-       "mediastatistics-bytespertype": "Tổng kích thước tập tin của phần này: $1 byte.",
-       "mediastatistics-allbytes": "Tổng kích thước của tất cả các file: {{PLURAL:$1|$1 byte|$1 bytes}} ($2).",
+       "mediastatistics-bytespertype": "Tổng kích thước tập tin của phần này: $1 byte ($2; $3%).",
+       "mediastatistics-allbytes": "Tổng kích thước của tất cả các tập tin: $1 byte ($2).",
        "mediastatistics-table-mimetype": "Kiểu MIME",
        "mediastatistics-table-extensions": "Phần mở rộng có thể",
        "mediastatistics-table-count": "Số tập tin",
        "mw-widgets-titleinput-description-redirect": "đổi hướng đến $1",
        "api-error-blacklisted": "Xin vui lòng chọn một tên khác miêu tả đầy đủ.",
        "sessionmanager-tie": "Không thể kết hợp nhiều yêu cầu xác thực loại: $1.",
+       "sessionprovider-generic": "phiên $1",
+       "sessionprovider-mediawiki-session-cookiesessionprovider": "phiên dựa trên cookie",
        "sessionprovider-nocookies": "Cookie có thể bị vô hiệu hóa. Đảm bảo bạn đã bật cookie và bắt đầu một lần nữa.",
        "randomrootpage": "Trang gốc ngẫu nhiên"
 }
index 20ee5aa..898a3df 100644 (file)
@@ -14,6 +14,7 @@
        "tog-hideminor": "Èn nén mostrer les dierins candjmints mineurs",
        "tog-hidepatrolled": "Èn nén mostrer les candjmints ddja patrouyîs",
        "tog-newpageshidepatrolled": "Èn nén mostrer el djivêye des novelès pådjes les cenes dedja patrouyeyes",
+       "tog-hidecategorization": "Èn nén mostrer les categorijhaedjes des pådjes",
        "tog-extendwatchlist": "Ragrandi l' djivêye po mostrer tos les candjmints, nén seulmint les dierins",
        "tog-usenewrc": "Relére par pådje dins les dierins candjmints et l' djivêye des shuvous (i fåt JavaScript)",
        "tog-numberheadings": "Limerotaedje otomatike des tites",
@@ -34,7 +35,7 @@
        "tog-shownumberswatching": "Mostrer l' nombe d' uzeus ki shuvèt l' pådje",
        "tog-oldsig": "Siné pol moumint:",
        "tog-fancysig": "Sinateure avou do tecse wiki (sins loyén otomatike)",
-       "tog-uselivepreview": "Eployî l' prévoeyaedje abeye (JavaScript) (Esperimintå)",
+       "tog-uselivepreview": "Eployî l' préveyaedje abeye",
        "tog-forceeditsummary": "M' advierti cwand dji lai vude on rascourti",
        "tog-watchlisthideown": "Èn nén mostrer les candjmints da minne",
        "tog-watchlisthidebots": "Èn nén mostrer les candjmints des robots",
@@ -45,6 +46,7 @@
        "tog-ccmeonemails": "M' evoyî ene copeye des emiles ki dj' evoye ås ôtes",
        "tog-diffonly": "Èn nén håyner l' contnou del pådje pa dzo l' pådje des diferinces",
        "tog-showhiddencats": "Mostrer les categoreyes mucheyes",
+       "tog-norollbackdiff": "Èn nén håyner les diferinces après on disfijhaedje",
        "tog-useeditwarning": "M' advierti cwand dji cwite ene pådje k' a des candjmints nén schapés",
        "underline-always": "Tofer",
        "underline-never": "Måy",
        "oct": "oct",
        "nov": "nôv",
        "dec": "dec",
+       "january-date": "$1 di djanvî",
+       "february-date": "$1 di fevrî",
+       "march-date": "$1 di måss",
+       "april-date": "$1 d' avri",
+       "may-date": "$1 di may",
+       "june-date": "$1 di djun",
+       "july-date": "$1 di djulete",
+       "august-date": "$1 d' awousse",
+       "september-date": "$1 di setimbe",
+       "october-date": "$1 d' octôbe",
+       "november-date": "$1 di nôvimbe",
+       "december-date": "$1 di decimbe",
        "pagecategories": "{{PLURAL:$1|Categoreye|Categoreyes}}",
        "category_header": "Årtikes el categoreye «$1»",
        "subcategories": "Dizo-categoreyes",
        "newwindow": "(drovant en on novea purnea)",
        "cancel": "Rinoncî",
        "moredotdotdot": "Co dpus...",
-       "mypage": "Mi pådje",
+       "mypage": "Pådje",
        "mytalk": "Mi copinaedje",
-       "anontalk": "Pådje di copene po ciste adresse IP",
+       "anontalk": "Copinaedje",
        "navigation": "Naiviaedje",
        "and": "&#32;eyet",
        "qbfind": "Trover",
        "actions": "Accions",
        "namespaces": "Espåces di lomaedje",
        "variants": "Variantes",
+       "navigation-heading": "Menu d' naiviaedje",
        "errorpagetitle": "Aroke",
        "returnto": "Rivni al pådje «$1».",
        "tagline": "Èn årtike di {{SITENAME}}.",
        "permalink": "Hårdêye viè cisse modêye ci",
        "print": "Imprimer",
        "view": "Vey",
+       "view-foreign": "Vey so $1",
        "edit": "Candjî",
        "create": "Ahiver",
        "editthispage": "Candjî l' pådje",
        "articlepage": "Vey l' årtike",
        "talk": "Copene",
        "views": "Vuwes",
-       "toolbox": "Boesse ås usteyes",
+       "toolbox": "Usteyes",
        "userpage": "Vey li pådje di l' uzeu",
        "projectpage": "Vey li pådje do pordjet",
        "imagepage": "Vey li pådje do fitchî",
        "pool-errorunknown": "Aroke nén cnoxhowe",
        "aboutsite": "Åd fwait di {{SITENAME}}",
        "aboutpage": "Project:Åd fwait",
-       "copyright": "Li contnou est dizo l' $1.",
+       "copyright": "Li contnou est dzo l' licince $1 a moens k' ça soeye dit ôtrumint.",
        "copyrightpage": "{{ns:project}}:Abondroets",
        "currentevents": "Actouwålités",
        "currentevents-url": "Project:Actouwålités",
        "edithelp": "Aidance",
+       "helppage-top-gethelp": "Aidance",
        "mainpage": "Mwaisse pådje",
        "mainpage-description": "Mwaisse pådje",
        "portal": "Inte di nozôtes",
        "portal-url": "Project:Inte di nozôtes",
        "badaccess": "Åk n' a nén stî avou les permissions",
+       "badaccess-groups": "L' accion ki vos avoz dmandé est limitêye ås uzeus {{PLURAL:$2|do groupe|des groupes}}: $1.",
        "versionrequired": "I vs fåt l' modêye $1 di MediaWiki",
        "versionrequiredtext": "I vs fåt l' modêye $1 di MediaWiki po-z eployî cisse pådje ci. Loukîz [[Special:Version|al pådje des modêyes]]",
        "ok": "'l est bon",
        "retrievedfrom": "Prin del pådje «$1»",
        "youhavenewmessages": "Vos avoz des $1 ($2).",
+       "youhavenewmessagesfromusers": "{{PLURAL:$4|Vos avoz}} $1 {{PLURAL:$3|d' èn ôte uzeu|di $3 ôtes uzeus}} ($2).",
+       "youhavenewmessagesmanyusers": "Vous avoz $1 di bråmint d' uzeus ($2).",
+       "newmessageslinkplural": "{{PLURAL:$1|on novea messaedje|999=noveas messaedjes}}",
+       "newmessagesdifflinkplural": "{{PLURAL:$1|dierin candjmint|999=dierins candjmints}}",
        "youhavenewmessagesmulti": "Vos avoz des noveas messaedjes so $1",
        "editsection": "candjî",
        "editold": "candjî",
        "hidetoc": "catchî",
        "collapsible-collapse": "erôler",
        "collapsible-expand": "diswalper",
+       "confirmable-confirm": "Estoz vs {{GENDER:$1|seur|seure}}?",
+       "confirmable-yes": "Oyi",
+       "confirmable-no": "Neni",
        "thisisdeleted": "Vey ou rapexhî $1?",
        "viewdeleted": "Vey $1?",
        "restorelink": "{{PLURAL:$1|on candjmint disfacé|$1 candjmints disfacés}}",
        "nstab-template": "Modele",
        "nstab-help": "Aidance",
        "nstab-category": "Categoreye",
+       "mainpage-nstab": "Mwaisse pådje",
        "nosuchaction": "Nole sifwaite accion",
        "nosuchactiontext": "L' accion specifieye pal hårdêye n' est nén ricnoxhowe på wiki.\nMotoit ki vos avoz må scrît l' hårdêye ou shuvou on cron loyén.\nÇa pôreut eto esse on bug do programe eployî pa {{SITENAME}}.",
        "nosuchspecialpage": "Nole sifwaite pådje",
        "nospecialpagetext": "Vos avoz dmandé ene pådje sipeciåle nén valide, po ene djivêye des pådjes sipeciåles valides, loukîz a [[Special:SpecialPages]].",
        "error": "Aroke",
        "databaseerror": "Åk n' a nén stî avou l' båze di dnêyes",
+       "databaseerror-error": "Aroke: $1",
        "laggedslavemode": "Asteme: I s' pout ki l' pådje n' åye nén co les dierins candjmints.",
        "readonly": "Li båze di dnêyes est aclawêye",
        "missing-article": "Li båze di dnêyes n' a nén trové l' tecse d' ene pådje k' åreut dvou esse trovêye, lomêye «$1» $2.\n\nÇoula arive cwand on shût on loyén po ene diferince k' est houte ou viè l' istwere d' ene pådej disfacêye.\n\nSi c' est nén çoula, motoit k' vos avoz trové on bug dins l' programe.\nAdon dijhoz l' a on [[Special:ListUsers/sysop|manaedjeu]], sins rovyî d' mete li hårdêye (URL) ki mostere l' aroke.",
        "cannotdelete": "Dji n' sai disfacer l' pådje ou l' fitchî «$1».\nÇa s' pôreut k' ene ôte sakî l' a ddja disfacé.",
        "cannotdelete-title": "Dji n' sai disfacer l' pådje «$1»",
        "badtitle": "Måva tite",
-       "badtitletext": "Li tite del pådje dimandêye n' esteut nén valide, il estet vude, oudonbén c' esteut on cron loyén eterlingaedje ou eterwiki. Ça s' pout k' il åye onk ou sacwants caracteres ki n' polèt nén esse eployîs dins les tites.",
+       "badtitletext": "Li tite del pådje dimandêye n' esteut nén valide, il esteut vude, oudonbén c' esteut on cron loyén eterlingaedje ou eterwiki.\nÇa s' pout k' il åye onk ou sacwants caracteres ki n' polèt nén esse eployîs dins les tites.",
+       "title-invalid-too-long": "Li tite di pådje dimandé est pår trop longou. Ça n' pout nén aveur pus di $1 {{PLURAL:$1|octet|octets}} e l' ecôdaedje UTF-8.",
        "perfcached": "Les dnêyes ki shuvèt c' est ene copeye e muchete, et ça s' pout ki ça n' soeye nén ttafwaitmint a djoû. Li muchete a-st on macsimom {{PLURAL:$1|d' on rzultat|di $1 rizultats}}.",
        "perfcachedts": "Les dnêyes ki shuvèt c' est ene copeye e muchete, ey elle ont stî metowes a djoû pol dierin côp li $1. Li muchete a-st on macsimom {{PLURAL:$4|d' on rzultat|di $4 rizultats}}.",
        "viewsource": "Vey côde sourdant",
        "viewsource-title": "Côde sourdant di «$1»",
        "viewsourcetext": "Loukîz li contnou d' l’ årtike, et s’ li rcopyî si vos vloz, por vos bouter dsu foû des fyis:",
        "protectedinterface": "Cisse pådje ci dene on tecse d' eterface pol programe, eyet elle a stî protedjeye po s' waeranti siconte des abus.",
-       "editinginterface": "'''Asteme:''' Vos estoz ki candje ene pådje eployeye po fé l' tecse po l' eterface do programe.\nLes candjmints ki vso frîz vont candjî l' rivnance di l' eterface po ds ôtes uzeus.\nPo des ratournaedjes, loukîz purade a [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], li pordjet di locålijhaedje da MediaWiki.",
+       "editinginterface": "<stron>Asteme:</strong> Vos estoz ki candje ene pådje eployeye po fé l' tecse po l' eterface do programe.\nLes candjmints ki vos frîz vont candjî l' rivnance di l' eterface po ls ôtes uzeus do wiki.",
        "cascadeprotected": "Cisse pådje ci a stî protedjeye siconte des candjmints, pask' ele est eploye ådvins {{PLURAL:$1|del pådje shuvante k' est protedjeye|des pådjes shuvantes ki sont protedjeyes}} avou l' tchuze «e cascåde» en alaedje:\n$2",
-       "logouttext": "'''Vos vs avoz dislodjî.'''\n\nVos ploz continouwer a naivyî so {{SITENAME}} anonimmint, oudonbén <span class='plainlinks'>[$1 vos relodjî]</span>, dizo l' minme uzeu ou dizo èn uzeu diferin.\nNotez ki des pådjes k' i gn a si pôrént continowuer a vey come si vos estîz elodjî, disk' a tant ki vos vudrîz l' muchete di vosse betchteu waibe.",
+       "logouttext": "<strong>Vos vs avoz dislodjî.</strong>\n\nNotez ki des pådjes k' i gn a si pôrént continouwer a vey come si vos estîz elodjî, disk' a tant ki vos vudrîz l' muchete di vosse betchteu waibe.",
+       "welcomeuser": "Bénvnowe, $1!",
        "yourname": "Vosse no d' elodjaedje:",
+       "userlogin-yourname": "No d' uzeu",
        "yourpassword": "Vosse sicret",
+       "userlogin-yourpassword": "Sicret",
        "yourpasswordagain": "Ritapez vosse sicret",
        "remembermypassword": "Rimimbrer m' sicret inte les sessions (nén dpus ki po $1 {{PLURAL:$1|djoû|djoûs}})",
        "yourdomainname": "Vosse dominne",
        "logout": "Si dislodjî",
        "userlogout": "Si dislodjî",
        "notloggedin": "Nén elodjî",
+       "userlogin-joinproject": "S' edjîstrer so {{SITENAME}}",
        "nologin": "Vos n' avoz nén d' conte so ç' wiki ci? $1.",
        "nologinlink": "Ahivez on conte da vosse",
        "createaccount": "Ahiver on novea conte",
        "gotaccount": "Vos avoz ddja on conte so ç' wiki ci? '''$1'''.",
        "gotaccountlink": "Elodjîz vs",
        "userlogin-resetlink": "Avoz rovyî les pondants et djondants po s' elodjî?",
-       "createaccountmail": "pa emile",
+       "createaccountmail": "Eployî on scret timporaire a l' astcheyance eyet l' evoyî so l' emile diné",
+       "createacct-realname": "Vraiy no (opcionel)",
        "createaccountreason": "Råjhon:",
+       "createacct-reason": "Råjhon",
        "createacct-another-submit": "Ahiver èn ôte conte",
+       "createacct-benefit-body1": "{{PLURAL:$1|candjmint|candjmints}}",
+       "createacct-benefit-body2": "{{PLURAL:$1|pådje|pådjes}}",
        "badretype": "Vos avoz dné deus screts diferins.",
        "userexists": "Li no d' uzeu ki vs avoz tchoezi est ddja eployî.\nTchoezixhoz è èn ôte s' i vs plait.",
        "loginerror": "Aroke d' elodjaedje",
        "nosuchuser": "I g na nou uzeu dizo l' no «$1».\nNotez k' les nos d' uzeu fjhèt l' diferince etur pitites et grandès letes.\nVerifyîz çou k' vos avoz tapé, oudonbén [[Special:UserLogin/signup|ahivez on novea conte]].",
        "nosuchusershort": "I g na nou uzeu dizo l' no «$1». Verifyîz çou k' vos avoz tapé.",
        "nouserspecified": "Vos dvoz dner on no d' elodjaedje.",
+       "login-userblocked": "{{GENDER:$1|Cist uzeu est bloké|Ciste uzeuse est blokêye}}. L' elodjaedje n' est nén possibe.",
        "wrongpassword": "Li scret ki vs avoz dné est måva. Rissayîz s' i vs plait.",
        "wrongpasswordempty": "Vos avoz dné on vude sicret. Rissayîz s' i vs plait.",
        "passwordtooshort": "Li scret doet esse di pol moens {{PLURAL:$1|1 caractere|$1 caracteres}}.",
-       "mailmypassword": "M' emiler on novea scret",
+       "passwordtoolong": "Les screts n' polèt nén aveur pus di {{PLURAL:$1|1 caractere|$1 caracteres}}.",
+       "mailmypassword": "Rifé l' sicret",
        "passwordremindertitle": "Novea scret timporaire po {{SITENAME}}",
        "passwordremindertext": "Ene sakî (probåblumint vos-minme, avou l' adresse IP $1) a dmandé \non novea scret po {{SITENAME}} ($4).\nOn scret timporare po l' uzeu «$2» a stî fwait, c' est «$3».\nSi c' est vos k' a fwait l' dimande, vos vs divoz elodjî eyet tchoezi on novea scret.\nLi scret timporaire ni srè pus valide après {{PLURAL:$5|on djoû|$5 djoûs}}.\n\nSi c' est ene ôte sakî k' a fwait l' dimande, ou si vos vs avoz rtrové l' vî scret eyet \nnel pus vleur candjî, vos ploz djusse ignorer ci messaedje ci eyet continouwer avou l' vî scret.",
        "noemail": "I n' a pont d' adresse emile di cnoxhowe po l' uzeu «$1».",
        "emailconfirmlink": "Acertinaedje di voste adresse emile",
        "invalidemailaddress": "L' adresse emile ni pout nén esse acceptêye la k' i shonnreut k' ele soeye dins ene cogne nén valide.\nTapez ene adresse emile sicrîte comifåt oudobén vudîz l' tchamp, s' i vs plait.",
        "accountcreated": "Conte ahivé",
-       "accountcreatedtext": "Li conte d' uzeu «$1» a stî ahivé.",
+       "accountcreatedtext": "Li conte d' uzeu «[[{{ns:User}}:$1|$1]]» ([[{{ns:User talk}}:$1|copene]]) a stî ahivé.",
        "loginlanguagelabel": "Lingaedje: $1",
        "pt-login": "S' elodjî",
        "pt-login-button": "S' elodjî",
        "pt-createaccount": "Ahiver on novea conte",
        "pt-userlogout": "\nSi dislodjî",
        "changepassword": "Candjî l' sicret",
-       "resetpass_announce": "Vos vs avoz elodjî avou on scret timporaire ki vos a stî emilé.\nPor vos fini l' elodjaedje, vos dvoz defini on novea scret:",
+       "resetpass_announce": "Por vos fini l' elodjaedje, vos dvoz defini on novea scret.",
        "resetpass_header": "Candjî l' sicret do conte",
        "oldpassword": "Vî scret:",
        "newpassword": "Noû scret:",
        "retypenew": "Ritapez l' noû scret:",
        "resetpass_submit": "Defini on scret et s' elodjî",
-       "changepassword-success": "Vosse sicret a stî candjî comifåt!\nAsteure l' elodjaedje...",
+       "changepassword-success": "Vosse sicret a stî candjî comifåt!",
+       "botpasswords-label-update": "Mete a djoû",
+       "botpasswords-label-delete": "Disfacer",
        "resetpass_forbidden": "Les screts n' polèt nén esse candjîs",
        "resetpass-no-info": "Vos dvoz esse elodjî po pleur aveur accès a cisse pådje ci.",
        "resetpass-submit-loggedin": "Candjî l' sicret",
        "passwordreset-capture-help": "Si vos clitchîz cisse boesse ci, l' emile (eyet li scret timporaire) vos srè håyné e minme tins k' il est emilé.",
        "passwordreset-email": "Adresse emile:",
        "passwordreset-emailtitle": "Detays do contre so {{SITENAME}}",
-       "changeemail": "Candjî l' emile",
-       "changeemail-header": "Candjî l' adresse emile do conte",
+       "changeemail": "Candjî ou disfacer l' adresse emile",
+       "changeemail-header": "Completez cisse pådje ci po candjî l' adresse emile do conte.\nSi vos vloz disfacer totes les adresses aloyeyes, leyîz l' tchamp vude å moumint d' evoyî.",
        "changeemail-no-info": "Vos dvoz esse elodjî po pleur aveur accès a cisse pådje ci.",
        "changeemail-oldemail": "Adresse emile pol moumint:",
        "changeemail-newemail": "Novele adresse emile:",
        "sig_tip": "Li sinateure da vosse, avou l' date et l' eure",
        "hr_tip": "Roye di coûtchî (a n' nén eployî d' trop)",
        "summary": "Rascourti:",
-       "subject": "Sudjet/tiestire:",
+       "subject": "Sudjet:",
        "minoredit": "Ci n' est k' ene tchitcheye",
        "watchthis": "Shuve cist årtike",
        "savearticle": "Schaper l' pådje",
        "preview": "Vey divant",
        "showpreview": "Vey divant",
        "showdiff": "Vey les candjmints",
-       "anoneditwarning": "'''Asteme:''' Vos n' estoz nén elodjî.\nVoste adresse IP serè rashiowe dins l' istwere di cisse pådje ci.",
+       "anoneditwarning": "<strong>Asteme:</strong> Vos n' estoz nén elodjî.\nVoste adresse IP serè rashiowe dins l' istwere di cisse pådje ci eyet veyowe publicmint.\nSi vos vs <strong>[$1 elodjîz]</strong> ou <strong>[$2 ahivez on conte]</strong>, les candjmints da vosse seront-st atribouwés a vosse no d' uzeu, et co ds ôtes advintaedjes.",
        "anonpreviewwarning": "''Vos n' estoz nén elodjî. Si vos schapez c' est voste adresse IP ki serè wårdêye dins l' istwere des candjmints.''",
        "missingsummary": "'''Asteme:''' Vos n' avoz nén dné on tecse di rascourti po vosse candjmint. Si vos rclitchîz sol boton «Schaper», li candjmint da vosse serè schapé sins nou tecse di rascourti po l' istwere del pådje.",
        "missingcommenttext": "Tapez on comintaire chal pa dzo s' i vs plait.",
        "accmailtitle": "Li scret a stî evoyî.",
        "accmailtext": "On scret costrût a l' astcheyance po [[User talk:$1|$1]] a stî evoyî a $2.\n\nLi scret po ci novea conte ci pout esse candjî sol pådje di ''[[Special:ChangePassword|candjmint di scret]]'' après l' elodjaedje.",
        "newarticle": "(Novea)",
-       "newarticletext": "Vos avoz clitchî so on loyén viè ene pådje ki n' egzistêye nén co.\nMins '''vos''' l' poloz askepyî! Po çoula, vos n' avoz k' a cmincî a taper vosse tecse dins l' boesse di tecse chal pa dzo (alez vey li [$1 pådje d' aidance] po pus d' infôrmåcion).\nSi vos n' voloz nén scrire cisse pådje chal, clitchîz simplumint sol boton '''En erî''' di vosse betchteu waibe po rivni al pådje di dvant.",
-       "anontalkpagetext": "---- ''Çouchal, c' est li pådje di copene po èn uzeu anonime ki n' a nén (co) fwait on conte por lu s' elodjî, ou ki n' l' eploye nén.\nÇa fwait k' on doet eployî si adresse IP limerike po l' idintifyî.\nCome ene sifwaite adresse IP pout esse eployeye pa pus d' èn uzeu, i s' pout ki vos voeyoz chal des rmarkes et des messaedjes ki n' sont nén por vos.\nLoukîz s' i vs plait po [[Special:UserLogin/signup|fé on novea conte]] ou [[Special:UserLogin|s' elodjî]] po n' pus aveur d' ecramiaedje avou des ôtes uzeus anonimes.''",
+       "newarticletext": "Vos avoz clitchî so on loyén viè ene pådje ki n' egzistêye nén co.\nMins '''vos''' l' poloz askepyî! Po çoula, vos n' avoz k' a cmincî a taper vosse tecse dins l' boesse di tecse cial pa dzo (alez vey li [$1 pådje d' aidance] po pus d' infôrmåcion).\nSi vos estoz droci par accidint, clitchîz simplumint sol boton <strong>En erî</strong> di vosse betchteu waibe po rivni al pådje di dvant.",
+       "anontalkpagetext": "---- ''Çouchal, c' est li pådje di copene po èn uzeu anonime ki n' a nén (co) fwait on conte por lu s' elodjî, ou ki n' l' eploye nén.\nÇa fwait k' on doet eployî si adresse IP limerike po l' idintifyî.\nCome ene sifwaite adresse IP pout esse eployeye pa pus d' èn uzeu, i s' pout ki vos veyoz chal des rmarkes et des messaedjes ki n' sont nén por vos.\nLoukîz s' i vs plait po [[Special:UserLogin/signup|fé on novea conte]] ou [[Special:UserLogin|s' elodjî]] po n' pus aveur d' ecramiaedje avou des ôtes uzeus anonimes.''",
        "noarticletext": "I gn a pol moumint nou tecse e cisse pådje chal.\nVos ploz [[Special:Search/{{PAGENAME}}|cweri après l' tite di cisse pådje ci]] dins des ôtès pådjes,\noudonbén <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cweri dins les djournås],\nou co [{{fullurl:{{FULLPAGENAME}}|action=edit}} ahiver l' pådje]</span>.",
-       "noarticletext-nopermission": "I gn a pol moumint nou tecse e cisse pådje chal.\nVos ploz [[Special:Search/{{PAGENAME}}|cweri après l' tite di cisse pådje ci]] dins des ôtès pådjes,\noudonbén <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cweri dins les djournås]</span>.",
+       "noarticletext-nopermission": "I gn a pol moumint nou tecse e cisse pådje chal.\nVos ploz [[Special:Search/{{PAGENAME}}|cweri après l' tite di cisse pådje ci]] dins des ôtès pådjes,\noudonbén <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cweri dins les djournås]</span>, mins vos n' avoz nén l' livea d' permission pol poleur ahiver.",
        "blocked-notice-logextract": "{{GENDER:$1|Cist uzeu est bloké|Ciste uzeuse est blokêye}} pol moumint.\nLi dierinne intrêye e djournå des blocaedjes est dnêye chal pa dzo po infôrmåcion:",
        "clearyourcache": "'''Note:''' après aveur schapé l' pådje, vos l' divoz rafrister, po pleur vey les candjmints dins vosse betchteu waibe.\n* '''Firefox / Safari:''' tchôkîz so ''Shift'' tot clitchant so ''Rafrister'', ou co fjhoz ''Ctrl-F5'' ou ''Ctrl-R'' (''⌘-R'' so on Mac)\n* '''Google Chrome:''' tchôkîz so ''Ctrl-Shift-R'' (''⌘-Shift-R'' on a Mac)\n* '''Internet Explorer:''' tchôkîz so ''Ctrl'' tot clitchant so ''Rafrister'', ou co fjhoz ''Ctrl-F5''\n* '''Konqueror:''' clitchîz so ''Rafrister'' ou tchôkîz so ''F5''\n* '''Opera:''' vudîz l' muchete dins ''Usteyes → Preferinces''.",
        "usercssyoucanpreview": "'''Racsegne:''' eployîz l' boton «{{int:showpreview}}» po sayî vosse novea CSS divant del schaper.",
        "editingold": "'''ASTEME: Vos estoz ki candje ene viye modêye del pådje.\nSi vos l' schapez, tos les candjmints k' ont stî fwaits\ndispoy adon si vont piede.'''",
        "yourdiff": "Diferinces",
        "copyrightwarning": "Notez ki tos les contribouwaedjes fwaits po {{SITENAME}} dvèt esse dizo l' licince $2 (loukîz $1 po pus di racsegnes).\nSi vos n' voloz nén ki vosse tecse poye esse candjî eyet spårdou pa tot l' minme kî, adon nel evoyîz nén chal.<br />\nVos nos acertinez eto ki vos avoz scrît l' tecse vos-minme, oudonbén l' avoz copyî d' on sourdant libe (dominne publik ou on sourdant pareymint libe).\n'''N' EVOYÎZ NÉN DES TECSES DIZO ABONDROETS SINS PERMISSION!'''",
-       "copyrightwarning2": "Notez ki tos les contribouwaedjes fwaits po {{SITENAME}} polèt esse esse candjîs ou disfacés pa des ôtes contribouweus.\nSi vos n' voloz nén scrire des årtikes ki polèt esse candjîs pa des ôtes, adon nels evoyîz nén chal.<br />\nVos nos acertinez eto ki vos avoz scrît l' tecse vos-minme, oudonbén l' avoz copyî d' on sourdant libe (voeyoz $1 po pus di racsegnes).\n'''N' EVOYÎZ NÉN DES TECSES DIZO ABONDROETS SINS PERMISSION!'''",
+       "copyrightwarning2": "Notez ki tos les contribouwaedjes fwaits po {{SITENAME}} polèt esse esse candjîs ou disfacés pa des ôtes contribouweus.\nSi vos n' voloz nén scrire des årtikes ki polèt esse candjîs pa des ôtes, adon nels evoyîz nén chal.<br />\nVos nos acertinez eto ki vos avoz scrît l' tecse vos-minme, oudonbén l' avoz copyî d' on sourdant libe (veyoz $1 po pus di racsegnes).\n'''N' EVOYÎZ NÉN DES TECSES DIZO ABONDROETS SINS PERMISSION!'''",
        "longpageerror": "'''AROKE: Li tecse ki vos avoz evoyî fwait di pus d' $1 kilo-octet{{PLURAL:$1||s}}, çou k' est pus ki l' macsimom di $2 kilo-octet{{PLURAL:$2||s}}.'''\nC' est nén possible del schaper sol sierveu.",
        "readonlywarning": "'''ASTEME: On-z overe sol båze di dnêyes pol moumint, ey elle a stî metowe e mode seulmint-lére.\nDo côp, vos n' såroz schaper vos candjmints asteure.'''\nMotoit vos dvrîz copyî et aclaper l' tecse dins on fitchî da vosse pol poleur rimete pus tård.\n\nLi manaedjeu k' a-st eclawé l' båze di dnêyes a dné cist esplicaedje ci: $1",
        "protectedpagewarning": "'''ASTEME: Cisse pådje chal a stî protedjeye, seulmint les uzeus avou èn accès di manaedjeu el polèt candjî.'''\nLi dierinne intrêye ezès djournås est håynêye chal pa dzo po referince:",
        "currentrev": "Modêye d' asteure",
        "currentrev-asof": "Dierinne modêye å $1",
        "revisionasof": "Modêye do $1",
-       "revision-info": "Modêye do $1 pa $2",
+       "revision-info": "Modêye do $1 pa $2$7",
        "previousrevision": "←Modêye di dvant",
        "nextrevision": "Modêye shuvante→",
        "currentrevisionlink": "Modêye d' asteure",
        "rev-deleted-text-permission": "Cisse modêye ci del pådje a stî '''disfacêye'''.\nVos ploz vey les ca et les ma sol [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} djournå des disfaçaedjes].",
        "rev-deleted-text-view": "Cisse modêye ci del pådje a stî '''disfacêye'''.\nVos l' poloz co vey; i gn a des detays sol [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} djournå des disfaçaedjes].",
        "rev-delundel": "mostrer/catchî",
+       "rev-showdeleted": "mostrer",
        "revisiondelete": "Disfacer/rapexhî des modêyes",
        "revdelete-show-file-submit": "Oyi",
        "logdelete-selected": "{{PLURAL:$1|Evenmint tchoezi|Evenmints tchoezis}} ezès djournås:",
-       "revdelete-legend": "Defini des restriccions sol voeyaedje",
+       "revdelete-legend": "Defini des restriccions sol veyaedje",
        "revdelete-hide-text": "Catchî l' tecse del modêye",
        "revdelete-hide-comment": "Catchî l' comintaire di candjmint",
        "revdelete-hide-user": "Catchî l' no d' uzeu/adresse IP do candjeu",
        "shown-title": "Mostrer $1 rizultat{{PLURAL:$1||s}} par pådje",
        "viewprevnext": "Vey ($1 {{int:pipe-separator}} $2) ($3).",
        "searchmenu-exists": "'''Gn a ddja ene pådje lomêye « [[:$1]] » so ç' wiki ci'''",
-       "searchmenu-new": "'''Ahiver l' pådje \"[[:$1]]\" so ç' wiki ci!'''",
+       "searchmenu-new": "<strong>Ahiver l' pådje \"[[:$1]]\" so ç' wiki ci!</strong>\n{{PLURAL:$2|0=|Loukîz eto l' pådje trovêye pa vosse cweraedje.|Loukîz eto li rzultat di vosse cweraedje.}}",
        "searchprofile-articles": "Pådjes di contnou",
        "searchprofile-images": "Multimedia",
        "searchprofile-everything": "Tote li waibe",
        "powersearch-togglelabel": "Tchoezi:",
        "powersearch-toggleall": "Totafwait",
        "powersearch-togglenone": "Disclitchî tot",
+       "powersearch-remember": "Rimimbrer l' tchuze po ls ôtes cweraedjes",
        "search-external": "Difoûtrin cweraedje",
        "searchdisabled": "Mande escuzes! Li cweraedje å dvins des årtikes a stî dismetou pol moumint, cåze ki l' sierveu est fortcherdjî. Tot ratindant, vos ploz eployî Google po fé les rcweraedjes so {{SITENAME}}, mins çoula pout esse ene miete vî.",
        "preferences": "Preferinces",
        "prefs-watchlist-days": "Nombe di djoûs a mostrer dins l' djivêye:",
        "prefs-watchlist-days-max": "Macsimom $1 djoû{{PLURAL:$1||s}}",
        "prefs-watchlist-edits": "Nombe di candjmints a mostrer dins l' djivêye:",
+       "prefs-watchlist-edits-max": "Nombe macsimom: 1000",
        "prefs-misc": "Totes sôres",
        "prefs-resetpass": "Candjî l' sicret",
        "prefs-changeemail": "Candjî l' emile",
        "rows": "Royes",
        "columns": "Colones",
        "searchresultshead": "Håynaedje des rzultats di cweraedje",
+       "stub-threshold": "Limite pol formataedje des loyéns djermons ($1):",
+       "stub-threshold-sample-link": "egzimpe",
+       "stub-threshold-disabled": "Dismetou",
        "recentchangesdays": "Nombe di djoûs po les dierins candjmints:",
        "recentchangesdays-max": "Macsimom $1 djoû{{PLURAL:$1||s}}",
        "recentchangescount": "Prémetou nombe di candjmintstites a håyner:",
+       "prefs-help-recentchangescount": "Çouchal inclût les dierins candjmints, l' istwere, eyet les djournås.",
        "savedprefs": "Vos preferinces ont stî schapêyes.",
        "timezonelegend": "Coisse d' eureye:",
        "localtime": "L' eure locåle",
        "right-deletedtext": "Vey les tecses disfacés eyet les candjmints etur disfacêyès modêyes",
        "right-browsearchive": "Loukî après les disfacêyès pådjes",
        "right-undelete": "Rapexhî ene pådje k' a stî disfacêye",
-       "right-suppressrevision": "Verifyî et rapexhî les modêyes catcheyes åzès manaedjeus",
+       "right-suppressrevision": "Vey, catchî et discatchî des dnés candjmints po tot l' minme kén uzeu",
        "right-suppressionlog": "Vey les djournås privés",
        "right-block": "Espaitchî d' ôtes uzeus di scrire",
        "right-blockemail": "Espaitchî èn uzeu d' evoyî des emiles",
        "right-ipblock-exempt": "Passer houte des blocaedjes pa adresse IP, pa fortchete d' adresses ou des blocaedjes otomatikes",
        "right-unblockself": "Si disbloker lu-minme",
        "right-protect": "Candjî les liveas d' protedjaedje eyet candjî les pådjes protedjeyes",
+       "right-rollback": "Disfijhaedje abeye des candjmints do dierin uzeu a-z aveur candjî ene pådje",
        "newuserlogpage": "Djournå des noveas uzeus",
        "newuserlogpagetext": "Chal pa dzo c' est ene djivêye des uzeus novelmint eredjîstrés.",
        "rightslog": "Djournå des droets des uzeus",
        "recentchanges-label-minor": "Ci n' est k' on ptit candjmint",
        "recentchanges-label-bot": "Ci candjmint la a stî fwait pa on robot",
        "recentchanges-label-unpatrolled": "Ci candjmint la n' a nén co stî patrouyî",
+       "recentchanges-label-plusminus": "Li grandeur del pådje a candjî d' ostant d' octets",
+       "recentchanges-legend-heading": "<strong>Ledjinde:</strong>",
+       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (vey eto l' [[Special:NewPages|djivêye des nouvès pådjes]])",
+       "recentchanges-submit": "Vey",
        "rcnotefrom": "Chal pa dzo les candjmints dispoy li '''$2''' (disk' a '''$1''' di mostrés).",
        "rclistfrom": "Mostrer les candjmints k' i gn a yeu a pårti do $3 $2",
        "rcshowhideminor": "$1 candjmints mineurs",
+       "rcshowhideminor-show": "Mostrer",
+       "rcshowhideminor-hide": "Catchî",
        "rcshowhidebots": "$1 robots",
-       "rcshowhideliu": "$1 uzeus eredjîstrés",
+       "rcshowhidebots-show": "Mostrer",
+       "rcshowhidebots-hide": "Catchî",
+       "rcshowhideliu": "$1 uzeus edjîstrés",
+       "rcshowhideliu-hide": "Catchî",
        "rcshowhideanons": "$1 uzeus anonimes",
+       "rcshowhideanons-show": "Mostrer",
+       "rcshowhideanons-hide": "Catchî",
        "rcshowhidepatr": "$1 candjmints rwaitîs",
+       "rcshowhidepatr-show": "Mostrer",
+       "rcshowhidepatr-hide": "Catchî",
        "rcshowhidemine": "$1 candjmints da minne",
+       "rcshowhidemine-show": "Mostrer",
+       "rcshowhidemine-hide": "Catchî",
+       "rcshowhidecategorization": "$1 li categorijhaedjes des pådjes",
+       "rcshowhidecategorization-show": "Mostrer",
+       "rcshowhidecategorization-hide": "Catchî",
        "rclinks": "Mostrer les $1 dierins candjmints des dierins $2 djoûs.<br />$3",
        "diff": "dif.",
        "hist": "ist.",
        "rc_categories_any": "Totes",
        "rc-change-size-new": "$1 {{PLURAL:$1|octet|octets}} après l' candjmint",
        "newsectionsummary": "/* $1 */ novele seccion",
-       "rc-enhanced-expand": "Mostrer les detays (i fåt JavaScript)",
+       "rc-enhanced-expand": "Mostrer les detays",
        "rc-enhanced-hide": "Catchî les detays",
        "recentchangeslinked": "Candjmints aloyîs",
        "recentchangeslinked-feed": "Candjmints aloyîs",
        "shared-repo-from": "vént d' $1",
        "shared-repo": "on depot pårtaedjî",
        "filerevert": "Rimete come divant $1",
+       "filerevert-legend": "Rapexhî l' fitchî",
+       "filerevert-intro": "Vos estoz k' alez rapexhî l' fitchî <strong>[[Media:$1|$1]]</strong> al [$4 modêye do $3, a $2].",
        "filerevert-comment": "Råjhon:",
+       "filerevert-defaultcomment": "Rimetou al modêye do $2, a $1 ($3)",
        "filerevert-submit": "Disfé",
+       "filerevert-success": "<strong>[[Media:$1|$1]]</strong> a stî rmetou al [$4 modêye do $3, a $2].",
        "filedelete": "Disfacer $1",
        "filedelete-legend": "Disfacer fitchî",
        "filedelete-comment": "Råjhon:",
        "mostimages": "Imådjes les pus loyeyes",
        "mostrevisions": "Årtikes avou l' pus di candjmints",
        "prefixindex": "Indecse pa betchete",
+       "prefixindex-submit": "Mostrer",
        "shortpages": "Coûtès pådjes",
        "longpages": "Longowès pådjes",
        "deadendpages": "Pådjes sins nou loyén wiki",
        "protectedpages": "Pådjes protedjeyes",
        "protectedpages-indef": "Seulmint les protedjaedje disk' a todi",
        "protectedpages-cascade": "Seulmint les protedjaedjes e cascåde",
+       "protectedpages-noredirect": "Catchî les redjiblaedjes",
        "protectedpagesempty": "I gn a pol moumint nole pådje sifwaitmint protedjeye.",
        "protectedtitles": "Tites protedjîs",
        "protectedtitlesempty": "I gn a pol moumint nou tite sifwaitmint protedjî.",
        "usereditcount": "$1 candjmint{{PLURAL:$1||s}}",
        "usercreated": "{{GENDER:$3|Edjîstré|Edjîstrêye}} li $1 a $2",
        "newpages": "Novelès pådjes",
+       "newpages-submit": "Mostrer",
        "newpages-username": "No d' elodjaedje:",
        "ancientpages": "Viyès pådjes",
        "move": "Displaecî",
        "pager-older-n": "{{PLURAL:$1|$1 pus vî|$1 pus vîs}}",
        "booksources": "Sourdants po les lives",
        "booksources-search-legend": "Cweri des sourdants po des lives",
+       "booksources-search": "Cweri",
        "specialloguserlabel": "Fwait pa:",
        "speciallogtitlelabel": "Såme (tite ou uzeu):",
        "log": "Djournås",
+       "logeventslist-submit": "Mostrer",
        "all-logs-page": "Tos les djournås publiks",
        "alllogstext": "Håynaedje etercroejhlé di tos les djournås disponibes so {{SITENAME}}.<br />\nVos ploz defini l' håynaedje tot tchoezixhant ene sôre di djournå, on no d' uzeu, ou l' tite d' ene pådje (po ces deus dierins l' sitinme fwait l' diferince inte les grandes et les ptitès letes).",
        "logempty": "Rén n' corespond dins l' djournå.",
        "allpagessubmit": "I va",
        "allpagesprefix": "Håyner les pådjes avou l' betchete:",
        "allpagesbadtitle": "Li tite di pådje diné n' est nén valide oudonbén il a-st ene betchete di loyén eterlingaedje ou eterwiki. Ça s' pout k' il åye onk ou d' pus d' caracteres ki n' si polèt nén eployî dins les tites.",
+       "allpages-hide-redirects": "Catchî les redjiblaedjes",
        "categories": "Categoreyes",
+       "categories-submit": "Mostrer",
        "categoriespagetext": "{{PLURAL:$1|Li categoreye shuvante est eployeye|Les categoreyes shuvantes sont-st eployeyes}} pa des pådjes ou des fitchîs.\n[[Special:UnusedCategories|Les categoreyes nén eployeyes]] èn sont nén håynêyes chal.\nLoukîz eto [[Special:WantedCategories|les categoreyes dimandêyes]].",
        "categoriesfrom": "Håyner les categoreyes a pårti di:",
        "special-categories-sort-count": "relére pa nombe di cayets",
        "listusers-submit": "Vey",
        "listusers-noresult": "Nol uzeu di trové.",
        "listusers-blocked": "({{GENDER:$1|bloké|blokêye}})",
+       "activeusers-hidebots": "Catchî les robots",
        "listgrouprights-members": "(djivêye des mimbes)",
        "mailnologin": "Nole adresse d' evoyeu",
        "mailnologintext": "Po-z evoyî èn emile a èn ôte uzeu i vs fåt esse [[Special:UserLogin|elodjî]] eyet aveur ene adresse emile d' evoyeu ki soeye valide dins vos [[Special:Preferences|preferinces]].",
        "notanarticle": "Nén èn årtike",
        "watchlist-details": "Vos avoz {{PLURAL:$1|$1 pådje shuvowe|$1 pådjes shuvowes}} (sins conter les pådjes di copene).",
        "wlheader-enotif": "Li notifiaedje pa emile est en alaedje.",
-       "wlheader-showupdated": "Les pådjes k' ont candjî dispoy vosse dierinne vizite sont metowes e '''cråssès letes'''",
+       "wlheader-showupdated": "Les pådjes k' ont candjî dispoy vosse dierinne vizite sont metowes e <strong>cråssès letes</strong>.",
        "wlnote": "Chal pa dzo {{PLURAL:$1|li dierin candjmint|les '''$1''' dierins candjmints}} {{PLURAL:$2|del dierinne eure|des '''$2''' dierinnès eures}}, disk' å $3 a $4.",
-       "wlshowlast": "Mostrer les dierin(nè)s $1 eures, $2 djoûs ou",
+       "wlshowlast": "Mostrer les dierin(nè)s $1 eures, $2 djoûs",
+       "watchlist-hide": "Catchî",
+       "watchlist-submit": "Mostrer",
        "watchlist-options": "Tchuzes del djivêye des shuvous",
        "enotif_reset": "Mårker totes les pådjes come vizitêyes",
        "enotif_lastvisited": "Loukîz $1 po tos les candjmints dispoy vosse dierinne vizite.",
-       "enotif_body": "Binamé $WATCHINGUSERNAME,\n\nLi pådje «$PAGETITLE» so {{SITENAME}} a stî $CHANGEDORCREATED li $PAGEEDITDATE pa $PAGEEDITOR,\nloukîz $PAGETITLE_URL pol modêye do moumint.\n\n$NEWPAGE\n\nComintaire do candjeu: $PAGESUMMARY $PAGEMINOREDIT\n\nContak do candjeu:\nemile: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nI n' årè nén d' ôtes notifiaedjes po ds ôtes candjmints di ç' minme pådje ci tant k' vos n' l' åroz nén vizitêye.\nVos ploz eto rimete a noû les drapeas di notifiaedje po totes les pådjes di vosse djivêye des pådjes a shuve.\n\n\nVosse binamé sistinme di notifiaedje so {{SITENAME}}\n\n--\nPo candjî l' apontiaedje di vos notifiaedjes pa emile, loukîz\n{{canonicalurl:{{#special:Preferences}}}}\n\nPo candjî l' apontiaedje di vosse djivêye a shuve, loukîz\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nPo rsaetchî l' pådje di vosse djivêye a shuve, alez so\n$UNWATCHURL\n\nPo pus d' aidance:\n$HELPPAGE",
+       "enotif_body": "Binamé $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nComintaire do candjeu: $PAGESUMMARY $PAGEMINOREDIT\n\nContak do candjeu:\nemile: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nI n' årè nén d' ôtes notifiaedjes po ds ôtes candjmints di ç' minme pådje ci tant k' vos n' l' åroz nén vizitêye (tot estant elodjî).\nVos ploz eto rimete a noû les drapeas di notifiaedje po totes les pådjes di vosse djivêye des pådjes a shuve.\n\n\nVosse binamé sistinme di notifiaedje so {{SITENAME}}\n\n--\nPo candjî l' apontiaedje di vos notifiaedjes pa emile, loukîz\n{{canonicalurl:{{#special:Preferences}}}}\n\nPo candjî l' apontiaedje di vosse djivêye a shuve, loukîz\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nPo rsaetchî l' pådje di vosse djivêye a shuve, alez so\n$UNWATCHURL\n\nPo pus d' aidance:\n$HELPPAGE",
        "created": "ahivêye",
        "changed": "candjeye",
        "deletepage": "Disfacer l' pådje",
        "delete-confirm": "Disfacer «$1»",
        "delete-legend": "Disfacer",
        "historywarning": "'''Asteme:''' Li pådje ki vos alez disfacer a-st ene istwere avou a pô près $1 modêye{{PLURAL:$1||s}}:",
+       "historyaction-submit": "Mostrer",
        "confirmdeletetext": "Vos alez disfacer ene pådje avou tote si istwere.\nAcertinez s' i vs plait ki c' est bén çoula ki vos vloz fé,\nki vos comprindoz les consecwinces, et ki vos fjhoz çoula\ntot [[{{MediaWiki:Policy-url}}|shuvant les rîles]].",
        "actioncomplete": "Fwait",
        "actionfailed": "L' accion a fwait berwete",
        "delete-edit-reasonlist": "Candjî les råjhons do disfaçaedje",
        "delete-toobig": "Cisse pådje ci a ene foû grande istwere, avou dpus di $1 modêye{{PLURAL:$1||s}}.\nLi disfaçaedje des sfwaitès pådjes a stî dismetou po-z espaitchî k' i gn åye des problinmes so {{SITENAME}}.",
        "delete-warning-toobig": "Cisse pådje ci a ene foû grande istwere, avou dpus di $1 modêye{{PLURAL:$1||s}}.\nSi disfaçaedje pôreut fé des problinmes avou l' rotaedje del båze di dnêyes so {{SITENAME}}; \nnel fijhoz k' avou asteme.",
+       "rollback": "Disfé les candjmints",
        "rollbacklink": "netyî",
+       "rollbacklinkcount": "disfé $1 {{PLURAL:$1|candjmint|candjmints}}",
+       "rollbackfailed": "Li disfijhaedje a fwait berwete",
        "cantrollback": "Dji n' sai disfé les candjmints; li dierin contribouweu est li seu oteur po cist årtike ci.",
        "alreadyrolled": "Dji n' sai disfé li dierin candjmint di [[$1]] fwait pa [[User:$2|$2]] ([[User talk:$2|Copene]]);\nene sakî d' ôte a ddja candjî l' årtike ou ddja rmetou l' modêye di dvant.\n\nLi dierin candjmint a stî fwait pa [[User:$3|$3]] ([[User talk:$3|Copene]]).",
        "editcomment": "Li rascourti do candjmint esteut: <em>$1</em>.",
        "revertpage": "Disfwait les candjmints da [[Special:Contributions/$2|$2]] ([[User talk:$2|copene]]); li dierin candjmint est asteure da [[User:$1|$1]]",
+       "rollback-success": "Disfwait les candjmints da $1;\nli dierin candjmint est asteure da $2.",
        "protectlogpage": "Djournå des protedjaedjes",
        "protectlogtext": "Chal pa dzo c' est ene djivêye des protedjaedjes et disprotedjaedjes des pådjes.\nLoukîz al [[Special:ProtectedPages|djivêye des pådjes protedjeyes]] po vey les protedjaedjes ki sont en alaedje pol moumint.",
        "protectedarticle": "«[[$1]]» protedjî",
        "undelete-missing-filearchive": "Nén possibe d' aler rapexhî li fitchî avou l’ ID $1 pask' i n' est nén dins l' båze di dnêyes. Motoit k' il a ddja stî rapexhî dvant.",
        "namespace": "Espåce di lomaedje:",
        "invert": "Tchuze å rvier",
+       "namespace_association": "Espåce di lomaedje aloyî",
        "blanknamespace": "(Mwaisse)",
-       "contributions": "Ovraedjes di l' uzeu",
+       "contributions": "Ovraedjes di l' {{GENDER:$1|uzeu|uzeuse}}",
        "contributions-title": "Djivêye des ovraedjes di l' {{GENDER:$1|uzeu|uzeuse}} $1",
        "mycontris": "Mi ovraedje",
        "contribsub2": "Po l' uzeu $1 ($2)",
        "whatlinkshere-hidelinks": "$1 les loyaedjes",
        "whatlinkshere-hideimages": "$1 fitchîs k' eploynut cist imådje ci",
        "whatlinkshere-filters": "Passetes",
+       "whatlinkshere-submit": "Vey",
        "autoblockid": "Blocaedje otomatike #$1",
        "blockip": "Bloker èn uzeu",
        "blockiptext": "Rimplixhoz les tchamps chal pa dzo po bloker\nl' accès e scrijhaedje d' èn uzeu dné ou a pårt d' ene\nadresse IP dnêye. Çouci èn doet esse fwait ki po-z arester les\nvandales, et çoula doet esse fwait tot shuvant les\n[[{{MediaWiki:Policy-url}}|rîles]].\nDinez ene råjhon do blocaedje (eg: dijhoz les pådjes k' ont\nstî vandalijheyes).",
        "importlogpagetext": "Ristitchaedjes (import) administratifs di pådjes avou leus istorikes di candjmints, a pårti d' ôtes wikis.",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|modêye|modêyes}}",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|modêye|modêyes}} foû di $2",
-       "tooltip-pt-userpage": "Pådje d' uzeu da minne",
+       "tooltip-pt-userpage": "Pådje d' {{GENDER:|uzeu|uzeuse}} da minne",
        "tooltip-pt-anonuserpage": "Li pådje d' uzeu po l' adresse IP ki vos eployîz pol moumint",
        "tooltip-pt-mytalk": "Pådje di copene da minne",
        "tooltip-pt-anontalk": "Pådje di copene po les candjmints fwaits a pårti di ciste adresse IP ci",
        "tooltip-pt-mycontris": "Djivêye des ovraedjes da minne",
        "tooltip-pt-login": "Vos estoz ecoraedjî d' vos elodjî, mins nerén, c' est nén oblidjî.",
        "tooltip-pt-logout": "Vos dislodjî",
+       "tooltip-pt-createaccount": "Nos vs ricomandans d' ahiver on conte et di vs elodjî; mins nerén, c' est nén oblidjî",
        "tooltip-ca-talk": "Copene åd fwait do contnou del pådje",
-       "tooltip-ca-edit": "Vos ploz candjî cisse pådje ci. S' i vs plait, eployîz l' boton «Vey divant» po vs acertiner k' tot est comifåt dvant d' schaper vos candjmints.",
+       "tooltip-ca-edit": "Candjî l' pådje",
        "tooltip-ca-addsection": "Radjouter ene novele seccion",
        "tooltip-ca-viewsource": "Cisse pådje ci est protedjeye.\nVos ploz seulmint vey li côde sourdant, mins nén l' candjî.",
        "tooltip-ca-history": "Viyès modêyes del pådje.",
        "tooltip-t-recentchangeslinked": "Dierins candjmints fwaits so des pådjes ki cisse pådje ci a des loyéns viè zeles",
        "tooltip-feed-rss": "Sindicåcion RSS po cisse pådje ci",
        "tooltip-feed-atom": "Sindicåcion Atom po cisse pådje ci",
-       "tooltip-t-contributions": "Vey li djivêye des ovraedjes fwait pa cist uzeu ci",
+       "tooltip-t-contributions": "Vey li djivêye des ovraedjes fwait pa {{GENDER:$1|cist uzeu|ciste uzeuse}} ci",
        "tooltip-t-emailuser": "Evoyî èn emile a cist uzeu ci",
        "tooltip-t-upload": "Eberweter sol sierveu des imådjes ou fitchîs media",
        "tooltip-t-specialpages": "Djivêye di totes les pådjes sipeciåles",
        "tooltip-ca-nstab-main": "Vey li pådje di contnou",
        "tooltip-ca-nstab-user": "Vey li pådje di l' uzeu",
        "tooltip-ca-nstab-media": "Vey li pådje di media",
-       "tooltip-ca-nstab-special": "Çouchal, c' est ene pådje sipeciåle, vos n' poloz nén candjî l' pådje leye-minme.",
+       "tooltip-ca-nstab-special": "Çouchal, c' est ene pådje sipeciåle, ele ni s' pout nén candjî.",
        "tooltip-ca-nstab-project": "Vey li pådje di pordjet",
        "tooltip-ca-nstab-image": "Vey li pådje do fitchî",
        "tooltip-ca-nstab-mediawiki": "Vey li messaedje ratournåve do sistinme",
        "anonusers": "$1, {{PLURAL:$2|uzeu anonime|uzeus anonimes}} di {{SITENAME}}",
        "creditspage": "Pådje di credits",
        "nocredits": "I n' a pont d' infôrmåcion di credits po cisse pådje ci.",
+       "spam_reverting": "Rimetaedje al dierinne modêye sins nou loyén viè $1",
        "pageinfo-title": "Infôrmåcion po «$1»",
        "pageinfo-watchers": "Nombe di shuveus",
        "pageinfo-edits": "Nombe di candjmints",
        "pageinfo-authors": "Nombe d' oteurs diferins",
+       "pageinfo-toolboxlink": "Infôrmåcion sol pådje",
        "markaspatrolleddiff": "Marké come ricoridjî",
        "markaspatrolledtext": "Marker cisse pådje ci come dedja patrouyeye",
        "patrol-log-page": "Djournå des patrouyaedjes",
        "previousdiff": "← Diferinces des candjmints di dvant",
        "nextdiff": "Diferinces des candjmints shuvants →",
        "mediawarning": "'''Asteme''': Ci fitchî chal pôreut esse evirussé.\nSi vos l' enondez vos pôrîz infecter l' sistinme da vosse.",
-       "imagemaxsize": "Limite pol grandeu des imådjes:<br />''(ezès pådjes d'i discrijhaedje di fitchîs)''",
-       "thumbsize": "Grandeu po les imådjetes (thumb):",
+       "imagemaxsize": "Limite pol grandeur des imådjes:<br /><em>(ezès pådjes di discrijhaedje di fitchîs)</em>",
+       "thumbsize": "Grandeur po les imådjetes (thumb):",
        "widthheightpage": "$1 × $2, $3 pådje{{PLURAL:$3||s}}",
        "file-info-size": "$1 × $2 picsels, groxheur do fitchî: $3, del sôre \"MIME\": $4",
        "file-nohires": "I n' a nén di pus grande finté.",
        "svg-long-desc": "Fitchî SVG, finté di $1 × $2 picsels, grandeu: $3",
-       "show-big-image": "Imådje a si grandeur d' oridjinne",
+       "show-big-image": "Fitchî d' oridjinne",
+       "show-big-image-preview": "Grandeur do préveyaedje: $1.",
+       "show-big-image-other": "{{PLURAL:$2|Ôte finté|Ôtès fintés}}: $1.",
+       "show-big-image-size": "$1 × $2 picsels",
        "newimages": "Galreye des nouvès imådjes",
        "imagelisttext": "Chal pa dzo c' est ene djivêye di '''$1''' {{PLURAL:$1|imådje relîte|imådjes relîtes}} $2.",
        "noimages": "I n' a rén a vey.",
        "fileduplicatesearch": "Cweraedje après les dobes fitchîs",
        "fileduplicatesearch-submit": "Cweri",
        "specialpages": "Pådjes sipeciåles",
+       "specialpages-note-top": "Ledjinde",
        "specialpages-group-maintenance": "Etertinance",
        "specialpages-group-other": "Ôtès pådjes especiåles",
        "specialpages-group-login": "S' elodjî / si rashire",
        "intentionallyblankpage": "Cisse pådje ci est vude en esprès.",
        "tag-filter": "Passete po ls [[Special:Tags|etiketes]]:",
        "tag-filter-submit": "Passete",
+       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Etikete|Etiketes}}]]: $2)",
        "tags-edit": "candjî",
        "tags-hitcount": "$1 candjmint{{PLURAL:$1||s}}",
        "comparepages": "Comparer des pådjes",
        "logentry-patrol-patrol": "$1 a marké come patrouyî l' candjmint $4 del pådje $3",
        "logentry-patrol-patrol-auto": "$1 a marké otomaticmint come patrouyî l' candjmint $4 del pådje $3",
        "logentry-newusers-newusers": "$1 a-st ahivé on conte d' uzeu",
-       "logentry-newusers-create": "$1 a-st ahivé on conte d' uzeu",
+       "logentry-newusers-create": "Li conte d' uzeu $1 a stî ahivé",
        "logentry-newusers-create2": "$1 a-st ahivé on conte d' uzeu $3",
        "logentry-newusers-autocreate": "li conte $1 a stî ahivé otomaticmint",
+       "logentry-upload-upload": "$1 {{GENDER:$2|}}a-st eberweté $3",
        "rightsnone": "(nouk)",
        "feedback-adding": "Vosse messaedje a stî håyné sol pådje...",
        "feedback-cancel": "Rinoncî",
index 6125556..6fb8443 100644 (file)
        "createaccountreason": "Rason:",
        "createacct-reason": "Rason",
        "createacct-reason-ph": "Kay ano nahimo ka hin usa pa nga akawnt",
-       "createacct-submit": "Ighimo an im akawnt",
+       "createacct-submit": "Ighimo an im account",
        "createacct-another-submit": "Paghimo hin account",
        "createacct-benefit-heading": "{{SITENAME}} in ginhimo hin tawo nga sugad ha imo.",
        "createacct-benefit-body1": "{{PLURAL:$1|pagliwat|mga pagliwat}}",
index 8545808..ea51fc9 100644 (file)
        "moredotdotdot": "更多...",
        "morenotlisted": "本列表不完整。",
        "mypage": "页面",
-       "anonuserpage": "未知用户",
        "mytalk": "讨论",
        "anontalk": "讨论",
        "navigation": "导航",
        "recentchangeslinked-page": "页面名称:",
        "recentchangeslinked-to": "显示链到所给出的页面",
        "recentchanges-page-added-to-category": "[[:$1]]已添加至分类",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]]及其他{{PLURAL:$2|$2个页面}}已添加至分类",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]]及[[Special:WhatLinksHere/$1|其他{{PLURAL:$2|$2个页面}}]]已添加至分类",
        "recentchanges-page-removed-from-category": "[[:$1]]已从分类中移除",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]]及其他{{PLURAL:$2|$2个页面}}已从分类中移除",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]]及[[Special:WhatLinksHere/$1|其他{{PLURAL:$2|$2个页面}}]]已从分类中移除",
        "autochange-username": "MediaWiki自动化更改",
        "upload": "上传文件",
        "uploadbtn": "上传文件",
index 04a82d9..0916c97 100644 (file)
@@ -69,7 +69,8 @@
                        "Jasonzhuocn",
                        "Bowleerin",
                        "飞舞回堂前",
-                       "Bbslam"
+                       "Bbslam",
+                       "Zerng07"
                ]
        },
        "tog-underline": "底線標示連結:",
        "moredotdotdot": "更多...",
        "morenotlisted": "此清單尚未讀取完畢。",
        "mypage": "頁面",
-       "anonuserpage": "不明使用者",
        "mytalk": "對話",
        "anontalk": "對話",
        "navigation": "導覽",
        "mergehistory-fail-invalid-source": "來源頁面無效。",
        "mergehistory-fail-invalid-dest": "目標頁面無效。",
        "mergehistory-fail-no-change": "歷史合併尚未合併任何修訂歷史紀錄。請再次檢查頁面以及時間參數。",
+       "mergehistory-fail-permission": "權限不足,無法合併歷史。",
        "mergehistory-fail-self-merge": "來源頁面與目標頁面的名稱相同。",
+       "mergehistory-fail-timestamps-overlap": "來源修訂版本重複,或在目標修訂版本之後才出現。",
        "mergehistory-fail-toobig": "超過 $1 個修訂移動的上限,無法進行歷史合併。",
        "mergehistory-no-source": "來源頁面 $1 不存在。",
        "mergehistory-no-destination": "目標頁面 $1 不存在。",
        "recentchangeslinked-page": "頁面名稱:",
        "recentchangeslinked-to": "改顯示連結至指定頁面的變更",
        "recentchanges-page-added-to-category": "[[:$1]] 已加入至分類",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] 與其他 {{PLURAL:$2|1 頁|$2 頁}}已加入至分類",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] 與[[Special:WhatLinksHere/$1|其他 {{PLURAL:$2|1 頁|$2 頁}}]]已加入至分類",
        "recentchanges-page-removed-from-category": "[[:$1]] 已自分類移除",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] 與其他 {{PLURAL:$2|1 頁|$2 頁}}已自分類移除",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] 與[[Special:WhatLinksHere/$1|其他 {{PLURAL:$2|1 頁|$2 頁}}]]已自分類移除",
        "autochange-username": "MediaWiki 自動變更",
        "upload": "上傳檔案",
        "uploadbtn": "上傳檔案",
        "apihelp": "API 說明",
        "apihelp-no-such-module": "查無模組 \"$1\"。",
        "apisandbox": "API 沙盒",
+       "apisandbox-jsonly": "需要 JavaScript 才能使用 API 沙箱。",
        "apisandbox-api-disabled": "此網站已關閉 API。",
-       "apisandbox-intro": "使用此頁面可測試 '''MediaWiki Web Service API'''。\n請參考 [//www.mediawiki.org/wiki/API:Main_page API 說明文件] 以取得詳細資訊。例:[//www.mediawiki.org/wiki/API#A_simple_example 取得主頁的內容]。 請選擇動作以取得更多範例。\n\n請注意,雖然此為沙盒,您在此頁所執行的動作仍有可能會修改到 Wiki。",
+       "apisandbox-intro": "使用此頁面可測試 <strong>MediaWiki web service API</strong>。\n請參考 [[mw:API:Main page|API 說明文件]] 以取得詳細資訊。例:[//www.mediawiki.org/wiki/API#A_simple_example 取得主頁的內容]。 請選擇動作以取得更多範例。\n\n請注意,雖然此為沙盒,您在此頁所執行的動作仍有可能會修改到 Wiki。",
        "apisandbox-fullscreen": "展開面板",
        "apisandbox-fullscreen-tooltip": "展開沙盒面板來填滿瀏覽器視窗。",
        "apisandbox-unfullscreen": "顯示頁面",
        "apisandbox-results": "結果",
        "apisandbox-sending-request": "傳送 API 請求中...",
        "apisandbox-loading-results": "接收 API 結果中...",
+       "apisandbox-results-error": "讀取 API 查詢回應時發生錯誤:$1。",
        "apisandbox-request-url-label": "請求 URL:",
        "apisandbox-request-time": "請求時間:{{PLURAL:$1|$1 ms}}",
        "apisandbox-results-fixtoken": "更正密鑰並重新送出",
+       "apisandbox-results-fixtoken-fail": "取得 \"$1\" 密鑰失敗。",
+       "apisandbox-alert-page": "此頁面上的欄位無效。",
+       "apisandbox-alert-field": "此欄位的值無效。",
        "booksources": "圖書資源",
        "booksources-search-legend": "尋找圖書資源",
        "booksources-isbn": "國際標準書號:",
        "changecontentmodel-nodirectediting": "$1 的內容模型不支援直接編輯",
        "log-name-contentmodel": "內容模型變更日誌",
        "log-description-contentmodel": "與頁面內容模型相關的事件",
+       "logentry-contentmodel-new": "$1 {{GENDER:$2|已使用}}非預設的內容模型 \"$5\" 建立頁面 $3",
        "logentry-contentmodel-change": "$1 {{GENDER:$2|已變更}}頁面 $3 的內容模型自 \"$4\" 至 \"$5\"",
        "logentry-contentmodel-change-revertlink": "還原",
        "logentry-contentmodel-change-revert": "還原",
        "block-log-flags-hiddenname": "隱藏使用者名稱",
        "range_block_disabled": "管理員可建立範圍封鎖的權限已被關閉。",
        "ipb_expiry_invalid": "無效的期限。",
+       "ipb_expiry_old": "到期時間已過。",
        "ipb_expiry_temp": "隱藏使用者名稱的封鎖不可設定期限。",
        "ipb_hide_invalid": "無法禁止顯示此帳號;它擁有超過 $1 次的編輯。",
        "ipb_already_blocked": "已經封鎖 \"$1\"。",
        "import": "匯入頁面",
        "importinterwiki": "從其他 wiki 匯入",
        "import-interwiki-text": "請選擇一個 Wiki 與頁面標題以進行匯入。\n會同時記錄修訂日期和編輯者的名稱。\n所有的從跨 Wiki 匯入操作都會被記錄在 [[Special:Log/import|匯入日誌]]。",
-       "import-interwiki-sourcewiki": "來源 Wiki:",
+       "import-interwiki-sourcewiki": "來源 wiki:",
        "import-interwiki-sourcepage": "來源頁面:",
        "import-interwiki-history": "複製此頁面的所有歷史修訂",
        "import-interwiki-templates": "包含所有模板",
        "import-nonewrevisions": "未匯入任何修訂 (修訂已存在,或因錯誤跳過)。",
        "xml-error-string": "$1 於行 $2,欄 $3 ($4 位元組):$5",
        "import-upload": "上傳 XML 資料",
-       "import-token-mismatch": "連線階段資料遺失。\n請再試一次。",
+       "import-token-mismatch": "連線階段資料遺失。\n\n您可能已被登出。<strong>請確認您是否仍在登入狀態並再試一次</strong>。\n若仍無法運作,請嘗試[[Special:UserLogout|登出]]再登入一次,並檢查您的瀏覽器是否允許本站使用 cookie。",
        "import-invalid-interwiki": "不能從指定的 Wiki 匯入。",
        "import-error-edit": "您沒有權限編輯頁面 \"$1\",無法匯入。",
        "import-error-create": "您沒有權限建立頁面 \"$1\",無法匯入。",
        "tooltip-n-mainpage-description": "前往首頁",
        "tooltip-n-portal": "關於本專案、您可以做什麼、哪裡可以找到您需要的事物",
        "tooltip-n-currentevents": "於新聞事件中找到相關背景資料",
-       "tooltip-n-recentchanges": "列出此Wiki中的最近更改清單",
+       "tooltip-n-recentchanges": "列出此 Wiki 中的最近變更清單",
        "tooltip-n-randompage": "隨機進入一個頁面",
        "tooltip-n-help": "尋求協助的地方",
        "tooltip-t-whatlinkshere": "列出所有連結此頁面的頁面",
        "version-antispam": "垃圾訊息防止",
        "version-other": "其他",
        "version-mediahandlers": "媒體處理器",
-       "version-hooks": "鉤",
+       "version-hooks": "鉤",
        "version-parser-extensiontags": "解析器擴充標籤",
-       "version-parser-function-hooks": "剖析器函數鉤",
-       "version-hook-name": "鉤名",
+       "version-parser-function-hooks": "語法分析函數掛鉤",
+       "version-hook-name": "掛鉤名稱",
        "version-hook-subscribedby": "署名",
        "version-version": "($1)",
        "version-no-ext-name": "[未命名]",
        "tags-deactivate": "停用",
        "tags-hitcount": "$1 次變更",
        "tags-manage-no-permission": "您沒有權限管理變更標籤。",
+       "tags-manage-blocked": "您無法在被封鎖的情況下管理變更標籤。",
        "tags-create-heading": "建立新標籤",
        "tags-create-explanation": "在預設情況下,新建立的標籤可被使用者及機器人使用。",
        "tags-create-tag-name": "標籤名稱:",
        "tags-deactivate-not-allowed": "無法停用標籤 \"$1\"。",
        "tags-deactivate-submit": "停用",
        "tags-apply-no-permission": "您沒有權限連同您的變更一起套用標籤。",
+       "tags-apply-blocked": "您無法在被封鎖的情況下套用變更標籤為您的變更。",
        "tags-apply-not-allowed-one": "不允許手動套用標籤 \"$1\"。",
        "tags-apply-not-allowed-multi": "不允許手動套用以下{{PLURAL:$2|標籤|標籤}}:$1",
        "tags-update-no-permission": "您沒有權限加入與移除任何於各別修訂與日誌項目的標籤",
+       "tags-update-blocked": "您無法在被封鎖的情況下移除變更標籤。",
        "tags-update-add-not-allowed-one": "不允許手動加入標籤 \"$1\"。",
        "tags-update-add-not-allowed-multi": "不允許手動加入以下{{PLURAL:$2|標籤|標籤}}:$1",
        "tags-update-remove-not-allowed-one": "不允許手動移除標籤 \"$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": "語言",
        "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": "以 cookie 為基礎的連線階段",
        "sessionprovider-nocookies": "Cookie 功能可能已被關閉,請確認您改開啟 Cookie 功能並重新啟動。",
diff --git a/maintenance/archives/patch-add-cl_collation_ext_index.sql b/maintenance/archives/patch-add-cl_collation_ext_index.sql
new file mode 100644 (file)
index 0000000..8137dc6
--- /dev/null
@@ -0,0 +1,2 @@
+-- @since 1.27
+CREATE INDEX /*i*/cl_collation_ext ON /*_*/categorylinks (cl_collation, cl_to, cl_type, cl_from);
index c1499c1..f5ff1f1 100644 (file)
@@ -13,7 +13,7 @@ ALTER TABLE /*$wgDBprefix*/categorylinks
        ADD COLUMN cl_sortkey_prefix varchar(255) binary NOT NULL default '',
        ADD COLUMN cl_collation varbinary(32) NOT NULL default '',
        ADD COLUMN cl_type ENUM('page', 'subcat', 'file') NOT NULL default 'page',
-       ADD INDEX (cl_collation),
+-- rm'd in 1.27        ADD INDEX (cl_collation),
        DROP INDEX cl_sortkey,
        ADD INDEX cl_sortkey (cl_to, cl_type, cl_sortkey, cl_from);
 INSERT IGNORE INTO /*$wgDBprefix*/updatelog (ul_key) VALUES ('cl_fields_update');
diff --git a/maintenance/archives/patch-kill-cl_collation_index.sql b/maintenance/archives/patch-kill-cl_collation_index.sql
new file mode 100644 (file)
index 0000000..7f75a62
--- /dev/null
@@ -0,0 +1,7 @@
+--
+-- Kill cl_collation index.
+-- @since 1.27
+--
+
+DROP INDEX /*i*/cl_collation ON /*_*/categorylinks;
+
index 559dbd6..cd7a842 100644 (file)
@@ -47,7 +47,7 @@ class UploadStashCleanup extends Maintenance {
                $repo = RepoGroup::singleton()->getLocalRepo();
                $tempRepo = $repo->getTempRepo();
 
-               $dbr = $repo->getSlaveDb();
+               $dbr = $repo->getSlaveDB();
 
                // how far back should this look for files to delete?
                $cutoff = time() - $wgUploadStashMaxAge;
index e871a4e..206e046 100644 (file)
@@ -25,20 +25,27 @@ require_once __DIR__ . '/Maintenance.php';
 
 // @codingStandardsIgnoreStart MediaWiki.NamingConventions.ValidGlobalName.wgPrefix
 global $optionsWithArgs;
+global $optionsWithoutArgs;
 // @codingStandardsIgnoreEnd
 if ( !isset( $optionsWithArgs ) ) {
        $optionsWithArgs = [];
 }
+if ( !isset( $optionsWithoutArgs ) ) {
+       $optionsWithoutArgs = [];
+}
 
 class CommandLineInc extends Maintenance {
        public function __construct() {
                // @codingStandardsIgnoreStart MediaWiki.NamingConventions.ValidGlobalName.wgPrefix
-               global $optionsWithArgs;
+               global $optionsWithArgs, $optionsWithoutArgs;
                // @codingStandardsIgnoreEnd
                parent::__construct();
                foreach ( $optionsWithArgs as $name ) {
                        $this->addOption( $name, '', false, true );
                }
+               foreach ( $optionsWithoutArgs as $name ) {
+                       $this->addOption( $name, '', false, false );
+               }
        }
 
        /**
index f0c6569..512c38c 100644 (file)
@@ -36,6 +36,12 @@ $optionsWithArgs = [
        'extensions', 'comment', 'comment-file', 'comment-ext', 'summary', 'user',
        'license', 'sleep', 'limit', 'from', 'source-wiki-url', 'timestamp',
 ];
+
+$optionsWithoutArgs = [
+       'protect', 'unprotect', 'search-recursively', 'check-userblock', 'overwrite',
+       'skip-dupes', 'dry'
+];
+
 require_once __DIR__ . '/commandLine.inc';
 require_once __DIR__ . '/importImages.inc';
 $processed = $added = $ignored = $skipped = $overwritten = $failed = 0;
index 5d48244..baa9c71 100644 (file)
@@ -21,6 +21,7 @@
  * @ingroup MaintenanceLanguage
  */
 
+$optionsWithArgs = [ 'lang', 'clang', 'mode' ];
 require_once __DIR__ . '/../commandLine.inc';
 $messagesDir = __DIR__ . '/../../languages/messages/';
 $runTest = false;
index bd9f9af..a8cbac1 100644 (file)
  * @ingroup MaintenanceLanguage
  */
 
+$optionsWithArgs = [
+       'lang', 'level', 'blacklist', 'whitelist', 'wikilang', 'output', 'prefix'
+];
+$optionsWithoutArgs = [
+       'help', 'links', 'noexif', 'easy', 'duplicate', 'all'
+];
 require_once __DIR__ . '/../commandLine.inc';
 require_once 'checkLanguage.inc';
 require_once 'languages.inc';
index ca94473..7202952 100644 (file)
@@ -27,6 +27,7 @@
  * https://www.mediawiki.org/wiki/Localisation_statistics
  */
 $optionsWithArgs = [ 'output' ];
+$optionsWithoutArgs = [ 'help' ];
 
 require_once __DIR__ . '/../commandLine.inc';
 require_once 'languages.inc';
index 0fff823..784ba0e 100644 (file)
  * @ingroup Maintenance
  */
 
-/** */
+$optionsWithArgs = [ 'cache' ];
+$optionsWithoutArgs = [
+       'debug', 'help'
+];
 require_once __DIR__ . '/commandLine.inc';
 
-$options = getopt( '', [ 'debug', 'help', 'cache:' ] );
-
 $debug = isset( $options['debug'] );
 $help = isset( $options['help'] );
 $cache = isset( $options['cache'] ) ? $options['cache'] : null;
index 46d5474..a650aa0 100644 (file)
@@ -81,7 +81,12 @@ class MergeMessageFileList extends Maintenance {
                # Now find out files in a directory
                if ( $this->hasOption( 'extensions-dir' ) ) {
                        $extdir = $this->getOption( 'extensions-dir' );
-                       $entries = scandir( $extdir );
+                       # Allow multiple directories to be passed with ":" as delimiter
+                       $extdirs = explode( ':', $extdir );
+                       $entries = [];
+                       foreach ( $extdirs as $extdir ) {
+                               $entries = array_merge( $entries, scandir( $extdir ) );
+                       }
                        foreach ( $entries as $extname ) {
                                if ( $extname == '.' || $extname == '..' || !is_dir( "$extdir/$extname" ) ) {
                                        continue;
index 6d2a553..55f361c 100644 (file)
@@ -583,7 +583,7 @@ class NamespaceConflictChecker extends Maintenance {
                $wikiPage = new WikiPage( $sourceTitle );
                $wikiPage->loadPageData( 'fromdbmaster' );
 
-               $destId = $newTitle->getArticleId();
+               $destId = $newTitle->getArticleID();
                $this->beginTransaction( $this->db, __METHOD__ );
                $this->db->update( 'revision',
                        // SET
index effed56..17a8d2e 100644 (file)
@@ -73,7 +73,7 @@ class CLIParser extends Maintenance {
 
        public function execute() {
                $this->initParser();
-               print $this->render( $this->WikiText() );
+               print $this->render( $this->Wikitext() );
        }
 
        /**
index 4f478ac..aa5d69d 100644 (file)
@@ -21,6 +21,7 @@
  * @ingroup Maintenance
  */
 
+$optionsWithoutArgs = [ 'verbose' ];
 require_once __DIR__ . '/commandLine.inc';
 
 $wgHooks['BeforeParserFetchTemplateAndtitle'][] = 'PPFuzzTester::templateHook';
index 816e8a4..8d0873f 100644 (file)
@@ -34,6 +34,9 @@ class ResetUserEmail extends Maintenance {
                $this->addDescription( "Resets a user's email" );
                $this->addArg( 'user', 'Username or user ID, if starts with #', true );
                $this->addArg( 'email', 'Email to assign' );
+
+               $this->addOption( 'no-reset-password', 'Don\'t reset the user\'s password', false, false );
+
                parent::__construct();
        }
 
@@ -57,8 +60,11 @@ class ResetUserEmail extends Maintenance {
                $user->setEmail( $email );
                $user->setEmailAuthenticationTimestamp( wfTimestampNow() );
                $user->saveSettings();
-               // Kick whomever is currently controlling the account off
-               $user->setPassword( PasswordFactory::generateRandomPasswordString( 128 ) );
+
+               if ( !$this->hasOption( 'no-reset-password' ) ) {
+                       // Kick whomever is currently controlling the account off
+                       $user->setPassword( PasswordFactory::generateRandomPasswordString( 128 ) );
+               }
        }
 }
 
index 2d4e82a..454c506 100644 (file)
@@ -128,7 +128,7 @@ class SqliteMaintenance extends Maintenance {
        }
 
        private function checkSyntax() {
-               if ( !Sqlite::IsPresent() ) {
+               if ( !Sqlite::isPresent() ) {
                        $this->error( "Error: SQLite support not found\n" );
                }
                $files = [ $this->getOption( 'check-syntax' ) ];
index 9da3909..d69e5b9 100644 (file)
@@ -22,6 +22,7 @@
  */
 
 if ( !defined( 'MEDIAWIKI' ) ) {
+       $optionsWithoutArgs = [ 'fix' ];
        require_once __DIR__ . '/../commandLine.inc';
 
        $cs = new CheckStorage;
index 8ea5d58..0ea52ca 100644 (file)
@@ -319,7 +319,7 @@ class FixBug20757 extends Maintenance {
                        if ( $path == "" ) {
                                return false;
                        }
-                       $text = ExternalStore::fetchFromUrl( $url );
+                       $text = ExternalStore::fetchFromURL( $url );
                }
                if ( !in_array( 'object', $flags ) ) {
                        return false;
index 776b72f..80dc7f9 100644 (file)
@@ -24,6 +24,7 @@
 define( 'REPORTING_INTERVAL', 1 );
 
 if ( !defined( 'MEDIAWIKI' ) ) {
+       $optionsWithArgs = [ 'e', 's' ];
        require_once __DIR__ . '/../commandLine.inc';
        require_once 'resolveStubs.php';
 
index 7942687..89aeb9c 100644 (file)
@@ -619,8 +619,8 @@ CREATE INDEX /*i*/cl_sortkey ON /*_*/categorylinks (cl_to,cl_type,cl_sortkey,cl_
 -- Used by the API (and some extensions)
 CREATE INDEX /*i*/cl_timestamp ON /*_*/categorylinks (cl_to,cl_timestamp);
 
--- FIXME: Not used, delete this
-CREATE INDEX /*i*/cl_collation ON /*_*/categorylinks (cl_collation);
+-- Used when updating collation (e.g. updateCollation.php)
+CREATE INDEX /*i*/cl_collation_ext ON /*_*/categorylinks (cl_collation, cl_to, cl_type, cl_from);
 
 --
 -- Track all existing categories.  Something is a category if 1) it has an en-
index ed8dfa9..43b10c8 100755 (executable)
@@ -127,7 +127,7 @@ class UpdateMediaWiki extends Maintenance {
                        $this->compatChecks();
                } else {
                        $this->output( "Skipping compatibility checks, proceed at your own risk (Ctrl+C to abort)\n" );
-                       wfCountdown( 5 );
+                       wfCountDown( 5 );
                }
 
                // Check external dependencies are up to date
@@ -168,7 +168,7 @@ class UpdateMediaWiki extends Maintenance {
                        $updates[] = 'stats';
                }
 
-               $updater = DatabaseUpdater::newForDb( $db, $shared, $this );
+               $updater = DatabaseUpdater::newForDB( $db, $shared, $this );
                $updater->doUpdates( $updates );
 
                foreach ( $updater->getPostDatabaseUpdateMaintenance() as $maint ) {
index af666b0..186feb2 100644 (file)
@@ -33,7 +33,7 @@ require_once __DIR__ . '/Maintenance.php';
  * @ingroup Maintenance
  */
 class UpdateCollation extends Maintenance {
-       const BATCH_SIZE = 10000; // Number of rows to process in one batch
+       const BATCH_SIZE = 100; // Number of rows to process in one batch
        const SYNC_INTERVAL = 20; // Wait for slaves after this many batches
 
        public $sizeHistogram = [];
@@ -85,10 +85,18 @@ TEXT
                // but this will raise an exception, breaking all category pages
                $collation->getFirstLetter( 'MediaWiki' );
 
+               // Locally at least, (my local is a rather old version of mysql)
+               // mysql seems to filesort if there is both an equality
+               // (but not for an inequality) condition on cl_collation in the
+               // WHERE and it is also the first item in the ORDER BY.
+               if ( $this->hasOption( 'previous-collation' ) ) {
+                       $orderBy = 'cl_to, cl_type, cl_from';
+               } else {
+                       $orderBy = 'cl_collation, cl_to, cl_type, cl_from';
+               }
                $options = [
                        'LIMIT' => self::BATCH_SIZE,
-                       'ORDER BY' => 'cl_from, cl_to',
-                       'STRAIGHT_JOIN',
+                       'ORDER BY' => $orderBy,
                ];
 
                if ( $force || $dryRun ) {
@@ -124,16 +132,24 @@ TEXT
                        }
                        $this->output( "Fixing collation for $count rows.\n" );
                }
-
                $count = 0;
                $batchCount = 0;
                $batchConds = [];
                do {
                        $this->output( "Selecting next " . self::BATCH_SIZE . " rows..." );
+
+                       // cl_type must be selected as a number for proper paging because
+                       // enums suck.
+                       if ( $dbw->getType() === 'mysql' ) {
+                               $clType = 'cl_type+0 AS "cl_type_numeric"';
+                       } else {
+                               $clType = 'cl_type';
+                       }
                        $res = $dbw->select(
                                [ 'categorylinks', 'page' ],
                                [ 'cl_from', 'cl_to', 'cl_sortkey_prefix', 'cl_collation',
-                                       'cl_sortkey', 'page_namespace', 'page_title'
+                                       'cl_sortkey', $clType,
+                                       'page_namespace', 'page_title'
                                ],
                                array_merge( $collationConds, $batchConds, [ 'cl_from = page_id' ] ),
                                __METHOD__,
@@ -217,18 +233,28 @@ TEXT
 
        /**
         * Return an SQL expression selecting rows which sort above the given row,
-        * assuming an ordering of cl_from, cl_to
+        * assuming an ordering of cl_collation, cl_to, cl_type, cl_from
         * @param stdClass $row
         * @param DatabaseBase $dbw
         * @return string
         */
        function getBatchCondition( $row, $dbw ) {
-               $fields = [ 'cl_from', 'cl_to' ];
+               if ( $this->hasOption( 'previous-collation' ) ) {
+                       $fields = [ 'cl_to', 'cl_type', 'cl_from' ];
+               } else {
+                       $fields = [ 'cl_collation', 'cl_to', 'cl_type', 'cl_from' ];
+               }
                $first = true;
                $cond = false;
                $prefix = false;
                foreach ( $fields as $field ) {
-                       $encValue = $dbw->addQuotes( $row->$field );
+                       if ( $dbw->getType() === 'mysql' && $field === 'cl_type' ) {
+                               // Range conditions with enums are weird in mysql
+                               // This must be a numeric literal, or it won't work.
+                               $encValue = intval( $row->cl_type_numeric );
+                       } else {
+                               $encValue = $dbw->addQuotes( $row->$field );
+                       }
                        $inequality = "$field > $encValue";
                        $equality = "$field = $encValue";
                        if ( $first ) {
index 8a895f2..cdb7d9f 100644 (file)
@@ -61,7 +61,7 @@ class UpdateSearchIndex extends Maintenance {
        }
 
        public function execute() {
-               $posFile = $this->getOption( 'p', 'searchUpdate.' . wfWikiId() . '.pos' );
+               $posFile = $this->getOption( 'p', 'searchUpdate.' . wfWikiID() . '.pos' );
                $end = $this->getOption( 'e', wfTimestampNow() );
                if ( $this->hasOption( 's' ) ) {
                        $start = $this->getOption( 's' );
index 21a050b..9ea6c7b 100644 (file)
@@ -9,13 +9,13 @@
     "grunt": "0.4.5",
     "grunt-cli": "0.1.13",
     "grunt-banana-checker": "0.4.0",
-    "grunt-contrib-copy": "0.8.2",
+    "grunt-contrib-copy": "1.0.0",
     "grunt-contrib-jshint": "1.0.0",
-    "grunt-contrib-watch": "0.6.1",
+    "grunt-contrib-watch": "1.0.0",
     "grunt-jscs": "2.8.0",
     "grunt-jsonlint": "1.0.7",
-    "grunt-karma": "0.12.1",
-    "karma": "0.13.19",
+    "grunt-karma": "0.12.2",
+    "karma": "0.13.22",
     "karma-chrome-launcher": "0.2.2",
     "karma-firefox-launcher": "0.1.7",
     "karma-qunit": "0.1.9",
index ff915b0..d8c99aa 100644 (file)
@@ -6,9 +6,24 @@
                        "Assele",
                        "Haqmar",
                        "Sagan",
-                       "Рустам Нурыев"
+                       "Рустам Нурыев",
+                       "Азат Хәлилов"
                ]
        },
-       "ooui-outline-control-move-down": "Аҫҡа күсерергә",
-       "ooui-outline-control-move-up": "Өҫкә күсерергә"
+       "ooui-outline-control-move-down": "Элементты аҫҡа күсерергә",
+       "ooui-outline-control-move-up": "Элементты өҫкә күсерергә",
+       "ooui-outline-control-remove": "Биттәрҙе юйырға",
+       "ooui-toolbar-more": "Тағы",
+       "ooui-toolgroup-expand": "Күберәк",
+       "ooui-toolgroup-collapse": "Аҙыраҡ",
+       "ooui-dialog-message-accept": "Тамам",
+       "ooui-dialog-message-reject": "Кире алырға",
+       "ooui-dialog-process-error": "Нимәлер килеп сыҡманы.",
+       "ooui-dialog-process-dismiss": "Йәшерергә",
+       "ooui-dialog-process-retry": "Ҡабатлап ҡарарға.",
+       "ooui-dialog-process-continue": "Дауам итергә",
+       "ooui-selectfile-button-select": "Файлды һайлағыҙ",
+       "ooui-selectfile-not-supported": "Файл һайлау хупланмай.",
+       "ooui-selectfile-placeholder": "Файл һайланмаған",
+       "ooui-selectfile-dragdrop-placeholder": "Файлды бында күсерегеҙ"
 }
index 573096f..ce007fc 100644 (file)
@@ -7,7 +7,8 @@
                        "Siddhartha Ghai",
                        "Goelujjwal",
                        "Ankita-ks",
-                       "Param Mudgal"
+                       "Param Mudgal",
+                       "Sfic"
                ]
        },
        "ooui-outline-control-move-down": "प्रविष्टि नीचे ले जाएँ",
@@ -22,6 +23,8 @@
        "ooui-dialog-process-dismiss": "ख़ारिज करें",
        "ooui-dialog-process-retry": "पुनः प्रयास करें",
        "ooui-dialog-process-continue": "जारी रखें",
+       "ooui-selectfile-button-select": "फ़ाइल चुनें",
        "ooui-selectfile-not-supported": "फ़ाइल का चयन समर्थित नहीं है",
-       "ooui-selectfile-placeholder": "कोई फाइल चुनी नही गई हेै"
+       "ooui-selectfile-placeholder": "कोई फाइल चुनी नही गई हेै",
+       "ooui-selectfile-dragdrop-placeholder": "फ़ाइल यहाँ डालें"
 }
index f4ccc33..211101e 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.16.3
+ * OOjs UI v0.16.4
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-03-16T19:20:22Z
+ * Date: 2016-03-22T22:48:21Z
  */
 ( function ( OO ) {
 
index 3b5acae..865dda4 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.16.3
+ * OOjs UI v0.16.4
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-03-16T19:20:26Z
+ * Date: 2016-03-22T22:48:25Z
  */
 .oo-ui-element-hidden {
        display: none !important;
index 1c2abc8..9dd296c 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.16.3
+ * OOjs UI v0.16.4
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-03-16T19:20:26Z
+ * Date: 2016-03-22T22:48:25Z
  */
 .oo-ui-element-hidden {
        display: none !important;
index 1b90db5..add3f0a 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.16.3
+ * OOjs UI v0.16.4
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-03-16T19:20:22Z
+ * Date: 2016-03-22T22:48:21Z
  */
 ( function ( OO ) {
 
@@ -2788,9 +2788,7 @@ OO.ui.mixin.LabelElement.prototype.setLabelElement = function ( $label ) {
  */
 OO.ui.mixin.LabelElement.prototype.setLabel = function ( label ) {
        label = typeof label === 'function' ? OO.ui.resolveMsg( label ) : label;
-       label = ( ( typeof label === 'string' && label.length ) || label instanceof jQuery || label instanceof OO.ui.HtmlSnippet ) ? label : null;
-
-       this.$element.toggleClass( 'oo-ui-labelElement', !!label );
+       label = ( ( typeof label === 'string' || label instanceof jQuery ) && label.length ) || ( label instanceof OO.ui.HtmlSnippet && label.toString().length ) ? label : null;
 
        if ( this.label !== label ) {
                if ( this.$label ) {
@@ -2800,6 +2798,8 @@ OO.ui.mixin.LabelElement.prototype.setLabel = function ( label ) {
                this.emit( 'labelChange' );
        }
 
+       this.$element.toggleClass( 'oo-ui-labelElement', !!this.label );
+
        return this;
 };
 
index 0dac2aa..9715e66 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.16.3
+ * OOjs UI v0.16.4
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-03-16T19:20:22Z
+ * Date: 2016-03-22T22:48:21Z
  */
 ( function ( OO ) {
 
index 5ff9407..8e10ed5 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.16.3
+ * OOjs UI v0.16.4
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-03-16T19:20:26Z
+ * Date: 2016-03-22T22:48:25Z
  */
 .oo-ui-popupTool .oo-ui-popupWidget-popup,
 .oo-ui-popupTool .oo-ui-popupWidget-anchor {
index 6b964fb..d89852d 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.16.3
+ * OOjs UI v0.16.4
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-03-16T19:20:26Z
+ * Date: 2016-03-22T22:48:25Z
  */
 .oo-ui-popupTool .oo-ui-popupWidget-popup,
 .oo-ui-popupTool .oo-ui-popupWidget-anchor {
index ae4e38d..3f88fa7 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.16.3
+ * OOjs UI v0.16.4
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-03-16T19:20:22Z
+ * Date: 2016-03-22T22:48:21Z
  */
 ( function ( OO ) {
 
index 725e1ba..0ffeba3 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.16.3
+ * OOjs UI v0.16.4
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-03-16T19:20:26Z
+ * Date: 2016-03-22T22:48:25Z
  */
 .oo-ui-draggableElement-handle,
 .oo-ui-draggableElement-handle.oo-ui-widget {
        border-bottom-left-radius: 0;
        border-left-width: 0;
 }
-.oo-ui-numberInputWidget .oo-ui-textInputWidget input {
+.oo-ui-numberInputWidget-buttoned .oo-ui-textInputWidget input {
        border-radius: 0;
 }
index 1f7b9bd..9b98124 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.16.3
+ * OOjs UI v0.16.4
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-03-16T19:20:26Z
+ * Date: 2016-03-22T22:48:25Z
  */
 .oo-ui-draggableElement-handle,
 .oo-ui-draggableElement-handle.oo-ui-widget {
        border-bottom-left-radius: 0;
        border-left-width: 0;
 }
-.oo-ui-numberInputWidget .oo-ui-textInputWidget input {
+.oo-ui-numberInputWidget-buttoned .oo-ui-textInputWidget input {
        border-radius: 0;
 }
index c7a4555..abb2b1b 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.16.3
+ * OOjs UI v0.16.4
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-03-16T19:20:22Z
+ * Date: 2016-03-22T22:48:21Z
  */
 ( function ( OO ) {
 
@@ -5048,6 +5048,7 @@ OO.ui.SearchWidget.prototype.getResults = function () {
  * @cfg {number} [max=Infinity] Maximum allowed value
  * @cfg {number} [step=1] Delta when using the buttons or up/down arrow keys
  * @cfg {number|null} [pageStep] Delta when using the page-up/page-down keys. Defaults to 10 times #step.
+ * @cfg {boolean} [showButtons=true] Whether to show the plus and minus buttons.
  */
 OO.ui.NumberInputWidget = function OoUiNumberInputWidget( config ) {
        // Configuration initialization
@@ -5056,7 +5057,8 @@ OO.ui.NumberInputWidget = function OoUiNumberInputWidget( config ) {
                min: -Infinity,
                max: Infinity,
                step: 1,
-               pageStep: null
+               pageStep: null,
+               showButtons: true
        }, config );
 
        // Parent constructor
@@ -5069,28 +5071,30 @@ OO.ui.NumberInputWidget = function OoUiNumberInputWidget( config ) {
                },
                config.input
        ) );
-       this.minusButton = new OO.ui.ButtonWidget( $.extend(
-               {
-                       disabled: this.isDisabled(),
-                       tabIndex: -1
-               },
-               config.minusButton,
-               {
-                       classes: [ 'oo-ui-numberInputWidget-minusButton' ],
-                       label: '−'
-               }
-       ) );
-       this.plusButton = new OO.ui.ButtonWidget( $.extend(
-               {
-                       disabled: this.isDisabled(),
-                       tabIndex: -1
-               },
-               config.plusButton,
-               {
-                       classes: [ 'oo-ui-numberInputWidget-plusButton' ],
-                       label: '+'
-               }
-       ) );
+       if ( config.showButtons ) {
+               this.minusButton = new OO.ui.ButtonWidget( $.extend(
+                       {
+                               disabled: this.isDisabled(),
+                               tabIndex: -1
+                       },
+                       config.minusButton,
+                       {
+                               classes: [ 'oo-ui-numberInputWidget-minusButton' ],
+                               label: '−'
+                       }
+               ) );
+               this.plusButton = new OO.ui.ButtonWidget( $.extend(
+                       {
+                               disabled: this.isDisabled(),
+                               tabIndex: -1
+                       },
+                       config.plusButton,
+                       {
+                               classes: [ 'oo-ui-numberInputWidget-plusButton' ],
+                               label: '+'
+                       }
+               ) );
+       }
 
        // Events
        this.input.connect( this, {
@@ -5101,12 +5105,14 @@ OO.ui.NumberInputWidget = function OoUiNumberInputWidget( config ) {
                keydown: this.onKeyDown.bind( this ),
                'wheel mousewheel DOMMouseScroll': this.onWheel.bind( this )
        } );
-       this.plusButton.connect( this, {
-               click: [ 'onButtonClick', +1 ]
-       } );
-       this.minusButton.connect( this, {
-               click: [ 'onButtonClick', -1 ]
-       } );
+       if ( config.showButtons ) {
+               this.plusButton.connect( this, {
+                       click: [ 'onButtonClick', +1 ]
+               } );
+               this.minusButton.connect( this, {
+                       click: [ 'onButtonClick', -1 ]
+               } );
+       }
 
        // Initialization
        this.setIsInteger( !!config.isInteger );
@@ -5114,12 +5120,14 @@ OO.ui.NumberInputWidget = function OoUiNumberInputWidget( config ) {
        this.setStep( config.step, config.pageStep );
 
        this.$field = $( '<div>' ).addClass( 'oo-ui-numberInputWidget-field' )
-               .append(
-                       this.minusButton.$element,
-                       this.input.$element,
-                       this.plusButton.$element
-               );
+               .append( this.input.$element );
        this.$element.addClass( 'oo-ui-numberInputWidget' ).append( this.$field );
+       if ( config.showButtons ) {
+               this.$field
+                       .prepend( this.minusButton.$element )
+                       .append( this.plusButton.$element );
+               this.$element.addClass( 'oo-ui-numberInputWidget-buttoned' );
+       }
        this.input.setValidation( this.validateNumber.bind( this ) );
 };
 
index dbb9455..0f9c145 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.16.3
+ * OOjs UI v0.16.4
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-03-16T19:20:26Z
+ * Date: 2016-03-22T22:48:25Z
  */
 .oo-ui-actionWidget.oo-ui-pendingElement-pending {
        background-image: /* @embed */ url(themes/apex/images/textures/pending.gif);
index de63268..4f93f53 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.16.3
+ * OOjs UI v0.16.4
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-03-16T19:20:26Z
+ * Date: 2016-03-22T22:48:25Z
  */
 .oo-ui-window {
        background: transparent;
index 56108da..2a5aa64 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.16.3
+ * OOjs UI v0.16.4
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-03-16T19:20:22Z
+ * Date: 2016-03-22T22:48:21Z
  */
 ( function ( OO ) {
 
index 1f977bf..38e5a1f 100644 (file)
@@ -14,7 +14,7 @@
  *
  *             $( '#textbox' ).suggestions();
  *
- * Uses jQuery.suggestions singleteon internally.
+ * Uses jQuery.suggestions singleton internally.
  *
  * @class jQuery.plugin.suggestions
  */
index 29eaaad..5369d35 100644 (file)
@@ -55,7 +55,7 @@
                                var title = new ForeignTitle( page.title ).getPrefixedText();
                                this.existenceCache[ title ] = !page.missing;
                                queue[ title ].resolve( this.existenceCache[ title ] );
-                       } );
+                       }.bind( this ) );
                }.bind( this ) );
        };
 
index 02528dc..418fd23 100644 (file)
                                contentmodel: 'wikitext'
                        }, additionalParams );
 
-                       if ( typeof content === 'string' ) {
-                               // Wikitext
-                               config.text = content;
-                       } else {
-                               // mw.Title
+                       if ( mw.Title && content instanceof mw.Title ) {
+                               // Parse existing page
                                config.page = content.getPrefixedDb();
+                       } else {
+                               // Parse wikitext from input
+                               config.text = String( content );
                        }
 
                        apiPromise = this.get( config );
index 796639f..d0e21ae 100644 (file)
@@ -3,37 +3,19 @@
  *
  * Loosely based on https://w3c.github.io/requestidlecallback/
  */
-( function ( mw, $ ) {
-       var tasks = [],
-               maxIdleDuration = 50,
-               timeout = null;
-
-       function schedule( trigger ) {
-               clearTimeout( timeout );
-               timeout = setTimeout( trigger, 700 );
-       }
-
-       function triggerIdle() {
-               var elapsed,
-                       start = mw.now();
-
-               while ( tasks.length ) {
-                       elapsed = mw.now() - start;
-                       if ( elapsed < maxIdleDuration ) {
-                               tasks.shift().callback();
-                       } else {
-                               // Idle moment expired, try again later
-                               schedule( triggerIdle );
-                               break;
-                       }
-               }
-       }
+( function ( mw ) {
+       var maxBusy = 50;
 
        mw.requestIdleCallbackInternal = function ( callback ) {
-               var task = { callback: callback };
-               tasks.push( task );
-
-               $( function () { schedule( triggerIdle ); } );
+               setTimeout( function () {
+                       var start = mw.now();
+                       callback( {
+                               didTimeout: false,
+                               timeRemaining: function () {
+                                       return Math.max( 0, maxBusy - ( mw.now() - start ) );
+                               }
+                       } );
+               }, 1 );
        };
 
        /**
@@ -43,8 +25,7 @@
         * @param {Function} callback
         */
        mw.requestIdleCallback = window.requestIdleCallback
-               ? function ( callback ) {
-                       window.requestIdleCallback( callback );
-               }
+               // Bind because it throws TypeError if context is not window
+               ? window.requestIdleCallback.bind( window )
                : mw.requestIdleCallbackInternal;
 }( mediaWiki, jQuery ) );
index 9f45307..15f2dcf 100644 (file)
@@ -195,7 +195,7 @@ class ParserTest {
                        'transformVia404' => false,
                        'backend' => new FSFileBackend( [
                                'name' => 'local-backend',
-                               'wikiId' => wfWikiId(),
+                               'wikiId' => wfWikiID(),
                                'containerPaths' => [
                                        'local-public' => $this->uploadDir . '/public',
                                        'local-thumb' => $this->uploadDir . '/thumb',
@@ -849,7 +849,7 @@ class ParserTest {
                                'transformVia404' => false,
                                'backend' => new FSFileBackend( [
                                        'name' => 'local-backend',
-                                       'wikiId' => wfWikiId(),
+                                       'wikiId' => wfWikiID(),
                                        'containerPaths' => [
                                                'local-public' => $this->uploadDir,
                                                'local-thumb' => $this->uploadDir . '/thumb',
@@ -896,7 +896,6 @@ class ParserTest {
                        'wgExternalLinkTarget' => false,
                        'wgHtml5' => true,
                        'wgWellFormedXml' => true,
-                       'wgAllowMicrodataAttributes' => true,
                        'wgAdaptiveMessageCache' => true,
                        'wgDisableLangConversion' => false,
                        'wgDisableTitleConversion' => false,
index d01ebdf..260e0f0 100644 (file)
@@ -4773,7 +4773,7 @@ External image
 !! wikitext
 External image: http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png
 !! html
-<p>External image: <img src="http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png" alt="Ncwikicol.png" />
+<p>External image: <img src="http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png" alt="Ncwikicol.png"/>
 </p>
 !! end
 
@@ -4782,7 +4782,7 @@ External image from https
 !! wikitext
 External image from https: https://meta.wikimedia.org/upload/f/f1/Ncwikicol.png
 !! html
-<p>External image from https: <img src="https://meta.wikimedia.org/upload/f/f1/Ncwikicol.png" alt="Ncwikicol.png" />
+<p>External image from https: <img src="https://meta.wikimedia.org/upload/f/f1/Ncwikicol.png" alt="Ncwikicol.png"/>
 </p>
 !! end
 
@@ -4856,7 +4856,7 @@ External links: Clickable images
 !! wikitext
 ja-style clickable images: [http://example.com http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png]
 !! html/php
-<p>ja-style clickable images: <a rel="nofollow" class="external text" href="http://example.com"><img src="http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png" alt="Ncwikicol.png" /></a>
+<p>ja-style clickable images: <a rel="nofollow" class="external text" href="http://example.com"><img src="http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png" alt="Ncwikicol.png"/></a>
 </p>
 !! html/parsoid
 <p>ja-style clickable images: <a rel="mw:ExtLink" href="http://example.com"><img src="http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png" alt="Ncwikicol.png" data-parsoid='{"type":"extlink"}'/></a></p>
@@ -20862,7 +20862,7 @@ Bug 19052 U+3000 IDEOGRAPHIC SPACE should terminate external images links
 !! wikitext
 http://www.example.org/pic.png <-- U+3000 (vim: ^Vu3000)
 !! html
-<p><img src="http://www.example.org/pic.png" alt="pic.png" /> &lt;-- U+3000 (vim: ^Vu3000)
+<p><img src="http://www.example.org/pic.png" alt="pic.png"/> &lt;-- U+3000 (vim: ^Vu3000)
 </p>
 !! end
 
@@ -24664,7 +24664,7 @@ Don't block XML namespace declaration
 !! wikitext
 <span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">MediaWiki</span>
 !! html/php
-<p><span>MediaWiki</span>
+<p><span xmlns:dct="http&#58;//purl.org/dc/terms/" property="dct:title">MediaWiki</span>
 </p>
 !! html/parsoid
 <p><span xmlns:dct="http://purl.org/dc/terms/" data-x-property="dct:title" data-parsoid='{"stx":"html"}'>MediaWiki</span></p>
index 045c3d4..dc69902 100644 (file)
@@ -1321,33 +1321,6 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
                return $loaded;
        }
 
-       /**
-        * Asserts that an exception of the specified type occurs when running
-        * the provided code.
-        *
-        * @since 1.21
-        * @deprecated since 1.22 Use setExpectedException
-        *
-        * @param callable $code
-        * @param string $expected
-        * @param string $message
-        */
-       protected function assertException( $code, $expected = 'Exception', $message = '' ) {
-               $pokemons = null;
-
-               try {
-                       call_user_func( $code );
-               } catch ( Exception $pokemons ) {
-                       // Gotta Catch 'Em All!
-               }
-
-               if ( $message === '' ) {
-                       $message = 'An exception of type "' . $expected . '" should have been thrown';
-               }
-
-               $this->assertInstanceOf( $expected, $pokemons, $message );
-       }
-
        /**
         * Asserts that the given string is a valid HTML snippet.
         * Wraps the given string in the required top level tags and
index 35ebf42..9f38659 100644 (file)
@@ -15,7 +15,7 @@ class BlockTest extends MediaWikiLangTestCase {
 
        function addDBData() {
                $user = User::newFromName( 'UTBlockee' );
-               if ( $user->getID() == 0 ) {
+               if ( $user->getId() == 0 ) {
                        $user->addToDatabase();
                        TestUser::setPasswordForUser( $user, 'UTBlockeePassword' );
 
@@ -31,7 +31,7 @@ class BlockTest extends MediaWikiLangTestCase {
 
                $blockOptions = [
                        'address' => 'UTBlockee',
-                       'user' => $user->getID(),
+                       'user' => $user->getId(),
                        'reason' => 'Parce que',
                        'expiry' => time() + 100500,
                ];
@@ -365,7 +365,7 @@ class BlockTest extends MediaWikiLangTestCase {
 
                # Set up the target
                $u = User::newFromName( $username );
-               if ( $u->getID() == 0 ) {
+               if ( $u->getId() == 0 ) {
                        $u->addToDatabase();
                        TestUser::setPasswordForUser( $u, 'TotallyObvious' );
                }
index 85ac4ce..eac56fb 100644 (file)
@@ -69,33 +69,33 @@ class FauxResponseTest extends MediaWikiTestCase {
         * @covers FauxResponse::header
         */
        public function testHeader() {
-               $this->assertEquals( null, $this->response->getheader( 'Location' ), 'Non-existing header' );
+               $this->assertEquals( null, $this->response->getHeader( 'Location' ), 'Non-existing header' );
 
                $this->response->header( 'Location: http://localhost/' );
                $this->assertEquals(
                        'http://localhost/',
-                       $this->response->getheader( 'Location' ),
+                       $this->response->getHeader( 'Location' ),
                        'Set header'
                );
 
                $this->response->header( 'Location: http://127.0.0.1/' );
                $this->assertEquals(
                        'http://127.0.0.1/',
-                       $this->response->getheader( 'Location' ),
+                       $this->response->getHeader( 'Location' ),
                        'Same header'
                );
 
                $this->response->header( 'Location: http://127.0.0.2/', false );
                $this->assertEquals(
                        'http://127.0.0.1/',
-                       $this->response->getheader( 'Location' ),
+                       $this->response->getHeader( 'Location' ),
                        'Same header with override disabled'
                );
 
                $this->response->header( 'Location: http://localhost/' );
                $this->assertEquals(
                        'http://localhost/',
-                       $this->response->getheader( 'LOCATION' ),
+                       $this->response->getHeader( 'LOCATION' ),
                        'Get header case insensitive'
                );
        }
index a90295a..98eb0c5 100644 (file)
@@ -64,7 +64,7 @@ class HtmlTest extends MediaWikiTestCase {
                $this->setMwGlobals( 'wgWellFormedXml', true );
 
                $this->assertEquals(
-                       '<img />',
+                       '<img/>',
                        Html::element( 'img', null, '' ),
                        'Self-closing tag for short-tag elements (wgWellFormedXml = true)'
                );
index d404ab8..9bef038 100644 (file)
@@ -142,9 +142,9 @@ class OutputPageTest extends MediaWikiTestCase {
                        // Load module script only
                        array(
                                array( 'test.foo', ResourceLoaderModule::TYPE_SCRIPTS ),
-                               "<script>(window.RLQ = window.RLQ || []).push(function () {\n"
+                               "<script>(window.RLQ=window.RLQ||[]).push(function(){"
                                        . 'mw.loader.load("http://127.0.0.1:8080/w/load.php?debug=false\u0026lang=en\u0026modules=test.foo\u0026only=scripts\u0026skin=fallback");'
-                                       . "\n} );</script>"
+                                       . "});</script>"
                        ),
                        array(
                                // Don't condition wrap raw modules (like the startup module)
@@ -161,17 +161,17 @@ class OutputPageTest extends MediaWikiTestCase {
                        // Load private module (only=scripts)
                        array(
                                array( 'test.quux', ResourceLoaderModule::TYPE_SCRIPTS ),
-                               "<script>(window.RLQ = window.RLQ || []).push(function () {\n"
-                                       . "mw.test.baz({token:123});mw.loader.state({\"test.quux\":\"ready\"});\n"
-                                       . "} );</script>"
+                               "<script>(window.RLQ=window.RLQ||[]).push(function(){"
+                                       . "mw.test.baz({token:123});mw.loader.state({\"test.quux\":\"ready\"});"
+                                       . "});</script>"
                        ),
                        // Load private module (combined)
                        array(
                                array( 'test.quux', ResourceLoaderModule::TYPE_COMBINED ),
-                               "<script>(window.RLQ = window.RLQ || []).push(function () {\n"
+                               "<script>(window.RLQ=window.RLQ||[]).push(function(){"
                                        . "mw.loader.implement(\"test.quux\",function($,jQuery){"
                                        . "mw.test.baz({token:123});},{\"css\":[\".mw-icon{transition:none}"
-                                       . "\"]});\n} );</script>"
+                                       . "\"]});});</script>"
                        ),
                        // Load no modules
                        array(
@@ -186,12 +186,12 @@ class OutputPageTest extends MediaWikiTestCase {
                        // Load two modules in separate groups
                        array(
                                array( array( 'test.group.foo', 'test.group.bar' ), ResourceLoaderModule::TYPE_COMBINED ),
-                               "<script>(window.RLQ = window.RLQ || []).push(function () {\n"
+                               "<script>(window.RLQ=window.RLQ||[]).push(function(){"
                                        . 'mw.loader.load("http://127.0.0.1:8080/w/load.php?debug=false\u0026lang=en\u0026modules=test.group.bar\u0026skin=fallback");'
-                                       . "\n} );</script>\n"
-                                       . "<script>(window.RLQ = window.RLQ || []).push(function () {\n"
+                                       . "});</script>\n"
+                                       . "<script>(window.RLQ=window.RLQ||[]).push(function(){"
                                        . 'mw.loader.load("http://127.0.0.1:8080/w/load.php?debug=false\u0026lang=en\u0026modules=test.group.foo\u0026skin=fallback");'
-                                       . "\n} );</script>"
+                                       . "});</script>"
                        ),
                );
                // @codingStandardsIgnoreEnd
index 440495b..0ac9c3c 100644 (file)
@@ -95,7 +95,7 @@ class RevisionStorageTest extends MediaWikiTestCase {
 
                $rev = new Revision( $props );
 
-               $dbw = wfgetDB( DB_MASTER );
+               $dbw = wfGetDB( DB_MASTER );
                $rev->insertOn( $dbw );
 
                return $rev;
@@ -145,7 +145,7 @@ class RevisionStorageTest extends MediaWikiTestCase {
        public function testConstructFromRow() {
                $orig = $this->makeRevision();
 
-               $dbr = wfgetDB( DB_SLAVE );
+               $dbr = wfGetDB( DB_SLAVE );
                $res = $dbr->select( 'revision', '*', [ 'rev_id' => $orig->getId() ] );
                $this->assertTrue( is_object( $res ), 'query failed' );
 
@@ -163,7 +163,7 @@ class RevisionStorageTest extends MediaWikiTestCase {
        public function testNewFromRow() {
                $orig = $this->makeRevision();
 
-               $dbr = wfgetDB( DB_SLAVE );
+               $dbr = wfGetDB( DB_SLAVE );
                $res = $dbr->select( 'revision', '*', [ 'rev_id' => $orig->getId() ] );
                $this->assertTrue( is_object( $res ), 'query failed' );
 
@@ -187,7 +187,7 @@ class RevisionStorageTest extends MediaWikiTestCase {
                $orig = $page->getRevision();
                $page->doDeleteArticle( 'test Revision::newFromArchiveRow' );
 
-               $dbr = wfgetDB( DB_SLAVE );
+               $dbr = wfGetDB( DB_SLAVE );
                $res = $dbr->select( 'archive', '*', [ 'ar_rev_id' => $orig->getId() ] );
                $this->assertTrue( is_object( $res ), 'query failed' );
 
index 584a368..5ecdf56 100644 (file)
@@ -48,7 +48,7 @@ class TitlePermissionTest extends MediaWikiLangTestCase {
                if ( !isset( $this->userUser ) || !( $this->userUser instanceof User ) ) {
                        $this->userUser = User::newFromName( $this->userName );
 
-                       if ( !$this->userUser->getID() ) {
+                       if ( !$this->userUser->getId() ) {
                                $this->userUser = User::createNew( $this->userName, [
                                        "email" => "test@example.com",
                                        "real_name" => "Test User" ] );
@@ -56,7 +56,7 @@ class TitlePermissionTest extends MediaWikiLangTestCase {
                        }
 
                        $this->altUser = User::newFromName( $this->altUserName );
-                       if ( !$this->altUser->getID() ) {
+                       if ( !$this->altUser->getId() ) {
                                $this->altUser = User::createNew( $this->altUserName, [
                                        "email" => "alttest@example.com",
                                        "real_name" => "Test User Alt" ] );
@@ -658,7 +658,7 @@ class TitlePermissionTest extends MediaWikiLangTestCase {
                $this->setUserPerm( [ "createpage" ] );
                $this->setTitle( NS_MAIN, "test page" );
                $this->title->mTitleProtection['permission'] = '';
-               $this->title->mTitleProtection['user'] = $this->user->getID();
+               $this->title->mTitleProtection['user'] = $this->user->getId();
                $this->title->mTitleProtection['expiry'] = 'infinity';
                $this->title->mTitleProtection['reason'] = 'test';
                $this->title->mCascadeRestriction = false;
index 91dd1aa..5b2873a 100644 (file)
@@ -39,6 +39,21 @@ class WatchedItemStoreIntegrationTest extends MediaWikiTestCase {
                        'Page should be watched'
                );
                $this->assertEquals( $initialUserWatchedItems + 1, $store->countWatchedItems( $user ) );
+               $watchedItemsForUser = $store->getWatchedItemsForUser( $user );
+               $this->assertCount( $initialUserWatchedItems + 1, $watchedItemsForUser );
+               $watchedItemsForUserHasExpectedItem = false;
+               foreach ( $watchedItemsForUser as $watchedItem ) {
+                       if (
+                               $watchedItem->getUser()->equals( $user ) &&
+                               $watchedItem->getLinkTarget() == $title->getTitleValue()
+                       ) {
+                               $watchedItemsForUserHasExpectedItem = true;
+                       }
+               }
+               $this->assertTrue(
+                       $watchedItemsForUserHasExpectedItem,
+                       'getWatchedItemsForUser should contain the page'
+               );
                $this->assertEquals( $initialWatchers + 1, $store->countWatchers( $title ) );
                $this->assertEquals(
                        $initialWatchers + 1,
@@ -52,6 +67,10 @@ class WatchedItemStoreIntegrationTest extends MediaWikiTestCase {
                        [ 0 => [ 'WatchedItemStoreIntegrationTestPage' => 0 ] ],
                        $store->countWatchersMultiple( [ $title ], [ 'minimumWatchers' => $initialWatchers + 2 ] )
                );
+               $this->assertEquals(
+                       [ $title->getNamespace() => [ $title->getDBkey() => null ] ],
+                       $store->getNotificationTimestampsBatch( $user, [ $title ] )
+               );
 
                $store->removeWatch( $user, $title );
                $this->assertFalse(
@@ -59,11 +78,30 @@ class WatchedItemStoreIntegrationTest extends MediaWikiTestCase {
                        'Page should be unwatched'
                );
                $this->assertEquals( $initialUserWatchedItems, $store->countWatchedItems( $user ) );
+               $watchedItemsForUser = $store->getWatchedItemsForUser( $user );
+               $this->assertCount( $initialUserWatchedItems, $watchedItemsForUser );
+               $watchedItemsForUserHasExpectedItem = false;
+               foreach ( $watchedItemsForUser as $watchedItem ) {
+                       if (
+                               $watchedItem->getUser()->equals( $user ) &&
+                               $watchedItem->getLinkTarget() == $title->getTitleValue()
+                       ) {
+                               $watchedItemsForUserHasExpectedItem = true;
+                       }
+               }
+               $this->assertFalse(
+                       $watchedItemsForUserHasExpectedItem,
+                       'getWatchedItemsForUser should not contain the page'
+               );
                $this->assertEquals( $initialWatchers, $store->countWatchers( $title ) );
                $this->assertEquals(
                        $initialWatchers,
                        $store->countWatchersMultiple( [ $title ] )[$title->getNamespace()][$title->getDBkey()]
                );
+               $this->assertEquals(
+                       [ $title->getNamespace() => [ $title->getDBkey() => false ] ],
+                       $store->getNotificationTimestampsBatch( $user, [ $title ] )
+               );
        }
 
        public function testUpdateAndResetNotificationTimestamp() {
@@ -81,10 +119,20 @@ class WatchedItemStoreIntegrationTest extends MediaWikiTestCase {
                        '20150202010101',
                        $store->loadWatchedItem( $user, $title )->getNotificationTimestamp()
                );
+               $this->assertEquals(
+                       [ $title->getNamespace() => [ $title->getDBkey() => '20150202010101' ] ],
+                       $store->getNotificationTimestampsBatch( $user, [ $title ] )
+               );
                $this->assertEquals(
                        $initialVisitingWatchers - 1,
                        $store->countVisitingWatchers( $title, '20150202020202' )
                );
+               $this->assertEquals(
+                       $initialVisitingWatchers - 1,
+                       $store->countVisitingWatchersMultiple(
+                               [ [ $title, '20150202020202' ] ]
+                       )[$title->getNamespace()][$title->getDBkey()]
+               );
                $this->assertEquals(
                        $initialUnreadNotifications + 1,
                        $store->countUnreadNotifications( $user )
@@ -96,10 +144,32 @@ class WatchedItemStoreIntegrationTest extends MediaWikiTestCase {
 
                $this->assertTrue( $store->resetNotificationTimestamp( $user, $title ) );
                $this->assertNull( $store->getWatchedItem( $user, $title )->getNotificationTimestamp() );
+               $this->assertEquals(
+                       [ $title->getNamespace() => [ $title->getDBkey() => null ] ],
+                       $store->getNotificationTimestampsBatch( $user, [ $title ] )
+               );
                $this->assertEquals(
                        $initialVisitingWatchers,
                        $store->countVisitingWatchers( $title, '20150202020202' )
                );
+               $this->assertEquals(
+                       $initialVisitingWatchers,
+                       $store->countVisitingWatchersMultiple(
+                               [ [ $title, '20150202020202' ] ]
+                       )[$title->getNamespace()][$title->getDBkey()]
+               );
+               $this->assertEquals(
+                       [ 0 => [ 'WatchedItemStoreIntegrationTestPage' => $initialVisitingWatchers ] ],
+                       $store->countVisitingWatchersMultiple(
+                               [ [ $title, '20150202020202' ] ], $initialVisitingWatchers
+                       )
+               );
+               $this->assertEquals(
+                       [ 0 => [ 'WatchedItemStoreIntegrationTestPage' => 0 ] ],
+                       $store->countVisitingWatchersMultiple(
+                               [ [ $title, '20150202020202' ] ], $initialVisitingWatchers + 1
+                       )
+               );
        }
 
        public function testDuplicateAllAssociatedEntries() {
index 983a5fe..1354b1c 100644 (file)
@@ -17,13 +17,20 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
        /**
         * @return PHPUnit_Framework_MockObject_MockObject|LoadBalancer
         */
-       private function getMockLoadBalancer( $mockDb ) {
+       private function getMockLoadBalancer( $mockDb, $expectedConnectionType = null ) {
                $mock = $this->getMockBuilder( LoadBalancer::class )
                        ->disableOriginalConstructor()
                        ->getMock();
-               $mock->expects( $this->any() )
-                       ->method( 'getConnection' )
-                       ->will( $this->returnValue( $mockDb ) );
+               if ( $expectedConnectionType !== null ) {
+                       $mock->expects( $this->any() )
+                               ->method( 'getConnection' )
+                               ->with( $expectedConnectionType )
+                               ->will( $this->returnValue( $mockDb ) );
+               } else {
+                       $mock->expects( $this->any() )
+                               ->method( 'getConnection' )
+                               ->will( $this->returnValue( $mockDb ) );
+               }
                $mock->expects( $this->any() )
                        ->method( 'getReadOnlyReason' )
                        ->will( $this->returnValue( false ) );
@@ -316,6 +323,247 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $this->assertEquals( 7, $store->countVisitingWatchers( $titleValue, '111' ) );
        }
 
+       public function testCountVisitingWatchersMultiple() {
+               $titleValuesWithThresholds = [
+                       [ new TitleValue( 0, 'SomeDbKey' ), '111' ],
+                       [ new TitleValue( 0, 'OtherDbKey' ), '111' ],
+                       [ new TitleValue( 1, 'AnotherDbKey' ), '123' ],
+               ];
+
+               $dbResult = [
+                       $this->getFakeRow( [ 'wl_title' => 'SomeDbKey', 'wl_namespace' => 0, 'watchers' => 100 ] ),
+                       $this->getFakeRow( [ 'wl_title' => 'OtherDbKey', 'wl_namespace' => 0, 'watchers' => 300 ] ),
+                       $this->getFakeRow( [ 'wl_title' => 'AnotherDbKey', 'wl_namespace' => 1, 'watchers' => 500 ] ),
+               ];
+               $mockDb = $this->getMockDb();
+               $mockDb->expects( $this->exactly( 2 * 3 ) )
+                       ->method( 'addQuotes' )
+                       ->will( $this->returnCallback( function( $value ) {
+                               return "'$value'";
+                       } ) );
+               $mockDb->expects( $this->exactly( 3 ) )
+                       ->method( 'timestamp' )
+                       ->will( $this->returnCallback( function( $value ) {
+                               return 'TS' . $value . 'TS';
+                       } ) );
+               $mockDb->expects( $this->any() )
+                       ->method( 'makeList' )
+                       ->with(
+                               $this->isType( 'array' ),
+                               $this->isType( 'int' )
+                       )
+                       ->will( $this->returnCallback( function( $a, $conj ) {
+                               $sqlConj = $conj === LIST_AND ? ' AND ' : ' OR ';
+                               return join( $sqlConj, array_map( function( $s ) {
+                                       return '(' . $s . ')';
+                               }, $a
+                               ) );
+                       } ) );
+               $mockDb->expects( $this->never() )
+                       ->method( 'makeWhereFrom2d' );
+
+               $expectedCond =
+                       '((wl_namespace = 0) AND (' .
+                       "(((wl_title = 'SomeDbKey') AND (" .
+                       "(wl_notificationtimestamp >= 'TS111TS') OR (wl_notificationtimestamp IS NULL)" .
+                       ')) OR (' .
+                       "(wl_title = 'OtherDbKey') AND (" .
+                       "(wl_notificationtimestamp >= 'TS111TS') OR (wl_notificationtimestamp IS NULL)" .
+                       '))))' .
+                       ') OR ((wl_namespace = 1) AND (' .
+                       "(((wl_title = 'AnotherDbKey') AND (".
+                       "(wl_notificationtimestamp >= 'TS123TS') OR (wl_notificationtimestamp IS NULL)" .
+                       ')))))';
+               $mockDb->expects( $this->once() )
+                       ->method( 'select' )
+                       ->with(
+                               'watchlist',
+                               [ 'wl_namespace', 'wl_title', 'watchers' => 'COUNT(*)' ],
+                               $expectedCond,
+                               $this->isType( 'string' ),
+                               [
+                                       'GROUP BY' => [ 'wl_namespace', 'wl_title' ],
+                               ]
+                       )
+                       ->will(
+                               $this->returnValue( $dbResult )
+                       );
+
+               $mockCache = $this->getMockCache();
+               $mockCache->expects( $this->never() )->method( 'get' );
+               $mockCache->expects( $this->never() )->method( 'set' );
+               $mockCache->expects( $this->never() )->method( 'delete' );
+
+               $store = new WatchedItemStore(
+                       $this->getMockLoadBalancer( $mockDb ),
+                       $mockCache
+               );
+
+               $expected = [
+                       0 => [ 'SomeDbKey' => 100, 'OtherDbKey' => 300 ],
+                       1 => [ 'AnotherDbKey' => 500 ],
+               ];
+               $this->assertEquals(
+                       $expected,
+                       $store->countVisitingWatchersMultiple( $titleValuesWithThresholds )
+               );
+       }
+
+       public function testCountVisitingWatchersMultiple_withMissingTargets() {
+               $titleValuesWithThresholds = [
+                       [ new TitleValue( 0, 'SomeDbKey' ), '111' ],
+                       [ new TitleValue( 0, 'OtherDbKey' ), '111' ],
+                       [ new TitleValue( 1, 'AnotherDbKey' ), '123' ],
+                       [ new TitleValue( 0, 'SomeNotExisitingDbKey' ), null ],
+                       [ new TitleValue( 0, 'OtherNotExisitingDbKey' ), null ],
+               ];
+
+               $dbResult = [
+                       $this->getFakeRow( [ 'wl_title' => 'SomeDbKey', 'wl_namespace' => 0, 'watchers' => 100 ] ),
+                       $this->getFakeRow( [ 'wl_title' => 'OtherDbKey', 'wl_namespace' => 0, 'watchers' => 300 ] ),
+                       $this->getFakeRow( [ 'wl_title' => 'AnotherDbKey', 'wl_namespace' => 1, 'watchers' => 500 ] ),
+                       $this->getFakeRow(
+                               [ 'wl_title' => 'SomeNotExisitingDbKey', 'wl_namespace' => 0, 'watchers' => 100 ]
+                       ),
+                       $this->getFakeRow(
+                               [ 'wl_title' => 'OtherNotExisitingDbKey', 'wl_namespace' => 0, 'watchers' => 200 ]
+                       ),
+               ];
+               $mockDb = $this->getMockDb();
+               $mockDb->expects( $this->exactly( 2 * 3 ) )
+                       ->method( 'addQuotes' )
+                       ->will( $this->returnCallback( function( $value ) {
+                               return "'$value'";
+                       } ) );
+               $mockDb->expects( $this->exactly( 3 ) )
+                       ->method( 'timestamp' )
+                       ->will( $this->returnCallback( function( $value ) {
+                               return 'TS' . $value . 'TS';
+                       } ) );
+               $mockDb->expects( $this->any() )
+                       ->method( 'makeList' )
+                       ->with(
+                               $this->isType( 'array' ),
+                               $this->isType( 'int' )
+                       )
+                       ->will( $this->returnCallback( function( $a, $conj ) {
+                               $sqlConj = $conj === LIST_AND ? ' AND ' : ' OR ';
+                               return join( $sqlConj, array_map( function( $s ) {
+                                       return '(' . $s . ')';
+                               }, $a
+                               ) );
+                       } ) );
+               $mockDb->expects( $this->once() )
+                       ->method( 'makeWhereFrom2d' )
+                       ->with(
+                               [ [ 'SomeNotExisitingDbKey' => 1, 'OtherNotExisitingDbKey' => 1 ] ],
+                               $this->isType( 'string' ),
+                               $this->isType( 'string' )
+                       )
+                       ->will( $this->returnValue( 'makeWhereFrom2d return value' ) );
+
+               $expectedCond =
+                       '((wl_namespace = 0) AND (' .
+                       "(((wl_title = 'SomeDbKey') AND (" .
+                       "(wl_notificationtimestamp >= 'TS111TS') OR (wl_notificationtimestamp IS NULL)" .
+                       ')) OR (' .
+                       "(wl_title = 'OtherDbKey') AND (" .
+                       "(wl_notificationtimestamp >= 'TS111TS') OR (wl_notificationtimestamp IS NULL)" .
+                       '))))' .
+                       ') OR ((wl_namespace = 1) AND (' .
+                       "(((wl_title = 'AnotherDbKey') AND (".
+                       "(wl_notificationtimestamp >= 'TS123TS') OR (wl_notificationtimestamp IS NULL)" .
+                       '))))' .
+                       ') OR ' .
+                       '(makeWhereFrom2d return value)';
+               $mockDb->expects( $this->once() )
+                       ->method( 'select' )
+                       ->with(
+                               'watchlist',
+                               [ 'wl_namespace', 'wl_title', 'watchers' => 'COUNT(*)' ],
+                               $expectedCond,
+                               $this->isType( 'string' ),
+                               [
+                                       'GROUP BY' => [ 'wl_namespace', 'wl_title' ],
+                               ]
+                       )
+                       ->will(
+                               $this->returnValue( $dbResult )
+                       );
+
+               $mockCache = $this->getMockCache();
+               $mockCache->expects( $this->never() )->method( 'get' );
+               $mockCache->expects( $this->never() )->method( 'set' );
+               $mockCache->expects( $this->never() )->method( 'delete' );
+
+               $store = new WatchedItemStore(
+                       $this->getMockLoadBalancer( $mockDb ),
+                       $mockCache
+               );
+
+               $expected = [
+                       0 => [
+                               'SomeDbKey' => 100, 'OtherDbKey' => 300,
+                               'SomeNotExisitingDbKey' => 100, 'OtherNotExisitingDbKey' => 200
+                       ],
+                       1 => [ 'AnotherDbKey' => 500 ],
+               ];
+               $this->assertEquals(
+                       $expected,
+                       $store->countVisitingWatchersMultiple( $titleValuesWithThresholds )
+               );
+       }
+
+       /**
+        * @dataProvider provideIntWithDbUnsafeVersion
+        */
+       public function testCountVisitingWatchersMultiple_withMinimumWatchers( $minWatchers ) {
+               $titleValuesWithThresholds = [
+                       [ new TitleValue( 0, 'SomeDbKey' ), '111' ],
+                       [ new TitleValue( 0, 'OtherDbKey' ), '111' ],
+                       [ new TitleValue( 1, 'AnotherDbKey' ), '123' ],
+               ];
+
+               $mockDb = $this->getMockDb();
+               $mockDb->expects( $this->any() )
+                       ->method( 'makeList' )
+                       ->will( $this->returnValue( 'makeList return value' ) );
+               $mockDb->expects( $this->once() )
+                       ->method( 'select' )
+                       ->with(
+                               'watchlist',
+                               [ 'wl_namespace', 'wl_title', 'watchers' => 'COUNT(*)' ],
+                               'makeList return value',
+                               $this->isType( 'string' ),
+                               [
+                                       'GROUP BY' => [ 'wl_namespace', 'wl_title' ],
+                                       'HAVING' => 'COUNT(*) >= 50',
+                               ]
+                       )
+                       ->will(
+                               $this->returnValue( [] )
+                       );
+
+               $mockCache = $this->getMockCache();
+               $mockCache->expects( $this->never() )->method( 'get' );
+               $mockCache->expects( $this->never() )->method( 'set' );
+               $mockCache->expects( $this->never() )->method( 'delete' );
+
+               $store = new WatchedItemStore(
+                       $this->getMockLoadBalancer( $mockDb ),
+                       $mockCache
+               );
+
+               $expected = [
+                       0 => [ 'SomeDbKey' => 0, 'OtherDbKey' => 0 ],
+                       1 => [ 'AnotherDbKey' => 0 ],
+               ];
+               $this->assertEquals(
+                       $expected,
+                       $store->countVisitingWatchersMultiple( $titleValuesWithThresholds, $minWatchers )
+               );
+       }
+
        public function testCountUnreadNotifications() {
                $user = $this->getMockNonAnonUserWithId( 1 );
 
@@ -1139,6 +1387,93 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                );
        }
 
+       public function testGetWatchedItemsForUser() {
+               $mockDb = $this->getMockDb();
+               $mockDb->expects( $this->once() )
+                       ->method( 'select' )
+                       ->with(
+                               'watchlist',
+                               [ 'wl_namespace', 'wl_title', 'wl_notificationtimestamp' ],
+                               [ 'wl_user' => 1 ]
+                       )
+                       ->will( $this->returnValue( [
+                               $this->getFakeRow( [
+                                       'wl_namespace' => 0,
+                                       'wl_title' => 'Foo1',
+                                       'wl_notificationtimestamp' => '20151212010101',
+                               ] ),
+                               $this->getFakeRow( [
+                                       'wl_namespace' => 1,
+                                       'wl_title' => 'Foo2',
+                                       'wl_notificationtimestamp' => null,
+                               ] ),
+                       ] ) );
+
+               $mockCache = $this->getMockCache();
+               $mockCache->expects( $this->never() )->method( 'delete' );
+               $mockCache->expects( $this->never() )->method( 'get' );
+               $mockCache->expects( $this->never() )->method( 'set' );
+
+               $store = new WatchedItemStore(
+                       $this->getMockLoadBalancer( $mockDb ),
+                       $mockCache
+               );
+               $user = $this->getMockNonAnonUserWithId( 1 );
+
+               $watchedItems = $store->getWatchedItemsForUser( $user );
+
+               $this->assertInternalType( 'array', $watchedItems );
+               $this->assertCount( 2, $watchedItems );
+               foreach ( $watchedItems as $watchedItem ) {
+                       $this->assertInstanceOf( 'WatchedItem', $watchedItem );
+               }
+               $this->assertEquals(
+                       new WatchedItem( $user, new TitleValue( 0, 'Foo1' ), '20151212010101' ),
+                       $watchedItems[0]
+               );
+               $this->assertEquals(
+                       new WatchedItem( $user, new TitleValue( 1, 'Foo2' ), null ),
+                       $watchedItems[1]
+               );
+       }
+
+       public function provideDbTypes() {
+               return [
+                       [ false, DB_SLAVE ],
+                       [ true, DB_MASTER ],
+               ];
+       }
+
+       /**
+        * @dataProvider provideDbTypes
+        */
+       public function testGetWatchedItemsForUser_optionsAndEmptyResult( $forWrite, $dbType ) {
+               $mockDb = $this->getMockDb();
+               $mockCache = $this->getMockCache();
+               $mockLoadBalancer = $this->getMockLoadBalancer( $mockDb, $dbType );
+               $user = $this->getMockNonAnonUserWithId( 1 );
+
+               $mockDb->expects( $this->once() )
+                       ->method( 'select' )
+                       ->with(
+                               'watchlist',
+                               [ 'wl_namespace', 'wl_title', 'wl_notificationtimestamp' ],
+                               [ 'wl_user' => 1 ]
+                       )
+                       ->will( $this->returnValue( [] ) );
+
+               $store = new WatchedItemStore(
+                       $mockLoadBalancer,
+                       $mockCache
+               );
+
+               $watchedItems = $store->getWatchedItemsForUser(
+                       $user,
+                       [ 'forWrite' => $forWrite ]
+               );
+               $this->assertEquals( [], $watchedItems );
+       }
+
        public function testIsWatchedItem_existingItem() {
                $mockDb = $this->getMockDb();
                $mockDb->expects( $this->once() )
@@ -1240,6 +1575,251 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                );
        }
 
+       public function testGetNotificationTimestampsBatch() {
+               $targets = [
+                       new TitleValue( 0, 'SomeDbKey' ),
+                       new TitleValue( 1, 'AnotherDbKey' ),
+               ];
+
+               $mockDb = $this->getMockDb();
+               $dbResult = [
+                       $this->getFakeRow( [
+                               'wl_namespace' => 0,
+                               'wl_title' => 'SomeDbKey',
+                               'wl_notificationtimestamp' => '20151212010101',
+                       ] ),
+                       $this->getFakeRow(
+                               [
+                                       'wl_namespace' => 1,
+                                       'wl_title' => 'AnotherDbKey',
+                                       'wl_notificationtimestamp' => null,
+                               ]
+                       ),
+               ];
+
+               $mockDb->expects( $this->once() )
+                       ->method( 'makeWhereFrom2d' )
+                       ->with(
+                               [ [ 'SomeDbKey' => 1 ], [ 'AnotherDbKey' => 1 ] ],
+                               $this->isType( 'string' ),
+                               $this->isType( 'string' )
+                       )
+                       ->will( $this->returnValue( 'makeWhereFrom2d return value' ) );
+               $mockDb->expects( $this->once() )
+                       ->method( 'select' )
+                       ->with(
+                               'watchlist',
+                               [ 'wl_namespace', 'wl_title', 'wl_notificationtimestamp' ],
+                               [
+                                       'makeWhereFrom2d return value',
+                                       'wl_user' => 1
+                               ],
+                               $this->isType( 'string' )
+                       )
+                       ->will( $this->returnValue( $dbResult ) );
+
+               $mockCache = $this->getMockCache();
+               $mockCache->expects( $this->exactly( 2 ) )
+                       ->method( 'get' )
+                       ->withConsecutive(
+                               [ '0:SomeDbKey:1' ],
+                               [ '1:AnotherDbKey:1' ]
+                       )
+                       ->will( $this->returnValue( null ) );
+               $mockCache->expects( $this->never() )->method( 'set' );
+               $mockCache->expects( $this->never() )->method( 'delete' );
+
+               $store = new WatchedItemStore(
+                       $this->getMockLoadBalancer( $mockDb ),
+                       $mockCache
+               );
+
+               $this->assertEquals(
+                       [
+                               0 => [ 'SomeDbKey' => '20151212010101', ],
+                               1 => [ 'AnotherDbKey' => null, ],
+                       ],
+                       $store->getNotificationTimestampsBatch( $this->getMockNonAnonUserWithId( 1 ), $targets )
+               );
+       }
+
+       public function testGetNotificationTimestampsBatch_notWatchedTarget() {
+               $targets = [
+                       new TitleValue( 0, 'OtherDbKey' ),
+               ];
+
+               $mockDb = $this->getMockDb();
+
+               $mockDb->expects( $this->once() )
+                       ->method( 'makeWhereFrom2d' )
+                       ->with(
+                               [ [ 'OtherDbKey' => 1 ] ],
+                               $this->isType( 'string' ),
+                               $this->isType( 'string' )
+                       )
+                       ->will( $this->returnValue( 'makeWhereFrom2d return value' ) );
+               $mockDb->expects( $this->once() )
+                       ->method( 'select' )
+                       ->with(
+                               'watchlist',
+                               [ 'wl_namespace', 'wl_title', 'wl_notificationtimestamp' ],
+                               [
+                                       'makeWhereFrom2d return value',
+                                       'wl_user' => 1
+                               ],
+                               $this->isType( 'string' )
+                       )
+                       ->will( $this->returnValue( $this->getFakeRow( [] ) ) );
+
+               $mockCache = $this->getMockCache();
+               $mockCache->expects( $this->once() )
+                       ->method( 'get' )
+                       ->with( '0:OtherDbKey:1' )
+                       ->will( $this->returnValue( null ) );
+               $mockCache->expects( $this->never() )->method( 'set' );
+               $mockCache->expects( $this->never() )->method( 'delete' );
+
+               $store = new WatchedItemStore(
+                       $this->getMockLoadBalancer( $mockDb ),
+                       $mockCache
+               );
+
+               $this->assertEquals(
+                       [
+                               0 => [ 'OtherDbKey' => false, ],
+                       ],
+                       $store->getNotificationTimestampsBatch( $this->getMockNonAnonUserWithId( 1 ), $targets )
+               );
+       }
+
+       public function testGetNotificationTimestampsBatch_cachedItem() {
+               $targets = [
+                       new TitleValue( 0, 'SomeDbKey' ),
+                       new TitleValue( 1, 'AnotherDbKey' ),
+               ];
+
+               $user = $this->getMockNonAnonUserWithId( 1 );
+               $cachedItem = new WatchedItem( $user, $targets[0], '20151212010101' );
+
+               $mockDb = $this->getMockDb();
+
+               $mockDb->expects( $this->once() )
+                       ->method( 'makeWhereFrom2d' )
+                       ->with(
+                               [ 1 => [ 'AnotherDbKey' => 1 ] ],
+                               $this->isType( 'string' ),
+                               $this->isType( 'string' )
+                       )
+                       ->will( $this->returnValue( 'makeWhereFrom2d return value' ) );
+               $mockDb->expects( $this->once() )
+                       ->method( 'select' )
+                       ->with(
+                               'watchlist',
+                               [ 'wl_namespace', 'wl_title', 'wl_notificationtimestamp' ],
+                               [
+                                       'makeWhereFrom2d return value',
+                                       'wl_user' => 1
+                               ],
+                               $this->isType( 'string' )
+                       )
+                       ->will( $this->returnValue( [
+                               $this->getFakeRow(
+                                       [ 'wl_namespace' => 1, 'wl_title' => 'AnotherDbKey', 'wl_notificationtimestamp' => null, ]
+                               )
+                       ] ) );
+
+               $mockCache = $this->getMockCache();
+               $mockCache->expects( $this->at( 1 ) )
+                       ->method( 'get' )
+                       ->with( '0:SomeDbKey:1' )
+                       ->will( $this->returnValue( $cachedItem ) );
+               $mockCache->expects( $this->at( 3 ) )
+                       ->method( 'get' )
+                       ->with( '1:AnotherDbKey:1' )
+                       ->will( $this->returnValue( null ) );
+               $mockCache->expects( $this->never() )->method( 'set' );
+               $mockCache->expects( $this->never() )->method( 'delete' );
+
+               $store = new WatchedItemStore(
+                       $this->getMockLoadBalancer( $mockDb ),
+                       $mockCache
+               );
+
+               $this->assertEquals(
+                       [
+                               0 => [ 'SomeDbKey' => '20151212010101', ],
+                               1 => [ 'AnotherDbKey' => null, ],
+                       ],
+                       $store->getNotificationTimestampsBatch( $user, $targets )
+               );
+       }
+
+       public function testGetNotificationTimestampsBatch_allItemsCached() {
+               $targets = [
+                       new TitleValue( 0, 'SomeDbKey' ),
+                       new TitleValue( 1, 'AnotherDbKey' ),
+               ];
+
+               $user = $this->getMockNonAnonUserWithId( 1 );
+               $cachedItems = [
+                       new WatchedItem( $user, $targets[0], '20151212010101' ),
+                       new WatchedItem( $user, $targets[1], null ),
+               ];
+               $mockDb = $this->getMockDb();
+               $mockDb->expects( $this->never() )->method( $this->anything() );
+
+               $mockCache = $this->getMockCache();
+               $mockCache->expects( $this->at( 1 ) )
+                       ->method( 'get' )
+                       ->with( '0:SomeDbKey:1' )
+                       ->will( $this->returnValue( $cachedItems[0] ) );
+               $mockCache->expects( $this->at( 3 ) )
+                       ->method( 'get' )
+                       ->with( '1:AnotherDbKey:1' )
+                       ->will( $this->returnValue( $cachedItems[1] ) );
+               $mockCache->expects( $this->never() )->method( 'set' );
+               $mockCache->expects( $this->never() )->method( 'delete' );
+
+               $store = new WatchedItemStore(
+                       $this->getMockLoadBalancer( $mockDb ),
+                       $mockCache
+               );
+
+               $this->assertEquals(
+                       [
+                               0 => [ 'SomeDbKey' => '20151212010101', ],
+                               1 => [ 'AnotherDbKey' => null, ],
+                       ],
+                       $store->getNotificationTimestampsBatch( $user, $targets )
+               );
+       }
+
+       public function testGetNotificationTimestampsBatch_anonymousUser() {
+               $targets = [
+                       new TitleValue( 0, 'SomeDbKey' ),
+                       new TitleValue( 1, 'AnotherDbKey' ),
+               ];
+
+               $mockDb = $this->getMockDb();
+               $mockDb->expects( $this->never() )->method( $this->anything() );
+
+               $mockCache = $this->getMockCache();
+               $mockCache->expects( $this->never() )->method( $this->anything() );
+
+               $store = new WatchedItemStore(
+                       $this->getMockLoadBalancer( $mockDb ),
+                       $mockCache
+               );
+
+               $this->assertEquals(
+                       [
+                               0 => [ 'SomeDbKey' => false, ],
+                               1 => [ 'AnotherDbKey' => false, ],
+                       ],
+                       $store->getNotificationTimestampsBatch( $this->getAnonUser(), $targets )
+               );
+       }
+
        public function testResetNotificationTimestamp_anonymousUser() {
                $mockDb = $this->getMockDb();
                $mockDb->expects( $this->never() )
index c5314cb..7b82d68 100644 (file)
@@ -152,7 +152,7 @@ class XmlTest extends MediaWikiTestCase {
 
                $this->assertEquals(
                        '<label for="year">From year (and earlier):</label> ' .
-                               '<input id="year" maxlength="4" size="7" type="number" value="2011" name="year" /> ' .
+                               '<input id="year" maxlength="4" size="7" type="number" value="2011" name="year"/> ' .
                                '<label for="month">From month (and earlier):</label> ' .
                                '<select name="month" id="month" class="mw-month-selector">' .
                                '<option value="-1">all</option>' . "\n" .
@@ -173,7 +173,7 @@ class XmlTest extends MediaWikiTestCase {
                );
                $this->assertEquals(
                        '<label for="year">From year (and earlier):</label> ' .
-                               '<input id="year" maxlength="4" size="7" type="number" value="2011" name="year" /> ' .
+                               '<input id="year" maxlength="4" size="7" type="number" value="2011" name="year"/> ' .
                                '<label for="month">From month (and earlier):</label> ' .
                                '<select name="month" id="month" class="mw-month-selector">' .
                                '<option value="-1">all</option>' . "\n" .
@@ -207,7 +207,7 @@ class XmlTest extends MediaWikiTestCase {
 
                $this->assertEquals(
                        '<label for="year">From year (and earlier):</label> ' .
-                               '<input id="year" maxlength="4" size="7" type="number" name="year" /> ' .
+                               '<input id="year" maxlength="4" size="7" type="number" name="year"/> ' .
                                '<label for="month">From month (and earlier):</label> ' .
                                '<select name="month" id="month" class="mw-month-selector">' .
                                '<option value="-1">all</option>' . "\n" .
index 00701db..3052915 100644 (file)
@@ -27,7 +27,7 @@ class ApiLoginTest extends ApiTestCase {
                global $wgServer;
 
                $user = self::$users['sysop'];
-               $user->getUser()->logOut();
+               $user->getUser()->logout();
 
                if ( !isset( $wgServer ) ) {
                        $this->markTestIncomplete( 'This test needs $wgServer to be set in LocalSettings.php' );
@@ -72,7 +72,7 @@ class ApiLoginTest extends ApiTestCase {
                }
 
                $user = self::$users['sysop'];
-               $user->getUser()->logOut();
+               $user->getUser()->logout();
 
                $ret = $this->doApiRequest( [
                                "action" => "login",
@@ -153,7 +153,7 @@ class ApiLoginTest extends ApiTestCase {
                $this->assertNotEquals( false, $serverName );
                $serializedCookie = $cj->serializeToHttpRequest( $wgScriptPath, $serverName );
                $this->assertNotEquals( '', $serializedCookie );
-               $this->assertRegexp(
+               $this->assertRegExp(
                        '/_session=[^;]*; .*UserID=[0-9]*; .*UserName=' . $user->userName . '; .*Token=/',
                        $serializedCookie
                );
index bacc061..873917e 100644 (file)
@@ -137,7 +137,7 @@ class ApiUploadTest extends ApiTestCaseUpload {
                $this->assertFalse( $exception );
 
                // clean up
-               $this->deleteFileByFilename( $fileName );
+               $this->deleteFileByFileName( $fileName );
        }
 
        /**
@@ -173,7 +173,7 @@ class ApiUploadTest extends ApiTestCaseUpload {
                $this->assertTrue( $exception );
 
                // clean up
-               $this->deleteFileByFilename( $fileName );
+               $this->deleteFileByFileName( $fileName );
        }
 
        /**
@@ -243,7 +243,7 @@ class ApiUploadTest extends ApiTestCaseUpload {
                $this->assertFalse( $exception );
 
                // clean up
-               $this->deleteFileByFilename( $fileName );
+               $this->deleteFileByFileName( $fileName );
        }
 
        /**
@@ -322,8 +322,8 @@ class ApiUploadTest extends ApiTestCaseUpload {
                $this->assertFalse( $exception );
 
                // clean up
-               $this->deleteFileByFilename( $fileNames[0] );
-               $this->deleteFileByFilename( $fileNames[1] );
+               $this->deleteFileByFileName( $fileNames[0] );
+               $this->deleteFileByFileName( $fileNames[1] );
        }
 
        /**
@@ -406,7 +406,7 @@ class ApiUploadTest extends ApiTestCaseUpload {
                $this->assertFalse( $exception, "No UsageException exception." );
 
                // clean up
-               $this->deleteFileByFilename( $fileName );
+               $this->deleteFileByFileName( $fileName );
        }
 
        /**
@@ -550,6 +550,6 @@ class ApiUploadTest extends ApiTestCaseUpload {
                $this->assertFalse( $exception );
 
                // clean up
-               $this->deleteFileByFilename( $fileName );
+               $this->deleteFileByFileName( $fileName );
        }
 }
index 1f4e26c..9942a0f 100644 (file)
@@ -10,7 +10,7 @@ class UserWrapper {
                $this->password = $password;
 
                $this->user = User::newFromName( $this->userName );
-               if ( !$this->user->getID() ) {
+               if ( !$this->user->getId() ) {
                        $this->user = User::createNew( $this->userName, [
                                "email" => "test@example.com",
                                "real_name" => "Test User" ] );
index 40994da..e329f8d 100644 (file)
@@ -11,7 +11,7 @@ class GenderCacheTest extends MediaWikiLangTestCase {
                $this->mergeMwGlobalArrayValue( 'wgDefaultUserOptions', [ 'gender' => 'unknown' ] );
 
                $user = User::newFromName( 'UTMale' );
-               if ( $user->getID() == 0 ) {
+               if ( $user->getId() == 0 ) {
                        $user->addToDatabase();
                        TestUser::setPasswordForUser( $user, 'UTMalePassword' );
                }
@@ -20,7 +20,7 @@ class GenderCacheTest extends MediaWikiLangTestCase {
                $user->saveSettings();
 
                $user = User::newFromName( 'UTFemale' );
-               if ( $user->getID() == 0 ) {
+               if ( $user->getId() == 0 ) {
                        $user->addToDatabase();
                        TestUser::setPasswordForUser( $user, 'UTFemalePassword' );
                }
@@ -29,7 +29,7 @@ class GenderCacheTest extends MediaWikiLangTestCase {
                $user->saveSettings();
 
                $user = User::newFromName( 'UTDefaultGender' );
-               if ( $user->getID() == 0 ) {
+               if ( $user->getId() == 0 ) {
                        $user->addToDatabase();
                        TestUser::setPasswordForUser( $user, 'UTDefaultGenderPassword' );
                }
index c7fba50..32e71e0 100644 (file)
@@ -91,7 +91,7 @@ class RequestContextTest extends MediaWikiTestCase {
                        MediaWiki\Session\SessionManager::getGlobalSession()->getId(),
                        "Correct context session ID."
                );
-               if ( \MediaWiki\Session\PhpSessionHandler::isEnabled() ) {
+               if ( \MediaWiki\Session\PHPSessionHandler::isEnabled() ) {
                        $this->assertEquals( $sinfo['sessionId'], session_id(), "Correct context session ID." );
                } else {
                        $this->assertEquals( $oldSessionId, session_id(), "Unchanged PHP session ID." );
index 9609f74..ac75e55 100644 (file)
@@ -223,7 +223,11 @@ class LinksUpdateTest extends MediaWikiLangTestCase {
                        $templateTitle,
                        $templatePage->getParserOutput( new ParserOptions() ),
                        Title::newFromText( 'Baz' ),
-                       [ [ 'Baz', '[[:Template:TestingTemplate]] and 2 pages added to category' ] ]
+                       [ [
+                               'Baz',
+                               '[[:Template:TestingTemplate]] and [[Special:WhatLinksHere/Template:TestingTemplate|2 pages]] '
+                               . 'added to category'
+                       ] ]
                );
        }
 
index e7f3a21..90ccd1e 100644 (file)
@@ -22,7 +22,7 @@ class HttpErrorTest extends MediaWikiTestCase {
         */
        public function testGetHtml( array $expected, $content, $header ) {
                $httpError = new HttpError( 500, $content, $header );
-               $errorHtml = $httpError->getHtml();
+               $errorHtml = $httpError->getHTML();
 
                foreach ( $expected as $key => $html ) {
                        $this->assertContains( $html, $errorHtml, $key );
index bf59ab5..4aeddc6 100644 (file)
@@ -57,7 +57,7 @@ class FileBackendTest extends MediaWikiTestCase {
                        'name' => 'localtesting',
                        'lockManager' => LockManagerGroup::singleton()->get( 'fsLockManager' ),
                        'parallelize' => 'implicit',
-                       'wikiId' => wfWikiId() . wfRandomString(),
+                       'wikiId' => wfWikiID() . wfRandomString(),
                        'backends' => [
                                [
                                        'name' => 'localmultitesting1',
@@ -2431,7 +2431,7 @@ class FileBackendTest extends MediaWikiTestCase {
                $be = TestingAccessWrapper::newFromObject(
                        new FileBackendMultiWrite( [
                                'name' => 'localtesting',
-                               'wikiId' => wfWikiId() . mt_rand(),
+                               'wikiId' => wfWikiID() . mt_rand(),
                                'backends' => [
                                        [ // backend 0
                                                'name' => 'multitesting0',
@@ -2481,7 +2481,7 @@ class FileBackendTest extends MediaWikiTestCase {
                $be = TestingAccessWrapper::newFromObject(
                        new FileBackendMultiWrite( [
                                'name' => 'localtesting',
-                               'wikiId' => wfWikiId() . mt_rand(),
+                               'wikiId' => wfWikiID() . mt_rand(),
                                'backends' => [
                                        [ // backend 0
                                                'name' => 'multitesting0',
index 77a7320..8366541 100644 (file)
@@ -120,7 +120,7 @@ class FileBackendDBRepoWrapperTest extends MediaWikiTestCase {
                        [],
                        [ [
                                'name' => $this->backendName,
-                               'wikiId' => wfWikiId()
+                               'wikiId' => wfWikiID()
                        ] ] );
 
                $wrapperMock = $this->getMock( 'FileBackendDBRepoWrapper',
index a7408f2..c5fd369 100644 (file)
@@ -137,7 +137,7 @@ class FileTest extends MediaWikiMediaTestCase {
         */
        public function testGetThumbnailSource( $data ) {
                $backendMock = $this->getMockBuilder( 'FSFileBackend' )
-                       ->setConstructorArgs( [ [ 'name' => 'backendMock', 'wikiId' => wfWikiId() ] ] )
+                       ->setConstructorArgs( [ [ 'name' => 'backendMock', 'wikiId' => wfWikiID() ] ] )
                        ->getMock();
 
                $repoMock = $this->getMockBuilder( 'FileRepo' )
@@ -247,7 +247,7 @@ class FileTest extends MediaWikiMediaTestCase {
                $this->setMwGlobals( 'wgThumbnailBuckets', $data['buckets'] );
 
                $backendMock = $this->getMockBuilder( 'FSFileBackend' )
-                       ->setConstructorArgs( [ [ 'name' => 'backendMock', 'wikiId' => wfWikiId() ] ] )
+                       ->setConstructorArgs( [ [ 'name' => 'backendMock', 'wikiId' => wfWikiID() ] ] )
                        ->getMock();
 
                $repoMock = $this->getMockBuilder( 'FileRepo' )
index 9c7040a..ffaa2c3 100644 (file)
@@ -20,7 +20,7 @@ class LocalFileTest extends MediaWikiTestCase {
                        'transformVia404' => false,
                        'backend' => new FSFileBackend( [
                                'name' => 'local-backend',
-                               'wikiId' => wfWikiId(),
+                               'wikiId' => wfWikiID(),
                                'containerPaths' => [
                                        'cont1' => "/testdir/local-backend/tempimages/cont1",
                                        'cont2' => "/testdir/local-backend/tempimages/cont2"
index 6090803..a70c005 100644 (file)
@@ -131,7 +131,7 @@ class BitmapMetadataHandlerTest extends MediaWikiTestCase {
                        $this->markTestSkipped( "This test needs the xml extension." );
                }
                $handler = new BitmapMetadataHandler();
-               $result = $handler->png( $this->filePath . 'xmp.png' );
+               $result = $handler->PNG( $this->filePath . 'xmp.png' );
                $expected = [
                        'frameCount' => 0,
                        'loopCount' => 1,
@@ -151,7 +151,7 @@ class BitmapMetadataHandlerTest extends MediaWikiTestCase {
         */
        public function testPNGNative() {
                $handler = new BitmapMetadataHandler();
-               $result = $handler->png( $this->filePath . 'Png-native-test.png' );
+               $result = $handler->PNG( $this->filePath . 'Png-native-test.png' );
                $expected = 'http://example.com/url';
                $this->assertEquals( $expected, $result['metadata']['Identifier']['x-default'] );
        }
index 5887d38..5042121 100644 (file)
@@ -25,7 +25,7 @@ abstract class MediaWikiMediaTestCase extends MediaWikiTestCase {
 
                $this->backend = new FSFileBackend( [
                        'name' => 'localtesting',
-                       'wikiId' => wfWikiId(),
+                       'wikiId' => wfWikiID(),
                        'containerPaths' => $containers
                ] );
                $this->repo = new FSRepo( $this->getRepoOptions() );
index 4eb480d..b0c1525 100644 (file)
@@ -102,7 +102,6 @@ class NewParserTest extends MediaWikiTestCase {
                $tmpGlobals['wgAllowExternalImages'] = true;
                $tmpGlobals['wgRawHtml'] = false;
                $tmpGlobals['wgWellFormedXml'] = true;
-               $tmpGlobals['wgAllowMicrodataAttributes'] = true;
                $tmpGlobals['wgExperimentalHtmlIds'] = false;
                $tmpGlobals['wgAdaptiveMessageCache'] = true;
                $tmpGlobals['wgUseDatabaseMessages'] = true;
@@ -412,7 +411,7 @@ class NewParserTest extends MediaWikiTestCase {
                        # informations.
                        $backend = new MockFileBackend( [
                                'name' => 'local-backend',
-                               'wikiId' => wfWikiId()
+                               'wikiId' => wfWikiID()
                        ] );
                }
 
index af34282..6357510 100644 (file)
@@ -42,7 +42,7 @@ class PasswordPolicyChecksTest extends MediaWikiTestCase {
                        'Password is shorter than minimal policy'
                );
                $this->assertTrue(
-                       $statusShort->isOk(),
+                       $statusShort->isOK(),
                        'Password is shorter than minimal policy, not fatal'
                );
        }
@@ -67,7 +67,7 @@ class PasswordPolicyChecksTest extends MediaWikiTestCase {
                        'Password is shorter than minimum login policy'
                );
                $this->assertFalse(
-                       $statusShort->isOk(),
+                       $statusShort->isOK(),
                        'Password is shorter than minimum login policy, fatal'
                );
        }
@@ -90,7 +90,7 @@ class PasswordPolicyChecksTest extends MediaWikiTestCase {
                $this->assertFalse( $statusLong->isGood(),
                        'Password is longer than maximal policy'
                );
-               $this->assertFalse( $statusLong->isOk(),
+               $this->assertFalse( $statusLong->isOK(),
                        'Password is longer than maximal policy, fatal'
                );
        }
@@ -111,7 +111,7 @@ class PasswordPolicyChecksTest extends MediaWikiTestCase {
                        'user'  // password
                );
                $this->assertFalse( $statusLong->isGood(), 'Password matches username' );
-               $this->assertTrue( $statusLong->isOk(), 'Password matches username, not fatal' );
+               $this->assertTrue( $statusLong->isOK(), 'Password matches username, not fatal' );
        }
 
        /**
@@ -130,7 +130,7 @@ class PasswordPolicyChecksTest extends MediaWikiTestCase {
                        'Passpass1'  // password
                );
                $this->assertFalse( $statusLong->isGood(), 'Password matches blacklist' );
-               $this->assertTrue( $statusLong->isOk(), 'Password matches blacklist, not fatal' );
+               $this->assertTrue( $statusLong->isOK(), 'Password matches blacklist, not fatal' );
        }
 
 }
index d820040..d16200b 100644 (file)
@@ -112,7 +112,7 @@ class UserPasswordPolicyTest extends MediaWikiTestCase {
 
                $status = $upp->checkUserPassword( $user, $password );
                $this->assertSame( $valid, $status->isGood(), $msg . ' - password valid' );
-               $this->assertSame( $ok, $status->isOk(), $msg . ' - can login' );
+               $this->assertSame( $ok, $status->isOK(), $msg . ' - can login' );
        }
 
        public function provideCheckUserPassword() {
index 5126a42..d76d9df 100644 (file)
@@ -154,7 +154,7 @@ class BotPasswordSessionProviderTest extends MediaWikiTestCase {
        public function testBasics() {
                $provider = $this->getProvider();
 
-               $this->assertTrue( $provider->persistsSessionID() );
+               $this->assertTrue( $provider->persistsSessionId() );
                $this->assertFalse( $provider->canChangeUser() );
 
                $this->assertNull( $provider->newSessionInfo() );
index a52aa4b..70e89d4 100644 (file)
@@ -145,7 +145,7 @@ class CookieSessionProviderTest extends MediaWikiTestCase {
        public function testBasics() {
                $provider = new CookieSessionProvider( [ 'priority' => 10 ] );
 
-               $this->assertTrue( $provider->persistsSessionID() );
+               $this->assertTrue( $provider->persistsSessionId() );
                $this->assertTrue( $provider->canChangeUser() );
 
                $msg = $provider->whyNoSession();
index 64b16db..05773a9 100644 (file)
@@ -292,7 +292,9 @@ class PHPSessionHandlerTest extends MediaWikiTestCase {
                // Test that write doesn't break if the session is invalid
                $session = $manager->getEmptySession();
                $session->persist();
-               session_id( $session->getId() );
+               $id = $session->getId();
+               unset( $session );
+               session_id( $id );
                session_start();
                $this->mergeMwGlobalArrayValue( 'wgHooks', [
                        'SessionCheckInfo' => [ function ( &$reason ) {
@@ -300,12 +302,13 @@ class PHPSessionHandlerTest extends MediaWikiTestCase {
                                return false;
                        } ],
                ] );
-               $this->assertNull( $manager->getSessionById( $session->getId(), true ), 'sanity check' );
+               $this->assertNull( $manager->getSessionById( $id, true ), 'sanity check' );
                session_write_close();
+
                $this->mergeMwGlobalArrayValue( 'wgHooks', [
                        'SessionCheckInfo' => [],
                ] );
-               $this->assertNotNull( $manager->getSessionById( $session->getId(), true ), 'sanity check' );
+               $this->assertNotNull( $manager->getSessionById( $id, true ), 'sanity check' );
        }
 
        public static function provideHandlers() {
index 61be8e0..7459ed2 100644 (file)
@@ -23,8 +23,9 @@ class SessionBackendTest extends MediaWikiTestCase {
        /**
         * Returns a non-persistent backend that thinks it has at least one session active
         * @param User|null $user
+        * @param string $id
         */
-       protected function getBackend( User $user = null ) {
+       protected function getBackend( User $user = null, $id = null ) {
                if ( !$this->config ) {
                        $this->config = new \HashConfig();
                        $this->manager = null;
@@ -52,7 +53,7 @@ class SessionBackendTest extends MediaWikiTestCase {
 
                $info = new SessionInfo( SessionInfo::MIN_PRIORITY, [
                        'provider' => $this->provider,
-                       'id' => self::SESSIONID,
+                       'id' => $id ?: self::SESSIONID,
                        'persisted' => true,
                        'userInfo' => UserInfo::newFromUser( $user ?: new User, true ),
                        'idIsSafe' => true,
@@ -67,8 +68,8 @@ class SessionBackendTest extends MediaWikiTestCase {
                $priv->usePhpSessionHandling = false;
 
                $manager = \TestingAccessWrapper::newFromObject( $this->manager );
-               $manager->allSessionBackends = [ $backend->getId() => $backend ];
-               $manager->allSessionIds = [ $backend->getId() => $id ];
+               $manager->allSessionBackends = [ $backend->getId() => $backend ] + $manager->allSessionBackends;
+               $manager->allSessionIds = [ $backend->getId() => $id ] + $manager->allSessionIds;
                $manager->sessionProviders = [ (string)$this->provider => $this->provider ];
 
                return $backend;
@@ -813,6 +814,46 @@ class SessionBackendTest extends MediaWikiTestCase {
                $metadata['???'] = '!!!';
        }
 
+       public function testTakeOverGlobalSession() {
+               if ( !PHPSessionHandler::isInstalled() ) {
+                       PHPSessionHandler::install( SessionManager::singleton() );
+               }
+               if ( !PHPSessionHandler::isEnabled() ) {
+                       $rProp = new \ReflectionProperty( 'MediaWiki\\Session\\PHPSessionHandler', 'instance' );
+                       $rProp->setAccessible( true );
+                       $handler = \TestingAccessWrapper::newFromObject( $rProp->getValue() );
+                       $resetHandler = new \ScopedCallback( function () use ( $handler ) {
+                               session_write_close();
+                               $handler->enable = false;
+                       } );
+                       $handler->enable = true;
+               }
+
+               $backend = $this->getBackend( User::newFromName( 'UTSysop' ) );
+               \TestingAccessWrapper::newFromObject( $backend )->usePhpSessionHandling = true;
+
+               $resetSingleton = TestUtils::setSessionManagerSingleton( $this->manager );
+
+               $manager = \TestingAccessWrapper::newFromObject( $this->manager );
+               $request = \RequestContext::getMain()->getRequest();
+               $manager->globalSession = $backend->getSession( $request );
+               $manager->globalSessionRequest = $request;
+
+               session_id( '' );
+               \TestingAccessWrapper::newFromObject( $backend )->checkPHPSession();
+               $this->assertSame( $backend->getId(), session_id() );
+               session_write_close();
+
+               $backend2 = $this->getBackend(
+                       User::newFromName( 'UTSysop' ), 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'
+               );
+               \TestingAccessWrapper::newFromObject( $backend2 )->usePhpSessionHandling = true;
+
+               session_id( '' );
+               \TestingAccessWrapper::newFromObject( $backend2 )->checkPHPSession();
+               $this->assertSame( '', session_id() );
+       }
+
        public function testResetIdOfGlobalSession() {
                if ( !PHPSessionHandler::isInstalled() ) {
                        PHPSessionHandler::install( SessionManager::singleton() );
@@ -831,7 +872,7 @@ class SessionBackendTest extends MediaWikiTestCase {
                $backend = $this->getBackend( User::newFromName( 'UTSysop' ) );
                \TestingAccessWrapper::newFromObject( $backend )->usePhpSessionHandling = true;
 
-               TestUtils::setSessionManagerSingleton( $this->manager );
+               $resetSingleton = TestUtils::setSessionManagerSingleton( $this->manager );
 
                $manager = \TestingAccessWrapper::newFromObject( $this->manager );
                $request = \RequestContext::getMain()->getRequest();
@@ -840,15 +881,12 @@ class SessionBackendTest extends MediaWikiTestCase {
 
                session_id( self::SESSIONID );
                \MediaWiki\quietCall( 'session_start' );
+               $_SESSION['foo'] = __METHOD__;
                $backend->resetId();
                $this->assertNotEquals( self::SESSIONID, $backend->getId() );
                $this->assertSame( $backend->getId(), session_id() );
-               session_write_close();
-
-               session_id( '' );
-               $this->assertNotSame( $backend->getId(), session_id(), 'sanity check' );
-               $backend->persist();
-               $this->assertSame( $backend->getId(), session_id() );
+               $this->assertArrayHasKey( 'foo', $_SESSION );
+               $this->assertSame( __METHOD__, $_SESSION['foo'] );
                session_write_close();
        }
 
@@ -872,7 +910,7 @@ class SessionBackendTest extends MediaWikiTestCase {
                $wrap->usePhpSessionHandling = true;
                $wrap->persist = true;
 
-               TestUtils::setSessionManagerSingleton( $this->manager );
+               $resetSingleton = TestUtils::setSessionManagerSingleton( $this->manager );
 
                $manager = \TestingAccessWrapper::newFromObject( $this->manager );
                $request = \RequestContext::getMain()->getRequest();
index a1b9bb4..b0f84fc 100644 (file)
@@ -251,7 +251,7 @@ class SessionManagerTest extends MediaWikiTestCase {
                try {
                        $manager->getSessionForRequest( $request );
                        $this->fail( 'Expcected exception not thrown' );
-               } catch ( \OverFlowException $ex ) {
+               } catch ( \OverflowException $ex ) {
                        $this->assertStringStartsWith(
                                'Multiple sessions for this request tied for top priority: ',
                                $ex->getMessage()
@@ -381,6 +381,40 @@ class SessionManagerTest extends MediaWikiTestCase {
                $session = $manager->getSessionById( $id, false );
                $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session );
                $this->assertSame( $id, $session->getId() );
+
+               // Store isn't checked if the session is already loaded
+               $this->store->setSession( $id, [ 'metadata' => [
+                       'userId' => User::idFromName( 'UTSysop' ),
+                       'userToken' => 'bad',
+               ] ] );
+               $session2 = $manager->getSessionById( $id, false );
+               $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session2 );
+               $this->assertSame( $id, $session2->getId() );
+               unset( $session, $session2 );
+               $this->logger->setCollect( true );
+               $this->assertNull( $manager->getSessionById( $id, true ) );
+               $this->logger->setCollect( false );
+
+               // Failure to create an empty session
+               $manager = $this->getManager();
+               $provider = $this->getMockBuilder( 'DummySessionProvider' )
+                       ->setMethods( [ 'provideSessionInfo', 'newSessionInfo', '__toString' ] )
+                       ->getMock();
+               $provider->expects( $this->any() )->method( 'provideSessionInfo' )
+                       ->will( $this->returnValue( null ) );
+               $provider->expects( $this->any() )->method( 'newSessionInfo' )
+                       ->will( $this->returnValue( null ) );
+               $provider->expects( $this->any() )->method( '__toString' )
+                       ->will( $this->returnValue( 'MockProvider' ) );
+               $this->config->set( 'SessionProviders', [
+                       $this->objectCacheDef( $provider ),
+               ] );
+               $this->logger->setCollect( true );
+               $this->assertNull( $manager->getSessionById( $id, true ) );
+               $this->logger->setCollect( false );
+               $this->assertSame( [
+                       [ LogLevel::ERROR, 'Failed to create empty session: {exception}' ]
+               ], $this->logger->getBuffer() );
        }
 
        public function testGetEmptySession() {
@@ -809,7 +843,7 @@ class SessionManagerTest extends MediaWikiTestCase {
 
                \ObjectCache::$instances[__METHOD__] = new TestBagOStuff();
                $this->setMwGlobals( [ 'wgMainCacheType' => __METHOD__ ] );
-               $this->setMWGlobals( [
+               $this->setMwGlobals( [
                        'wgAuth' => new AuthPlugin,
                ] );
 
index e2b138b..c86fb6c 100644 (file)
@@ -104,11 +104,11 @@ class LocalIdLookupTest extends MediaWikiTestCase {
                $this->assertTrue( $lookup->isAttached( $user1 ) );
                $this->assertFalse( $lookup->isAttached( $user2 ) );
 
-               $wiki = wfWikiId();
+               $wiki = wfWikiID();
                $this->assertTrue( $lookup->isAttached( $user1, $wiki ) );
                $this->assertFalse( $lookup->isAttached( $user2, $wiki ) );
 
-               $wiki = 'not-' . wfWikiId();
+               $wiki = 'not-' . wfWikiID();
                $this->assertFalse( $lookup->isAttached( $user1, $wiki ) );
                $this->assertFalse( $lookup->isAttached( $user2, $wiki ) );
        }
index 20f4c4f..3f80b90 100644 (file)
@@ -281,7 +281,7 @@ class LanguageTest extends LanguageClassesTestCase {
                // Actual HTML...
                $this->assertEquals(
                        $expected,
-                       $this->getLang()->truncateHTML( $input, $len, $ellipsis )
+                       $this->getLang()->truncateHtml( $input, $len, $ellipsis )
                );
        }
 
index e015216..d7e72bb 100644 (file)
@@ -114,7 +114,7 @@ class TextPassDumperDatabaseTest extends DumpTestCase {
                $dumper = new TextPassDumper( [ "--stub=file:" . $nameStub,
                        "--output=file:" . $nameFull ] );
                $dumper->reporting = false;
-               $dumper->setDb( $this->db );
+               $dumper->setDB( $this->db );
 
                // Performing the dump
                $dumper->dump( WikiExporter::FULL, WikiExporter::TEXT );
@@ -183,7 +183,7 @@ class TextPassDumperDatabaseTest extends DumpTestCase {
 
                $dumper->prefetch = $prefetchMock;
                $dumper->reporting = false;
-               $dumper->setDb( $this->db );
+               $dumper->setDB( $this->db );
 
                // Performing the dump
                $dumper->dump( WikiExporter::FULL, WikiExporter::TEXT );
@@ -274,7 +274,7 @@ class TextPassDumperDatabaseTest extends DumpTestCase {
                                "--maxtime=1" /*This is in minutes. Fixup is below*/,
                                "--buffersize=32768", // The default of 32 iterations fill up 32KB about twice
                                "--checkpointfile=checkpoint-%s-%s.xml.gz" ] );
-                       $dumper->setDb( $this->db );
+                       $dumper->setDB( $this->db );
                        $dumper->maxTimeAllowed = $checkpointAfter; // Patching maxTime from 1 minute
                        $dumper->stderr = $stderr;
 
index 0b2f7fb..0019a3f 100644 (file)
@@ -146,7 +146,7 @@ class BackupDumperLoggerTest extends DumpTestCase {
                $dumper->startId = $this->logId1;
                $dumper->endId = $this->logId3 + 1;
                $dumper->reporting = false;
-               $dumper->setDb( $this->db );
+               $dumper->setDB( $this->db );
 
                // Performing the dump
                $dumper->dump( WikiExporter::LOGS, WikiExporter::TEXT );
@@ -185,7 +185,7 @@ class BackupDumperLoggerTest extends DumpTestCase {
                        '--reporting=2' ] );
                $dumper->startId = $this->logId1;
                $dumper->endId = $this->logId3 + 1;
-               $dumper->setDb( $this->db );
+               $dumper->setDB( $this->db );
 
                // xmldumps-backup demands reporting, although this is currently not
                // implemented in BackupDumper, when dumping logging data. We
index 5cd8336..2262cc0 100644 (file)
@@ -104,7 +104,7 @@ class BackupDumperPageTest extends DumpTestCase {
                $dumper->loadWithArgv( [ '--full', '--quiet', '--output', 'file:' . $fname ] );
                $dumper->startId = $this->pageId1;
                $dumper->endId = $this->pageId4 + 1;
-               $dumper->setDb( $this->db );
+               $dumper->setDB( $this->db );
 
                // Performing the dump
                $dumper->execute();
@@ -160,7 +160,7 @@ class BackupDumperPageTest extends DumpTestCase {
                $dumper->loadWithArgv( [ '--full', '--quiet', '--output', 'file:' . $fname, '--stub' ] );
                $dumper->startId = $this->pageId1;
                $dumper->endId = $this->pageId4 + 1;
-               $dumper->setDb( $this->db );
+               $dumper->setDB( $this->db );
 
                // Performing the dump
                $dumper->execute();
@@ -210,7 +210,7 @@ class BackupDumperPageTest extends DumpTestCase {
                $dumper->startId = $this->pageId1;
                $dumper->endId = $this->pageId4 + 1;
                $dumper->reporting = false;
-               $dumper->setDb( $this->db );
+               $dumper->setDB( $this->db );
 
                // Performing the dump
                $dumper->dump( WikiExporter::CURRENT, WikiExporter::STUB );
@@ -256,7 +256,7 @@ class BackupDumperPageTest extends DumpTestCase {
                $dumper->startId = $this->pageId1;
                $dumper->endId = $this->pageId4 + 1;
                $dumper->reporting = false;
-               $dumper->setDb( $this->db );
+               $dumper->setDB( $this->db );
 
                // Performing the dump
                $dumper->dump( WikiExporter::CURRENT, WikiExporter::STUB );
@@ -318,7 +318,7 @@ class BackupDumperPageTest extends DumpTestCase {
                        "--reporting=1000" ] );
                $dumper->startId = $this->pageId1;
                $dumper->endId = $this->pageId4 + 1;
-               $dumper->setDb( $this->db );
+               $dumper->setDB( $this->db );
 
                // xmldumps-backup uses reporting. We will not check the exact reported
                // message, as they are dependent on the processing power of the used
index 02d1a1d..4d060e4 100755 (executable)
@@ -10,6 +10,8 @@
 // through this entry point or not.
 define( 'MW_PHPUNIT_TEST', true );
 
+$wgPhpUnitClass = 'PHPUnit_TextUI_Command';
+
 // Start up MediaWiki in command-line mode
 require_once dirname( dirname( __DIR__ ) ) . "/maintenance/Maintenance.php";
 
@@ -29,6 +31,12 @@ class PHPUnitMaintClass extends Maintenance {
 
        public function __construct() {
                parent::__construct();
+               $this->addOption(
+                       'with-phpunitclass',
+                       'Class name of the PHPUnit entry point to use',
+                       false,
+                       true
+               );
                $this->addOption(
                        'debug-tests',
                        'Log testing activity to the PHPUnitCommand log channel.',
@@ -151,6 +159,18 @@ class PHPUnitMaintClass extends Maintenance {
                                [ '--configuration', $IP . '/tests/phpunit/suite.xml' ] );
                }
 
+               if ( $this->hasOption( 'with-phpunitclass' ) ) {
+                       global $wgPhpUnitClass;
+                       $wgPhpUnitClass = $this->getOption( 'with-phpunitclass' );
+
+                       # Cleanup $args array so the option and its value do not
+                       # pollute PHPUnit
+                       $key = array_search( '--with-phpunitclass', $_SERVER['argv'] );
+                       unset( $_SERVER['argv'][$key] ); // the option
+                       unset( $_SERVER['argv'][$key + 1] ); // its value
+                       $_SERVER['argv'] = array_values( $_SERVER['argv'] );
+               }
+
                $key = array_search( '--debug-tests', $_SERVER['argv'] );
                if ( $key !== false && array_search( '--printer', $_SERVER['argv'] ) === false ) {
                        unset( $_SERVER['argv'][$key] );
@@ -202,14 +222,19 @@ class PHPUnitMaintClass extends Maintenance {
 $maintClass = 'PHPUnitMaintClass';
 require RUN_MAINTENANCE_IF_MAIN;
 
-if ( !class_exists( 'PHPUnit_TextUI_Command' ) ) {
+if ( !class_exists( 'PHPUnit_Framework_TestCase' ) ) {
        echo "PHPUnit not found. Please install it and other dev dependencies by
 running `composer install` in MediaWiki root directory.\n";
        exit( 1 );
 }
+if ( !class_exists( $wgPhpUnitClass ) ) {
+       echo "PHPUnit entry point '" . $wgPhpUnitClass . "' not found. Please make sure you installed
+the containing component and check the spelling of the class name.\n";
+       exit( 1 );
+}
 
 echo defined( 'HHVM_VERSION' ) ?
        'Using HHVM ' . HHVM_VERSION . ' (' . PHP_VERSION . ")\n" :
        'Using PHP ' . PHP_VERSION . "\n";
 
-PHPUnit_TextUI_Command::main();
+$wgPhpUnitClass::main();
index 81e2c65..aaa1feb 100644 (file)
@@ -78,7 +78,7 @@ class SideBarTest extends MediaWikiLangTestCase {
         * @covers SkinTemplate::addToSidebarPlain
         */
        public function testExpandMessages() {
-               $this->assertSidebar(
+               $this->assertSideBar(
                        [ 'Title' => [
                                [
                                        'text' => 'Help',
@@ -102,7 +102,7 @@ class SideBarTest extends MediaWikiLangTestCase {
                        'wgNoFollowDomainExceptions' => [],
                        'wgNoFollowNsExceptions' => [],
                ] );
-               $this->assertSidebar(
+               $this->assertSideBar(
                        [ 'Title' => [
                                # ** http://www.mediawiki.org/| Home
                                [
@@ -128,7 +128,7 @@ class SideBarTest extends MediaWikiLangTestCase {
         * @covers SkinTemplate::addToSidebarPlain
         */
        public function testTrickyPipe() {
-               $this->assertSidebar(
+               $this->assertSideBar(
                        [ 'Title' => [
                                # The first 2 are skipped
                                # Doesn't really test the url properly
@@ -163,7 +163,7 @@ class SideBarTest extends MediaWikiLangTestCase {
 ** http://www.mediawiki.org/| Home';
 
                $bar = [];
-               $this->skin->addToSideBarPlain( $bar, $text );
+               $this->skin->addToSidebarPlain( $bar, $text );
 
                return $bar['Title'][0];
        }
index 542420a..2049e38 100644 (file)
@@ -65,7 +65,7 @@ class ApiDocumentationTest extends MediaWikiTestCase {
                        RequestContext::getMain()->getConfig(),
                ] ) );
                foreach ( $globals as $k => $v ) {
-                       $this->setMWGlobals( "wg$k", $v );
+                       $this->setMwGlobals( "wg$k", $v );
                }
 
                // Fetch module.
index e3c5118..8366369 100644 (file)
@@ -37,7 +37,7 @@ class UploadFromUrlTestSuite extends PHPUnit_Framework_TestSuite {
                        'transformVia404' => false,
                        'backend' => new FSFileBackend( [
                                'name' => 'local-backend',
-                               'wikiId' => wfWikiId(),
+                               'wikiId' => wfWikiID(),
                                'containerPaths' => [
                                        'local-public' => "{$tmpDir}/test-repo/public",
                                        'local-thumb' => "{$tmpDir}/test-repo/thumb",
index 4fab90d..dc0cff4 100644 (file)
@@ -6,12 +6,20 @@
        } ) );
 
        QUnit.test( 'Hello world', function ( assert ) {
-               QUnit.expect( 2 );
+               QUnit.expect( 3 );
 
                var api = new mw.Api();
 
                api.parse( '\'\'\'Hello world\'\'\'' ).done( function ( html ) {
-                       assert.equal( html, '<p><b>Hello world</b></p>' );
+                       assert.equal( html, '<p><b>Hello world</b></p>', 'Parse wikitext by string' );
+               } );
+
+               api.parse( {
+                       toString: function () {
+                               return '\'\'\'Hello world\'\'\'';
+                       }
+               } ).done( function ( html ) {
+                       assert.equal( html, '<p><b>Hello world</b></p>', 'Parse wikitext by toString object' );
                } );
 
                this.server.respondWith( /action=parse.*&text='''Hello\+world'''/, function ( request ) {
@@ -21,7 +29,7 @@
                } );
 
                api.parse( new mw.Title( 'Earth' ) ).done( function ( html ) {
-                       assert.equal( html, '<p><b>Earth</b> is a planet.</p>' );
+                       assert.equal( html, '<p><b>Earth</b> is a planet.</p>', 'Parse page by Title object'  );
                } );
 
                this.server.respondWith( /action=parse.*&page=Earth/, function ( request ) {
index 3772097..7a09964 100644 (file)
 ( function ( mw ) {
        QUnit.module( 'mediawiki.requestIdleCallback', QUnit.newMwEnvironment( {
                setup: function () {
-                       var time = mw.now(),
-                               clock = this.clock = this.sandbox.useFakeTimers();
+                       var clock = this.clock = this.sandbox.useFakeTimers();
 
-                       this.tick = function ( forward ) {
-                               time += forward;
-                               clock.tick( forward );
-                       };
                        this.sandbox.stub( mw, 'now', function () {
-                               return time;
+                               return +new Date();
                        } );
 
-                       // Don't test the native version (if available)
-                       this.mwRIC = mw.requestIdleCallback;
-                       mw.requestIdleCallback = mw.requestIdleCallbackInternal;
-               },
-               teardown: function () {
-                       mw.requestIdleCallback = this.mwRIC;
+                       this.tick = function ( forward ) {
+                               return clock.tick( forward || 1 );
+                       };
+
+                       // Always test the polyfill, not native
+                       this.sandbox.stub( mw, 'requestIdleCallback', mw.requestIdleCallbackInternal );
                }
        } ) );
 
-       // Basic scheduling of callbacks
-       QUnit.test( 'callback', 3, function ( assert ) {
-               var sequence,
-                       tick = this.tick;
+       QUnit.test( 'callback', function ( assert ) {
+               var sequence;
 
                mw.requestIdleCallback( function () {
                        sequence.push( 'x' );
-                       tick( 30 );
                } );
                mw.requestIdleCallback( function () {
-                       tick( 5 );
                        sequence.push( 'y' );
-                       tick( 30 );
                } );
-               // Task Z is not run in the first sequence because the
-               // first two tasks consumed the available 50ms budget.
                mw.requestIdleCallback( function () {
                        sequence.push( 'z' );
-                       tick( 30 );
                } );
 
                sequence = [];
-               tick( 1000 );
-               assert.deepEqual( sequence, [ 'x', 'y' ] );
-
-               sequence = [];
-               tick( 1000 );
-               assert.deepEqual( sequence, [ 'z' ] );
-
-               sequence = [];
-               tick( 1000 );
-               assert.deepEqual( sequence, [] );
+               this.tick();
+               assert.deepEqual( sequence, [ 'x', 'y', 'z' ] );
        } );
 
-       // Schedule new callbacks within a callback that tick
-       // the clock. If the budget is exceeded, the newly scheduled
-       // task is delayed until the next idle period.
-       QUnit.test( 'nest-tick', 3, function ( assert ) {
-               var sequence,
-                       tick = this.tick;
+       QUnit.test( 'nested', function ( assert ) {
+               var sequence;
 
                mw.requestIdleCallback( function () {
                        sequence.push( 'x' );
-                       tick( 30 );
                } );
                // Task Y is a task that schedules another task.
                mw.requestIdleCallback( function () {
                        function other() {
                                sequence.push( 'y' );
-                               tick( 35 );
                        }
                        mw.requestIdleCallback( other );
                } );
                mw.requestIdleCallback( function () {
                        sequence.push( 'z' );
-                       tick( 30 );
                } );
 
                sequence = [];
-               tick( 1000 );
+               this.tick();
                assert.deepEqual( sequence, [ 'x', 'z' ] );
 
                sequence = [];
-               tick( 1000 );
+               this.tick();
                assert.deepEqual( sequence, [ 'y' ] );
-
-               sequence = [];
-               tick( 1000 );
-               assert.deepEqual( sequence, [] );
        } );
 
-       // Schedule new callbacks within a callback that run quickly.
-       // Note how the newly scheduled task gets to run as part of the
-       // current idle period (budget allowing).
-       QUnit.test( 'nest-quick', 2, function ( assert ) {
+       QUnit.test( 'timeRemaining', function ( assert ) {
                var sequence,
-                       tick = this.tick;
-
-               mw.requestIdleCallback( function () {
-                       sequence.push( 'x' );
-                       mw.requestIdleCallback( function () {
-                               sequence.push( 'x-expand' );
-                       } );
-               } );
-               mw.requestIdleCallback( function () {
-                       sequence.push( 'y' );
+                       tick = this.tick,
+                       jobs = [
+                               { time: 10, key: 'a' },
+                               { time: 20, key: 'b' },
+                               { time: 10, key: 'c' },
+                               { time: 20, key: 'd' },
+                               { time: 10, key: 'e' }
+                       ];
+
+               mw.requestIdleCallback( function doWork( deadline ) {
+                       var job;
+                       while ( jobs[ 0 ] && deadline.timeRemaining() > 15 ) {
+                               job = jobs.shift();
+                               tick( job.time );
+                               sequence.push( job.key );
+                       }
+                       if ( jobs[ 0 ] ) {
+                               mw.requestIdleCallback( doWork );
+                       }
                } );
 
                sequence = [];
-               tick( 1000 );
-               assert.deepEqual( sequence, [ 'x', 'y', 'x-expand' ] );
+               tick();
+               assert.deepEqual( sequence, [ 'a', 'b', 'c' ] );
 
                sequence = [];
-               tick( 1000 );
-               assert.deepEqual( sequence, [] );
+               tick();
+               assert.deepEqual( sequence, [ 'd', 'e' ] );
        } );
 
+       if ( window.requestIdleCallback ) {
+               QUnit.test( 'native', function ( assert ) {
+                       var done = assert.async();
+                       // Remove polyfill
+                       mw.requestIdleCallback.restore();
+                       mw.requestIdleCallback( function () {
+                               assert.expect( 0 );
+                               done();
+                       } );
+               } );
+       }
+
 }( mediaWiki ) );